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 du 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 du modèle prises en charge :
Métadonnées | Description |
---|---|
git_branch |
Branche du référentiel Git. |
git_commit |
ID validation. |
repository_url |
Adresse URL du référentiel Git distant. |
script_dir |
Chemin d'accès local au répertoire dl'artefacts |
training_id |
OCID de la ressource utilisée pour entraîner le modèle, la session de carnet ou l'exécution de travail. Vous pouvez utiliser ces variables d'environnement lorsque vous enregistrez un modèle avec la trousse SDK pour 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'utilisation et le cadre de l'apprentissage automatique derrière le modèle. Les marqueurs de métadonnées définis sont la liste des valeurs autorisées pour le type de cas d'utilisation, le cadre pour les métadonnées définies et les 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 du modèle prises en charge :
Métadonnées | Description |
---|---|
UseCaseType |
Décrit le cas d'utilisation de l'apprentissage automatique associé au modèle à l'aide d'une des valeurs listées, par exemple :
|
|
Cadre d'apprentissage automatique associé au modèle à l'aide d'une des valeurs listées, par exemple :
|
FrameworkVersion |
Version du cadre d'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. Il s'agit d'un format JSON. |
ArtifactTestResults |
La sortie JSON des tests d'artefact s'exécute côté client. |
Exemple
Cet exemple montre comment documenter la taxonomie du modèle en saisissant chaque paire clé-valeur 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 définies et personnalisées combinées est de 32000 octets.
Chaque métadonnée personnalisée possède les quatre attributs suivants :
Champ ou clé | Obligatoire? | Description |
---|---|---|
key |
Obligatoire |
Clé et étiquette de vos métadonnées personnalisées. |
value |
Obligatoire |
Valeur associé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. Ceci est pratique lorsqu'un modèle donnée comprend un grand nombre de métadonnées personnalisées. |
description |
Facultatif |
Description des métadonnées personnalisées. |
Exemple
Cet exemple montre comment ajouter des métadonnées personnalisées pour saisir 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 de 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 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 fonction d'entrée dont votre modèle a besoin pour réussir des prédictions. La définition de schéma de sortie documente ce que la fonction predict()
retourne.
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 le vecteur de fonction d'entrée et les prédictions de modèle sont utilisées à des fins de documentation. Cette directive s'applique uniquement aux jeux de données tabulaires.
Le schéma du vecteur de fonction d'entrée du modèle et des prédictions de sortie est un objet JSON. L'objet est doté d'une liste de niveau supérieur avec une clé nommée schema
. La définition de schéma de chaque colonne représente une entrée différente dans la liste.
Vous pouvez utiliser ADS pour extraire automatiquement la définition de schéma d'un jeu 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 | Obligatoire? | Description |
---|---|---|---|
name |
STRING |
Obligatoire |
Nom de la colonne. |
description |
STRING |
Facultatif |
Description de la colonne. |
required |
BOOL |
Obligatoire |
Indique si la colonne est une fonction d'entrée requise pour effectuer une prédiction de modèle. |
dtype |
STRING |
Obligatoire |
Type de données de la colonne de valeur. |
domain |
OBJECT |
Facultatif |
Intervalle de valeurs autorisées pour la fonction. |
Le champ domain
est un dictionnaire contenant les clés suivantes :
Champ ou clé | Type | Obligatoire? | Description | Notes |
---|---|---|---|---|
domain.constraints |
LIST |
Facultatif |
Prend en charge une liste de prédicats pour restreindre l'intervalle de valeurs autorisées pour la fonction. Vous pouvez entrer un modèle d'expression de chaîne propre à un langage, qui peut être évalué par l'interpréteur et le compilateur. Avec Python, le format de chaîne doit suivre Les contraintes peuvent être exprimé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 sommaires décrivant la fonction. 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 |
Obligatoire |
Type de données Pandas des données. Par exemple :
|
|
domain.dtype |
STRING |
Obligatoire |
Type de fonction 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
Utilisation d'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 déclenchée automatiquement 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 l'étape de préparation de l'artefact de modèle. Toutefois, si vous réglez ignore_introspection
à False
, l'introspection du modèle est effectuée lors de l'opération d'enregistrement.