總覽
使用 Spot VM 可降低執行預測工作的費用。 Spot VM 是虛擬機器 (VM) 執行個體,屬於 Compute Engine 的剩餘容量。Spot VM 的折扣幅度相當可觀,但 Compute Engine 可能會隨時先占 (停止或刪除) Spot VM,以取回資源。
詳情請參閱「Spot VM」。
限制與需求
使用 Agent Platform 的 Spot VM 時,請注意下列限制和規定:
- 使用 Agent Platform 時,所有Spot VM 限制均適用。
- 使用 Spot VM 搭配 Agent Platform 時,僅支援無伺服器訓練和推論。
- 系統不支援搭配 TPU Pod 使用 Spot VM。
- 不支援透過 Google Cloud 控制台提交工作。
帳單
如果您的工作負載具備容錯能力,且能承受 VM 可能遭到先占的影響,Spot VM 就可大幅節省您的運算費用。如果部分 VM 在處理過程中停止,工作執行速度會變慢,但不會完全停止。Spot VM 不會對現有 VM 造成額外負載,就能完成批次處理工作,且不用全額購買更多標準 VM。請參閱「搶占處理」。
使用 Spot VM 時,系統會根據工作時間長度和機型計費。 工作處於佇列或遭到搶占時,您不必支付費用。
先占處理
Compute Engine 隨時可以回收 Spot VM。 如要瞭解如何充分運用 Spot VM,請參閱 Spot VM 最佳做法。
使用 Spot VM 取得推論結果
如要在部署模型以取得推論結果時使用 Spot VM,可以透過 REST API 或 Agent Platform SDK for Python 進行。
REST
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION_ID:您使用 Agent Platform 的區域。
- PROJECT_ID: 您的 [專案 ID](/resource-manager/docs/creating-managing-projects#identifiers)。 。
- 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
如要瞭解如何安裝或更新 Agent Platform SDK for Python,請參閱「安裝 Agent Platform SDK for Python」。詳情請參閱「Agent Platform 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」。
- 使用 Spot VM 搭配 Agent Platform 訓練。
- 搭配使用彈性啟動 VM 與 Agent Platform 推論。