Preparazione dei metadati del modello
I metadati del modello sono facoltativi, sebbene consigliati.
Metadati provenienza modello
È possibile documentare la provenienza del modello. Facoltativo. La tabella riportata di seguito elenca i metadati di provenienza del modello supportati.
Metadati | descrizione; |
---|---|
git_branch |
Diramazione del repository Git. |
git_commit |
ID commit. |
repository_url |
URL del repository Git remoto. |
script_dir |
Percorso locale della directory artifact. |
training_id |
OCID della risorsa utilizzata per addestrare il modello, la sessione notebook o l'esecuzione del job. È possibile utilizzare queste variabili di ambiente quando si salva un modello con l'SDK OCI:
|
Esempio
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>>"
)
Metadati tassonomia modello
È possibile documentare la tassonomia del modello. Facoltativo.
I campi di metadati associati alla tassonomia del modello consentono di descrivere il caso d'uso e il framework di apprendimento automatico alla base del modello. Le tag metadati definite sono la lista di valori consentiti per il tipo di caso d'uso e il framework per i metadati definiti e i valori di categoria per i metadati personalizzati.
Tassonomia modello preimpostato
Nella tabella riportata di seguito sono elencati i metadati della tassonomia del modello supportati.
Metadati | descrizione; |
---|---|
UseCaseType |
Descrive il caso d'uso di apprendimento automatico associato al modello utilizzando uno dei valori elencati, ad esempio:
|
|
Framework di apprendimento automatico associato al modello utilizzando uno dei valori elencati, ad esempio:
|
FrameworkVersion |
Versione del framework di apprendimento automatico. Questo è un valore di testo libero. Ad esempio PyTorch 1.9 . |
Algorithm |
La classe di istanza dell'algoritmo o del modello. Questo è un valore di testo libero. Ad esempio, CART algorithm . |
Hyperparameters |
Iperparametri dell'oggetto modello. Formato JSON. |
ArtifactTestResults |
L'output JSON dei test artifact viene eseguito sul lato client. |
Esempio
In questo esempio viene illustrato come documentare la tassonomia del modello acquisendo ogni coppia chiave-valore che crea un elenco di oggetti 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\"}")
]
Tassonomia modello personalizzato
È possibile aggiungere metadati personalizzati per documentare il modello. La dimensione massima consentita per i metadati definiti e personalizzati combinati è di 32000 byte.
Ogni metadati personalizzato ha i seguenti quattro attributi:
Campo o chiave | Richiesto? | descrizione; |
---|---|---|
key |
Richiesto |
La chiave e l'etichetta dei metadati personalizzati. |
value |
Richiesto |
Il valore associato alla chiave. |
category |
Facoltativo |
Categoria dei metadati. Selezionare uno dei cinque valori riportati di seguito.
L'attributo categoria è utile per filtrare i metadati personalizzati. Ciò è utile quando si dispone di un gran numero di metadati personalizzati per un determinato modello. |
description |
Facoltativo |
Descrizione della medata personalizzata. |
Esempio
In questo esempio viene illustrato come aggiungere metadati personalizzati per acquisire la precisione del modello, l'ambiente e l'origine dei dati di addestramento.
# 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")
]
Definizione schemi dati modello
È possibile documentare gli schemi di dati di input e output del modello. La definizione dello schema dei dati di input fornisce il progetto del parametro data
della funzione predict()
del file score.py
. È possibile considerare lo schema dei dati di input come la definizione del vettore della funzione di input richiesto dal modello per effettuare previsioni riuscite. La definizione dello schema di output documenta i risultati della funzione predict()
.
La dimensione massima consentita per gli schemi di input e output combinati è di 32000 byte.
La definizione dello schema sia per il vettore della funzione di input che per le previsioni del modello viene utilizzata a scopo di documentazione. Questa linea guida si applica solo ai set di dati in formato tabulare.
Lo schema del vettore della funzione di input del modello e delle previsioni di output è un oggetto JSON. L'oggetto dispone di un elenco di livello superiore con una chiave denominata schema
. La definizione dello schema di ogni colonna è una voce diversa nella lista.
È possibile utilizzare ADS per estrarre automaticamente la definizione dello schema da un data set di addestramento specifico.
Per ogni colonna, lo schema può essere definito completamente assegnando valori a tutti questi attributi:
Campo o chiave | Digita | Richiesto? | descrizione; |
---|---|---|---|
name |
STRING |
Richiesto |
Il nome della colonna. |
description |
STRING |
Facoltativo |
La descrizione della colonna. |
required |
BOOL |
Richiesto |
Indica se la colonna è una funzione di input necessaria per eseguire una previsione del modello. |
dtype |
STRING |
Richiesto |
Il tipo di dati della colonna. |
domain |
OBJECT |
Facoltativo |
Intervallo di valori consentiti che la funzione può assumere. |
Il campo domain
è un dizionario contenente le chiavi seguenti:
Campo o chiave | Digita | Richiesto? | descrizione; | Note |
---|---|---|---|---|
domain.constraints |
LIST |
Facoltativo |
Supporta un elenco di predicati per limitare l'intervallo di valori consentiti per la funzione. È possibile immettere un modello di espressione di stringa specifico della lingua, che può essere valutato dall'interprete e dal compilatore della lingua. Con Python, il formato stringa dovrebbe seguire I vincoli possono essere espressi utilizzando una lista di espressioni. Ad esempio, |
È possibile applicare più di un vincolo. Esempio di espressione:
|
domain.stats |
OBJECT |
Facoltativo |
Dizionario delle statistiche di riepilogo che descrive la funzione. Per i tipi
Per categoria:
|
In ADS, le statistiche vengono generate automaticamente in base al |
domain.values |
STRING |
Facoltativo |
Rappresenta il tipo di semantica della colonna. I valori supportati includono i seguenti:
|
|
domain.name |
STRING |
Facoltativo |
Il nome dell'attributo. |
|
domain.dtype |
STRING |
Richiesto |
Il tipo di dati Pandas dei dati. Ad esempio:
|
|
domain.dtype |
STRING |
Richiesto |
Tipo di funzione dei dati. Ad esempio:
|
Esempio di schema di dati di input
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
Esempio di uno schema di dati di output
{
"predictionschema": [
{
"description": "Category of SR",
"domain": {
"constraints": [],
"stats": [],
"values": "Free text"
},
"name": "category",
"required": true,
"type": "category"
}
]
}
Test di introspezione del modello
Uso di ADS per i test di introspezione
È possibile richiamare l'introspezione manualmente richiamando il metodo .introspect()
nell'oggetto ModelArtifact
.
rf_model_artifact.introspect()
rf_model_artifact.metadata_taxonomy['ArtifactTestResults']
Il risultato dell'introspezione del modello viene salvato automaticamente nei metadati della tassonomia e negli artifact del modello. L'introspezione del modello viene attivata automaticamente quando viene richiamato il metodo .prepare()
per preparare l'artifact del modello.
Il metodo .save()
non esegue un'introspezione del modello perché in genere viene eseguita durante la fase di preparazione dell'artifact del modello. Tuttavia, l'impostazione di ignore_introspection
su False
comporta l'esecuzione dell'introspezione del modello durante l'operazione di salvataggio.