Préparation des métadonnées de modèle
Les métadonnées de modèle sont facultatives, mais recommandées.
Métadonnées de provenance de modèle
Vous pouvez documenter la provenance du modèle. Cette opération est facultative. Le tableau suivant répertorie les métadonnées de provenance de modèle prises en charge :
Métadonnées | Description |
---|---|
git_branch |
Branchement du référentiel Git. |
git_commit |
ID de validation. |
repository_url |
URL du référentiel Git distant. |
script_dir |
Chemin local du répertoire d'artefact. |
training_id |
OCID de la ressource utilisée pour entraîner le modèle, la session de bloc-notes ou le traitement de travail. Vous pouvez utiliser ces variables d'environnement lorsque vous enregistrez un modèle avec le kit SDK OCI :
|
Exemple
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>>"
)
Métadonnées de taxonomie de modèle
Vous pouvez documenter la taxonomie de modèle. Cette opération est facultative.
Les champs de métadonnées associés à la taxonomie de modèle permettent de décrire le cas d'emploi et la structure de l'apprentissage automatique derrière le modèle. Les balises de métadonnées définies constituent la liste des valeurs autorisées pour le type de cas d'emploi et la structure pour les métadonnées définies, et des valeurs de catégorie pour les métadonnées personnalisées.
Taxonomie de modèle prédéfinie
Le tableau suivant répertorie les métadonnées de taxonomie de modèle prises en charge :
Métadonnées | Description |
---|---|
UseCaseType |
Décrit le cas d'emploi de l'apprentissage automatique associé au modèle à l'aide de l'une des valeurs répertoriées, par exemple :
|
|
Décrit la structure de l'apprentissage automatique associée au modèle à l'aide de l'une des valeurs répertoriées, par exemple :
|
FrameworkVersion |
Version de la structure de l'apprentissage automatique. Il s'agit d'une valeur de texte libre. Par exemple : PyTorch 1.9 . |
Algorithm |
Algorithme ou classe d'instance de modèle. Il s'agit d'une valeur de texte libre. Par exemple : CART algorithm . |
Hyperparameters |
Hyperparamètres de l'objet de modèle. Format JSON. |
ArtifactTestResults |
Sortie JSON des tests d'artefact exécutés côté client. |
Exemple
Cet exemple montre comment documenter la taxonomie de modèle en capturant chaque paire clé-valeur, ce qui crée une liste d'objets 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\"}")
]
Taxonomie de modèle personnalisée
Vous pouvez ajouter vos propres métadonnées personnalisées pour documenter votre modèle. La taille de fichier maximale autorisée pour les métadonnées personnalisées et définies combinées est de 32 000 octets.
Chaque métadonnée personnalisée possède les quatre attributs suivants :
Champ ou clé | Requis ? | Description |
---|---|---|
key |
Requis |
Clé et libellé des métadonnées personnalisées. |
value |
Requis |
Valeur attachée à la clé. |
category |
Facultatif |
Catégorie des métadonnées. Sélectionnez l'une des cinq valeurs suivantes :
L'attribut de catégorie est utile pour filtrer les métadonnées personnalisées. Un tel filtrage est pratique avec une grande quantité de métadonnées personnalisées pour un modèle spécifique. |
description |
Facultatif |
Description des métadonnées personnalisées. |
Exemple
Cet exemple montre comment ajouter des métadonnées personnalisées pour capturer l'exactitude du modèle, l'environnement et la source des données d'entraînement :
# 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")
]
Définition des schémas de données de modèle
Vous pouvez documenter les schémas de données d'entrée et de sortie du modèle. La définition du schéma de données d'entrée fournit le modèle de base du paramètre data
de la fonction predict()
du fichier score.py
. Vous pouvez considérer le schéma de données d'entrée comme la définition du vecteur de caractéristique d'entrée nécessaire au modèle pour réaliser des prédictions réussies. La définition du schéma de sortie documente ce que la fonction predict()
renvoie.
La taille de fichier maximale autorisée pour les schémas d'entrée et de sortie combinés est de 32 000 octets.
La définition de schéma pour les prédictions de modèle et de vecteur de caractéristique d'entrée est utilisée à des fins de documentation. Cette directive s'applique uniquement aux ensembles de données tabulaires.
Le schéma du vecteur de caractéristique d'entrée de modèle et des prédictions de sortie est un objet JSON. L'objet comporte une liste de niveau supérieur avec une clé appelée schema
. La définition de schéma de chaque colonne est une entrée différente dans la liste.
Vous pouvez utiliser ADS pour extraire automatiquement la définition de schéma d'un ensemble de données d'entraînement spécifique.
Pour chaque colonne, le schéma peut être entièrement défini en affectant des valeurs à tous les attributs suivants :
Champ ou clé | Type | Requis ? | Description |
---|---|---|---|
name |
STRING |
Requis |
Nom de la colonne. |
description |
STRING |
Facultatif |
Description de la colonne. |
required |
BOOL |
Requis |
Indique si la colonne correspond à une caractéristique d'entrée requise pour réaliser une prévision de modèle. |
dtype |
STRING |
Requis |
Type de données de la colonne. |
domain |
OBJECT |
Facultatif |
Plage de valeurs autorisées pour la caractéristique. |
Le champ domain
est un dictionnaire contenant les clés suivantes :
Champ ou clé | Type | Requis ? | Description | Remarques |
---|---|---|---|---|
domain.constraints |
LIST |
Facultatif |
Prend en charge une liste de prédicats pour les contraintes sur la plage de valeurs autorisées pour la caractéristique. Vous pouvez entrer un modèle d'expression de chaîne propre au langage, qui peut être évalué par l'interpréteur de langage et le compilateur. Avec Python, le format de chaîne doit suivre Les contraintes peuvent être spécifiées à l'aide d'une liste d'expressions. Par exemple : |
Vous pouvez appliquer plusieurs contraintes. Exemple d'expression :
|
domain.stats |
OBJECT |
Facultatif |
Dictionnaire de statistiques récapitulatives décrivant la caractéristique. Pour les types
Pour la catégorie :
|
Dans ADS, les statistiques sont générées automatiquement en fonction de |
domain.values |
STRING |
Facultatif |
Représente le type sémantique de la colonne. Les valeurs prises en charge sont les suivantes :
|
|
domain.name |
STRING |
Facultatif |
Nom de l'attribut. |
|
domain.dtype |
STRING |
Requis |
Type de données Pandas des données. Par exemple :
|
|
domain.dtype |
STRING |
Requis |
Type de caractéristique des données. Par exemple :
|
Exemple de schéma de données d'entrée
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
Exemple de schéma de données de sortie
{
"predictionschema": [
{
"description": "Category of SR",
"domain": {
"constraints": [],
"stats": [],
"values": "Free text"
},
"name": "category",
"required": true,
"type": "category"
}
]
}
Test d'introspection de modèle
Utiliser ADS pour les tests d'introspection
Vous pouvez appeler l'introspection manuellement en appelant la méthode .introspect()
sur l'objet ModelArtifact
.
rf_model_artifact.introspect()
rf_model_artifact.metadata_taxonomy['ArtifactTestResults']
Le résultat de l'introspection de modèle est automatiquement enregistré dans les métadonnées de taxonomie et les artefacts de modèle. L'introspection de modèle est automatiquement déclenchée lorsque la méthode .prepare()
est appelée pour préparer l'artefact de modèle.
La méthode .save()
n'effectue pas d'introspection de modèle car elle est normalement effectuée lors de la phase de préparation de l'artefact de modèle. Toutefois, si vous définissez ignore_introspection
sur False
, l'introspection du modèle est effectuée lors de l'opération d'enregistrement.