Monitorize o Vertex ML Metadata

O Vertex ML Metadata permite-lhe acompanhar e analisar os metadados produzidos pelos seus fluxos de trabalho de aprendizagem automática (ML). Se for a primeira vez que usa o Vertex ML Metadata, leia a introdução ao Vertex ML Metadata para saber mais sobre o acompanhamento e a análise dos metadados do seu fluxo de trabalho de ML.

Este guia demonstra como registar metadados através do seguinte processo:

  1. Crie uma execução que represente um passo no seu fluxo de trabalho de ML.
  2. Procure artefactos existentes para encontrar artefactos de entrada que já estejam escritos na sua loja de metadados.
  3. Crie artefactos para as entradas da sua execução que ainda não estejam escritas na sua loja de metadados e quaisquer resultados produzidos por esta execução.
  4. Crie eventos para representar a relação entre a sua execução e os respetivos artefactos de entrada e saída.
  5. Opcionalmente, adicione a sua execução e artefactos a um Context. Use um contexto para agrupar conjuntos de execuções e artefactos. Por exemplo, se estiver a fazer experiências para encontrar o melhor conjunto de hiperparâmetros para preparar um modelo, cada experiência pode ser uma execução diferente com o seu próprio conjunto de parâmetros e métricas. Pode comparar as execuções num contexto para encontrar a experiência que produziu o melhor modelo.

    Antes de poder adicionar execução e artefactos a um contexto, tem de criar um contexto.

Existem duas formas de criar recursos do Vertex ML Metadata. Pode usar comandos REST ou o SDK Vertex AI para Python. O SDK do Python simplifica a criação e a descoberta de vários tipos de recursos. Quando cria execuções com Python, não tem de criar o payload manualmente.

Antes de começar

A primeira vez que usa o Vertex ML Metadata num Google Cloud projeto, o Vertex AI cria o repositório do Vertex ML Metadata do seu projeto.

Se quiser que os seus metadados sejam encriptados através de uma chave de encriptação gerida pelo cliente (CMEK), tem de criar o seu repositório de metadados com uma CMEK antes de usar o Vertex ML Metadata para acompanhar ou analisar metadados. Use as instruções create a metadata store that uses a CMEK para configurar o armazenamento de metadados do seu projeto.

Crie uma execução

As execuções representam um passo no seu fluxo de trabalho de ML. Siga as instruções abaixo para criar uma execução.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: o seu ID do projeto.
  • METADATA_STORE: o ID do armazenamento de metadados onde a execução é criada. O repositório de metadados predefinido chama-se default.
  • EXECUTION_ID: o ID do registo de execução. Se o ID de execução não for especificado, o Vertex ML Metadata cria um identificador exclusivo para esta execução.
  • DISPLAY_NAME: o nome a apresentar da execução. Este campo pode conter até 128 carateres Unicode.
  • EXECUTION_STATE: (Opcional) Um valor da enumeração State que representa o estado atual da execução. Este campo é gerido por aplicações cliente. O Vertex ML Metadata não verifica a validade das transições de estado.
  • METADATA_SCHEMA_TITLE: o título do esquema que descreve o campo de metadados. O título do esquema tem de cumprir o formato `.`. O espaço de nomes tem de começar por uma letra minúscula, pode conter carateres minúsculos e números, e pode ter entre dois e vinte carateres. O nome do esquema tem de começar com uma letra maiúscula, pode incluir letras e números, e pode ter entre 2 e 49 carateres.
  • METADATA_SCHEMA_VERSION: (Opcional) A versão do esquema que descreve o campo de metadados. schema_version tem de ser uma string de três números separados por pontos, por exemplo, 1.0.0 ou 1.0.1. Este formato ajuda a ordenar e comparar versões.
  • METADATA: (Opcional) Propriedades que descrevem a execução, como os parâmetros de execução.
  • DESCRIPTION: (Opcional) Uma string legível que descreve a finalidade da execução a ser criada.
  • LABELS: opcional. Metadados definidos pelo utilizador para organizar as suas execuções.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions?executionId=EXECUTION_ID

Corpo JSON do pedido:

{
  "displayName": "DISPLAY_NAME",
  "state": "EXECUTION_STATE",
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"

}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
  "displayName": "Example Execution",
  "etag": "67891011",
  "labels": {
    "test_label": "test_label_value"
  },
  "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

from typing import Any, Dict, List, Optional

from google.cloud import aiplatform
from google.cloud.aiplatform.metadata.schema.system import execution_schema


