Puoi utilizzare Vertex ML Metadata per monitorare e analizzare i metadati prodotti dai tuoi sistemi di machine learning (ML). Il monitoraggio di questi metadati semplifica l'analisi del comportamento del tuo sistema ML. In questo modo puoi comprendere le variazioni nel rendimento del sistema o confrontare gli artefatti prodotti dal sistema ML.
Se non hai mai utilizzato Vertex ML Metadata, leggi l'introduzione a Vertex ML Metadata per scoprire di più sul monitoraggio e l'analisi dei metadati del flusso di lavoro di ML.
Scopri come eseguire query per Vertex ML Metadata che vuoi analizzare nei seguenti modi:
- Query per tutti gli artefatti, le esecuzioni o il contesto che corrispondono ai tuoi criteri di filtro.
- Query per gli artefatti di input e output di un'esecuzione insieme agli eventi, utilizzati per collegare gli artefatti all'esecuzione.
- Query per il sottografo della derivazione di un contesto. Questa query restituisce gli artefatti e le esecuzioni di un contesto, insieme agli eventi che collegano gli artefatti alle esecuzioni.
Query per artefatti, esecuzioni e contesti
Puoi utilizzare l'SDK Vertex AI per Python o l'API REST per eseguire query sui record di artefatti, esecuzioni e contesti utilizzando filtri per creare query come la seguente:
- 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 per artefatti, esecuzioni e contesti.
Panoramica della sintassi dei filtri
Le sezioni seguenti descrivono come utilizzare i filtri per eseguire query su artefatti, esecuzioni e contesti.
Campi
I seguenti campi sono supportati durante il filtraggio di artefatti, 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 virgoletta che fa parte del filtro deve essere preceduta da una barra rovesciata.
Operatori di confronto
Puoi utilizzare i seguenti operatori di confronto nei filtri: =
, !=
, <
,
>
, >=
, <=
.
Ad esempio, i seguenti filtri consentono di trovare tutti gli artefatti in cui il nome visualizzato è my_artifact.
REST
display_name=\"my_artifact\"
Python
"display_name=\"my_artifact\""
Per i campi stringa, puoi utilizzare il filtro con caratteri jolly con il carattere *
.
Per i campi 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 una query per gli artefatti di tipo
ai_platform.model
e un campo metadata
precision
con un valore numerico
maggiore di 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 i 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 dei 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 vengono memorizzati come
metadata.FIELD_NAME.bool_value
.
Per filtrare in base a metadata
, devi utilizzare l'operatore di attraversamento per passare al campo in base al quale vuoi filtrare. 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 dei metadati come la seguente:
{
"field_1": 5,
"field_2": "example",
"field_3": {
...
},
"field_4": [],
"field_5": true,
}
Le seguenti query mostrano come utilizzare l'operatore di attraversamento per filtrare in base a questi metadati di esempio.
Filtra i record che hanno
metadata.field_1
con un valore inferiore a 5.
REST
metadata.field_1.number_value<5
Python
"metadata.field_1.number_value<5"
Filtra i record che hanno
metadata.field_2
con un valore uguale a example.
REST
metadata.field_2.string_value=\"example\"
Python
"metadata.field_2.string_value=\"example\""
Filtra i record che hanno
metadata.field_5
con un valore uguale a true.
REST
metadata.field_5.bool_value=true
Python
"metadata.field_5.bool_value=true"
Filtrare i contesti in base alle relazioni principali e secondarie
Puoi utilizzare l'operatore has per trovare contesti che sono genitori o figli di un contesto specificato.
L'operatore has 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:
project/PROJECT/locations/LOCATION/metadataStores/METADATA-STORE/contexts/CONTEXT
.
I seguenti filtri mostrano come utilizzare l'operatore has:
Filtra tutti i contesti 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 tutti i contesti che sono genitori 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 gli artefatti o le esecuzioni
associati a un contesto. Puoi utilizzare la funzione with_execution()
per filtrare artefatti o contesti specifici associati a un'esecuzione. Allo stesso modo, 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\")"
Il contesto, l'esecuzione e i nomi degli artefatti devono essere il nome completo della risorsa, come 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 gli oggetti che si trovano nella 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 i 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'\")"
Di seguito sono riportati altri parametri supportati su cui puoi filtrare:
input=true/false
: filtra i tipi di artefatti di input o output.event_time
: Filtra le esecuzioni o gli orari degli eventi degli artefatti.- Tutti gli altri campi di filtro supportati
Puoi combinare i campi con operandi logici per creare query di filtro complesse. Tieni presente che la profondità massima supportata delle funzioni nidificate è 5.
Query per gli artefatti
Gli artefatti, come set di dati e modelli, rappresentano i dati utilizzati o prodotti dal tuo flusso di lavoro ML. Per eseguire query per gli artefatti, segui le istruzioni riportate di seguito.
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 dell'archivio metadati in cui viene creato l'artefatto.
L'archivio predefinito dei metadati si chiama
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 precedente chiamata MetadataService.ListArtifacts. Specifica questo token per ottenere la pagina successiva dei risultati.
FILTER: specifica le condizioni necessarie per includere un artefatto 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/artifacts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER
Per inviare la richiesta, espandi una di queste 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 pagina Benvenuto della console Google Cloud .location
: consulta l'elenco delle località disponibili.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 durante l'elenco delle risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"".
Query per le esecuzioni
Le esecuzioni rappresentano un passaggio del flusso di lavoro ML, ad esempio il pre-elaborazione dei dati o l'addestramento di un modello. Utilizza le seguenti istruzioni per eseguire query per le 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 dello store di metadati in cui viene creata l'esecuzione.
L'archivio predefinito dei metadati si chiama
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 precedente chiamata MetadataService.ListArtifacts. Specifica questo token per ottenere la pagina successiva dei risultati.
FILTER: specifica le condizioni richieste per includere un'esecuzione 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/executions?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER
Per inviare la richiesta, espandi una di queste 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 pagina Benvenuto della console Google Cloud .location
: consulta l'elenco delle località disponibili.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 durante l'elenco delle risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"".
Query per i contesti
I contesti ti consentono di raggruppare insiemi di esecuzioni, artefatti e altri contesti. Utilizza le seguenti istruzioni per eseguire query per i 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 del negozio di metadati in cui viene creato il contesto.
L'archivio predefinito dei metadati si chiama
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 precedente chiamata MetadataService.ListArtifacts. 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 di queste opzioni:
Dovresti vedere un output simile al seguente. CONTEXT_ID è l'ID del record di 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": {} } ] }
Query per gli artefatti di input e output di un'esecuzione
Utilizza le seguenti istruzioni per eseguire query sugli artefatti e sulle esecuzioni nel contesto specificato, insieme agli eventi che collegano gli artefatti alle esecuzioni.
SDK Vertex AI per Python
Artefatti di input
Questo esempio di SDK Python prevede l'esecuzione di query sugli artefatti di input di un'esecuzione.
Python
Artefatti di output
Questo esempio di SDK Python prevede l'esecuzione di query per gli artefatti di output di un'esecuzione.
Python
REST
Questo esempio REST include query per gli artefatti di input e 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 dello store di metadati in cui viene creata l'esecuzione.
L'archivio predefinito dei metadati 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 di queste 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_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 genealogia di un contesto
Utilizza le seguenti istruzioni per eseguire query sugli artefatti e sulle esecuzioni nel contesto specificato, insieme agli eventi che collegano gli artefatti 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 dello store di metadati in cui viene creata l'esecuzione.
L'archivio predefinito dei metadati 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 di queste 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", } ] }