Preparación de metadatos de modelo
Los metadatos del modelo son opcionales, aunque se recomiendan.
Metadatos de procedencia del modelo
Puede documentar la procedencia del modelo. Este paso es opcional. En la siguiente tabla se muestran los metadatos de procedencia del modelo soportados:
Metadatos | Descripción |
---|---|
git_branch |
Rama del repositorio de Git. |
git_commit |
Identificador de confirmación. |
repository_url |
URL del repositorio de Git remoto. |
script_dir |
Ruta local al directorio de artefactos. |
training_id |
OCID del recurso utilizado para entrenar el modelo, la sesión de bloc de notas o la ejecución del trabajo. Puede utilizar las siguientes variables de entorno al guardar un modelo con el SDK de OCI:
|
Ejemplo
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>>"
)
Metadatos de taxonomía del modelo
Puede documentar la taxonomía del modelo. Este paso es opcional.
Los campos de metadatos asociados a la taxonomía del modelo permiten describir el caso de uso y el marco de aprendizaje automático que hay detrás del modelo. Las etiquetas de metadatos definidas son la lista de valores permitidos para el marco y el tipo de caso de uso de los metadatos definidos y los valores de categoría de los metadatos personalizados.
Taxonomía de modelo predefinida
En la siguiente tabla se muestran los metadatos de taxonomía de modelo soportados:
Metadatos | Descripción |
---|---|
UseCaseType |
Describe el caso de uso de Machine Learning asociado al modelo mediante uno de los valores de la lista, como:
|
|
Marco de Machine Learning asociado al modelo mediante uno de los valores de la lista, como:
|
FrameworkVersion |
Versión del marco de Machine Learning. Este es un valor de texto libre. Por ejemplo, PyTorch 1.9 . |
Algorithm |
Algoritmo o clase de instancia de modelo. Este es un valor de texto libre. Por ejemplo, CART algorithm . |
Hyperparameters |
Hiperparámetros del objeto de modelo. Este es un formato JSON. |
ArtifactTestResults |
Salida JSON de las pruebas de artefacto ejecutadas en el cliente. |
Ejemplo
En este ejemplo se muestra cómo documentar la taxonomía de modelo capturando cada par clave-valor que crea una 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\"}")
]
Taxonomía de modelo personalizada
Puede agregar sus propios metadatos personalizados para documentar el modelo. El tamaño máximo de archivo permitido para los metadatos combinados definidos y personalizados es de 32 000 bytes.
Cada metadato personalizado tiene estos cuatro atributos:
Campo o clave | ¿Necesario? | Descripción |
---|---|---|
key |
Necesario |
Clave y etiqueta de los metadatos personalizados. |
value |
Necesario |
Valor asociado a la clave. |
category |
Opcional |
Categoría de los metadatos. Seleccione uno de estos cinco valores:
El atributo de categoría es útil para filtrar metadatos personalizados. Esto resulta útil cuando hay un gran número de metadatos personalizados para un modelo determinado. |
description |
Opcional |
Descripción de los metadatos personalizados. |
Ejemplo
En este ejemplo se muestra cómo puede agregar metadatos personalizados para capturar la precisión del modelo, el entorno y el origen de los datos de entrenamiento:
# 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")
]
Definición de esquemas de datos de modelo
Puede documentar los esquemas de datos de entrada y salida del modelo. La definición del esquema de datos de entrada proporciona el plan detallado del parámetro data
de la función predict()
del archivo score.py
. Puede pensar en el esquema de datos de entrada como la definición del vector de función de entrada que su modelo necesita para realizar predicciones correctas. La definición de esquema de salida documenta lo que devuelve la función predict()
.
El tamaño máximo de archivo permitido para los esquemas de entrada y salida combinados es de 32 000 bytes.
La definición de esquema tanto para el vector de función de entrada como para las predicciones de modelo se utilizan para fines de documentación. Esta directriz se aplica únicamente a juegos de datos tabulares.
El esquema del vector de función de entrada de modelo y las predicciones de salida es un objeto JSON. El objeto tiene una lista de nivel superior con una clave denominada schema
. La definición de esquema de cada columna es una entrada diferente en la lista.
Puede utilizar ADS para extraer automáticamente la definición de esquema de un juego de datos de entrenamiento específico.
Para cada columna, el esquema se puede definir completamente asignando valores a todos estos atributos:
Campo o clave | Tipo | ¿Necesario? | Descripción |
---|---|---|---|
name |
STRING |
Necesario |
Nombre de la columna. |
description |
STRING |
Opcional |
Descripción de la columna. |
required |
BOOL |
Necesario |
Si la columna es una función de entrada necesaria para realizar una predicción de modelo. |
dtype |
STRING |
Necesario |
Tipo de dato de la columna. |
domain |
OBJECT |
Opcional |
Rango de valores permitidos que puede tomar la función. |
El campo domain
es un diccionario que contiene las siguientes claves:
Campo o clave | Tipo | ¿Necesario? | Descripción | Notas |
---|---|---|---|---|
domain.constraints |
LIST |
Opcional |
Soporta una lista de predicados para restringir el rango de valores permitidos para la función. Puede introducir una plantilla de expresión de cadena específica del idioma, la cual puede evaluar el intérprete de idioma y el compilador. Con Python, se espera que el formato de cadena siga a Las restricciones se pueden expresar mediante una lista de expresiones. Por ejemplo, |
Puede aplicar más de una restricción. Ejemplo de una expresión:
|
domain.stats |
OBJECT |
Opcional |
Diccionario de estadísticas de resumen que describen la función. Para los tipos
Para la categoría:
|
En ADS, las estadísticas se generan automáticamente según |
domain.values |
STRING |
Opcional |
Representan el tipo semántico de la columna. Los valores soportados son:
|
|
domain.name |
STRING |
Opcional |
Nombre del atributo. |
|
domain.dtype |
STRING |
Necesario |
Tipo de datos de Pandas. Por ejemplo:
|
|
domain.dtype |
STRING |
Necesario |
Tipo de función de los datos. Por ejemplo:
|
Ejemplo de un esquema de datos 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
Ejemplo de un esquema de datos de salida
{
"predictionschema": [
{
"description": "Category of SR",
"domain": {
"constraints": [],
"stats": [],
"values": "Free text"
},
"name": "category",
"required": true,
"type": "category"
}
]
}
Prueba de introspección de modelo
Uso de ADS para Pruebas de Introspección
Puede llamar a la introspección manualmente llamando al método .introspect()
en el objeto ModelArtifact
.
rf_model_artifact.introspect()
rf_model_artifact.metadata_taxonomy['ArtifactTestResults']
El resultado de la introspección del modelo se guarda automáticamente en los artefactos de modelo y metadatos de taxonomía. La introspección de modelo se dispara automáticamente cuando se llama al método .prepare()
para preparar el artefacto de modelo.
El método .save()
no realiza una introspección de modelo porque normalmente se realiza durante la etapa de preparación del artefacto de modelo. Sin embargo, si se define ignore_introspection
en False
, se realizará la introspección del modelo durante la operación de guardado.