Registrare i modelli in un'esecuzione dell'esperimento

Affinché un modello possa essere facilmente monitorato, condiviso e analizzato, l'SDK Vertex AI per Python fornisce un'API che esegue la serializzazione di un modello di machine learning in una classe ExperimentModel e lo registra 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.

Salvare e registrare il modello ML

Salvare i modelli

L'SDK Vertex AI fornisce il metodo save_model per serializzare un modello ML, caricarlo su Cloud Storage e rappresentarlo come elemento 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: il tuo ID progetto. Puoi trovare questi ID nella pagina di 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'elemento. 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 determinato formato di input (ad esempio un numero, una stringa, un array 2D) e viene archiviato come file yaml nell'URI GCS. Accetta list, dict, pd.DataFrame e np.ndarray. Il valore all'interno di un elenco deve essere un scalare o un elenco. Il valore all'interno di un dizionario deve essere scalare, elenco o np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: il nome visualizzato dell'elemento.

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 il tuo elenco di esperimenti nella console Google Cloud selezionando "Esperimenti" nel riquadro di navigazione della sezione.
  • run_name: specifica un nome per l'esecuzione.
  • project: il tuo ID progetto. Puoi trovare questi ID nella pagina di 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 genera una previsione. Ogni modello accetta un determinato formato di input (ad esempio un numero, una stringa, un array 2D) e viene archiviato come file yaml nell'URI GCS. Accetta list, dict, pd.DataFrame e np.ndarray. Il valore all'interno di un elenco deve essere un valore scalare o un elenco. Il valore all'interno di un dizionario deve essere scalare, elenco o np.ndarray. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: facoltativo. Il nome visualizzato dell'elemento.

Traccia ExperimentModel

Recupera il modello dell'esperimento

Per utilizzare get_experiment_model per restituire un modello salvato, passa l'ID dell'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

Recupera i modelli dell'esperimento

Il metodo get_experiment_models recupera un elenco di tutti i ExperimentModel registrati per una determinata 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 per l'esecuzione.
  • experiment: fornisci il nome dell'esperimento. Puoi trovare l'elenco degli esperimenti nella console Google Cloud selezionando "Esperimenti" nel riquadro di navigazione della sezione.
  • project: il tuo ID progetto. Puoi trovare questi ID nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili.

Recuperare le informazioni sul modello

Il metodo get_model_info restituisce i metadati del modello di una determinata istanza ExperimentModel, ad esempio la classe del modello, 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()

Carica ExperimentModel

Carica modello

Il metodo load_experiment_model consente di deserializzare un'istanza ExperimentModel per ripristinare il 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()

Registra ExperimentModel

Registra il modello salvato

L'API register_experiment_model consente di registrare il modello ritenuto migliore nel registro dei modelli di Vertex AI 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: il tuo ID progetto. Puoi trovare questi ID nella pagina di 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 dell'esperimento 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 esecuzioni.

Pagina dell'elenco degli esperimenti Vertex AI

Passaggi successivi

Esempio di notebook pertinente

Blog post