Modellmetadaten vorbereiten
Modellmetadaten sind zwar optional, werden jedoch empfohlen.
Metadaten zur Modellherkunft
Sie können die Modellherkunft dokumentieren. Das ist optional. In der folgenden Tabelle sind die unterstützten Metadaten zur Modellherkunft aufgeführt:
Metadaten | Beschreibung |
---|---|
git_branch |
Verzweigung des Git-Repositorys. |
git_commit |
Commit-ID. |
repository_url |
URL des Remote-Git-Repositorys. |
script_dir |
Lokaler Pfad zum Artefaktverzeichnis. |
training_id |
OCID der Ressource, die zum Trainieren des Modells, der Notizbuchsession oder des Joblaufs verwendet wird. Sie können die folgenden Umgebungsvariablen verwenden, wenn Sie ein Modell mit dem OCI-SDK speichern:
|
Beispiel
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>>"
)
Metadaten zur Modelltaxonomie
Sie können die Modelltaxonomie dokumentieren. Das ist optional.
Mit den Metadatenfeldern für die Modelltaxonomie können Sie den Anwendungsfall und das Framework für maschinelles Lernen hinter dem Modell beschreiben. Die definierten Metadatentags sind die zulässigen Werte für den Anwendungsfalltyp und das Framework für definierte Metadaten und Kategoriewerte für benutzerdefinierte Metadaten.
Voreingestellte Modelltaxonomie
In der folgenden Tabelle sind die unterstützten Metadaten zur Modelltaxonomie aufgeführt:
Metadaten | Beschreibung |
---|---|
UseCaseType |
Beschreibt den Anwendungsfall für maschinelles Lernen, der mit dem Modell verknüpft ist, mit einem der aufgeführten Werte:
|
|
Das Framework für maschinelles Lernen, das mit dem Modell verknüpft ist, mit einem der aufgeführten Werte:
|
FrameworkVersion |
Die Version des ML-Frameworks. Hier kann frei formulierter Text angegeben werden. Beispiel: PyTorch 1.9 . |
Algorithm |
Der Algorithmus oder die Modellinstanzklasse. Hier kann frei formulierter Text angegeben werden. Beispiel: CART algorithm . |
Hyperparameters |
Die Hyperparameter des Modellobjekts. Diese haben das JSON-Format. |
ArtifactTestResults |
Die JSON-Ausgabe der Artefakttests auf Clientseite. |
Beispiel
In diesem Beispiel wird gezeigt, wie Sie die Modelltaxonomie dokumentieren, indem Sie jedes Schlüssel/Wert-Paar erfassen, sodass eine Liste mit Metadata()
-Objekten erstellt wird:
# 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\"}")
]
Benutzerdefinierte Modelltaxonomie
Sie können eigene benutzerdefinierte Metadaten hinzufügen, um Ihr Modell zu dokumentieren. Die maximal zulässige Dateigröße für die Kombination aus definierten und benutzerdefinierten Metadaten beträgt 32000 Byte.
Alle benutzerdefinierten Metadaten weisen die folgenden vier Attribute aus:
Feld oder Schlüssel | Erforderlich? | Beschreibung |
---|---|---|
key |
Erforderlich |
Der Schlüssel und das Label Ihrer benutzerdefinierten Metadaten. |
value |
Erforderlich |
Der an den Schlüssel angehängte Wert. |
category |
Optional |
Die Kategorie der Metadaten. Wählen Sie einen der folgenden fünf Werte aus:
Das Kategorieattribut ist nützlich, um benutzerdefinierte Metadaten zu filtern. Das bietet sich an, wenn eine große Anzahl benutzerdefinierter Metadaten für ein bestimmtes Modell vorhanden ist. |
description |
Optional |
Eine Beschreibung der benutzerdefinierten Metadaten. |
Beispiel
In diesem Beispiel wird gezeigt, wie Sie benutzerdefinierte Metadaten hinzufügen können, um die Modellgenauigkeit, die Umgebung und die Quelle der Trainingsdaten zu erfassen:
# 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")
]
Definition der Modelldatenschemas
Sie können die Eingabe- und Ausgabedatenschemas von Modellen dokumentieren. Die Definition des Eingabedatenschemas stellt den Blueprint des Parameters data
der Funktion predict()
der Datei score.py
bereit. Sie können das Eingabedatenschema als Definition des Eingabefeaturevektors betrachten, den Ihr Modell für erfolgreiche Vorhersagen benötigt. Die Ausgabeschemadefinition dokumentiert, was die Funktion predict()
zurückgibt.
Die maximal zulässige Dateigröße für die Kombination aus Ein- und Ausgabeschemas beträgt 32000 Byte.
Die Schemadefinition für Eingabefeaturevektor und Modellvorhersagen wird zu Dokumentationszwecken verwendet. Diese Richtlinie gilt nur für tabellarische Datasets.
Das Schema des Eingabefeaturevektors und der Ausgabevorhersagen des Modells ist ein JSON-Objekt. Das Objekt verfügt über eine Liste mit dem Schlüssel schema
auf oberster Ebene. Die Schemadefinition jeder Spalte ist ein eigener Eintrag in der Liste.
Mit ADS können Sie die Schemadefinition automatisch aus einem bestimmten Trainingsset extrahieren.
Für jede Spalte kann das Schema vollständig definiert werden, indem allen folgenden Attributen Werte zugewiesen werden:
Feld oder Schlüssel | Typ | Erforderlich? | Beschreibung |
---|---|---|---|
name |
STRING |
Erforderlich |
Der Name der Spalte. |
description |
STRING |
Optional |
Die Beschreibung der Spalte. |
required |
BOOL |
Erforderlich |
Gibt an, ob die Spalte ein erforderliches Eingabefeature für eine Modellvorhersage ist. |
dtype |
STRING |
Erforderlich |
Der Datentyp der Spalte. |
domain |
OBJECT |
Optional |
Der Bereich zulässiger Werte für das Feature. |
Das Feld domain
ist ein Dictionary mit den folgenden Schlüsseln:
Feld oder Schlüssel | Typ | Erforderlich? | Beschreibung | Hinweise |
---|---|---|---|---|
domain.constraints |
LIST |
Optional |
Unterstützt eine Liste von Prädikaten, um den Bereich zulässiger Werte für das Feature einzuschränken. Sie können eine sprachspezifische Vorlage für Zeichenfolgenausdrücke eingeben, die vom Sprach-Interpreter und Compiler ausgewertet werden kann. Bei Python muss das Zeichenfolgenformat Constraints können mit einer Liste von Ausdrücken angegeben werden. Beispiel: |
Sie können mehrere Constraints anwenden. Beispiel für einen Ausdruck:
|
domain.stats |
OBJECT |
Optional |
Ein Dictionary mit zusammenfassenden Statistiken, die das Feature beschreiben. Für die Typen
Für Kategorie:
|
In ADS werden die Statistiken automatisch basierend auf |
domain.values |
STRING |
Optional |
Gibt den semantischen Typ der Spalte an. Unterstützte Werte umfassen:
|
|
domain.name |
STRING |
Optional |
Name des Attributs. |
|
domain.dtype |
STRING |
Erforderlich |
Der Pandas-Datentyp der Daten. Beispiel:
|
|
domain.dtype |
STRING |
Erforderlich |
Der Featuretyp der Daten. Beispiel:
|
Beispiel für ein Eingabedatenschema
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
Beispiel für ein Ausgabedatenschema
{
"predictionschema": [
{
"description": "Category of SR",
"domain": {
"constraints": [],
"stats": [],
"values": "Free text"
},
"name": "category",
"required": true,
"type": "category"
}
]
}
Modellintrospektionstest
Verwenden von ADS für Introspektionstests
Sie können die Introspektion manuell aufrufen, indem Sie die Methode .introspect()
für das Objekt ModelArtifact
aufrufen.
rf_model_artifact.introspect()
rf_model_artifact.metadata_taxonomy['ArtifactTestResults']
Das Ergebnis der Modellintrospektion wird automatisch in den Taxonomiemetadaten und Modellartefakten gespeichert. Die Modellintrospektion wird automatisch ausgelöst, wenn die Methode .prepare()
zur Vorbereitung des Modellartefakts aufgerufen wird.
Die Methode .save()
führt keine Modellintrospektion aus, weil dies normalerweise während der Modellartefaktvorbereitungsphase erfolgt. Wenn Sie ignore_introspection
jedoch auf False
setzen, wird die Modellintrospektion während des Speichervorgangs ausgeführt.