概览
您可以使用 Spot 虚拟机来降低运行预测作业的费用。Spot 虚拟机是过剩的 Compute Engine 容量的虚拟机 (VM) 实例。Spot 虚拟机的折扣力度很大,但 Compute Engine 可能会提前停止或删除(抢占)Spot 虚拟机来随时收回容量。
如需了解详情,请参阅 Spot 虚拟机。
限制和要求
将 Spot 虚拟机与 Vertex AI 搭配使用时,请考虑以下限制和要求:
- 将 Spot 虚拟机与 Vertex AI 搭配使用时,所有Spot 虚拟机限制均适用。
- 仅支持将 Spot 虚拟机与 Vertex AI 搭配使用进行自定义训练和预测。
- 不支持将 Spot 虚拟机与 TPU Pod 搭配使用。
- 不支持通过 Google Cloud 控制台提交作业。
结算
如果您的工作负载具有容错能力,并且可以承受可能的虚拟机抢占,Spot 虚拟机可以显著降低您的计算费用。如果其中某些虚拟机在处理期间停止,作业会减慢但不会完全停止。Spot 虚拟机可完成您的批处理任务,而不会在现有虚拟机上增加额外的负载,您也不再需要为额外的标准虚拟机支付全价。请参阅抢占处理。
使用 Spot 虚拟机时,您需要按作业时长和机器类型付费。您无需为作业在队列中或被抢占的时间付费。
抢占处理
Compute Engine 可随时回收 Spot 虚拟机。
当抢占式虚拟机被抢占时,预测作业会失败并显示 STOCKOUT
错误,Compute Engine 会尝试最多重启该作业六次。如需了解如何充分利用 Spot 虚拟机,请参阅 Spot 虚拟机最佳实践。
使用 Spot 虚拟机获取预测
如需在部署模型以获取预测结果时使用 Spot VM,您可以使用 REST API 或 Vertex AI SDK for Python。
在使用任何请求数据之前,请先进行以下替换:
- 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 }, }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 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_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID :deployModel"
PowerShell (Windows)
将请求正文保存在名为 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_ID -aiplatform.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION_ID /endpoints/ENDPOINT_ID :deployModel" | Select-Object -Expand Content
您应该收到类似以下内容的 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" } } }
如需了解如何安装或更新 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 虚拟机。
- 如需从整体上详细了解 Compute Engine 虚拟机,请参阅虚拟机实例文档。
- 如需了解如何创建 Spot 虚拟机,请参阅创建和使用 Spot 虚拟机。
- 将 Spot 虚拟机与 Vertex AI Training 搭配使用。