Registrare i modelli in un'esecuzione dell'esperimento

Affinché un modello possa essere monitorato, condiviso e analizzato, l'SDK Vertex AI per Python fornisce un'API che serializza un modello di machine learning in una classe ExperimentModel e registra il modello in Vertex AI Experiments.

Dopo aver selezionato il modello migliore da utilizzare, puoi registrarlo da Vertex AI Experiments a Vertex AI Model Registry.

I framework supportati sono scikit-learn, XGBoost e TensorFlow.

Salva e registra il modello ML

Salvare i modelli

L'SDK Vertex AI fornisce il metodo save_model per serializzare un modello ML, caricare il modello in Cloud Storage e rappresentarlo come un artefatto 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: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili
  • model: (Obbligatorio) Un modello di machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id: (Facoltativo) L'ID risorsa dell'artefatto. Questo ID deve essere univoco a livello globale in un metadataStore. Può contenere fino a 63 caratteri e i caratteri validi sono [a-z0-9_-]. Il primo carattere non può essere un numero o un trattino.
  • uri: (Facoltativo) Una directory GCS in cui salvare il file del modello. Se non viene fornito un URI, viene utilizzato gs://default-bucket/timestamp-uuid-frameworkName-model. Se non è impostato un bucket di staging predefinito, ne viene creato uno nuovo.
  • input_example: (Facoltativo) Ogni modello prende i dati di input e poi produce una previsione. Ogni modello accetta un particolare formato di input (ad esempio, un numero, una stringa, un array 2D) e viene archiviato come file YAML nell'URI GCS. Accetta elenchi, dizionari, pd.DataFrame e np.ndarray. Il valore all'interno di un elenco deve essere uno scalare o un elenco. Il valore all'interno di un dizionario deve essere scalare, un elenco o np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: il nome visualizzato dell'artefatto.

Modelli di log

L'SDK Vertex AI fornisce un metodo log_model, che orchestra save_model e un passaggio aggiuntivo per registrare l'artefatto Vertex ML Metadata nell'esecuzione dell'esperimento corrente. Il metodo log_model per gestire e analizzare più modelli ML in 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: fornisci il nome dell'esperimento. Puoi trovare l'elenco degli esperimenti nella console Google Cloud selezionando "Esperimenti" nella barra di navigazione della sezione.
  • run_name: specifica un nome di esecuzione.
  • project: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili.
  • model: obbligatorio. Un modello di machine learning. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri: (Facoltativo) Una directory GCS in cui salvare il file del modello. Se non viene fornito un URI,viene utilizzato gs://default-bucket/timestamp-uuid-frameworkName-model. Se non è impostato un bucket di staging predefinito, ne viene creato uno nuovo.
  • input_example: (Facoltativo) Ogni modello prende i dati di input e poi produce una previsione. Ogni modello accetta un particolare formato di input (ad esempio, un numero, una stringa, un array 2D) e viene archiviato come file YAML nell'URI GCS. Accetta elenchi, dizionari, pd.DataFrame e np.ndarray. Il valore all'interno di un elenco deve essere uno scalare o un elenco. Il valore all'interno di un dizionario deve essere scalare, un elenco o np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: (Facoltativo) Il nome visualizzato dell'artefatto.

Traccia ExperimentModel

Recupera modello di esperimento

Per utilizzare get_experiment_model per restituire un modello salvato, trasmetti l'ID artefatto del modello salvato.

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

Recuperare i modelli di esperimento

Il metodo get_experiment_models recupera un elenco di tutti i ExperimentModel registrati in una particolare esecuzione dell'esperimento.

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: specifica un nome di esecuzione.
  • experiment: fornisci il nome dell'esperimento. Puoi trovare l'elenco degli esperimenti nella console Google Cloud selezionando "Esperimenti" nel menu di navigazione della sezione.
  • project: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili.

Recupero delle informazioni sul modello

Il metodo get_model_info restituisce i metadati del modello di una determinata istanza ExperimentModel, ad esempio la classe del modello e il tipo di 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: obbligatorio. L'ID risorsa del ExperimentModel esistente.
  • project: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili.

Carica ExperimentModel

Carica modello

Il metodo load_experiment_model consente di deserializzare un'istanza ExperimentModel e riportarla al modello ML originale.

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: (Obbligatorio) L'ID risorsa del ExperimentModel esistente. Esempio: artifact_id="my-sklearn-model"
  • project: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili.

Registra ExperimentModel

Registra modello salvato

L'API register_experiment_model consente di registrare il modello considerato il migliore in Vertex AI Model Registry con una quantità minima di configurazione. L'API sceglie automaticamente un container di previsione predefinito in base al framework e alla versione del modello.

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: (Obbligatorio) L'ID risorsa del ExperimentModel esistente.
  • project: . Puoi trovare questi ID nella pagina Benvenuto della console Google Cloud .
  • location: consulta l'elenco delle località disponibili.
  • display_name: (Facoltativo) Il nome definito dall'utente del modello registrato.

Visualizzare l'elenco delle esecuzioni degli esperimenti nella console Google Cloud

  1. Nella console Google Cloud , vai alla pagina Esperimenti.
    Vai a Esperimenti
    Viene visualizzato un elenco di esperimenti.
  2. Seleziona l'esperimento che vuoi controllare.
    Viene visualizzato un elenco di corse.

Pagina dell'elenco degli esperimenti Vertex AI

Passaggi successivi

Esempio di notebook pertinente

Blog post