概要
Spot VM を使用すると、予測ジョブの実行コストを削減できます。Spot VM は、Compute Engine の余剰キャパシティを利用する仮想マシン(VM)インスタンスです。Spot VM には大幅な割引がありますが、Compute Engine がそのキャパシティを任意のタイミングで再利用するために、Compute Engine が Spot VM を事前に停止または削除(プリエンプト)する可能性があります。
詳細については、Spot VM をご覧ください。
制限事項と要件
Vertex AI で Spot VM を使用する場合は、次の制限と要件を考慮してください。
- Vertex AI で Spot VM を使用する場合は、すべての Spot VM の制限が適用されます。
- Vertex AI での Spot VM の使用は、カスタム トレーニングと推論でのみサポートされています。
- TPU Pod で Spot VM を使用することはできません。
- Google Cloud コンソールからジョブを送信することはできません。
課金
ワークロードがフォールト トレラントで、VM のプリエンプションが発生する可能性がある場合、Spot VM を使用すると費用を大幅に削減できます。これらの VM のいくつかが処理中に停止する場合、ジョブは遅くなりますが、完全に停止することはありません。Spot VM は、既存の VM に余分な負荷をかけずにバッチ処理タスクを完了します。標準 VM を追加した場合の正規料金を支払う必要もありません。プリエンプション処理をご覧ください。
Spot VM を使用する場合は、ジョブの所要時間とマシンタイプに基づいて課金されます。ジョブがキュー内にある時間やプリエンプトされた時間は課金されません。
プリエンプション処理
Spot VM は、Compute Engine によっていつでも再利用される可能性があります。 Spot VM を最大限に活用する方法については、Spot VM のベスト プラクティスをご覧ください。
Spot VM を使用して推論を取得する
モデルをデプロイして推論を取得するときに Spot VM を使用するには、REST API または Vertex AI SDK for Python を使用します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: Vertex AI を使用するリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
- ENDPOINT_ID: エンドポイントの ID。
- MODEL_ID: デプロイするモデルの ID。
-
DEPLOYED_MODEL_NAME:
DeployedModelの名前。DeployedModelのModelの表示名を使用することもできます。 -
MACHINE_TYPE: 省略可。このデプロイの各ノードで使用するマシンリソース。デフォルトの設定は
n1-standard-2です。マシンタイプの詳細。 - ACCELERATOR_TYPE: 省略可。マシンにアタッチするアクセラレータのタイプ。詳細。
- ACCELERATOR_COUNT: 省略可。各レプリカで使用するアクセラレータの数。
- MIN_REPLICA_COUNT: このデプロイの最小ノード数。ノード数は、推論負荷に応じてノードの最大数まで増減できますが、この数より少なくすることはできません。 1 以上の値を指定してください。
- MAX_REPLICA_COUNT: このデプロイの最大ノード数。ノード数は、推論負荷に応じてこのノード数まで増減に応じて増減できますが、最大値を超えることはできません。
- TRAFFIC_SPLIT_THIS_MODEL: このオペレーションでデプロイするモデルにルーティングされる、このエンドポイントへの予測トラフィックの割合。デフォルトは 100 です。すべてのトラフィックの割合の合計は 100 になる必要があります。トラフィック分割の詳細
- DEPLOYED_MODEL_ID_N: 省略可。他のモデルがこのエンドポイントにデプロイされている場合は、すべての割合の合計が 100 になるように、トラフィック分割の割合を更新する必要があります。
- TRAFFIC_SPLIT_MODEL_N: デプロイされたモデル ID キーのトラフィック分割の割合値。
- PROJECT_NUMBER: プロジェクトに自動生成されたプロジェクト番号。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
リクエストの本文(JSON):
{
"acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel"
"deployedModel": {
"model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
"displayName": "DEPLOYED_MODEL_NAME",
"enableContainerLogging": true,
"dedicatedResources": {
"machineSpec": {
"machineType": "MACHINE_TYPE",
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT
},
"spot": true,
"minReplicaCount": MIN_REPLICA_COUNT,
"maxReplicaCount": MAX_REPLICA_COUNT
},
},
"trafficSplit": {
"0": TRAFFIC_SPLIT_THIS_MODEL,
"DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
"DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2
},
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata",
"genericMetadata": {
"createTime": "2020-10-19T17:53:16.502088Z",
"updateTime": "2020-10-19T17:53:16.502088Z"
}
}
}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API のリファレンス ドキュメントをご覧ください。
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, spot=True, sync=True )
次のステップ
- Spot VM の詳細を確認する。
- Compute Engine VM 全般について確認する。仮想マシン インスタンスのドキュメントをご覧ください。
- Spot VM の作成方法を確認する。Spot VM の作成と使用をご覧ください。
- Vertex AI Training で Spot VM を使用する。
- Vertex AI Inference で Flex Start VM を使用する。