Registrar modelos en una ejecución de experimento

Para que se pueda monitorizar, compartir y analizar un modelo, el SDK de Vertex AI para Python proporciona una API que serializa un modelo de aprendizaje automático en una clase ExperimentModel y registra el modelo en Vertex AI Experiments.

Una vez que hayas seleccionado el mejor modelo, puedes registrarlo desde Vertex AI Experiments en Vertex AI Model Registry.

Los frameworks admitidos son scikit-learn, XGBoost y TensorFlow.

Guardar y registrar un modelo de aprendizaje automático

Guardar modelos

El SDK de Vertex AI proporciona el método save_model para serializar un modelo de aprendizaje automático, subirlo a Cloud Storage y representarlo como un artefacto de 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: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.
  • model: obligatorio. Un modelo de aprendizaje automático. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id: opcional. ID de recurso del artefacto. Este ID debe ser único en todo el mundo en un metadataStore. Puede tener hasta 63 caracteres y los caracteres válidos son [a-z0-9_-]. El primer carácter no puede ser un número ni un guion.
  • uri: opcional. Un directorio de GCS en el que guardar el archivo del modelo. Si no se proporciona un URI, se usa gs://default-bucket/timestamp-uuid-frameworkName-model. Si no se ha definido un segmento de almacenamiento provisional predeterminado, se creará uno.
  • input_example: opcional. Cada modelo toma datos de entrada y, a continuación, genera una predicción. Cada modelo acepta un formato de entrada concreto (por ejemplo, un número, una cadena o una matriz bidimensional) y se almacena como un archivo YAML en el URI de GCS. Acepta listas, diccionarios, pd.DataFrame y np.ndarray. El valor de una lista debe ser un escalar o una lista. El valor de un diccionario debe ser un escalar, una lista o un objeto np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: el nombre visible del artefacto.

Modelos de registro

El SDK de Vertex AI proporciona un método log_model que orquesta save_model y un paso adicional para registrar el artefacto de metadatos de Vertex ML en la ejecución del experimento actual. El método log_model para gestionar y analizar varios modelos de aprendizaje automático en Vertex AI Experiments.

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: Indica el nombre del experimento. Puede consultar su lista de experimentos en la consola Google Cloud seleccionando "Experimentos" en la barra de navegación de la sección.
  • run_name: especifica un nombre de ejecución.
  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.
  • model: obligatorio. Un modelo de aprendizaje automático. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri: opcional. Un directorio de GCS en el que guardar el archivo del modelo. Si no se proporciona ningún URI,se usa gs://default-bucket/timestamp-uuid-frameworkName-model. Si no se ha definido un segmento de almacenamiento provisional predeterminado, se creará uno.
  • input_example: opcional. Cada modelo toma datos de entrada y, a continuación, genera una predicción. Cada modelo acepta un formato de entrada concreto (por ejemplo, un número, una cadena o una matriz bidimensional) y se almacena como un archivo YAML en el URI de GCS. Acepta listas, diccionarios, pd.DataFrame y np.ndarray. El valor de una lista debe ser un escalar o una lista. El valor de un diccionario debe ser un escalar, una lista o un objeto np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: opcional. Nombre visible del artefacto.

Canción ExperimentModel

Obtener modelo de experimento

Para usar get_experiment_model y devolver un modelo guardado, pásale el ID de artefacto del modelo guardado.

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

Obtener modelos de experimentos

El método get_experiment_models obtiene una lista de todos los ExperimentModel registrados en una ejecución de un experimento concreto.

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 un nombre de ejecución.
  • experiment: Indica el nombre del experimento. Puedes consultar tu lista de experimentos en la consola de Google Cloud seleccionando "Experimentos" en la barra de navegación de la sección.
  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.

Obtener información de modelos

El método get_model_info devuelve los metadatos del modelo de una instancia ExperimentModel determinada, como la clase del modelo o el 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()

  • artifact_id: obligatorio. ID de recurso del ExperimentModel.
  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.

Carga ExperimentModel

Cargar modelo

El método load_experiment_model te ayuda a deserializar una instancia de ExperimentModel para volver al modelo de aprendizaje automático 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: obligatorio. El ID de recurso del ExperimentModel. Ejemplo: artifact_id="my-sklearn-model"
  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.

Registrar ExperimentModel

Registrar un modelo guardado

La API register_experiment_model permite registrar el modelo que se ha considerado el mejor en el registro de modelos de Vertex AI con una configuración mínima. La API elige automáticamente un contenedor de predicción precompilado en función del framework y la versión del 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: obligatorio. El ID de recurso del ExperimentModel ya creado.
  • project: . Puedes encontrar estos IDs en la página de bienvenida de la Google Cloud consola.
  • location: consulta la lista de ubicaciones disponibles.
  • display_name: opcional. Nombre definido por el usuario del modelo registrado.

Ver la lista de ejecuciones de experimentos en la consola de Google Cloud

  1. En la Google Cloud consola, vaya a la página Experimentos.
    Ir a Experimentos
    Aparecerá una lista de experimentos.
  2. Selecciona el experimento que quieras comprobar.
    Aparecerá una lista de ejecuciones.

Página de lista de experimentos de Vertex AI

Siguientes pasos

Cuaderno de ejemplo pertinente

Entrada de blog