カスタム トレーニング ジョブで VM リソースが必要なときに利用できるようにするには、Compute Engine の予約を使用します。予約を使用すると、Compute Engine リソースのキャパシティを確実に確保できます。詳細については、Compute Engine ゾーンリソースの予約をご覧ください。
概要
Vertex AI のカスタム トレーニング ジョブと予測ジョブは、Compute Engine の予約を使用できます。予約では A2 または A3 マシンタイプを指定する必要があります。これらの予約のリソースが確約利用割引(CUD)の対象である場合、VM がこれらの予約を使用すると、割引価格でリソースが提供されます。予約済みリソースの CUD をご覧ください。
制限事項と要件
Vertex AI で Compute Engine 予約を使用する場合は、次の制限と要件を考慮してください。
-
Vertex AI は、次のマシンシリーズの予約のみを使用できます。
- A2
- A3
- Vertex AI での Compute Engine 予約の使用は、カスタム トレーニングと予測でのみサポートされています。
- Vertex AI ジョブに十分な割り当てがあることを確認します。共有予約の追加の割り当て要件をご覧ください。
- Vertex AI デプロイの定期的な更新をサポートするには、同時デプロイごとに VM 数を 1 つ以上増やすことをおすすめします。
- 組織のポリシーの制約で共有予約が許可されていることを確認します。プロジェクトでの共有予約の作成と変更を許可または制限するをご覧ください。
- 予約を使用するには、予約の VM インスタンス プロパティが Vertex AI ワークロードと完全に一致している必要があります。たとえば、Vertex AI ワークロードに
a2-megagpu-16g
マシンタイプがある場合、予約のマシンタイプはこれと一致する必要があります。要件をご覧ください。 -
Vertex AI Training で Compute Engine 予約を使用する場合、次のサービスと機能はサポートされていません。
- 顧客管理の暗号鍵(CMEK)
- Dynamic Workload Scheduler
- 永続リソースでのトレーニング ジョブの実行
課金
Compute Engine 予約を使用すると、次の料金が発生します。
- 適用される確約利用割引(CUD)を含む、Compute Engine リソースの Compute Engine の料金。Compute Engine の料金をご覧ください。
- インフラストラクチャの使用量に加えて、Vertex AI カスタム トレーニングの管理手数料。カスタム トレーニング モデルの料金をご覧ください。
始める前に
予約の使用を許可する
A2 VM または A3 VM の予約を使用する前に、Vertex AI が予約を使用できるように共有ポリシーを設定する必要があります。そのためには、次のいずれかの方法を使用します。
予約の作成中に使用を許可する
A2 VM または A3 VM の単一プロジェクトまたは共有予約を作成するときに、次のように Vertex AI が予約を使用できるように指定できます。
- Google Cloud コンソールを使用している場合は、[Google Cloud サービス] セクションで [予約を共有する] を選択します。
- Google Cloud CLI を使用している場合は、
ALLOW_ALL
に設定された--reservation-sharing-policy
フラグを指定します。 - REST API を使用している場合は、
ALLOW_ALL
に設定されたserviceShareType
フィールドを含めます。
既存の予約で使用を許可する
Vertex AI が A2 VM または A3 VM の既存の予約を使用できるようにするには、予約の共有ポリシーを変更するをご覧ください。予約を使用してカスタム トレーニング ジョブを作成する
REST API を使用して、Compute Engine 予約を使用するカスタム トレーニング ジョブを作成できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: コンテナまたは Python パッケージを実行するリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
-
JOB_NAME: 必須。
CustomJob
の表示名。 - カスタム トレーニング ジョブを定義します。
- MACHINE_TYPE: マシンのタイプ。トレーニングで使用可能なマシンタイプをご覧ください。
RESERVATION_AFFINITY_TYPE:
ANY
、SPECIFIC_RESERVATION
、またはNONE
。ANY
は、customJob
の VM が、一致するプロパティを持つ予約を自動的に使用できることを意味します。SPECIFIC_RESERVATION
は、customJob
の VM が、名前で明示的に指定された VM ターゲットの予約のみを使用できることを意味します。NONE
は、customJob
の VM が予約を使用できないことを意味します。NONE
を指定すると、予約アフィニティの指定を省略した場合と同じ効果があります。
- RESERVATION_NAME: 予約の名前。
- DISK_TYPE: 省略可。ジョブに使用するブートディスクの種類。
pd-standard
(デフォルト)またはpd-ssd
のいずれか。ディスクタイプの詳細。 - DISK_SIZE: 省略可。ジョブに使用するブートディスクのサイズ(GB 単位)。デフォルト値は 100 です。
- REPLICA_COUNT: 使用するワーカー レプリカの数。最初のワーカープールでは、ほとんどの場合、
1
に設定します。 - トレーニング アプリケーションがカスタム コンテナで実行される場合は、次のように指定します。
- CUSTOM_CONTAINER_IMAGE_URI: 各ワーカー レプリカで実行される Artifact Registry または Docker Hub 内のコンテナ イメージの URI。
- CUSTOM_CONTAINER_COMMAND: 省略可。コンテナの起動時に呼び出されるコマンド。このコマンドは、コンテナのデフォルトのエントリポイントをオーバーライドします。
- CUSTOM_CONTAINER_ARGS: 省略可。コンテナの起動時に渡される引数。
- トレーニング アプリケーションが事前ビルド済みのコンテナで実行される Python パッケージの場合は、以下を指定します。
- EXECUTOR_IMAGE_URI: 指定されたコードを実行するコンテナ イメージの URI。トレーニングに使用可能なビルド済みのコンテナをご確認ください。
- PYTHON_PACKAGE_URIS: トレーニング プログラムとその依存パッケージである Python パッケージ ファイルを指定する Cloud Storage URI のカンマ区切りのリスト。パッケージ URI の最大数は 100 です。
- PYTHON_MODULE: パッケージのインストール後に実行する Python モジュール名。
- PYTHON_PACKAGE_ARGS: 省略可。Python モジュールに渡すコマンドライン引数。
- TIMEOUT: 省略可。ジョブの最大実行時間。
- このカスタムジョブに適用するラベルの LABEL_NAME と LABEL_VALUE を指定します。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs
リクエストの本文(JSON):
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "MACHINE_TYPE", "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/reservations/RESERVATION_NAME" ] } }, "replicaCount": REPLICA_COUNT, "diskSpec": { "bootDiskType": DISK_TYPE, "bootDiskSizeGb": DISK_SIZE }, // 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": EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs // for distributed training. ], "scheduling": { "timeout": TIMEOUT } }, "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-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"
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-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。