このドキュメントでは、Compute Engine の予約を使用して、サーバーレス トレーニング ジョブの実行に必要な仮想マシン(VM)リソースを確実に用意する方法について説明します。
予約は Compute Engine の機能です。予約を使用すると、必要なときに同じハードウェア(メモリと vCPU)とオプション リソース(CPU、GPU、TPU、ローカル SSD ディスク)を備えた VM を作成するためのリソースを確保できます。
ユーザーが予約を作成するときに、Compute Engine は、リクエストされた容量が指定されたゾーンで使用可能であることを確認します。使用可能な場合、Compute Engine はリソースを予約し、予約を作成します。これにより、次のようになります。
- 予約済みリソースはすぐに消費可能になり、予約が削除されるまで消費可能な状態に保たれます。
- 予約済みリソースは、予約が削除されるまで、実行中の VM と同じオンデマンド料金(適用される割引を含む)で課金されます。予約を消費する VM に対して別途料金は発生しません。ディスクや IP アドレスなど、予約外のリソースに対してのみ料金が発生します。詳細については、予約の料金をご覧ください。
制限事項と要件
Agent Platform で Compute Engine の予約を使用する場合は、次の制限と要件を考慮してください。
- Agent Platform は、 CPU、 GPU VM、 または TPU(プレビュー)の予約のみを使用できます。
- Agent Platform は、ローカル SSD ディスクが手動でアタッチされている VM の予約を消費できません。
- Agent Platform による Compute Engine の予約の使用は、Gemini Enterprise Agent Platform サーバーレス トレーニング、推論、Gemini Enterprise Agent Platform Workbench(プレビュー)でのみサポートされています。
- 予約を消費するには、予約の VM プロパティが Agent Platform ワークロードと完全に一致している必要があります
。たとえば、予約で
a2-ultragpu-8gマシンタイプを指定した場合、Agent Platform ワークロードもa2-ultragpu-8gマシンタイプを使用している場合にのみ予約を消費できます。要件をご覧ください。 - GPU VM または TPU の共有予約を消費するには、オーナー プロジェクト、または予約を共有しているコンシューマ プロジェクトを使用する必要があります。 共有予約の仕組みをご覧ください。
- Agent Platform デプロイの定期的な更新をサポートするには、同時デプロイごとに VM 数を 1 つ以上増やすことをおすすめします。
-
Agent Platform Training で Compute Engine 予約を使用する場合を除き、Dynamic Workload Scheduler の Flex Start と 永続リソースでのトレーニング ジョブの実行 はどちらもサポートされています。
課金
Compute Engine の予約を使用すると、次の料金が発生します。
- 適用される確約利用割引(CUD)を含む、Compute Engine リソースの Compute Engine の料金。 Compute Engine の料金をご覧ください。
- インフラストラクチャの使用量に加えて、Agent Platform サーバーレス トレーニングの管理手数料。カスタム トレーニング モデルの料金をご覧ください。
始める前に
予約の消費を許可する
CPU、GPU VM、TPU の予約を消費する前に、Agent Platform が予約を消費できるように 共有ポリシーを設定する必要があります。そのためには、次のいずれかの方法を使用します。
予約の作成中に消費を許可する
GPU VM の 単一プロジェクトまたは 共有予約を作成するときに、 次のように Agent Platform による予約の消費を許可できます。
- コンソールを使用している場合は、[Google Cloud サービス] セクションで [予約を共有する] を選択します。 Google Cloud
- Google Cloud CLI を使用している場合は、
--reservation-sharing-policyフラグを含め、ALLOW_ALLに設定します。 - REST API を消費している場合は、リクエスト本文に
serviceShareTypeフィールドを含め、ALLOW_ALLに設定します。
既存の予約の消費を許可する
GPU VM または TPU の自動作成された将来の予約は、予約の開始時間の後にのみ変更できます。
Agent Platform が既存の予約を消費できるようにするには、次のいずれかの 方法を使用します。
予約が消費されていることを確認する
予約が消費されていることを確認するには、Compute Engine ドキュメントの予約の消費を確認するをご覧ください。予約を使用してサーバーレス トレーニング ジョブを作成する
REST API を使用して、GPU VM の Compute Engine 予約を使用する Gemini Enterprise Agent Platform サーバーレス トレーニング ジョブを作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: コンテナまたは Python パッケージを実行するリージョン。
- PROJECT_ID: 予約が作成されたプロジェクト。別のプロジェクトの共有予約を消費するには、そのプロジェクトと予約を共有する必要があります。詳細については、共有予約内のコンシューマ プロジェクトを変更するをご覧ください。
-
JOB_NAME: 必須。
CustomJobの表示名。 - MACHINE_TYPE: ジョブに使用するマシンタイプ。デフォルトの設定は
n1-standard-2です。サポートされているマシンタイプの詳細については、カスタム トレーニング用のコンピューティング リソースの構成をご覧ください。 - ACCELERATOR_TYPE: マシンに接続するアクセラレータのタイプ。各マシンタイプがサポートする GPU の種類の詳細については、コンピューティング ワークロード用 GPU をご覧ください。
- ACCELERATOR_COUNT: マシンに接続するアクセラレータの数。
- カスタム トレーニング ジョブを定義します。
RESERVATION_AFFINITY_TYPE:
ANY_RESERVATION、SPECIFIC_RESERVATION、またはNO_RESERVATION。ANY_RESERVATIONは、customJobの VM が、一致するプロパティを持つ予約を自動的に使用できることを意味します。SPECIFIC_RESERVATIONは、customJobの VM が、名前で明示的に指定された VM ターゲットの予約のみを使用できることを意味します。NO_RESERVATIONは、customJobの VM が予約を使用できないことを意味します。NO_RESERVATIONを指定すると、予約アフィニティの指定を省略した場合と同じ効果があります。
- ZONE: 予約が作成されたゾーン。
- 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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
リクエストの本文(JSON):
{
"displayName": "JOB_NAME",
"jobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "MACHINE_TYPE",
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT,
"reservationAffinity": {
"reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
// Use the following key and values only if
// the reservationAffinityType is SPECIFIC_RESERVATION.
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。
次のステップ
- Compute Engine ゾーンリソース の予約について確認する。
- Agent Platform オンライン推論 で予約を使用する方法を確認する。
- Agent Platform バッチ推論で予約を使用する方法を確認する。
- 予約を表示する方法を確認する。
- 予約の消費量をモニタリングする方法を確認する。