使用实验跟踪运行训练作业

Vertex AI 提供代管式训练服务,让您能够实现大规模模型训练。您可以在提交自定义训练作业时使用 Python 版 Vertex AI SDK 启用实验跟踪功能,以捕获参数和性能指标。

在以下情况下,此功能不可用:

  • 通过 Google Cloud 控制台或 Google Cloud CLI 提交训练作业。
  • 在训练作业中使用 TPU;
  • 在训练作业中使用分布式训练。

预建训练容器自定义容器均受支持。必需:安装了 Python 版 Vertex AI SDK 1.24.1 以上的版本。如果您要使用 Tensorflow 进行训练,请确保安装低于 4.0 的 protobuf 版本,以避免冲突。

您可以通过以下两种方式将数据记录到 Vertex AI Experiments:自动日志记录和手动日志记录。

如果您使用的是以下某个支持的框架,建议使用自动日志记录:Fastai、Gluon、Keras、LightGBM、Pytorch Lightning、Scikit-learn、Spark、Statsmodels、XGBoost。如果您的框架不受支持,或者您想要将自定义指标记录到实验运行作业中,您可以手动调整训练脚本以记录参数、指标和工件。

自动记录数据

如需启用自动日志记录,只需设置 enable_autolog=True,请参阅 from_local_script。您可以选择是否创建实验运行。如果未指定实验名称,则系统会为您创建一个。

Python 版 Vertex AI SDK 会为您创建 ExperimentRun 资源。

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:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到这些项目 ID。
  • location:请参阅可用位置列表
  • staging_bucket:您为存储桶指定的名称,例如 my_bucket
  • display_name:用户定义的 CustomJob 的名称。
  • script_path:相对于本地文件系统上的工作目录的路径,指向作为训练代码入口点的脚本。
  • container_uri:训练容器映像的 URI 可以是 Vertex AI 预构建训练容器自定义容器
  • service_account:请参阅创建具有所需权限的服务账号
  • experiment:提供实验的名称。实验必须具有 TensorBoard 实例。如需找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • experiment_run:(可选)指定运行作业名称。如果未指定,则系统会自动创建运行作业。

手动记录数据

使用手动记录数据选项来整合训练脚本。

以下是更改训练脚本的方法:

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)

您可以选择是否创建实验运行作业。如果未指定实验名称,则系统会为您创建一个。

如需了解详情,请参阅手动将数据记录到实验运行中

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:您的项目 ID。 您可以在 Google Cloud 控制台的欢迎页面中找到这些项目 ID。
  • location:请参阅可用位置列表
  • staging_bucket:您为存储桶指定的名称,例如 my_bucket
  • display_name:用户定义的 CustomJob 的名称。
  • script_path:相对于本地文件系统上的工作目录的路径,指向作为训练代码入口点的脚本。
  • container_uri:训练容器映像的 URI 可以是 Vertex AI 预构建训练容器自定义容器。如果您使用的是自定义容器,请确保已安装 google-cloud-aiplatform>=1.24.0
  • service_account:请参阅创建具有所需权限的服务账号
  • experiment:提供实验的名称。要找到实验列表,您可以在 Google Cloud 控制台的板块导航栏中选择实验
  • experiment_run:指定运行作业名称。 如果未指定,则系统会自动创建运行作业。

查看自动记录的参数和指标

使用 Python 版 Vertex AI SDK 比较运行作业并获取运行数据。Google Cloud 控制台提供了一种简单的方法来比较这些运行作业。

后续步骤

相关笔记本示例