Puedes usar Vertex ML Metadata para hacer un seguimiento y analizar los metadatos que generan los sistemas de aprendizaje automático (AA). Mediante el seguimiento de estos metadatos, es más fácil analizar el comportamiento de tu sistema de AA. Esto puede ayudarte a comprender los cambios en el rendimiento de tu sistema o a comparar los artefactos que produjo tu sistema de AA.
Si no estás familiarizado con Vertex ML Metadata, lee la introducción a Vertex ML Metadata para obtener más información sobre el seguimiento y el análisis de los metadatos de tu flujo de trabajo de AA.
Aprende realizar las consultas de Vertex ML Metadata que quieres analizar de las siguientes maneras:
- Consulta todos los artefactos, las ejecuciones o los contextos que coinciden con tus criterios de filtrado.
- Consulta los artefactos de entrada y de salida de una ejecución, junto con los eventos que se usaron para conectar los artefactos con la ejecución.
- Consulta el subgrafo de linaje de un contexto. Esta consulta muestra los artefactos y las ejecuciones de un contexto, junto con los eventos que conectan los artefactos con las ejecuciones.
Consulta artefactos, ejecuciones y contextos
Puedes usar el SDK de Vertex AI para Python o la API de REST a fin de consultar artefactos, ejecuciones y registros de contextos con filtros a fin de crear consultas como las siguientes:
- ¿Qué versiones de un modelo entrenado alcanzaron un cierto umbral de calidad?
- ¿Qué conjunto de datos se usa en una canalización determinada?
En las siguientes secciones, se muestra cómocrear filtros y cómo consultar artefactos, ejecuciones y contextos.
Descripción general de la sintaxis del filtro
En las siguientes secciones se describe cómo usar filtros para buscar artefactos, ejecuciones y contextos.
Campos
Los siguientes campos son compatibles cuando se filtran artefactos, ejecuciones y contextos.
Artefacto | Ejecución | Context | |
---|---|---|---|
name |
|||
display_name |
|||
schema_title |
|||
create_time |
|||
update_time |
|||
metadata |
|||
state |
|||
uri |
Tu filtro debe estar entre comillas y todas las comillas que formen parte del filtro deben escaparse con una barra inversa.
Operadores de comparación
Puedes usar los siguientes operadores de comparación en tus filtros: =
, !=
, <
, >
, >=
y <=
.
Por ejemplo, en los siguientes filtros se encuentran todos los artefactos en los que el nombre visible es my_artifact.
REST
display_name=\"my_artifact\"
Python
"display_name=\"my_artifact\""
Para los campos de string, puedes usar el filtro de comodín con el caracter *
.
Para los campos de marca de tiempo, como create_time
y update_time
, debes formatear la fecha con el formato RFC 3339, por ejemplo:
REST
create_time=\"2021-05-11T12:30:00-08:00\"
Python
"create_time=\"2021-05-11T12:30:00-08:00\""
Operadores lógicos
Puedes usar los operadores lógicos AND
y OR
para combinar filtros para crear una consulta compleja.
En el siguiente ejemplo, se muestra cómo consultar los artefactos de tipo ai_platform.model
y un campo metadata
precision
con un valor numérico mayor que 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"
Filtra metadatos con el operador de desvío
El campo metadata
es una instancia de google.protobuf.Struct
cuyo formato se define en el esquema especificado en el campo schema_title
. google.protobuf.Struct
es una estructura de datos que asigna claves a instancias google.protobuf.Value
. La estructura de datos google.protobuf.Value
almacena valores en diferentes campos según su tipo de datos Por ejemplo:
- las strings se almacenan como
metadata.FIELD_NAME.string_value
, - los números se almacenan como
metadata.FIELD_NAME.number_value
, - los booleanos se almacenan como
metadata.FIELD_NAME.bool_value
.
Para filtrar en metadata
, debes usar el operador de desvío a fin de recorrer el campo que deseas filtrar. El operador de desvío usa el siguiente formato.
REST
metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\"
Python
"metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\""
Por ejemplo, considera una estructura de metadatos como la siguiente:
{
"field_1": 5,
"field_2": "example",
"field_3": {
...
},
"field_4": [],
"field_5": true,
}
En las siguientes consultas, se ilustra cómo usar el operador de desvío para filtrar los metadatos de este ejemplo.
Filtra los registros que tengan
metadata.field_1
con un valor inferior a 5.
REST
metadata.field_1.number_value<5
Python
"metadata.field_1.number_value<5"
Filtra los registros que tienen
metadata.field_2
con un valor igual a ejemplo.
REST
metadata.field_2.string_value=\"example\"
Python
"metadata.field_2.string_value=\"example\""
Filtra los registros que tengan
metadata.field_5
con un valor igual a verdadero.
REST
metadata.field_5.bool_value=true
Python
"metadata.field_5.bool_value=true"
Filtra contextos según las relaciones superiores y secundarias
Puedes usar el operador has para buscar contextos superiores o secundarios de un contexto específico.
El operador usa el siguiente formato:
"parent_contexts:\"CONTEXT_RESOURCE_NAME\""
"child_contexts:\"CONTEXT_RESOURCE_NAME\""
El nombre del contexto debe ser el nombre completo del recurso del contexto, como el siguiente: project/PROJECT/locations/LOCATION/metadataStores/METADATA-STORE/contexts/CONTEXT
.
Los siguientes filtros demuestran cómo usar el operador has:
Filtra todos los contextos que sean secundarios de la canalización especificada.
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 todos los contextos que sean superiores de la canalización especificada.
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 contextos, ejecuciones y artefactos por asociación y atribución
Puedes usar la función in_context()
para filtrar artefactos o ejecuciones que se asocian con un contexto. Puedes usar la función with_execution()
para filtrar artefactos o contextos específicos asociados con una ejecución. De manera similar, puedes usar la función with_artifact()
para filtrar ejecuciones o contextos específicos asociados con un artefacto.
Las funciones de filtro se usan en el siguiente formato.
"in_context(\"CONTEXT_RESOURCE_NAME\")"
"with_execution(\"EXECUTION_RESOURCE_NAME\")"
"with_artifact(\"ARTIFACT_RESOURCE_NAME\")"
El contexto, la ejecución y los nombres de los artefactos deben ser el nombre completo del recurso, como el siguiente.
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
En el siguiente ejemplo se muestra cómo filtrar objetos que se encuentran en la canalización especificada.
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\")"
Puedes usar un comodín *
en las funciones de filtro para filtrar los parámetros de cada recurso. Por ejemplo, puedes usar lo siguiente para filtrar todas las ejecuciones que actúan en un tipo de artefacto system.model
.
REST
with_artifact(\"*\",\"schema_title='name.model'\")
Python
"with_artifact(\"*\",\"schema_title='name.model'\")"
Otros parámetros compatibles que puedes filtrar son los siguientes:
input=true/false
: filtra los tipos de artefactos de entrada o salida.event_time
: filtra las ejecuciones o los tiempos de los eventos de los artefactos.- Todos los demás campos de filtro compatibles
Puedes combinar los campos con operandos lógicos para construir consultas de filtro complejas. Ten en cuenta que la profundidad máxima de la función anidada compatible es 5.
Consulta los artefactos
Los artefactos, como los conjuntos de datos y los modelos, representan los datos que usa o produce tu flujo de trabajo del AA. Usa las siguientes instrucciones para buscar artefactos.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- METADATA_STORE: Es el ID del almacén de metadatos en el que se crea el artefacto.
El almacén de metadatos predeterminado se llama
default
. - PAGE_SIZE: (Opcional) Es el número máximo de artefactos que se mostrarán. Si no se especifica este valor, el servicio muestra un máximo de 100 registros.
- PAGE_TOKEN: (Opcional) Es un token de página de una llamada anterior a MetadataService.ListArtifacts. Especifica este token para obtener la siguiente página de resultados.
FILTER: Especifica las condiciones necesarias para incluir un artefacto en el conjunto de resultados.
Método HTTP y 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
Para enviar tu solicitud, expande una de estas opciones:
Deberías ver un resultado similar al siguiente. ARTIFACT_ID: El ID del registro del artefacto.
{ "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
: El ID del proyecto. Puedes encontrar estos ID en la página de bienvenida de la consola de Google Cloud.location
: Consulta Lista de ubicaciones disponibles.display_name_filter
: Filtro que se aplicará al nombre visible mientras se enumeran los recursos con el formato "display_name=\"my_filter\"" .create_date_filter
: Filtro que se aplicará al nombre de create_date mientras se enumeran los recursos con el formato "create_time>\"2022-06-11T12:30:00-08:00\"",.
Consulta ejecuciones
Las ejecuciones representan un paso en tu flujo de trabajo del AA, como el procesamiento previo de datos o el entrenamiento de un modelo. Usa las siguientes instrucciones para consultar las ejecuciones.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- METADATA_STORE: Es el ID del almacén de metadatos en el que se crea la ejecución.
El almacén de metadatos predeterminado se llama
default
. - PAGE_SIZE: (Opcional) Es el número máximo de artefactos que se mostrarán. Si no se especifica este valor, el servicio muestra un máximo de 100 registros.
- PAGE_TOKEN: (Opcional) Es un token de página de una llamada anterior a MetadataService.ListArtifacts. Especifica este token para obtener la siguiente página de resultados.
FILTER: Especifica las condiciones necesarias para incluir una ejecución en el conjunto de resultados.
Método HTTP y 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
Para enviar tu solicitud, expande una de estas opciones:
Deberías ver un resultado similar al siguiente. EXECUTION_ID es el ID del registro de ejecución.
{ "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
: El ID del proyecto. Puedes encontrar estos ID en la página de bienvenida de la consola de Google Cloud.location
: Consulta Lista de ubicaciones disponibles.display_name_filter
: Filtro que se aplicará al nombre visible mientras se enumeran los recursos con el formato "display_name=\"my_filter\"" .create_date_filter
: Filtro que se aplicará al nombre de create_date mientras se enumeran los recursos con el formato "create_time>\"2022-06-11T12:30:00-08:00\"",.
Consulta contextos
Los contextos te permiten agrupar conjuntos de ejecuciones, artefactos y otros contextos. Usa las siguientes instrucciones para buscar contextos.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- METADATA_STORE: Es el ID del almacén de metadatos en el que se crea el contexto.
El almacén de metadatos predeterminado se llama
default
. - PAGE_SIZE: (Opcional) Es el número máximo de artefactos que se mostrarán. Si no se especifica este valor, el servicio muestra un máximo de 100 registros.
- PAGE_TOKEN: (Opcional) Es un token de página de una llamada anterior a MetadataService.ListArtifacts. Especifica este token para obtener la siguiente página de resultados.
FILTER: Especifica las condiciones necesarias para incluir un contexto en el conjunto de resultados.
Método HTTP y 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
Para enviar tu solicitud, expande una de estas opciones:
Deberías ver un resultado similar al siguiente. CONTEXT_ID: El ID del registro de contexto.
{ "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": {} } ] }
Consulta artefactos de entrada y salida de una ejecución
Usa las siguientes instrucciones para consultar los artefactos y las ejecuciones en el contexto especificado, junto con los eventos que conectan los artefactos con las ejecuciones.
SDK de Vertex AI para Python
Artefactos de entrada
Esta muestra del SDK de Python implica consultar los artefactos de entrada de una ejecución.
Python
Artefactos de salida
Esta muestra del SDK de Python implica consultar los artefactos de salida de una ejecución.
Python
REST
En esta muestra de REST, se incluyen consultas de artefactos de entrada y salida de una ejecución.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- METADATA_STORE: Es el ID del almacén de metadatos en el que se crea la ejecución.
El almacén de metadatos predeterminado se llama
default
. - EXECUTION_ID: Es el ID del registro de ejecución.
Método HTTP y URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID:queryExecutionInputsAndOutputs
Para enviar tu solicitud, expande una de estas opciones:
Deberías ver un resultado similar al siguiente. EXECUTION_ID es el ID del registro de ejecución. Si no se especifica el ID de ejecución, Vertex ML Metadata creó un identificador único para esta ejecución. ARTIFACT_ID es el ID del registro del artefacto.
{ "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", } ] }
Consulta el subgrafo de linaje de un contexto
Usa las siguientes instrucciones para consultar los artefactos y las ejecuciones en el contexto especificado, junto con los eventos que conectan los artefactos con las ejecuciones.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- METADATA_STORE: Es el ID del almacén de metadatos en el que se crea la ejecución.
El almacén de metadatos predeterminado se llama
default
. - CONTEXT_ID: (Opcional) El ID del registro de contexto.
HTTP method and URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID:queryContextLineageSubgraph
Para enviar tu solicitud, expande una de estas opciones:
Deberías ver un resultado similar al siguiente. EXECUTION_ID es el ID del registro de ejecución. Si no se especifica el ID de ejecución, Vertex ML Metadata creó un identificador único para esta ejecución. ARTIFACT_ID es el ID del registro del artefacto.
{ "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", } ] }