Puoi utilizzare Vertex ML Metadata per monitorare e analizzare i metadati prodotti dai tuoi sistemi di machine learning (ML). Monitorando questi metadati, diventa più facile analizzare il comportamento del sistema ML. Questo può aiutarti a comprendere le variazioni nelle prestazioni del sistema o può aiutarti a confrontare prodotto dal tuo sistema ML.
Se non hai mai utilizzato Vertex ML Metadata, leggi l'introduzione a Vertex ML Metadata per saperne di più su monitoraggio e l'analisi dei metadati del flusso di lavoro ML.
Scopri come eseguire query su Vertex ML Metadata da analizzare nel nei seguenti modi:
- Esegui una query per trovare tutti gli elementi, le esecuzioni o il contesto che corrispondono ai tuoi criteri di filtro.
- Esegui query sugli elementi di input e di output di un'esecuzione, nonché sugli eventi, utilizzati per collegare gli elementi all'esecuzione.
- Esegui una query per il sottografo della linea di successione di un contesto. Questa query restituisce gli artefatti e le esecuzioni di un contesto, insieme che collegano gli artefatti alle esecuzioni.
Esegui query su artefatti, esecuzioni e contesti
Puoi utilizzare l'SDK Vertex AI per Python o l'API REST per eseguire query su artefatti, esecuzioni e contesti, utilizzando i filtri per creare query come seguenti:
- Quali versioni di un modello addestrato hanno raggiunto una determinata soglia di qualità?
- Quale set di dati viene utilizzato in una determinata pipeline?
Le sezioni seguenti mostrano come creare filtri e come eseguire query su elementi, esecuzioni e contesti.
Panoramica della sintassi dei filtri
Le sezioni seguenti descrivono come utilizzare i filtri per eseguire query su elementi, esecutioni e contesti.
Campi
I seguenti campi sono supportati per l'applicazione di filtri ad elementi, esecuzioni e contesti.
Artefatto | Esecuzione | Contesto | |
---|---|---|---|
name |
|||
display_name |
|||
schema_title |
|||
create_time |
|||
update_time |
|||
metadata |
|||
state |
|||
uri |
Il filtro deve essere racchiuso tra virgolette. Qualsiasi citazione che faccia parte il filtro deve essere preceduto da una barra rovesciata.
Operatori di confronto
Nei filtri puoi utilizzare i seguenti operatori di confronto: =
, !=
, <
,
>
, >=
e <=
.
Ad esempio, i seguenti filtri per trovare tutti gli artefatti in cui è presente il nome visualizzato è my_artifact.
REST
display_name=\"my_artifact\"
Python
"display_name=\"my_artifact\""
Per i campi di stringa, puoi utilizzare i filtri con caratteri jolly con il carattere *
.
Per i campi del timestamp come create_time
e update_time
, devi formattare
la data utilizzando il formato RFC 3339, ad esempio:
REST
create_time=\"2021-05-11T12:30:00-08:00\"
Python
"create_time=\"2021-05-11T12:30:00-08:00\""
Operatori logici
Puoi utilizzare gli operatori logici AND
e OR
per combinare i filtri e creare una query complessa.
L'esempio seguente mostra come eseguire query per gli elementi di tipo
ai_platform.model
e un campo metadata
precision
con un valore numerico superiore a 0,9.
REST
schema_title=\"ai_platform.Model\"+AND+metadata.precision.number_value>0.9
Python
"create_time=\"schema_title=\"ai_platform.Model\" AND metadata.precision.number_value>0.9"
Filtrare in base ai metadati utilizzando l'operatore di attraversamento
Il campo metadata
è un'istanza di
google.protobuf.Struct
il cui formato è definito nello schema specificato nel
campo schema_title
. google.protobuf.Struct
è una
struttura di dati che mappa le chiavi alle istanze di google.protobuf.Value
. La struttura di dati google.protobuf.Value
memorizza
i valori in campi diversi a seconda del tipo di dati. Ad esempio:
- le stringhe vengono memorizzate come
metadata.FIELD_NAME.string_value
, - i numeri vengono memorizzati come
metadata.FIELD_NAME.number_value
, - I valori booleani sono memorizzati come
metadata.FIELD_NAME.bool_value
.
Per filtrare in base a metadata
, devi utilizzare l'operatore di attraversamento per accedere al campo in base al quale vuoi applicare il filtro. L'operatore di attraversamento utilizza il seguente
formato.
REST
metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\"
Python
"metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\""
Ad esempio, considera una struttura di metadati come la seguente:
{
"field_1": 5,
"field_2": "example",
"field_3": {
...
},
"field_4": [],
"field_5": true,
}
Le seguenti query illustrano come utilizzare l'operatore di attraversamento per filtrare in base a di questi metadati di esempio.
Filtra in base ai record con
metadata.field_1
con un valore inferiore a 5
REST
metadata.field_1.number_value<5
Python
"metadata.field_1.number_value<5"
Filtra in base ai record con
metadata.field_2
con un valore uguale a esempio.
REST
metadata.field_2.string_value=\"example\"
Python
"metadata.field_2.string_value=\"example\""
Filtra in base ai record con
metadata.field_5
con un valore uguale a true.
REST
metadata.field_5.bool_value=true
Python
"metadata.field_5.bool_value=true"
Filtra i contesti in base alle relazioni padre e figlio
Puoi utilizzare l'operatore has per trovare i contesti principali o secondari di in un contesto specificato.
L'operatore "ha" utilizza il seguente formato:
"parent_contexts:\"CONTEXT_RESOURCE_NAME\""
"child_contexts:\"CONTEXT_RESOURCE_NAME\""
Il nome del contesto deve essere il nome completo della risorsa del contesto, ad esempio
le seguenti:
project/PROJECT/locations/LOCATION/metadataStores/METADATA-STORE/contexts/CONTEXT
.
I seguenti filtri mostrano come utilizzare l'operatore has:
Filtra per tutti i contesti che sono elementi secondari della pipeline specificata.
REST
parent_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\"
Python
"parent_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\""
Filtra in base a tutti i contesti che sono un elemento padre della pipeline specificata.
REST
child_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\"
Python
"child_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\""
Filtra contesti, esecuzioni e artefatti per associazione e attribuzione
Puoi utilizzare la funzione in_context()
per filtrare in base agli elementi o alle esecuzioni associati a un contesto. Puoi utilizzare la funzione with_execution()
per filtrare in base ad artefatti o contesti specifici associati a un
dell'esecuzione. Analogamente, puoi utilizzare la funzione with_artifact()
per filtrare in base a esecuzioni o contesti specifici associati a un artefatto.
Le funzioni di filtro vengono utilizzate nel seguente formato.
"in_context(\"CONTEXT_RESOURCE_NAME\")"
"with_execution(\"EXECUTION_RESOURCE_NAME\")"
"with_artifact(\"ARTIFACT_RESOURCE_NAME\")"
I nomi del contesto, dell'esecuzione e degli artefatti devono essere la risorsa completa come mostrato di seguito.
project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/contexts/CONTEXT
project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/executions/EXECUTION
project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/artifacts/ARTIFACT
L'esempio seguente mostra come filtrare in base agli oggetti che si trovano nel una pipeline specificata.
REST
in_context(\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\")
Python
"in_context(\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\")"
Puoi utilizzare un carattere jolly *
nelle funzioni di filtro per filtrare in base ai parametri di
ogni risorsa. Ad esempio, puoi utilizzare quanto segue per filtrare tutte le esecuzioni
che agiscono su un tipo di artefatto system.model
.
REST
with_artifact(\"*\",\"schema_title='name.model'\")
Python
"with_artifact(\"*\",\"schema_title='name.model'\")"
Gli altri parametri supportati che puoi filtrare in base ai seguenti sono:
input=true/false
: filtra i tipi di elementi di input o di output.event_time
: filtra le esecuzioni o i tempi degli eventi degli elementi artefatti.- Tutti gli altri campi filtro supportati
Puoi combinare i campi con gli operandi logici per costruire query di filtro complesse. Tieni presente che il numero massimo di asset nidificati supportati la profondità della funzione è 5.
Esegui query sugli elementi
Gli artefatti, come set di dati e modelli, rappresentano i dati utilizzati o prodotti dai tuoi nel flusso di lavoro ML. Segui le istruzioni riportate di seguito per eseguire query sugli elementi.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- METADATA_STORE: l'ID archivio di metadati in cui viene creato l'artefatto.
L'archivio di metadati predefinito è denominato
default
. - PAGE_SIZE: (facoltativo) il numero massimo di artefatti da restituire. Se questo valore non è specificato, il servizio restituisce un massimo di 100 record.
- PAGE_TOKEN: (Facoltativo) un token di pagina di una chiamata MetadataService.ListArtifacts precedente. Specifica questo token per visualizzare la pagina dei risultati successiva.
FILTER: specifica le condizioni necessarie per includere un elemento nell'insieme di risultati.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti vedere un output simile al seguente. ARTIFACT_ID è l'ID del record dell'artefatto.
{ "artifacts": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/artifacts/ARTIFACT_ID", "displayName": "Example artifact", "uri": "gs://your_bucket_name/artifacts/dataset.csv", "etag": "67891011", "createTime": "2021-05-18T00:33:13.833Z", "updateTime": "2021-05-18T00:33:13.833Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the example artifact." }, { "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "displayName": "Another example artifact", "uri": "gs://your_bucket_name/artifacts/dataset-2.csv", "etag": "67891012", "createTime": "2021-05-18T00:29:24.344Z", "updateTime": "2021-05-18T00:29:24.344Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the other example artifact." } ] }
Python
Python
project
: il tuo ID progetto. Puoi trovare questi ID nella console Google Cloud pagina di benvenuto.location
: consulta l'elenco delle reti disponibili di località.display_name_filter
: filtro da applicare al nome visualizzato durante l'elenco delle risorse con il formato "display_name=\"my_filter\"".create_date_filter
: filtro da applicare al nome create_date mentre elenca le risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"",.
Esegui query sulle esecuzioni
Le esecuzioni rappresentano un passaggio del flusso di lavoro di ML, ad esempio la preelaborazione dei dati o l'addestramento di un modello. Usa le seguenti istruzioni per eseguire query sulle esecuzioni.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- METADATA_STORE: l'ID del repository dei metadati in cui viene creata l'esecuzione.
L'archivio di metadati predefinito è denominato
default
. - PAGE_SIZE: (facoltativo) Il numero massimo di elementi da restituire. Se questo valore non è specificato, il servizio restituisce un massimo di 100 record.
- PAGE_TOKEN: (facoltativo) un token di pagina di un file MetadataService.ListArtifacts precedente chiamata. Specifica questo token per ottenere la pagina successiva dei risultati.
FILTER: specifica le condizioni necessarie per includere un'esecuzione nell'insieme di risultati.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del record di esecuzione.
{ "executions": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "displayName": "Example execution 1", "etag": "67891011", "createTime": "2021-05-18T00:06:56.177Z", "updateTime": "2021-05-18T00:06:56.177Z", "schemaTitle": "system.Run", "schemaVersion": "0.0.1", "metadata": {}, "description": "Description of the example execution." }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "displayName": "Example execution 2", "etag": "67891011", "createTime": "2021-05-18T00:04:49.659Z", "updateTime": "2021-05-18T00:04:49.659Z", "schemaTitle": "system.Run", "schemaVersion": "0.0.1", "metadata": {}, "description": "Description of the example execution." } ] }
Python
Python
project
: il tuo ID progetto. Puoi trovare questi ID nella console Google Cloud pagina di benvenuto.location
: consulta l'elenco delle reti disponibili di località.display_name_filter
: filtro da applicare al nome visualizzato mentre elenca le risorse con il formato "display_name=\"my_filter\"" di Google.create_date_filter
: filtro da applicare al nome create_date mentre elenca le risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"",.
Query sui contesti
I contesti consentono di raggruppare insiemi di esecuzioni, artefatti e altri contesti. Segui le istruzioni riportate di seguito per eseguire query sui contesti.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- METADATA_STORE: l'ID archivio di metadati in cui viene creato il contesto.
L'archivio dei metadati predefinito si chiama
default
. - PAGE_SIZE: (facoltativo) Il numero massimo di elementi da restituire. Se questo valore non è specificato, il servizio restituisce un massimo di 100 record.
- PAGE_TOKEN: (Facoltativo) un token di pagina di una chiamata MetadataService.ListArtifacts precedente. Specifica questo token per ottenere la pagina successiva dei risultati.
FILTER: specifica le condizioni necessarie per includere un contesto nel set di risultati.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti vedere un output simile al seguente. CONTEXT_ID è l'ID del record del contesto.
{ "contexts": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID", "displayName": "Experiment 1", "etag": "67891011", "createTime": "2021-05-18T22:36:02.153Z", "updateTime": "2021-05-18T22:36:02.153Z", "parentContexts": [], "schemaTitle": "system.Experiment", "schemaVersion": "0.0.1", "metadata": {} }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID", "displayName": "Pipeline run 1", "etag": "67891011", "createTime": "2021-05-18T22:35:02.600Z", "updateTime": "2021-05-18T22:35:02.600Z", "parentContexts": [], "schemaTitle": "system.PipelineRun", "schemaVersion": "0.0.1", "metadata": {} } ] }
Esegui una query per gli elementi di input e output di un'esecuzione
Segui le istruzioni riportate di seguito per eseguire query sugli elementi e sulle esecuzioni nel contesto specificato, nonché sugli eventi che collegano gli elementi alle esecuzioni.
SDK Vertex AI per Python
Artefatti di input
Questo esempio di SDK Python prevede la ricerca degli elementi di input di un'esecuzione.
Python
Artefatti di output
Questo esempio dell'SDK Python prevede l'esecuzione di query sugli artefatti di output di un'esecuzione.
Python
REST
Questo esempio REST include query sia per gli elementi di input che di output di un'esecuzione.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- METADATA_STORE: l'ID del repository dei metadati in cui viene creata l'esecuzione.
L'archivio dei metadati predefinito si chiama
default
. - EXECUTION_ID: l'ID del record di esecuzione.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID:queryExecutionInputsAndOutputs
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del di esecuzione del pod. Se l'ID esecuzione non è specificato, Vertex ML Metadata ha creato un identificatore univoco per questa esecuzione. ARTIFACT_ID è l'ID del record dell'elemento.
{ "artifacts": [ { "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "displayName": "Example artifact", "uri": "gs://your_bucket_name/artifacts/dataset.csv", "etag": "678901011", "createTime": "2021-05-18T00:29:24.344Z", "updateTime": "2021-05-18T00:29:24.344Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the example artifact." }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "displayName": "Example artifact 2", "uri": "gs://your_bucket_name/artifacts/dataset.csv", "etag": "678901011", "createTime": "2021-05-18T00:33:13.833Z", "updateTime": "2021-05-18T00:33:13.833Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the example artifact." } ], "executions": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "displayName": "Example execution 1", "etag": "678901011", "createTime": "2021-05-18T00:04:49.659Z", "updateTime": "2021-05-18T00:04:49.659Z", "schemaTitle": "system.Run", "schemaVersion": "0.0.1", "metadata": {}, "description": "Description of the example execution." } ], "events": [ { "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "eventTime": "2021-05-18T00:04:49.659Z",, "type": "INPUT", }, { "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "eventTime": "2021-05-18T00:04:49.659Z",, "type": "OUTPUT", } ] }
Esegui una query per il sottografo della linea di successione di un contesto
Segui le istruzioni riportate di seguito per eseguire query sugli elementi e sulle esecuzioni nel contesto specificato, nonché sugli eventi che collegano gli elementi alle esecuzioni.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- METADATA_STORE: l'ID archivio di metadati in cui viene creata l'esecuzione.
L'archivio dei metadati predefinito si chiama
default
. - CONTEXT_ID: (facoltativo) l'ID del record di contesto.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID:queryContextLineageSubgraph
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del record di esecuzione. Se l'ID esecuzione non è specificato, Vertex ML Metadata ha creato un identificatore univoco per questa esecuzione. ARTIFACT_ID è l'ID del record dell'artefatto.
{ "artifacts": [ { "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "displayName": "Example artifact", "uri": "gs://your_bucket_name/artifacts/dataset.csv", "etag": "678901011", "createTime": "2021-05-18T00:29:24.344Z", "updateTime": "2021-05-18T00:29:24.344Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the example artifact." }, { "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "displayName": "Example artifact 2", "uri": "gs://your_bucket_name/artifacts/dataset.csv", "etag": "678901011", "createTime": "2021-05-18T00:33:13.833Z", "updateTime": "2021-05-18T00:33:13.833Z", "state": "LIVE", "schemaTitle": "system.Dataset", "schemaVersion": "0.0.1", "metadata": { "payload_format": "CSV" }, "description": "Description of the example artifact." } ], "executions": [ { "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "displayName": "Example execution 1", "etag": "678901011", "createTime": "2021-05-18T00:04:49.659Z", "updateTime": "2021-05-18T00:04:49.659Z", "schemaTitle": "system.Run", "schemaVersion": "0.0.1", "metadata": {}, "description": "Description of the example execution." } ], "events": [ { "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "eventTime": "2021-05-18T00:04:49.659Z",, "type": "INPUT", }, { "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID", "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID", "eventTime": "2021-05-18T00:04:49.659Z",, "type": "OUTPUT", } ] }