Esegui il job di addestramento con il monitoraggio degli esperimenti

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

Questa funzionalità non è disponibile quando:

  • invia un job di addestramento tramite Google Cloud console o Google Cloud CLI,
  • utilizzi TPU nel job di addestramento,
  • utilizzi 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 Python superiore alla 1.24.1 per google-cloud-aiplatform. Se esegui l'addestramento con TensorFlow, assicurati che sia installata la versione di protobuf inferiore alla 4.0 per evitare conflitti.

Esistono due opzioni per registrare i dati in Vertex AI Experiments: la registrazione automatica e la registrazione manuale.

La registrazione automatica è consigliata se utilizzi uno di questi framework supportati: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Se il tuo framework non è supportato o se vuoi registrare metriche personalizzate nell'esecuzione dell'esperimento, puoi adattare manualmente lo script di addestramento per registrare parametri, metriche e artefatti.

Registrare automaticamente i dati

Per attivare la registrazione automatica, imposta enable_autolog=True, vedi from_local_script. Puoi creare o meno un'esecuzione dell'esperimento. Se non viene specificato un nome dell'esperimento, ne viene creato uno per te.

L'SDK Vertex AI per Python gestisce la creazione delle 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: . Puoi trovare questi ID progetto nella Google Cloud console pagina di benvenuto.
  • location: vedi Elenco delle località disponibili.
  • staging_bucket: il nome che hai assegnato al bucket, ad esempio my_bucket.
  • display_name: il nome definito dall'utente di CustomJob.
  • script_path: il percorso relativo alla directory di lavoro nel file system locale in cui si trova lo script che funge da punto di ingresso per il codice di addestramento.
  • container_uri: l'URI dell'immagine container di addestramento può essere un Vertex AI container di addestramento predefinito o un container personalizzato
  • service_account: vedi Creare un account di servizio con le autorizzazioni richieste.
  • experiment: fornisci un nome per l'esperimento. L'esperimento deve avere un' istanza TensorBoard. Puoi trovare l'elenco degli esperimenti nella Google Cloud console selezionando Esperimenti nella navigazione della sezione.
  • experiment_run: (facoltativo) specifica un nome di esecuzione. Se non viene specificata, viene creata automaticamente un'esecuzione.

Registrare manualmente i dati

Utilizza l'opzione di registrazione manuale dei 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.joblib'
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 creare o meno un'esecuzione dell'esperimento. Se non viene specificato un nome dell'esperimento, ne viene creato uno per te.

Scopri di più, vedi Registrare manualmente i dati in un'esecuzione dell'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,
    )

Visualizzare i parametri e le metriche registrati automaticamente

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

Passaggi successivi

Esempio di notebook pertinente