def create_execution_sample(
    display_name: str,
    input_artifacts: List[aiplatform.Artifact],
    output_artifacts: List[aiplatform.Artifact],
    project: str,
    location: str,
    execution_id: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    with execution_schema.ContainerExecution(
        display_name=display_name,
        execution_id=execution_id,
        metadata=metadata,
        schema_version=schema_version,
        description=description,
    ).create() as execution:
        execution.assign_input_artifacts(input_artifacts)
        execution.assign_output_artifacts(output_artifacts)
        return execution
  • display_name: o nome a apresentar da execução. Este campo pode conter até 128 carateres Unicode.
  • input_artifacts: uma lista de uma ou mais instâncias de aiplatform.Artifact que representam um artefacto de entrada.
  • output_artifacts:uma lista de uma ou mais instâncias de aiplatform.Artifact que representam um artefacto de saída.
  • project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
  • location: consulte a lista de localizações disponíveis.
  • execution_id: o ID do registo de execução. Se o ID de execução não for especificado, o Vertex ML Metadata cria um identificador exclusivo para esta execução.
  • metadata: propriedades que descrevem a execução, como os parâmetros de execução.
  • schema_version:a versão do esquema que descreve o campo de metadados.
  • description: (Opcional) Uma string legível que descreve a finalidade da execução a ser criada.

Procure um artefacto existente

Os artefactos representam dados usados ou produzidos pelo seu fluxo de trabalho de ML, como conjuntos de dados e modelos. Siga as instruções abaixo para procurar um artefacto existente.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: .
  • METADATA_STORE: o ID do armazenamento de metadados onde o artefacto é criado. O repositório de metadados predefinido chama-se default.
  • PAGE_SIZE: (Opcional) O número máximo de artefactos a devolver. Se este valor não for especificado, o serviço devolve um máximo de 100 registos.
  • PAGE_TOKEN: (Opcional) Um token de página de uma chamada MetadataService.ListArtifacts anterior. Especifique este token para obter a página seguinte de resultados.
  • FILTER: especifica as condições necessárias para incluir um artefacto no conjunto de resultados.

Método 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

Para enviar o seu pedido, expanda uma destas opções:

Deverá ver uma saída semelhante à seguinte. ARTIFACT_ID é o ID do registo do 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

from typing import Optional

from google.cloud import aiplatform


def list_artifact_sample(
    project: str,
    location: str,
    display_name_filter: Optional[str] = "display_name=\"my_model_*\"",
    create_date_filter: Optional[str] = "create_time>\"2022-06-11\"",
    order_by: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    combined_filters = f"{display_name_filter} AND {create_date_filter}"
    return aiplatform.Artifact.list(
        filter=combined_filters,
        order_by=order_by,
    )

  • project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
  • location: consulte a lista de localizações disponíveis.
  • display_name_filter: filtro a aplicar ao nome a apresentar ao listar os recursos com o formato "display_name=\"my_filter\"" .
  • create_date_filter: filtro a aplicar ao nome create_date ao listar os recursos com o formato "create_time>\"2022-06-11T12:30:00-08:00\"",.

Cria um artefacto.

Siga as instruções que se seguem para criar um artefacto.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: .
  • METADATA_STORE: o ID do armazenamento de metadados onde o artefacto é criado. O repositório de metadados predefinido chama-se default.
  • ARTIFACT_ID: (Opcional) O ID do registo do artefacto. Se o ID do artefacto não for especificado, o Vertex ML Metadata cria um identificador exclusivo para este artefacto.
  • DISPLAY_NAME: (Opcional) O nome do artefacto definido pelo utilizador.
  • URI: (opcional) a localização onde o artefacto está armazenado
  • ARTIFACT_STATE: (Opcional) Um valor da enumeração State que representa o estado atual do artefacto. Este campo é gerido por aplicações cliente. O Vertex ML Metadata não verifica a validade das transições de estado.
  • METADATA_SCHEMA_TITLE: o título do esquema que descreve o campo de metadados. O título do esquema tem de cumprir o formato `.`. O espaço de nomes tem de começar por uma letra minúscula, pode conter carateres minúsculos e números, e pode ter entre dois e vinte carateres. O nome do esquema tem de começar com uma letra maiúscula, pode incluir letras e números, e pode ter entre 2 e 49 carateres.
  • METADATA_SCHEMA_VERSION: (Opcional) A versão do esquema que descreve o campo de metadados. schema_version tem de ser uma string de três números separados por pontos, por exemplo, 1.0.0 ou 1.0.1. Este formato ajuda a ordenar e comparar versões.
  • METADATA: (opcional.) Propriedades que descrevem o artefacto, como o tipo de conjunto de dados.
  • DESCRIPTION: (Opcional) Uma string legível que descreve a finalidade da execução a ser criada.
  • LABELS:opcional. Metadados definidos pelo utilizador para organizar os seus artefactos.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts?artifactId=ARTIFACT_ID

Corpo JSON do pedido:

{
  "displayName": "DISPLAY_NAME",
  "uri": "URI",
  "state": "ARTIFACT_STATE",
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "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",
  "labels": {
    "test_label": "test_label_value"
  },
  "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."
}

Python

Python

from typing import Dict, Optional

from google.cloud.aiplatform.metadata.schema.system import artifact_schema


def create_artifact_sample(
    project: str,
    location: str,
    uri: Optional[str] = None,
    artifact_id: Optional[str] = None,
    display_name: Optional[str] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
    metadata: Optional[Dict] = None,
):
    system_artifact_schema = artifact_schema.Artifact(
        uri=uri,
        artifact_id=artifact_id,
        display_name=display_name,
        schema_version=schema_version,
        description=description,
        metadata=metadata,
    )
    return system_artifact_schema.create(project=project, location=location,)
  • project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
  • location: consulte a lista de localizações disponíveis.
  • uri: (Opcional) O identificador uniforme de recursos do ficheiro de artefacto, se existir. Pode estar vazio se não existir um ficheiro de artefacto real.
  • artifact_id: (Opcional) O ID do registo do artefacto. Se o ID do artefacto não for especificado, o Vertex ML Metadata cria um identificador exclusivo para este artefacto.
  • display_name: (Opcional) O nome do artefacto definido pelo utilizador.
  • schema_version: a versão do esquema que descreve o campo de metadados.
  • description: (Opcional) Uma string legível que descreve a finalidade do artefacto a ser criado.
  • metadata: propriedades que descrevem o artefacto, como os parâmetros do artefacto.

Crie eventos para associar artefactos a uma execução

Os eventos representam a relação entre uma execução e os respetivos artefactos de entrada e saída. Siga as instruções que se seguem para criar eventos para associar artefactos a uma execução.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: .
  • METADATA_STORE: o ID do armazenamento de metadados onde a execução é criada. O repositório de metadados predefinido chama-se default.
  • EXECUTION_ID: o ID do registo de execução.
  • ARTIFACT: o nome do recurso do artefacto. O nome do recurso está formatado da seguinte forma: projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID

  • EVENT_TYPE: (Opcional) Um valor da enumeração EventType que especifica se o artefacto é uma entrada ou uma saída da execução.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID:addExecutionEvents

Corpo JSON do pedido:

{
  "events": [
    {
      "artifact": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "type": "EVENT_TYPE"
    }
  ]
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Python

Python

from typing import Any, Dict, List, Optional

from google.cloud import aiplatform
from google.cloud.aiplatform.metadata.schema.system import execution_schema


def create_execution_sample(
    display_name: str,
    input_artifacts: List[aiplatform.Artifact],
    output_artifacts: List[aiplatform.Artifact],
    project: str,
    location: str,
    execution_id: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    with execution_schema.ContainerExecution(
        display_name=display_name,
        execution_id=execution_id,
        metadata=metadata,
        schema_version=schema_version,
        description=description,
    ).create() as execution:
        execution.assign_input_artifacts(input_artifacts)
        execution.assign_output_artifacts(output_artifacts)
        return execution
  • input_artifacts: uma lista de uma ou mais instâncias de aiplatform.Artifact que representam um artefacto de entrada.
  • output_artifacts: uma lista de uma ou mais instâncias de aiplatform.Artifact que representam um artefacto de saída.
  • project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
  • location: consulte a lista de localizações disponíveis.
  • execution_id: o ID do registo de execução. Se o ID de execução não for especificado, o Vertex ML Metadata cria um identificador exclusivo para esta execução.
  • metadata Propriedades que descrevem a execução, como os parâmetros de execução.
  • schema_version: a versão do esquema que descreve o campo de metadados.
  • description: (Opcional) Uma string legível que descreve a finalidade da execução a ser criada.

Crie um contexto

Os contextos permitem-lhe agrupar conjuntos de artefactos e execuções. Use as instruções seguintes para criar um contexto. Tenha em atenção que o Vertex AI Experiments cria um contexto que regista automaticamente artefactos e execuções nesse contexto, (consulte o artigo Crie ou elimine uma experiência).

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: .
  • METADATA_STORE:o ID do armazenamento de metadados onde a execução é criada. O repositório de metadados predefinido chama-se default.
  • CONTEXT_ID: (Opcional) O ID do registo de contexto. Se o ID do contexto não for especificado, o Vertex ML Metadata criou um identificador exclusivo para este contexto
  • DISPLAY_NAME: o nome a apresentar do contexto. Este campo pode conter até 128 carateres Unicode.
  • PARENT_CONTEXT: especifique o nome do recurso para quaisquer contextos principais. Um contexto não pode ter mais de 10 contextos principais.
  • METADATA_SCHEMA_TITLE: o título do esquema que descreve o campo de metadados. O título do esquema tem de cumprir o formato `.`. O espaço de nomes tem de começar por uma letra minúscula, pode conter carateres minúsculos e números, e pode ter entre dois e vinte carateres. O nome do esquema tem de começar com uma letra maiúscula, pode incluir letras e números, e pode ter entre 2 e 49 carateres.
  • METADATA_SCHEMA_VERSION: (Opcional) A versão do esquema que descreve o campo de metadados. schema_version tem de ser uma string de três números separados por pontos, por exemplo, 1.0.0 ou 1.0.1. Este formato ajuda a ordenar e comparar versões.
  • METADATA: propriedades que descrevem o contexto, como os parâmetros de contexto.
  • DESCRIPTION:(Opcional) Uma string legível que descreve a finalidade da execução a ser criada.
  • LABELS: opcional. Metadados definidos pelo utilizador para organizar os seus contextos.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts?contextId=CONTEXT_ID

Corpo JSON do pedido:

{
  "displayName": "DISPLAY_NAME:",
  "parentContexts": [
    "PARENT_CONTEXT_1",
    "PARENT_CONTEXT_2"
  ],
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"

}

Para enviar o seu pedido, expanda uma destas opções:

Deverá ver uma saída semelhante à seguinte. CONTEXT_ID é o ID do registo de contexto.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
  "displayName": "Example context:",
  "etag": "67891011",
  "labels": {
    "test_label": "test_label_value"
  },
  "createTime": "2021-05-18T01:52:51.642Z",
  "updateTime": "2021-05-18T01:52:51.642Z",
  "schemaTitle": "system.Experiment",
  "schemaVersion": "0.0.1",
  "metadata": {},
  "description": "Description of the example context."
}

Python

Python

from typing import Any, Dict, Optional

from google.cloud import aiplatform
from google.cloud.aiplatform.metadata.schema.system import context_schema


def create_context_sample(
    display_name: str,
    project: str,
    location: str,
    context_id: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    return context_schema.Experiment(
        display_name=display_name,
        context_id=context_id,
        metadata=metadata,
        schema_version=schema_version,
        description=description,
    ).create()
  • display_name: o nome a apresentar do contexto. Este campo pode conter até 128 carateres Unicode.
  • project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
  • location: consulte a lista de localizações disponíveis.
  • context_id: (Opcional) O ID do registo de contexto.
  • metadata Propriedades que descrevem o contexto, como os parâmetros de contexto.
  • schema_version: a versão do esquema que descreve o campo de metadados.
  • description: (Opcional) Uma string legível que descreve a finalidade do contexto a ser criado.

Adicione artefactos e execuções a um contexto

Siga as instruções abaixo para adicionar artefactos e execuções a um contexto.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • LOCATION_ID: a sua região.
  • PROJECT_ID: .
  • METADATA_STORE: o ID do armazenamento de metadados onde a execução é criada. O repositório de metadados predefinido chama-se default.
  • CONTEXT: (Opcional) O ID do registo de contexto.
  • Especifique o nome do recurso ARTIFACT para todos os artefactos que quer adicionar a este contexto. O nome do recurso está formatado da seguinte forma:

    projects/PROJECT_ID/locations/location/metadataStores/metadata-store/artifacts/artifact
  • Especifique o nome do recurso EXECUTION para todas as execuções que quer adicionar a este contexto. O nome do recurso está formatado da seguinte forma:

    projects/PROJECT_ID/locations/location/metadataStores/metadata-store/executions/execution

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT:addContextArtifactsAndExecutions

Corpo JSON do pedido:

{
  "artifacts": [
    "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID"
  ],
  "executions": [
  "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID"
  ]
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Blocos de notas

O que se segue?