トレーニング パイプラインを使用すると、カスタム機械学習(ML)のトレーニングを実行し、トレーニング出力に基づいて Model
リソースを自動的に作成できます。
パイプラインを作成する前に
トレーニング パイプラインを Vertex AI に作成する前に、Python トレーニング アプリケーションまたはカスタム コンテナを作成して、Vertex AI で実行するトレーニング コードと依存関係を定義する必要があります。TensorFlow、scikit-learn、または XGBoost を使用して Python トレーニング アプリケーションを作成する場合は、ビルド済みのコンテナを使用してコードを実行できます。どちらを選択すればよいかわからない場合は、トレーニング コードの要件をご覧ください。
トレーニング パイプラインのオプション
トレーニング パイプラインは、追加のステップでトレーニング ジョブをカプセル化します。このガイドでは、2 つの異なるトレーニング パイプラインについて説明します。
CustomJob
を起動して、生成されたモデルを Vertex AI にアップロードする- ハイパーパラメータ調整ジョブを起動して、生成されたモデルを Vertex AI にアップロードする
また、トレーニング パイプラインでマネージド データセットを使用することもできます。マネージド データセットを使用するようにトレーニング パイプラインを構成する方法をご覧ください。
CustomJob
の内容
カスタムジョブを作成する場合、Vertex AI がトレーニング コードを実行するために必要な設定を指定します。次のような設定になります。
- 単一ノード トレーニング用のワーカープール(
WorkerPoolSpec
)または分散トレーニング用の複数のワーカープール - ジョブ スケジューリングの構成のオプション設定(
Scheduling
)、トレーニング コード用の特定の環境変数の設定、カスタム サービス アカウントの使用、VPC ネットワーク ピアリングの使用
ワーカープールでは次の設定を指定できます。
- マシンタイプとアクセラレータ
- ワーカープールで実行するトレーニング コードの種類の構成: Python トレーニング アプリケーション(
PythonPackageSpec
)またはカスタム コンテナ(ContainerSpec
)のいずれか
Vertex AI Training パイプラインの外部でスタンドアロン カスタムジョブを作成する場合は、カスタムジョブのガイドをご覧ください。
マネージド データセットを使用するようにパイプラインを構成する
トレーニング パイプライン内では、マネージド データセットを使用するようにカスタム トレーニング ジョブまたはハイパーパラメータ調整ジョブを構成できます。マネージド データセットでは、トレーニング アプリケーションとモデルを使用してデータセットを管理できます。
トレーニング パイプラインでマネージド データセットを使用するには:
- データセットを作成します。
- マネージド データセットを使用するようにトレーニング アプリケーションを更新します。詳細については、Vertex AI がデータセットをトレーニング アプリケーションに渡す方法をご覧ください。
トレーニング パイプラインを作成するときに、マネージド データセットを指定します。たとえば、REST API を使用してトレーニング パイプラインを作成する場合は、
inputDataConfig
セクションにデータセット設定を指定します。トレーニング パイプラインは、データセットを作成したリージョンと同じリージョンに作成する必要があります。
詳しくは、TrainingPipeline
の API リファレンスをご覧ください。
分散トレーニングを構成する
トレーニング パイプライン内では、複数のワーカープールを指定して、分散トレーニング用のカスタム トレーニング ジョブまたはハイパーパラメータ調整ジョブを構成できます。
このページの例はすべて、1 つのワーカープールを持つ単一レプリカ トレーニング ジョブを示しています。分散トレーニング用に変更するには:
- 最初のワーカープールを使用してプライマリ レプリカを構成し、レプリカ数を 1 に設定します。
- 機械学習フレームワークが分散トレーニング用のこれらの追加クラスタタスクをサポートしている場合は、ワーカープールを追加して、ワーカー レプリカ、パラメータ サーバー レプリカ、またはエバリュエータ レプリカを構成します。
分散トレーニングの使用方法の詳細。
CustomJob とモデルのアップロード
このトレーニング パイプラインでは、追加された便利な手順によりカスタムジョブがカプセル化されます。これにより、トレーニング後にモデルを Vertex AI に簡単にデプロイできます。このトレーニング パイプラインは、次の 2 つの主要な処理を行います。
トレーニング パイプラインは
CustomJob
リソースを作成します。カスタムジョブは、指定したコンピューティング リソースを使用してトレーニング アプリケーションを実行します。カスタムジョブが完了すると、トレーニング パイプラインにより、トレーニング アプリケーションが Cloud Storage バケットに指定した出力ディレクトリに作成するモデル アーティファクトが検出されます。これらのアーティファクトを使用して、モデルのデプロイ用に設定するモデルリソースを作成します。
モデル アーティファクトの場所を設定するには、次の 2 つの方法があります。
トレーニング ジョブに
baseOutputDirectory
を設定する場合は、Vertex AI によって設定された$AIP_MODEL_DIR
環境変数を使用して、トレーニング コードがモデル アーティファクトをこの場所に保存するようにします。トレーニング ジョブが完了すると、Vertex AI はgs://BASE_OUTPUT_DIRECTORY/model
で結果のモデル アーティファクトを検索します。modelToUpload.artifactUri
フィールドを設定すると、トレーニング パイプラインは、その URI からモデル アーティファクトをアップロードします。baseOutputDirectory
を設定していない場合は、このフィールドを設定する必要があります。
baseOutputDirectory
と modelToUpload.artifactUri
の両方を指定している場合、Vertex AI は modelToUpload.artifactUri
を使用します。
このタイプのトレーニング パイプラインを作成するには:
コンソール
Google Cloud コンソールの [Vertex AI] セクションで、[トレーニング パイプライン] ページに移動します。
[
作成] をクリックして、[新しいモデルのトレーニング] ペインを開きます。トレーニング方法のステップで、次の設定を指定します。
マネージド データセットをトレーニングに使用する場合は、データセットとアノテーション セットを指定します。
それ以外の場合は、[Dataset] プルダウン リストで、[管理されているデータセットなし] を選択します。
[カスタム トレーニング(上級者向け)] を選択します。
[続行] をクリックします。
[モデルの詳細] ステップで、[新しいモデルをトレーニング] または [新しいバージョンをトレーニング] を選択します。新しいモデルをトレーニングする場合は、モデルに任意の名前(MODEL_NAME)を入力します。[続行] をクリックします。
[トレーニング コンテナ] ステップで、次の設定を指定します。
トレーニングにビルド済みのコンテナとカスタム コンテナのどちらを使用するかを選択します。
選択した内容に応じて、次のいずれかを行います。
ビルド済みのコンテナをトレーニングに使用する場合は、Cloud Storage にアップロードしたトレーニング パッケージを使用するために必要な情報を Vertex AI に提供します。
[モデル フレームワーク] と [モデル フレームワークのバージョン] のプルダウン リストから、使用するビルド済みのコンテナを指定します。
[パッケージの場所] フィールドで、作成およびアップロードした Python トレーニング アプリケーションの Cloud Storage URI を指定します。通常、このファイルは
.tar.gz
で終わります。[Python モジュール] フィールドに、トレーニング アプリケーションのエントリ ポイントのモジュール名を入力します。
トレーニングにカスタム コンテナを使用する場合は、[コンテナ イメージ] フィールドにコンテナ イメージの Artifact Registry または Docker Hub の URI を指定します。
[Model output directory] フィールドに、アクセス権があるバケット内のディレクトリの Cloud Storage URI を指定します。そのディレクトリがまだ存在していなくてもかまいません。
この値は、Vertex AI の
baseOutputDirectory
API フィールドに渡されます。この値に基づいて、トレーニング アプリケーションが実行時にアクセスする複数の環境変数が設定されます。トレーニングが終了すると、Vertex AI はこの URI のサブディレクトリでモデル アーティファクトを探して
Model
を作成します(このサブディレクトリは、トレーニング コードでAIP_MODEL_DIR
環境変数として使用できます)。ハイパーパラメータ調整を使用しない場合、Vertex AI は
BASE_OUTPUT_DIRECTORY/model/
にモデル アーティファクトがあると想定します。省略可: [引数] フィールドに、Vertex AI がトレーニング コードの実行開始時に使用する引数を指定できます。すべての引数の合計長は 100,000 文字以下にする必要があります。これらの引数の動作は、使用しているコンテナの種類によって異なります。
ビルド済みのコンテナを使用する場合、Vertex AI は引数をコマンドライン フラグとして Python モジュールに渡します。
カスタム コンテナを使用している場合、Vertex AI はコンテナの
CMD
命令を引数でオーバーライドします。
[続行] をクリックします。
[ハイパーパラメータ調整] ステップで、[Enable hyperparameter tuning] チェックボックスがオフになっていることを確認します。[続行] をクリックします。
[コンピューティングと料金] ステップで、次の設定を指定します。
[リージョン] プルダウン リストで、カスタム トレーニングをサポートするリージョンを選択します。
[Worker pool 0] セクションで、トレーニングに使用するコンピューティング リソースを指定します。
アクセラレータを指定する場合は、選択したアクセラレータが選択したリージョンで使用できることを確認してください。
分散トレーニングを行う場合は、[ADD MORE WORKER POOLS] をクリックし、追加のワーカープールごとに追加のコンピューティング リソースのセットを指定します。
[続行] をクリックします。
[予測コンテナ] ステップで、次の設定を指定します。
トレーニング済みモデルから予測を提供するには、ビルド済みのコンテナとカスタム コンテナのどちらを使用するかを選択します。
選択した内容に応じて、次のいずれかを行います。
ビルド済みのコンテナを使用して予測を行う場合は、[モデル フレームワーク]、[モデル フレームワークのバージョン]、[アクセラレータ タイプ] フィールドを使用して、予測に使用するビルド済みの予測コンテナを選択します。
モデル フレームワークとモデル フレームワークのバージョンをトレーニングに使用した機械学習フレームワークと照合します。後でオンライン予測またはバッチ予測に GPU を使用する場合にのみ、アクセラレータ タイプを指定します。
カスタム コンテナを使用して予測を行う場合は、次の操作を行います。
[コンテナ イメージ] フィールドに、コンテナ イメージの Artifact Registry の URI を指定します。
必要に応じて、コマンドを指定して、コンテナの
ENTRYPOINT
命令をオーバーライドすることもできます。
[モデル ディレクトリ] フィールドには、トレーニング コンテナのステップの [Model output directory] で設定した値が含まれています。どちらのフィールドを変更しても影響は同じです。このフィールドの詳細については、前の手順をご覧ください。
[予測 schemata] セクションのフィールドは空白のままにします。
[トレーニングを開始] をクリックして、カスタム トレーニング パイプラインを開始します。
REST
次のコードサンプルを使用して、trainingPipeline
リソースの create
メソッドを使用してトレーニング パイプラインを作成します。
注: このパイプラインを設定して新しいモデル バージョンを作成する場合は、必要に応じて trainingPipeline
フィールドに PARENT_MODEL
を追加できます。
詳細については、Vertex AI Model Registry を使用したモデルのバージョニングをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: トレーニング コードが実行され、
Model
が保存されるリージョン。 - PROJECT_ID: 実際のプロジェクト ID。
- TRAINING_PIPELINE_NAME: 必須。trainingPipeline の表示名。
- トレーニング アプリケーションで Vertex AI データセットを使用する場合は、以下を指定します。
- DATASET_ID: データセットの ID。
- ANNOTATIONS_FILTER: 指定したアノテーションでデータセットをフィルタします。
- ANNOTATION_SCHEMA_URI: 指定したアノテーション スキーマ URI でデータセットをフィルタします。
-
次のいずれかのオプションを使用して、データ項目をトレーニング セット、検証セット、テストセットに分割する方法を指定します。
- 各セットのサイズを定義する割合に基づいてデータセットを分割するには、以下を指定します。
- TRAINING_FRACTION: モデルのトレーニングに使用するデータセットの割合。
- VALIDATION_FRACTION: モデルの検証に使用するデータセットの割合。
- TEST_FRACTION: モデルの評価に使用するデータセットの割合。
- フィルタに基づいてデータセットを分割するには、次のように指定します。
- TRAINING_FILTER: モデルのトレーニングに使用するデータ項目にデータセットをフィルタします。
- VALIDATION_FILTER: モデルの検証に使用するデータ項目にデータセットをフィルタします。
- TEST_FILTER: モデルの評価に使用するデータ項目にデータセットをフィルタします。
- 事前定義された分割を使用するには、次のように指定します。
- PREDEFINED_SPLIT_KEY: データセットの分割に使用する列の名前。この列に指定できる値は、「training」、「validation」、「test」です。
-
dataitems のタイムスタンプに基づいてデータセットを分割するには、次のように指定します。
- TIMESTAMP_TRAINING_FRACTION: モデルのトレーニングに使用するデータセットの割合。
- TIMESTAMP_VALIDATION_FRACTION: モデルの検証に使用するデータセットの割合。
- TIMESTAMP_TEST_FRACTION: モデルの評価に使用するデータセットの割合。
- TIMESTAMP_SPLIT_KEY: データセットの分割に使用するタイムスタンプ列の名前。
- 各セットのサイズを定義する割合に基づいてデータセットを分割するには、以下を指定します。
- OUTPUT_URI_PREFIX: Vertex AI でトレーニング データセットがトレーニング セット、検証セット、テストセットに分割された後にエクスポートされる Cloud Storage の場所。
- カスタム トレーニング ジョブを定義します。
- MACHINE_TYPE: マシンのタイプ。トレーニングで使用可能なマシンタイプをご覧ください。
- ACCELERATOR_TYPE: 省略可。各トライアルに接続するアクセラレータのタイプ。
- ACCELERATOR_COUNT: 省略可。各トライアルに接続するアクセラレータの数。
- REPLICA_COUNT: 各トライアルで使用するワーカー レプリカの数。
- トレーニング アプリケーションがカスタム コンテナで実行される場合は、次のように指定します。
- CUSTOM_CONTAINER_IMAGE_URI: 各ワーカー レプリカで実行される Artifact Registry または Docker Hub 内のコンテナ イメージの URI。
- CUSTOM_CONTAINER_COMMAND: 省略可。コンテナの起動時に呼び出されるコマンド。このコマンドは、コンテナのデフォルトのエントリポイントをオーバーライドします。
- CUSTOM_CONTAINER_ARGS: 省略可。コンテナの起動時に渡される引数。すべての引数の合計長は 100,000 文字以下にする必要があります。
- トレーニング アプリケーションが事前ビルド済みのコンテナで実行される Python パッケージの場合は、以下を指定します。
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: 提供された Python パッケージを実行するコンテナ イメージの URI。トレーニングに使用可能なビルド済みのコンテナをご確認ください。
- PYTHON_PACKAGE_URIS: トレーニング プログラムとその依存パッケージである Python パッケージ ファイルの Cloud Storage 上のロケーション。パッケージ URI の最大数は 100 です。
- PYTHON_MODULE: パッケージのインストール後に実行する Python モジュール名。
- PYTHON_PACKAGE_ARGS: 省略可。Python モジュールに渡すコマンドライン引数。すべての引数の合計長は 100,000 文字以下にする必要があります。
- TIMEOUT: 省略可。ジョブの最大実行時間。
- MODEL_NAME: TrainingPipeline によってアップロード(作成)されたモデルの表示名。
- MODEL_DESCRIPTION: モデルの説明。
- IMAGE_URI: 予測の実行に使用するコンテナ イメージの URI。例:
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
ビルド済みのコンテナまたはカスタム コンテナを使用します。 - modelToUpload.labels: モデルを整理するための任意の Key-Value ペアのセット。例:
- "env": "prod"
- "tier": "backend"
- このトレーニング パイプラインに適用するラベルの LABEL_NAME と LABEL_VALUE を指定します。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
リクエストの本文(JSON):
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml", "trainingTaskInputs": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } } }, "modelToUpload": { "displayName": "MODEL_NAME", "predictSchemata": {}, "containerSpec": { "imageUri": "IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
次の例では、Vertex AI SDK for Python を使用してカスタム トレーニング パイプラインを作成する方法を示します。トレーニングにカスタム コンテナを使用するか、ビルド済みのコンテナを使用するかを選択します。
ビルド済みコンテナ
Vertex AI SDK for Python を使用して、ビルド済みのコンテナで Python コードを実行するトレーニング パイプラインを作成する場合は、次のいずれかの方法でトレーニング コードを提供できます。
Cloud Storage の Python ソース配布パッケージの URI を指定します。
(このオプションは、Vertex AI SDK for Python を使用せずにトレーニング パイプラインを作成する場合にも使用できます)。
ローカルマシン上の Python スクリプトへのパスを指定します。トレーニング パイプラインを作成する前に、Vertex AI SDK for Python がスクリプトをソース ディストリビューションとしてパッケージ化し、選択した Cloud Storage バケットにアップロードします。
(このオプションは、Vertex AI SDK for Python を使用している場合にのみ使用できます)。
各オプションのコードサンプルを確認するには、対応するタブを選択してください。
パッケージ
次のサンプルでは、CustomPythonPackageTrainingJob
クラスを使用しています。
スクリプト
次のサンプルでは、CustomTrainingJob
クラスを使用しています。
カスタム コンテナ
次のサンプルでは、CustomContainerTrainingJob
クラスを使用しています。
ハイパーパラメータ調整ジョブとモデルのアップロード
このトレーニング パイプラインでは、追加された便利な手順によりハイパーパラメータ調整ジョブがカプセル化されます。これにより、トレーニング後にモデルを Vertex AI に簡単にデプロイできます。このトレーニング パイプラインは、次の 2 つの主要な処理を行います。
トレーニング パイプラインは、ハイパーパラメータ調整ジョブのリソースを作成します。ハイパーパラメータ調整ジョブは複数のトライアルを作成します。トライアルごとに、カスタムジョブは、指定したコンピューティング リソースとハイパーパラメータを使用してトレーニング アプリケーションを実行します。
ハイパーパラメータ調整ジョブが完了すると、トレーニング パイプラインにより、Cloud Storage バケットに指定した出力ディレクトリ(
baseOutputDirectory
)内で、最適なトライアルからモデル アーティファクトが検出されます。トレーニング パイプラインは、これらのアーティファクトを使用して、モデルのデプロイ用に設定するモデルリソースを作成します。
このトレーニング パイプラインでは、Vertex AI が最適なトライアルからモデル アーティファクトを検索する baseOutputDirectory
を指定する必要があります。
ハイパーパラメータ調整ジョブを構成するには、追加の設定があります。詳しくは、HyperparameterTuningJob
の設定についての説明をご覧ください。
REST
次のコードサンプルを使用して、trainingPipeline
リソースの create
メソッドを使用してトレーニング パイプラインを作成します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: プロジェクトのリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
- TRAINING_PIPELINE_NAME: 必須。trainingPipeline の表示名。
- トレーニング アプリケーションで Vertex AI データセットを使用する場合は、以下を指定します。
- DATASET_ID: データセットの ID。
- ANNOTATIONS_FILTER: 指定したアノテーションでデータセットをフィルタします。
- ANNOTATION_SCHEMA_URI: 指定したアノテーション スキーマ URI でデータセットをフィルタします。
-
次のいずれかのオプションを使用して、データ項目をトレーニング セット、検証セット、テストセットに分割する方法を指定します。
- 各セットのサイズを定義する割合に基づいてデータセットを分割するには、以下を指定します。
- TRAINING_FRACTION: モデルのトレーニングに使用するデータセットの割合。
- VALIDATION_FRACTION: モデルの検証に使用するデータセットの割合。
- TEST_FRACTION: モデルの評価に使用するデータセットの割合。
- フィルタに基づいてデータセットを分割するには、次のように指定します。
- TRAINING_FILTER: モデルのトレーニングに使用するデータ項目にデータセットをフィルタします。
- VALIDATION_FILTER: モデルの検証に使用するデータ項目にデータセットをフィルタします。
- TEST_FILTER: モデルの評価に使用するデータ項目にデータセットをフィルタします。
- 事前定義された分割を使用するには、次のように指定します。
- PREDEFINED_SPLIT_KEY: データセットの分割に使用する列の名前。この列に指定できる値は、「training」、「validation」、「test」です。
-
dataitems のタイムスタンプに基づいてデータセットを分割するには、次のように指定します。
- TIMESTAMP_TRAINING_FRACTION: モデルのトレーニングに使用するデータセットの割合。
- TIMESTAMP_VALIDATION_FRACTION: モデルの検証に使用するデータセットの割合。
- TIMESTAMP_TEST_FRACTION: モデルの評価に使用するデータセットの割合。
- TIMESTAMP_SPLIT_KEY: データセットの分割に使用するタイムスタンプ列の名前。
- 各セットのサイズを定義する割合に基づいてデータセットを分割するには、以下を指定します。
- OUTPUT_URI_PREFIX: Vertex AI でトレーニング データセットがトレーニング セット、検証セット、テストセットに分割された後にエクスポートされる Cloud Storage 上のロケーション。
- ハイパーパラメータ調整ジョブを指定します。
- 次のように指標を指定します。
- METRIC_ID: この指標の名前。
- METRIC_GOAL: この指標の目標。
MAXIMIZE
またはMINIMIZE
です。
- ハイパーパラメータを指定します。
- PARAMETER_ID: このハイパーパラメータの名前。
- PARAMETER_SCALE: 省略可。パラメータのスケーリング方法。CATEGORICAL パラメータには設定しないでください。
UNIT_LINEAR_SCALE
、UNIT_LOG_SCALE
、UNIT_REVERSE_LOG_SCALE
またはSCALE_TYPE_UNSPECIFIED
のいずれかです。 - このハイパーパラメータのタイプが DOUBLE の場合は、このハイパーパラメータの最小値(DOUBLE_MIN_VALUE)と最大値(DOUBLE_MAX_VALUE)を指定します。
- このハイパーパラメータのタイプが INTEGER の場合は、このハイパーパラメータの最小値(INTEGER_MIN_VALUE)と最大値(INTEGER_MAX_VALUE)を指定します。
- このハイパーパラメータのタイプが CATEGORICAL の場合は、許容値(CATEGORICAL_VALUES)を文字列の配列として指定します。
- このハイパーパラメータのタイプが DISCRETE の場合は、許容値(DISCRETE_VALUES)を数値の配列として指定します。
- ALGORITHM: 省略可。このハイパーパラメータ調整ジョブで使用する検索アルゴリズム。
ALGORITHM_UNSPECIFIED
、GRID_SEARCH
またはRANDOM_SEARCH
のいずれかです。 - MAX_TRIAL_COUNT: このジョブで実行するトライアルの最大数。
- PARALLEL_TRIAL_COUNT: 並列実行できるトライアルの最大数。
- MAX_FAILED_TRIAL_COUNT: ハイパーパラメータ調整ジョブが失敗する前に失敗する可能性があるジョブの数。
- トライアルのカスタム トレーニング ジョブを定義します。
- MACHINE_TYPE: マシンのタイプ。トレーニングで使用可能なマシンタイプをご覧ください。
- ACCELERATOR_TYPE: 省略可。各トライアルに接続するアクセラレータのタイプ。
- ACCELERATOR_COUNT: 省略可。各トライアルに接続するアクセラレータの数。
- REPLICA_COUNT: 各トライアルで使用するワーカー レプリカの数。
- トレーニング アプリケーションがカスタム コンテナで実行される場合は、次のように指定します。
- CUSTOM_CONTAINER_IMAGE_URI: 各ワーカー レプリカで実行される Artifact Registry または Docker Hub 内のコンテナ イメージの URI。
- CUSTOM_CONTAINER_COMMAND: 省略可。コンテナの起動時に呼び出されるコマンド。このコマンドは、コンテナのデフォルトのエントリポイントをオーバーライドします。
- CUSTOM_CONTAINER_ARGS: 省略可。コンテナの起動時に渡される引数。
- トレーニング アプリケーションがビルド済みのコンテナで実行される Python パッケージの場合は、以下を指定します。
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: 提供された Python パッケージを実行するコンテナ イメージの URI。トレーニングに使用可能なビルド済みのコンテナをご確認ください。
- PYTHON_PACKAGE_URIS: トレーニング プログラムとその依存パッケージである Python パッケージ ファイルの Cloud Storage 上のロケーション。パッケージ URI の最大数は 100 です。
- PYTHON_MODULE: パッケージのインストール後に実行する Python モジュール名。
- PYTHON_PACKAGE_ARGS: 省略可。Python モジュールに渡すコマンドライン引数。
- ジョブ スケジュール オプションをご覧ください。
- TIMEOUT: 省略可。トライアルごとの最大実行時間。
- このハイパーパラメータ調整ジョブに適用するラベルの LABEL_NAME と LABEL_VALUE を指定します。
- 次のように指標を指定します。
- MODEL_NAME: TrainingPipeline によってアップロード(作成)されたモデルの表示名。
- MODEL_DESCRIPTION: 省略可。モデルの説明。
- PREDICTION_IMAGE_URI: 必須。次の 2 つのオプションのいずれかを指定します。
- 予測に使用するビルド済みのコンテナのイメージ URI(「tf2-cpu.2-1:latest」など)。
- 独自の予測に使用するカスタム コンテナのイメージ URI。
- modelToUpload.labels: 省略可。モデルを整理するための任意の Key-Value ペア。例:
- "env": "prod"
- "tier": "backend"
- このトレーニング パイプラインに適用するラベルの LABEL_NAME と LABEL_VALUE を指定します。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
リクエストの本文(JSON):
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/hyperparameter_tuning_task_1.0.0.yaml", "trainingTaskInputs": { "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }, "modelToUpload": { "displayName": "MODEL_NAME", "description": "MODEL_DESCRIPTION", "predictSchemata": {}, "containerSpec": { "imageUri": "PREDICTION_IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。
トレーニングをモニタリングする
トレーニング ログを表示する方法は次のとおりです。
Google Cloud コンソールの Vertex AI セクションで、[トレーニング] ページに移動します。
ジョブの名前をクリックして、[CUSTOM JOB] に移動します。
[ログを表示] をクリックします。
インタラクティブ シェルを使用して、トレーニング パイプライアンの実行中にトレーニング コンテナを検査することもできます。
トレーニング済みのモデルを表示する
カスタム トレーニング パイプラインが完了すると、Google Cloud コンソールの [Vertex AI] セクションの [モデル] ページにトレーニング済みモデルが表示されます。
次のステップ
- Cloud Profiler を使用して、トレーニング パフォーマンスのボトルネックを特定し、モデルをより迅速かつ低コストでトレーニングする方法を学習する。
- モデルをエンドポイントにデプロイする。
- ハイパーパラメータ チューニング ジョブを作成する。
- リソースの可用性に基づいてカスタム トレーニング ジョブをスケジュールする方法を学習する。