Registrar modelos em uma execução de experimento

Para que um modelo seja facilmente rastreado, compartilhado e analisado, o SDK da Vertex AI para Python fornece uma API que serializa um modelo de machine learning em uma classe ExperimentModel e registra o modelo nos experimentos da Vertex AI.

Depois de escolher o melhor modelo para uso, é possível registrá-lo nos Experimentos da Vertex AI no Vertex AI Model Registry.

Os frameworks compatíveis são scikit-learn, XGBoost e Tensorflow.

Salvar e registrar modelo de ML

Salvar modelos

O SDK da Vertex AI fornece o método save_model para serializar um modelo de ML, fazer upload do modelo para o Cloud Storage e representar o modelo como um artefato da Vertex ML Metadata.

Python

from typing import Optional, Union

from google.cloud import aiplatform


def save_model_sample(
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location)

    aiplatform.save_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • location: Consulte a Lista de locais disponíveis.
  • model: (Obrigatório). Um modelo de machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id: opcional. O ID do recurso do artefato. Esse ID precisa ser globalmente exclusivo em um metadataStore. Ele pode ter até 63 caracteres, e os válidos são [a-z0-9_-]. O primeiro caractere não pode ser um número ou um hífen.
  • uri: opcional. Um diretório do GCS em que o arquivo de modelo é salvo. Se um URI não for fornecido, gs://default-bucket/timestamp-uuid-frameworkName-model será usado. Se um bucket de teste padrão não estiver definido, um novo bucket será criado.
  • input_example: opcional. Cada modelo recebe dados de entrada e produz uma previsão. Cada modelo aceita um formato específico de entrada (por exemplo, um número, uma string e uma matriz 2d) e é armazenado como um arquivo yaml no URI do GCS. Aceita lista, dict, pd.DataFrame e np.ndarray. O valor dentro de uma lista precisa ser um escalar ou uma lista. O valor dentro de um dict deve ser um escalar, uma lista ou np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: o nome de exibição do artefato.

Modelos de registro

O SDK da Vertex AI também fornece uma API log_model, que orquestra save_modele uma etapa adicional para registrar o artefato do Vertex ML Metadata na execução atual do experimento. O método log_model para gerenciar e analisar vários modelos de ML em Experimentos da Vertex AI.

Python

from typing import Optional, Union

from google.cloud import aiplatform


def log_model_sample(
    experiment_name: str,
    run_name: str,
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,  # noqa: F821
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • experiment_name: informe o nome do experimento. Para ver sua lista de experimentos no Console do Google Cloud, selecione "Experimentos" na seção de navegação.
  • run_name: especifica um nome para execução.
  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • location: Consulte a Lista de locais disponíveis.
  • model: obrigatório. Um modelo de machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri: opcional. Um diretório do GCS em que o arquivo de modelo é salvo. Se um URI não for fornecido, gs://default-bucket/timestamp-uuid-frameworkName-model será usado. Se um bucket de preparo padrão não estiver definido, um novo bucket será criado.
  • input_example: opcional. Cada modelo recebe dados de entrada e produz uma previsão. Cada modelo aceita um formato específico de entrada, (por exemplo, um número, uma string e uma matriz 2d) e é armazenado como um arquivo yaml no URI do GCS. Aceita lista, dict, pd.DataFrame e np.ndarray. O valor dentro de uma lista precisa ser um escalar ou uma lista. O valor dentro de um dict deve ser um escalar, uma lista ou np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: opcional. O nome de exibição do artefato.

Monitorar ExperimentModel

Acessar modelo do experimento

Para usar get_experiment_model para retornar um modelo salvo, transmita a ele o ID do artefato do modelo salvo.

Python

from google.cloud import aiplatform


def get_experiment_model_sample(
    project: str,
    location: str,
    artifact_id: str,
) -> "ExperimentModel":  # noqa: F821
    aiplatform.init(project=project, location=location)
    experiment_model = aiplatform.get_experiment_model(artifact_id=artifact_id)

    return experiment_model

Receber modelos do experimento

O método get_experiment_models recebe uma lista de todas as ExperimentModel registradas para uma determinada execução de experimento.

Python

from typing import List, Union

from google.cloud import aiplatform


def get_experiment_run_models_sample(
    run_name: str,
    experiment: Union[str, aiplatform.Experiment],
    project: str,
    location: str,
) -> List["ExperimentModel"]:  # noqa: F821
    experiment_run = aiplatform.ExperimentRun(
        run_name=run_name, experiment=experiment, project=project, location=location
    )

    return experiment_run.get_experiment_models()

  • run_name: especifica um nome para execução.
  • experiment: informe o nome do experimento. Para ver sua lista de experimentos no Console do Google Cloud, selecione "Experimentos" na seção de navegação.
  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • location: Consulte a Lista de locais disponíveis.

Receber informações do modelo

O método get_model_info retorna os metadados do modelo de uma determinada instância de ExperimentModel, por exemplo, classe de modelo, tipo de framework.

Python

from typing import Any, Dict

from google.cloud import aiplatform


def get_model_info_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Dict[str, Any]:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.get_model_info()

Carregar ExperimentModel

Carregar modelo

O método load_experiment_model ajuda a desserializar uma instância de ExperimentModel de volta para o modelo de ML original.

Python

from typing import Union

from google.cloud import aiplatform


def load_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"]:  # noqa: F821:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.load_model()

  • artifact_id: (Obrigatório). O ID do recurso do modelo de experimento existente.ExperimentModel Exemplo: artifact_id="my-sklearn-model"
  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • location: Consulte a Lista de locais disponíveis.

Registrar ExperimentModel

Registrar modelo salvo

A API register_experiment_model permite registrar o modelo que foi considerado o melhor, no Vertex AI Model Registry com uma quantidade mínima de configuração. A API escolhe automaticamente um contêiner de previsão pré-criado com base no framework e na versão do modelo.

Python

from google.cloud import aiplatform


def register_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
    display_name: str,
) -> aiplatform.models.Model:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.register_model(display_name=display_name)

  • artifact_id: (Obrigatório). O ID do recurso do modelo de experimento existente.ExperimentModel
  • project: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
  • location: Consulte a Lista de locais disponíveis.
  • display_name: opcional. O nome definido pelo usuário do modelo registrado.

Ver a lista de execuções do experimento no Console do Google Cloud

  1. No Console do Google Cloud, acesse a página Experimentos.
    Acessar os Experimentos
    Uma lista de experimentos será exibida.
  2. Selecione o experimento que você quer verificar.
    Uma lista de execuções será exibida.

Página da lista de experimentos da Vertex AI

A seguir

Exemplo de notebook relevante

Postagem do blog