Consigner des modèles dans une exécution de test

Pour qu'un modèle puisse être suivi, partagé et analysé facilement, le SDK Vertex AI pour Python fournit une API qui sérialise un modèle de machine learning dans une classe ExperimentModel et le consigne dans Vertex AI Experiments.

Après avoir choisi le meilleur modèle à utiliser, vous pouvez l'enregistrer depuis Vertex AI Experiments vers Vertex AI Model Registry.

Les frameworks compatibles sont scikit-learn, XGBoost et TensorFlow.

Enregistrer et consigner le modèle de ML

Enregistrer les modèles

Le SDK Vertex AI fournit la méthode save_model pour sérialiser un modèle de ML, importer le modèle dans Cloud Storage, et le représenter en tant qu'artefact 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 : l'ID de votre projet. Vous pouvez trouver ces ID sur la page Accueil de la console Google Cloud.
  • location : consultez la liste des emplacements disponibles.
  • model : (Obligatoire). Modèle de machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id : facultatif. ID de ressource de l'artefact. Cet ID doit être unique dans un magasin de métadonnées. Il peut contenir jusqu'à 63 caractères et les caractères valides sont [a-z0-9_-]. Le premier caractère ne peut pas être un chiffre ni un trait d'union.
  • uri : facultatif. Répertoire gcs dans lequel enregistrer le fichier de modèle. Si aucun URI n'est fourni, gs://default-bucket/timestamp-uuid-frameworkName-model est utilisé. Si aucun bucket de préproduction par défaut n'est défini, un bucket est créé.
  • input_example : facultatif. Chaque modèle prend des données d'entrée, puis produit une prédiction. Chaque modèle accepte un format d'entrée particulier (par exemple, un nombre, une chaîne, un tableau 2D) et est stocké en tant que fichier YAML dans l'URI GCS. Accepte les paramètres "list", "dict", "pd.DataFrame" et "np.ndarray". La valeur d'une liste doit être de type scalaire ou liste. La valeur dans un dictionnaire doit être de type scalaire, liste ou np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name : Nom à afficher de l'artefact.

Modèles de journaux

Le SDK Vertex AI fournit une méthode log_model, qui orchestre save_model et une étape supplémentaire pour consigner l'artefact Vertex ML Metadata dans l'exécution du test en cours. La méthode log_model pour gérer et analyser plusieurs modèles de ML dans 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 : indiquez le nom de votre test. Vous trouverez la liste de vos tests dans la console Google Cloud en sélectionnant "Tests" dans la section de navigation.
  • run_name : spécifiez un nom d'exécution.
  • project : l'ID de votre projet. Vous pouvez trouver ces ID sur la page d'accueil de la console Google Cloud.
  • location : Consultez la liste des emplacements disponibles.
  • model : valeur obligatoire. Modèle de machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri : facultatif. Répertoire gcs dans lequel enregistrer le fichier de modèle. Si aucun URI n'est fourni, gs://default-bucket/timestamp-uuid-frameworkName-model est utilisé. Si aucun bucket de préproduction par défaut n'est défini, un bucket est créé.
  • input_example : facultatif. Chaque modèle prend des données d'entrée, puis produit une prédiction. Chaque modèle accepte un format d'entrée particulier (par exemple, un nombre, une chaîne, un tableau 2d) et est stocké sous forme de fichier yaml dans l'URI gcs. Accepte les paramètres "list", "dict", "pd.DataFrame" et "np.ndarray". La valeur d'une liste doit être de type scalaire ou liste. La valeur dans un dictionnaire doit être de type scalaire, liste ou np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name : facultatif. Nom à afficher de l'artefact.

Suivre ExperimentModel

Obtenir le modèle de test

Pour renvoyer un modèle enregistré à l'aide de get_experiment_model, transmettez-lui l'ID d'artefact du modèle enregistré.

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

Obtenir des modèles de test

La méthode get_experiment_models permet d'obtenir la liste de toutes les instances ExperimentModel qui sont enregistrées dans une exécution de test particulière.

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 : spécifiez un nom d'exécution.
  • experiment : indiquez le nom de votre test. Vous trouverez la liste de vos tests dans la console Google Cloud en sélectionnant "Tests" dans le menu de navigation.
  • project : l'ID de votre projet. Vous pouvez trouver ces ID sur la page d'accueil de la console Google Cloud.
  • location : Consultez la liste des emplacements disponibles.

Obtenir des informations sur le modèle

La méthode get_model_info renvoie les métadonnées de modèle d'une instance ExperimentModel donnée, par exemple la classe de modèle ou le type 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()

Charger ExperimentModel

Charger le modèle

La méthode load_experiment_model vous permet de désérialiser une instance ExperimentModel dans le modèle de ML d'origine.

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 : (Obligatoire). ID de ressource de l'instance ExperimentModel existante. Exemple : artifact_id="my-sklearn-model"
  • project : l'ID de votre projet. Vous pouvez trouver ces ID sur la page d'accueil de la console Google Cloud.
  • location : Consultez la liste des emplacements disponibles.

Enregistrer ExperimentModel

Enregistrer le modèle sauvegardé

L'API register_experiment_model permet d'enregistrer le modèle qui a été considéré comme le meilleur dans Vertex AI Model Registry avec une configuration minimale. L'API choisit automatiquement un conteneur de prédiction prédéfini en fonction du framework et de la version du modèle.

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 : (Obligatoire). ID de ressource de l'instance ExperimentModel existante.
  • project : l'ID de votre projet. Vous pouvez trouver ces ID sur la page d'accueil de la console Google Cloud.
  • location : Consultez la liste des emplacements disponibles.
  • display_name : facultatif. Nom défini par l'utilisateur du modèle enregistré.

Afficher la liste des exécutions de tests dans la console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Tests.
    Accéder aux tests
    La liste des tests s'affiche.
  2. Sélectionnez le test que vous souhaitez vérifier.
    Une liste des exécutions s'affiche.

Page de la liste des tests de Vertex AI

Étape suivante

Exemple de notebook pertinent

Article du blog