テスト追跡を使用してトレーニング ジョブを実行する

Vertex AI では、大規模なモデル トレーニングの運用を可能にするマネージド トレーニング サービスを利用できます。Vertex AI SDK for Python を使用してテスト追跡を有効にすると、カスタム トレーニング ジョブを送信するときにパラメータとパフォーマンス指標をキャプチャできます。

以下の操作を行う場合には、この機能は使用できません。

  • Google Cloud コンソールまたは Google Cloud CLI を使用してトレーニング ジョブを送信する。
  • トレーニング ジョブで TPU を使用する。
  • トレーニング ジョブで分散トレーニングを使用する。

ビルド済みのトレーニング コンテナカスタム コンテナは、どちらもサポートされています。google-cloud-aiplatform 用に Vertex AI SDK for Python のバージョン 1.24.1 以降がインストールされている必要があります。Tensorflow を使用してトレーニングする場合は、競合を避けるために、バージョン 4.0 よりも前の protobuf がインストールされていることを確認してください。

Vertex AI Experiments へのデータロギングには、自動ロギングと手動ロギングの 2 つの方法があります。

サポートされているフレームワーク(Fastai、Gluon、Keras、LightGBM、Pytorch Lightning、Scikit-learn、Spark、Statsmodels、XGBoost)のいずれかを使用している場合は、自動ロギングをおすすめします。お使いのフレームワークがサポートされていない場合や、テスト実行に記録するカスタム指標がある場合は、トレーニング スクリプトをログパラメータ、指標、アーティファクトに手動で適用できます。

データの自動ログ

自動ロギングを有効にするには、enable_autolog=True を設定します。from_local_script をご覧ください。テスト実行を作成するかどうかは選択できます。テスト名を指定しない場合は、テスト名が自動的に作成されます。

ExperimentRun リソースの作成は、Vertex AI SDK for Python により処理されます。

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。これらのプロジェクト ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • 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。これらのプロジェクト ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • 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: 実行名を指定します。指定しない場合は、実行が自動的に作成されます。

ログに自動的に記録されたパラメータと指標を表示する

Vertex AI SDK for Python を使用して、実行を比較して実行データを取得します。Google Cloud コンソールでは、これらの実行を簡単に比較できます。

次のステップ

関連するノートブックのサンプル