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

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

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.

RastrearExperimentModel

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

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

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

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

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

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.
    <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="V3Ae1hvcBOij4KvUNiRrMltigmNHgUGOXn/QVSGplOhBlpxunv8WHL3F/z3VuS9rwbZOYpOQCXa+v4aZ0dt03w==" target="console" track-name="consoleLink" track-type="tasks" }="">Vá para Experimentos
    Uma lista de experimentos aparece. </a{:>
  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