为确保虚拟机资源在 Dataflow 作业需要时可用,您可以使用 Compute Engine 预留。预留为获取 Compute Engine 资源的容量提供了较高的保障。如需了解详情,请参阅 Compute Engine 可用区级资源的预留。
概览
您的 Vertex AI 自定义训练和预测作业可以使用 Compute Engine 预留。您的预留必须指定 A2 或 A3 机器类型。如果这些预留的资源符合任何承诺使用折扣 (CUD) 的条件,那么当您的虚拟机使用这些预留资源时,您将以折扣价获得这些资源。请参阅预留资源的 CUD。
限制和要求
将 Compute Engine 预留与 Vertex AI 搭配使用时,请考虑以下限制和要求:
-
Vertex AI 只能使用以下机器系列的预留:
- A2
- A3
- 仅支持将 Compute Engine 预留与 Vertex AI 搭配使用来进行自定义训练和预测。
- 确保您的 Vertex AI 作业有足够的配额。请参阅共享预留的其他配额要求。
- 为了支持定期更新 Vertex AI 部署,我们建议您为每个并发部署至少增加 1 个虚拟机。
- 确保您的组织政策限制条件允许共享预留。请参阅允许和限制项目创建和修改共享预留。
- 您的预留的虚拟机实例属性必须与您的 Vertex AI 工作负载完全匹配,才能使用该预留。例如,如果 Vertex AI 工作负载具有
a2-megagpu-16g
机器类型,则预留的机器类型必须与之匹配。请参阅要求。 -
将 Compute Engine 预留与 Vertex AI 预测结合使用时,不支持以下服务和功能:
- 客户管理的加密密钥 (CMEK)
- 联邦风险和授权管理计划 (FedRAMP) 合规性
结算
使用 Compute Engine 预留时,您需要为以下各项支付费用:
- Compute Engine 资源的 Compute Engine 价格,包括所有适用的承诺使用折扣 (CUD)。请参阅 Compute Engine 价格。
- 除基础设施使用费之外,还需支付 Vertex AI 预测管理费。请参阅预测价格。
准备工作
允许使用预留
在使用 A2 或 A3 虚拟机的预留资源之前,您必须设置其共享政策,以允许 Vertex AI 使用该预留资源。为此,请使用以下方法之一:
在创建预留时允许使用
在创建 A2 或 A3 虚拟机的单个项目或共享预留时,您可以指定允许 Vertex AI 使用预留,如下所示:
- 如果您使用的是 Google Cloud 控制台,请在 Google Cloud 服务部分中选择共享预留。
- 如果您使用的是 Google Cloud CLI,请添加
--reservation-sharing-policy
标志并将其设置为ALLOW_ALL
。 - 如果您使用的是 REST API,请添加
serviceShareType
字段并将其设置为ALLOW_ALL
。
允许在现有预留中使用
如需允许 Vertex AI 使用现有的 A2 或 A3 虚拟机预留,请参阅修改预留的共享政策。使用预留获取预测结果
如需在部署模型以获取预测结果时使用 Compute Engine 预留,您可以使用 REST API 或 Python 版 Vertex AI SDK。
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
。详细了解机器类型。 - RESERVATION_AFFINITY_TYPE:必须为
ANY
、SPECIFIC_RESERVATION
或NONE
。ANY
表示您的customJob
的虚拟机可以自动使用具有匹配属性的任何预留。SPECIFIC_RESERVATION
表示您的customJob
的虚拟机只能使用虚拟机通过名称明确指向的预留。NONE
表示customJob
的虚拟机无法使用任何预留。指定NONE
的效果与省略预留亲和性规范的效果相同。
- RESERVATION_NAME:预留的名称。
- 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/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
请求 JSON 正文:
{ "deployedModel": { "model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/reservations/RESERVATION_NAME" ] } }, "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_ID/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, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_affinity_key="compute.googleapis.com/reservation-name", reservation_affinity_values=["projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"], min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )
如需使用任何预留,请执行以下操作:
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, reservation_affinity_type="ANY_RESERVATION", min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )