Esegui il job di addestramento con il monitoraggio degli esperimenti

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

Questa funzionalità non è disponibile se:

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

Esistono due opzioni per registrare i dati in Vertex AI Experiments: il logging automatico e quello 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 tuo framework non è supportato o se ci sono metriche personalizzate che vuoi registrare nell'esecuzione dell'esperimento, puoi adattare manualmente lo script di addestramento per registrare parametri, metriche e elementi.

Dati di AutoLog

Per attivare il logging automatico, imposta enable_autolog=True, consulta from_local_script. Puoi scegliere se eseguire o meno un'esecuzione dell'esperimento. Se non viene specificato un nome per l'esperimento, ne viene creato uno per te.

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

SDK Vertex AI per 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,
    )

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.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 eseguire o meno un esperimento. Se non viene specificato un nome per l'esperimento, ne viene creato uno.

Per scoprire di più, consulta Registrare manualmente i dati in un'esecuzione dell'esperimento.

SDK Vertex AI per 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 per Python per confrontare le esecuzioni e recuperare i dati delle esecuzioni. La console Google Cloud offre un modo semplice per confrontare queste esecuzioni.

Passaggi successivi

Esempio di notebook pertinente