Esegui il job di addestramento con il monitoraggio degli esperimenti

Vertex AI fornisce un servizio di addestramento gestito che consente di rendere operativi l'addestramento di modelli su larga scala. Puoi abilitare il monitoraggio degli esperimenti utilizzando l'SDK Vertex AI per Python per acquisire parametri e metriche delle prestazioni quando invii il job di addestramento personalizzato.

Questa funzionalità non è disponibile se:

  • inviare un job di addestramento tramite la console Google Cloud o Google Cloud CLI,
  • usano TPU nel job di addestramento,
  • usano l'addestramento distribuito nel job di addestramento.

Sono supportati sia i container di addestramento predefiniti sia i container personalizzati. Obbligatorio: è installata una versione dell'SDK Vertex AI per Python successiva alla 1.24.1 per google-cloud-aiplatform. Se esegui l'addestramento con Tensorflow, assicurati che sia installata la versione di protobuf precedente alla 4.0 per evitare conflitti.

Esistono due opzioni per il logging dei dati in Vertex AI Experiments: il logging automatico e il logging manuale.

Il logging automatico è consigliato se utilizzi uno di questi framework supportati: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Se il framework non è supportato o se esistono metriche personalizzate che vuoi registrare nell'esecuzione dell'esperimento, puoi adattare manualmente lo script di addestramento a parametri di log, metriche e artefatti.

Dati AutoLog

Per attivare la registrazione automatica, imposta enable_autolog=True, consulta from_local_script. Puoi scegliere se creare o meno un'esecuzione di un esperimento. Se non viene specificato un nome esperimento, ne viene creato uno.

L'SDK Vertex AI per Python gestisce la creazione di risorse ExperimentRun per te.

Python

def create_custom_job_with_experiment_autologging_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: il tuo ID progetto. Puoi trovare questi ID progetto nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili.
  • staging_bucket: il nome che hai assegnato al bucket, ad esempio my_bucket.
  • display_name: il nome del CustomJob definito dall'utente.
  • script_path: il percorso, relativo alla directory di lavoro sul file system locale, allo script che è il punto di ingresso per il codice di addestramento.
  • container_uri: l'URI dell'immagine del container di addestramento può essere un container di addestramento predefinito di Vertex AI o un container personalizzato
  • service_account: Vedi Creare un account di servizio con le autorizzazioni richieste.
  • experiment: assegna un nome all'esperimento. L'esperimento deve avere un'istanza TensorBoard. Puoi trovare l'elenco degli esperimenti nella console Google Cloud selezionando Esperimenti nel menu di navigazione delle sezioni.
  • experiment_run: (facoltativo) specifica un nome esecuzione. Se non specificato, viene creata automaticamente un'esecuzione.

Registra manualmente i dati

Utilizza l'opzione per registrare manualmente i dati per incorporare lo script di addestramento.

Ecco come modificare lo script di addestramento:

import os
import pickle
import pandas as pd
from sklearn.linear_model import LinearRegression
# To use manual logging APIs, import aiplatform
from google.cloud import aiplatform

# Create Dataset
data = {'A': [1.1,2.2,4.1,5.2],
        'B': [200, 212.12, 22, 123],
        'Y': [1,0,1,0]}
df = pd.DataFrame(data)
X = df[['A', 'B']]
Y = df['Y']

# Train model
model = LinearRegression().fit(X, Y)

# Save the model to gcs
model_dir = os.getenv('AIP_MODEL_DIR')
model_gcs = model_dir.replace('gs://', '/gcs/')
model_name = 'model.pkl'
os.mkdir(model_gcs)
f = open(os.path.join(model_gcs, model_name), 'wb')
pickle.dump(model, f)

f = open(os.path.join(model_gcs, model_name), 'wb')
    pickle.dump(model, f)

# Call aiplatform's logging APIs to save data to Vertex AI Experiments.
params = model.get_params()
aiplatform.log_params(params)
metrics = {"training_accuracy": model.score(X,Y)}
aiplatform.log_metrics(metrics)

Puoi scegliere se creare o meno un'esecuzione esperimento. Se non specifichi un nome esperimento, ne viene creato uno.

Scopri di più, consulta Registrare manualmente i dati in un'esecuzione di un esperimento.

Python

def create_custom_job_with_experiment_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(
        project=project,
        location=location,
        staging_bucket=staging_bucket,
        experiment=experiment
    )

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: il tuo ID progetto. Puoi trovare questi ID progetto nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili
  • staging_bucket: il nome che hai assegnato al bucket, ad esempio my_bucket.
  • display_name: il nome del CustomJob definito dall'utente.
  • script_path: il percorso, relativo alla directory di lavoro sul file system locale, allo script che è il punto di ingresso per il codice di addestramento.
  • container_uri: l'URI dell'immagine del container di addestramento può essere un container di addestramento predefinito di Vertex AI o un container personalizzato. Se utilizzi un container personalizzato, assicurati che sia installato google-cloud-aiplatform>=1.24.0.
  • service_account: Vedi Creare un account di servizio con le autorizzazioni richieste.
  • experiment: assegna un nome all'esperimento. Puoi trovare l'elenco degli esperimenti nella console Google Cloud selezionando Esperimenti nel menu di navigazione delle sezioni.
  • experiment_run: specifica un nome esecuzione. Se non specificato, viene creata automaticamente un'esecuzione.

Visualizza parametri e metriche registrati automaticamente

Usa l'SDK Vertex AI per Python per confrontare le esecuzioni e ottenere i relativi dati. La console Google Cloud offre un modo semplice per confrontare queste esecuzioni.

Passaggi successivi

Esempio di blocco note pertinente