總覽
使用 Spot VM 可降低執行預測工作的成本。 Spot VM 是多餘的 Compute Engine 容量,Spot VM 的折扣幅度相當可觀,但 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 時,系統會根據工作持續時間和機器類型計費。 工作處於佇列或遭到搶占時,您不需支付費用。
先占處理
Compute Engine 隨時可以回收 Spot VM。
如果 Spot VM 遭到先占,預測工作會失敗並顯示 STOCKOUT
錯誤,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
的名稱。您也可以使用Model
的顯示名稱做為DeployedModel
。 -
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 方法和網址:
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
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。詳情請參閱 Python 適用的 Vertex AI SDK 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 訓練作業使用 Spot VM。