Preparando Metadados de Modelo
Os metadados de modelo são opcionais, embora recomendados.
Metadados de Proveniência de Modelo
Você pode documentar a proveniência do modelo. Isso é opcional. A tabela a seguir lista os metadados de proveniência de modelo suportados:
Metadados | Descrição |
---|---|
git_branch |
Ramificação do repositório Git. |
git_commit |
Id de confirmação. |
repository_url |
URL do repositório Git remoto. |
script_dir |
Caminho local para o diretório de artefatos. |
training_id |
OCID do recurso usado para treinar o modelo, a sessão de notebook ou a execução de job. Você pode usar essas variáveis de ambiente ao salvar um modelo com o SDK do OCI:
|
Exemplo
provenance_details = CreateModelProvenanceDetails(repository_url="EXAMPLE-repositoryUrl-Value",
git_branch="EXAMPLE-gitBranch-Value",
git_commit="EXAMPLE-gitCommit-Value",
script_dir="EXAMPLE-scriptDir-Value",
# OCID of the ML job Run or Notebook session on which this model was
# trained
training_id="<<Notebooksession or ML Job Run OCID>>"
)
Metadados de Taxonomia de Modelo
Você pode documentar a taxonomia de modelo. Isso é opcional.
Os campos de metadados associados à taxonomia de modelo permitem descrever o caso de uso e a estrutura de aprendizado de máquina por trás do modelo. As tags de metadados definidas são a lista de valores permitidos para o tipo de caso de uso e o framework para valores definidos de metadados e categoria para metadados personalizados.
Taxonomia de Modelo Predefinida
A tabela a seguir lista os metadados de taxonomia de modelo suportados:
Metadados | Descrição |
---|---|
UseCaseType |
Descreve o caso de uso de aprendizado de máquina associado ao modelo usando um dos valores listados, como:
|
|
O framework de aprendizado de máquina associada ao modelo usando um dos valores listados, como:
|
FrameworkVersion |
A versão do framework de aprendizado de máquina. Esse é um valor de texto livre. Por exemplo, PyTorch 1.9 . |
Algorithm |
A classe de instância de algoritmo ou de modelo. Esse é um valor de texto livre. Por exemplo, CART algorithm . |
Hyperparameters |
Os hiperparâmetros do objeto de modelo. Esse é um formato JSON. |
ArtifactTestResults |
A saída JSON dos testes de artefato é executada no cliente. |
Exemplo
Esse exemplo mostra como documentar a taxonomia do modelo, capturando cada par de chave/valor que cria uma lista de objetos Metadata()
:
# create the list of defined metadata around model taxonomy:
defined_metadata_list = [
Metadata(key="UseCaseType", value="image_classification"),
Metadata(key="Framework", value="keras"),
Metadata(key="FrameworkVersion", value="0.2.0"),
Metadata(key="Algorithm",value="ResNet"),
Metadata(key="hyperparameters",value="{\"max_depth\":\"5\",\"learning_rate\":\"0.08\",\"objective\":\"gradient descent\"}")
]
Taxonomia de Modelo Personalizado
Você pode adicionar seus próprios metadados personalizados para documentar seu modelo. O tamanho máximo de arquivo permitido para os metadados definidos e personalizados combinados é de 32.000 bytes.
Cada metadado personalizado tem estes quatro atributos:
Campo ou Chave | 0brigatório? | Descrição |
---|---|---|
key |
Obrigatório |
A chave e o label dos metadados personalizados. |
value |
Obrigatório |
O valor anexado à chave. |
category |
Opcional |
A categoria dos metadados. Selecione um destes cinco valores:
O atributo de categoria é útil para filtrar metadados personalizados. Isso é útil quando há um grande número de metadados personalizados para um determinado modelo. |
description |
Opcional |
Uma descrição dos metadados personalizados. |
Exemplo
Este exemplo mostra como você pode adicionar metadados personalizados para capturar a precisão, o ambiente e a origem dos dados de treinamento do modelo:
# Adding your own custom metadata:
custom_metadata_list = [
Metadata(key="Image Accuracy Limit", value="70-90%", category="Performance",
description="Performance accuracy accepted"),
Metadata(key="Pre-trained environment",
value="https://blog.floydhub.com/guide-to-hyperparameters-search-for-deep-learning-models/",
category="Training environment", description="Environment link for pre-trained model"),
Metadata(key="Image Sourcing", value="https://lionbridge.ai/services/image-data/", category="other",
description="Source for image training data")
]
Definição de Esquemas de Dados de Modelo
Você pode documentar os esquemas de dados de entrada e saída do modelo. A definição do esquema de dados de entrada fornece o projeto do parâmetro data
da função predict()
do arquivo score.py
. Você pode considerar o esquema de dados de entrada como a definição do vetor de recurso de entrada que seu modelo exige para fazer previsões bem-sucedidas. A definição do esquema de saída documenta o que a função predict()
retorna.
O tamanho máximo permitido do arquivo para os esquemas de entrada e saída combinados é de 32.000 bytes.
A definição de esquema para previsões de modelo e vetor de recurso de entrada é usada para fins de documentação. Essa diretriz só se aplica a conjuntos de dados tabulares.
O esquema das previsões de saída e vetor de recurso de entrada do modelo é um objeto JSON. O objeto tem uma lista de nível superior com uma chave chamada schema
. A definição de esquema de cada coluna é outra entrada na lista.
Você pode usar o ADS para extrair automaticamente a definição de esquema de um conjunto de dados de treinamento específico.
Para cada coluna, o esquema pode ser totalmente definido pela designação de valores a todos estes atributos:
Campo ou Chave | Tipo | 0brigatório? | Descrição |
---|---|---|---|
name |
STRING |
Obrigatório |
O nome da coluna. |
description |
STRING |
Opcional |
A descrição da coluna. |
required |
BOOL |
Obrigatório |
Se a coluna é um recurso de entrada obrigatório para fazer uma previsão de modelo. |
dtype |
STRING |
Obrigatório |
O tipo de dados da coluna. |
domain |
OBJECT |
Opcional |
O intervalo de valores permitidos que o recurso pode aceitar. |
O campo domain
é um dicionário que contém as seguintes chaves:
Campo ou Chave | Tipo | 0brigatório? | Descrição | Observações |
---|---|---|---|---|
domain.constraints |
LIST |
Opcional |
Suporta uma lista de predicados para restrições à faixa de valores permitidos para o recurso. Você pode inserir um modelo de expressão de string específico do idioma, que pode ser avaliado pelo interpretador de idioma e pelo compilador. Com o Python, espera-se que o formato de string siga As restrições podem ser expressas usando uma lista de expressões. Por exemplo, |
Você pode aplicar mais de uma restrição. Exemplo de uma expressão:
|
domain.stats |
OBJECT |
Opcional |
Um dicionário de estatísticas resumidas que descreve o recurso. Para os tipos
Para a categoria:
|
No ADS, as estatísticas são geradas automaticamente com base no |
domain.values |
STRING |
Opcional |
Representam o tipo semântico da coluna. Os valores suportados incluem:
|
|
domain.name |
STRING |
Opcional |
Nome do atributo. |
|
domain.dtype |
STRING |
Obrigatório |
O tipo de dados Pandas dos dados. Por exemplo:
|
|
domain.dtype |
STRING |
Obrigatório |
O tipo de recurso dos dados. Por exemplo:
|
Exemplo de um Esquema de Dados de Entrada
schema:
- description: Description of the column
domain:
constraints:
- expression: '($x > 10 and $x <100) or ($x < -1 and $x > -500)' # Here user can input language specific string expression template which can be evaluated by the language interpreter/compiler. In case of python the string format expected to follow string.Template recognized format.
language: python
stats: # This section is flexible key value pair. The stats will depend on what user wants to save. By default, the stats will be automatically generated based on the `feature_stat` in feature types
mean: 20
median: 21
min: 5
values: numbers # The key idea is to communicate what should be the domain of values that are acceptable. Eg rational numbers, discreet numbers, list of values, etc
name: MSZoing # Name of the attribute
required: false # If it is a nullable column
Exemplo de Esquema de Dados de Saída
{
"predictionschema": [
{
"description": "Category of SR",
"domain": {
"constraints": [],
"stats": [],
"values": "Free text"
},
"name": "category",
"required": true,
"type": "category"
}
]
}
Teste de Introsão de Modelo
Usando o ADS para Teste de Introspecção
Você pode chamar a introspecção manualmente chamando o método .introspect()
no objeto ModelArtifact
.
rf_model_artifact.introspect()
rf_model_artifact.metadata_taxonomy['ArtifactTestResults']
O resultado da introspecção do modelo é salvo automaticamente nos metadados de taxonomia e nos artefatos de modelo. A introspecção de modelo é acionada automaticamente quando o método .prepare()
é chamado para preparar o artefato de modelo.
O método .save()
não executa uma introspecção de modelo porque isso normalmente é feito durante o estágio de preparação do artefato de modelo. No entanto, a definição de ignore_introspection
como False
faz com que a introspecção do modelo seja executada durante a operação de salvamento.