執行含有實驗追蹤功能的訓練工作

Vertex AI 提供代管訓練服務,可讓您大規模訓練模型。您可以使用 Python 適用的 Vertex AI SDK 啟用實驗追蹤功能,在提交自訂訓練工作時擷取參數和效能指標。

在下列情況下,這項功能無法使用:

  • 透過 Google Cloud 控制台或 Google Cloud CLI 提交訓練工作,
  • 在訓練工作中使用 TPU,
  • 在訓練工作中採用分散式訓練。

系統支援預先建構的訓練容器自訂容器。必要條件:安裝的 google-cloud-aiplatform 適用 Vertex AI SDK for Python 版本須高於 1.24.1。如果您使用 TensorFlow 進行訓練,請務必安裝低於 4.0 的 protobuf 版本,以免發生衝突。

您可以透過自動記錄和手動記錄兩種方式,將資料記錄到 Vertex AI Experiments。

如果您使用下列任一支援的架構,建議啟用自動記錄功能:Fastai、Gluon、Keras、LightGBM、Pytorch Lightning、Scikit-learn、Spark、Statsmodels、XGBoost。如果系統不支援您的架構,或您想將自訂指標記錄到實驗執行作業中,可以手動調整訓練指令碼,記錄參數、指標和構件。

AutoLog 資料

如要啟用自動記錄功能,只要設定 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:您為 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.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)

您可以選擇是否要建立實驗。如果未指定實驗名稱,系統會為您建立一個。

詳情請參閱「手動將資料記錄到實驗執行作業」。

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:您為 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 控制台提供簡單的方式來比較這些執行作業。

後續步驟

相關筆記本範例