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 delle prestazioni quando l'invio del job di addestramento personalizzato.

Questa funzionalità non è disponibile se:

  • inviare un job di addestramento tramite la console Google Cloud o Google Cloud CLI,
  • usa TPU nel job di addestramento
  • usare 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 ti stai addestrando 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: 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 abilitare la registrazione automatica, imposta enable_autolog=True, consulta from_local_script. Hai la possibilità di creare o meno l'esecuzione di un 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 di ExperimentRun. le risorse al posto tuo.

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 definito dall'utente del CustomJob.
  • script_path: il percorso relativo alla directory di lavoro nel file system locale e in cui si trova lo script che funge da punto di ingresso per il codice di addestramento.
  • container_uri: l'URI dell'immagine del 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 console Google Cloud selezionando Esperimenti nel riquadro di navigazione della sezione.
  • experiment_run: (facoltativo) specifica un nome esecuzione. Se non specificato, viene creata automaticamente una corsa.

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)

Hai la possibilità di creare o meno un'esecuzione dell'esperimento. Se il nome di un esperimento non è specificato, ne viene creato uno automaticamente.

Scopri di più, vedi Registrare manualmente i dati nell'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 Console Google Cloud pagina di benvenuto.
  • location: consulta l'elenco delle località disponibili
  • staging_bucket: il nome assegnato al bucket, ad esempio my_bucket.
  • display_name: il nome definito dall'utente del CustomJob.
  • script_path: il percorso relativo alla directory di lavoro sul tuo ambiente allo script che funge da punto di ingresso per il codice di addestramento.
  • container_uri: l'URI dell'immagine del contenitore di addestramento può essere un contenitore di addestramento predefinito di Vertex AI o un contenitore personalizzato. Se utilizzi un container personalizzato, assicurati google-cloud-aiplatform>=1.24.0 è già installato.
  • service_account: consulta Creare un account di servizio con le autorizzazioni richieste.
  • experiment: fornisci un nome per l'esperimento. Puoi trovare il tuo elenco di esperimenti nella console Google Cloud selezionando Esperimenti nel riquadro di navigazione della sezione.
  • experiment_run: specifica un nome esecuzione. Se non specificato, viene eseguita un'esecuzione verrà creata automaticamente.

Visualizzare i parametri e le metriche registrati automaticamente

Utilizzare l'SDK Vertex AI per Python per confrontare le esecuzioni GET esegue i dati. La console Google Cloud offre un modo semplice per confrontare queste esecuzioni.

Passaggi successivi

Esempio di notebook pertinente