Trainingsjob mit Test-Tracking ausführen

Vertex AI bietet einen verwalteten Trainingsdienst, mit dem Sie umfangreiches Modelltraining operationalisieren können. Sie können das Test-Tracking mit dem Vertex AI SDK für Python aktivieren, um Parameter und Leistungsmesswerte zu senden, wenn Sie den benutzerdefinierten Trainingsjob senden.

Diese Funktion ist in folgenden Fällen nicht verfügbar:

  • Einen Trainingsjob über die Google Cloud Console oder die Google Cloud CLI senden
  • Verwenden Sie TPU im Trainingsjob,
  • Verwenden Sie verteiltes Training im Trainingsjob.

Sowohl vordefinierte Trainingscontainer als auch benutzerdefinierte Container werden unterstützt. Erforderlich: Eine Version des Vertex AI SDK für Python höher als 1.24.1 für google-cloud-aiplatform ist installiert. Achten Sie beim Trainieren mit TensorFlow darauf, dass die protobuf-Version kleiner als 4.0 installiert ist, um Konflikte zu vermeiden.

Es gibt zwei Optionen zum Logging von Daten in Vertex AI Experiments: automatisches Logging und manuelles Logging.

Autologging wird empfohlen, wenn Sie eines der folgenden Frameworks verwenden: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Wenn das Framework nicht unterstützt wird oder Sie benutzerdefinierte Messwerte haben, die Sie in Ihrer Testausführung protokollieren möchten, können Sie das Trainingsskript manuell an Logparameter, Messwerte und Artefakte anpassen.

AutoLog-Daten

Legen Sie einfach enable_autolog=True fest, siehe from_local_script, um das automatische Logging zu aktivieren. Sie können eine Testausführung erstellen oder nicht. Wenn kein Testname angegeben ist, wird ein Testname für Sie erstellt.

Das Vertex AI SDK für Python übernimmt das Erstellen von ExperimentRun-Ressourcen für Sie.

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: Ihre Projekt-ID. Sie finden die Projekt-IDs auf der Begrüßungsseite der Google Cloud Console.
  • location: Siehe Liste der verfügbaren Standorte.
  • staging_bucket: Der Name, den Sie Ihrem Bucket gegeben haben, z. B. my_bucket.
  • display_name: Der benutzerdefinierte Name von CustomJob.
  • script_path: Der Pfad relativ zum Arbeitsverzeichnis im lokalen Dateisystem zum Skript, das der Einstiegspunkt für Ihren Trainingscode ist.
  • container_uri: Der URI des Trainingscontainer-Images kann ein vordefinierter Trainingscontainer von Vertex AI oder ein benutzerdefinierter Container sein.
  • service_account: Weitere Informationen finden Sie unter Dienstkonto mit erforderlichen Berechtigungen erstellen.
  • experiment: Geben Sie einen Namen für den Test an. Der Test muss eine TensorBoard-Instanz haben. Um die Liste der Experimente in der Google Cloud Console aufzurufen, wählen Sie Tests im Navigationsbereich aus.
  • experiment_run: (Optional) Geben Sie einen Ausführungsnamen an. Wenn nicht angegeben, wird automatisch eine Ausführung erstellt.

Daten manuell protokollieren

Mit der Option für manuelle Logdaten können Sie Ihr Trainingsskript einbinden.

So ändern Sie das Trainingsskript:

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)

Sie können eine Testausführung erstellen oder nicht. Wenn kein Testname angegeben ist, wird ein Testname für Sie erstellt.

Weitere Informationen finden Sie unter Daten manuell in einer Testausführung protokollieren.

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: Ihre Projekt-ID. Sie finden die Projekt-IDs auf der Begrüßungsseite der Google Cloud Console.
  • location: Siehe Liste der verfügbaren Standorte.
  • staging_bucket: Der Name, den Sie Ihrem Bucket gegeben haben, z. B. my_bucket.
  • display_name: Der benutzerdefinierte Name von CustomJob.
  • script_path: Der Pfad relativ zum Arbeitsverzeichnis im lokalen Dateisystem zum Skript, das der Einstiegspunkt für Ihren Trainingscode ist.
  • container_uri: Der URI des Trainingscontainer-Images kann ein vordefinierter Trainingscontainer von Vertex AI oder ein benutzerdefinierter Container sein. Wenn Sie einen benutzerdefinierten Container verwenden, muss google-cloud-aiplatform>=1.24.0 installiert sein.
  • service_account: Weitere Informationen finden Sie unter Dienstkonto mit erforderlichen Berechtigungen erstellen.
  • experiment: Geben Sie einen Namen für den Test an. Um die Liste der Experimente in der Google Cloud Console aufzurufen, wählen Sie Tests im Navigationsbereich aus.
  • experiment_run: Geben Sie einen Ausführungsnamen an. Wenn nicht angegeben, wird automatisch eine Ausführung erstellt.

Automatisch protokollierte Parameter und Messwerte anzeigen

Verwenden Sie das Vertex AI SDK für Python, um Ausführungen zu vergleichen und Ausführungsdaten abzurufen. Die Google Cloud Console bietet eine einfache Möglichkeit zum Vergleichen dieser Ausführungen.

Nächste Schritte

Relevantes Notebookbeispiel