Vertex AI 会分配节点以处理在线预测和批量推理。在将自定义训练模型或 AutoML 模型部署到 Endpoint
资源来进行在线推理或在请求批量推理时,可以自定义推理服务要在这些节点中使用的虚拟机类型。您还可以选择配置推理节点以使用 GPU。
机器类型在几个方面有差异:
- 每个节点的虚拟 CPU (vCPU) 数量
- 每个节点的内存量
- 价格
通过选择具有更多计算资源的机器类型,您可以缩短执行推理的延迟时间,也可以同时处理更多推理请求。
管理费用和可用性
为帮助管理费用或确保虚拟机资源的可用性,Vertex AI 提供了以下功能:
为确保虚拟机资源在推理作业需要时可用,您可以使用 Compute Engine 预留。预留为获取 Compute Engine 资源的容量提供了较高的保障。如需了解详情,请参阅将预留与推理搭配使用。
如需降低运行推理作业的费用,您可以使用 Spot 虚拟机。Spot 虚拟机是过剩的 Compute Engine 容量的虚拟机 (VM) 实例。Spot 虚拟机的折扣力度很大,但 Compute Engine 可能会提前停止或删除 Spot 虚拟机来随时收回容量。如需了解详情,请参阅将 Spot 虚拟机与推理搭配使用。
指定计算资源的位置
在线推理
如果您想使用自定义训练的模型或 AutoML 表格模型执行在线推理,则必须在将 Model
资源作为 DeployedModel
部署到 Endpoint
时指定机器类型。对于其他类型的 AutoML 模型,Vertex AI 会自动配置机器类型。
在 DeployedModel
的 dedicatedResources.machineSpec
字段中指定机器类型(以及可选的 GPU 配置)。
了解如何部署每种模型类型:
批量推理
如果要从自定义模型或 AutoML 表格模型获取批量推理,则必须在创建 BatchPredictionJob
资源时指定机器类型。在 BatchPredictionJob
的 dedicatedResources.machineSpec
字段中指定机器类型(以及可选的 GPU 配置)。
机器类型
下表比较了可用于在自定义训练的模型和 AutoML 表格模型上执行推理的机器类型:
E2 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
e2-standard-2 |
2 | 8 |
e2-standard-4 |
4 | 16 |
e2-standard-8 |
8 | 32 |
e2-standard-16 |
16 | 64 |
e2-standard-32 |
32 | 128 |
e2-highmem-2 |
2 | 16 |
e2-highmem-4 |
4 | 32 |
e2-highmem-8 |
8 | 64 |
e2-highmem-16 |
16 | 128 |
e2-highcpu-2 |
2 | 2 |
e2-highcpu-4 |
4 | 4 |
e2-highcpu-8 |
8 | 8 |
e2-highcpu-16 |
16 | 16 |
e2-highcpu-32 |
32 | 32 |
N1 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
n1-standard-2 |
2 | 7.5 |
n1-standard-4 |
4 | 15 |
n1-standard-8 |
8 | 30 |
n1-standard-16 |
16 | 60 |
n1-standard-32 |
32 | 120 |
n1-highmem-2 |
2 | 13 |
n1-highmem-4 |
4 | 26 |
n1-highmem-8 |
8 | 52 |
n1-highmem-16 |
16 | 104 |
n1-highmem-32 |
32 | 208 |
n1-highcpu-4 |
4 | 3.6 |
n1-highcpu-8 |
8 | 7.2 |
n1-highcpu-16 |
16 | 14.4 |
n1-highcpu-32 |
32 | 28.8 |
N2 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
n2-standard-2 |
2 | 8 |
n2-standard-4 |
4 | 16 |
n2-standard-8 |
8 | 32 |
n2-standard-16 |
16 | 64 |
n2-standard-32 |
32 | 128 |
n2-standard-48 |
48 | 192 |
n2-standard-64 |
64 | 256 |
n2-standard-80 |
80 | 320 |
n2-standard-96 |
96 | 384 |
n2-standard-128 |
128 | 512 |
n2-highmem-2 |
2 | 16 |
n2-highmem-4 |
4 | 32 |
n2-highmem-8 |
8 | 64 |
n2-highmem-16 |
16 | 128 |
n2-highmem-32 |
32 | 256 |
n2-highmem-48 |
48 | 384 |
n2-highmem-64 |
64 | 512 |
n2-highmem-80 |
80 | 640 |
n2-highmem-96 |
96 | 768 |
n2-highmem-128 |
128 | 864 |
n2-highcpu-2 |
2 | 2 |
n2-highcpu-4 |
4 | 4 |
n2-highcpu-8 |
8 | 8 |
n2-highcpu-16 |
16 | 16 |
n2-highcpu-32 |
32 | 32 |
n2-highcpu-48 |
48 | 48 |
n2-highcpu-64 |
64 | 64 |
n2-highcpu-80 |
80 | 80 |
n2-highcpu-96 |
96 | 96 |
N2D 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
n2d-standard-2 |
2 | 8 |
n2d-standard-4 |
4 | 16 |
n2d-standard-8 |
8 | 32 |
n2d-standard-16 |
16 | 64 |
n2d-standard-32 |
32 | 128 |
n2d-standard-48 |
48 | 192 |
n2d-standard-64 |
64 | 256 |
n2d-standard-80 |
80 | 320 |
n2d-standard-96 |
96 | 384 |
n2d-standard-128 |
128 | 512 |
n2d-standard-224 |
224 | 896 |
n2d-highmem-2 |
2 | 16 |
n2d-highmem-4 |
4 | 32 |
n2d-highmem-8 |
8 | 64 |
n2d-highmem-16 |
16 | 128 |
n2d-highmem-32 |
32 | 256 |
n2d-highmem-48 |
48 | 384 |
n2d-highmem-64 |
64 | 512 |
n2d-highmem-80 |
80 | 640 |
n2d-highmem-96 |
96 | 768 |
n2d-highcpu-2 |
2 | 2 |
n2d-highcpu-4 |
4 | 4 |
n2d-highcpu-8 |
8 | 8 |
n2d-highcpu-16 |
16 | 16 |
n2d-highcpu-32 |
32 | 32 |
n2d-highcpu-48 |
48 | 48 |
n2d-highcpu-64 |
64 | 64 |
n2d-highcpu-80 |
80 | 80 |
n2d-highcpu-96 |
96 | 96 |
n2d-highcpu-128 |
128 | 128 |
n2d-highcpu-224 |
224 | 224 |
C2 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
c2-standard-4 |
4 | 16 |
c2-standard-8 |
8 | 32 |
c2-standard-16 |
16 | 64 |
c2-standard-30 |
30 | 120 |
c2-standard-60 |
60 | 240 |
C2D 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
c2d-standard-2 |
2 | 8 |
c2d-standard-4 |
4 | 16 |
c2d-standard-8 |
8 | 32 |
c2d-standard-16 |
16 | 64 |
c2d-standard-32 |
32 | 128 |
c2d-standard-56 |
56 | 224 |
c2d-standard-112 |
112 | 448 |
c2d-highcpu-2 |
2 | 4 |
c2d-highcpu-4 |
4 | 8 |
c2d-highcpu-8 |
8 | 16 |
c2d-highcpu-16 |
16 | 32 |
c2d-highcpu-32 |
32 | 64 |
c2d-highcpu-56 |
56 | 112 |
c2d-highcpu-112 |
112 | 224 |
c2d-highmem-2 |
2 | 16 |
c2d-highmem-4 |
4 | 32 |
c2d-highmem-8 |
8 | 64 |
c2d-highmem-16 |
16 | 128 |
c2d-highmem-32 |
32 | 256 |
c2d-highmem-56 |
56 | 448 |
c2d-highmem-112 |
112 | 896 |
C3 系列
名称 | vCPUs | 内存 (GB) |
---|---|---|
c3-highcpu-4 |
4 | 8 |
c3-highcpu-8 |
8 | 16 |
c3-highcpu-22 |
22 | 44 |
c3-highcpu-44 |
44 | 88 |
c3-highcpu-88 |
88 | 176 |
c3-highcpu-176 |
176 | 352 |
A2 系列
名称 | vCPUs | 内存 (GB) | GPU (NVIDIA A100) |
---|---|---|---|
a2-highgpu-1g |
12 | 85 | 1 (A100 40GB) |
a2-highgpu-2g |
24 | 170 | 2 (A100 40GB) |
a2-highgpu-4g |
48 | 340 | 4 (A100 40GB) |
a2-highgpu-8g |
96 | 680 | 8 (A100 40GB) |
a2-megagpu-16g |
96 | 1360 | 16 (A100 40GB) |
a2-ultragpu-1g |
12 | 170 | 1 (A100 80GB) |
a2-ultragpu-2g |
24 | 340 | 2 (A100 80GB) |
a2-ultragpu-4g |
48 | 680 | 4 (A100 80GB) |
a2-ultragpu-8g |
96 | 1360 | 8 (A100 80GB) |
A3 系列
名称 | vCPUs | 内存 (GB) | GPU(NVIDIA H100 或 H200) |
---|---|---|---|
a3-highgpu-1g |
26 | 234 | 1 (H100 80GB) |
a3-highgpu-2g |
52 | 468 | 2 (H100 80GB) |
a3-highgpu-4g |
104 | 936 | 4 (H100 80GB) |
a3-highgpu-8g |
208 | 1872 | 8 (H100 80GB) |
a3-edgegpu-8g |
208 | 1872 | 8 (H100 80GB) |
a3-ultragpu-8g |
224 | 2952 | 8 (H200 141GB) |
A4X 系列
名称 | vCPUs | 内存 (GB) | GPU (NVIDIA GB200) |
---|---|---|---|
a4x-highgpu-4g |
140 | 884 | 4 |
G2 系列
名称 | vCPUs | 内存 (GB) | GPU (NVIDIA L4) |
---|---|---|---|
g2-standard-4 |
4 | 16 | 1 |
g2-standard-8 |
8 | 32 | 1 |
g2-standard-12 |
12 | 48 | 1 |
g2-standard-16 |
16 | 64 | 1 |
g2-standard-24 |
24 | 96 | 2 |
g2-standard-32 |
32 | 128 | 1 |
g2-standard-48 |
48 | 192 | 4 |
g2-standard-96 |
96 | 384 | 8 |
了解每种机器类型的价格。如需详细了解这些机器类型的详细规范,请参阅有关机器类型的 Compute Engine 文档。
找到理想的机器类型
在线推理
如需找到适合您的应用场景的理想机器类型,我们建议您在多种机器类型上加载模型并衡量延迟时间、费用、并发和吞吐量等特征。
一种方法是在多种机器类型上运行此笔记本,并比较结果以找到最适合您的机器类型。
Vertex AI 会在每个副本上预留大约 1 个 vCPU 来运行系统进程。这意味着在单核机器类型上运行笔记本与使用 2 核机器类型执行推理相当。
在考虑推理费用时,请注意,虽然较大的机器费用较高,但它们可以降低总费用,因为处理相同的工作负载需要较少的副本。这对于 GPU 来说尤其明显,因为每小时的费用往往更高,但两者都可以降低延迟和总费用。
批量推理
如需了解详情,请参阅选择机器类型和副本数量。
可选 GPU 加速器
某些配置(例如 A2 系列和 G2 系列)内置了固定数量的 GPU。
A4X (a4x-highgpu-4g
) 系列需要至少 18 个副本。这种机器按机架购买,最少包含 18 个虚拟机。
其他配置(如 N1 系列)允许您选择添加 GPU 以加快每个推理节点的速度。
如需添加可选的 GPU 加速器,您必须考虑以下几个要求:
- 只有当您的
Model
资源基于 TensorFlow SavedModel,或者当您使用旨在充分利用 GPU 的自定义容器时,您才能使用 GPU。您不能将 GPU 用于 scikit-learn 或 XGBoost 模型。 - 每种 GPU 类型的可用性因模型使用的区域而异。了解哪些区域提供了哪些类型的 GPU。
- 您只能为
DeployedModel
资源或BatchPredictionJob
使用一种 GPU 类型,您可以添加的 GPU 数量有一定限制,具体取决于您在使用的机器类型。下表介绍了这些限制。
下表展示了可用于在线推理的可选 GPU 以及可用于每种 Compute Engine 机器类型的每种 GPU 类型的数量:
每种机器类型的有效 GPU 数量 | |||||
---|---|---|---|---|---|
机器类型 | NVIDIA Tesla P100 | NVIDIA Tesla V100 | NVIDIA Tesla P4 | NVIDIA Tesla T4 | |
n1-standard-2 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-standard-4 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-standard-8 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-standard-16 |
1、2、4 | 2、4、8 | 1、2、4 | 1、2、4 | |
n1-standard-32 |
2、4 | 4、8 | 2、4 | 2、4 | |
n1-highmem-2 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highmem-4 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highmem-8 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highmem-16 |
1、2、4 | 2、4、8 | 1、2、4 | 1、2、4 | |
n1-highmem-32 |
2、4 | 4、8 | 2、4 | 2、4 | |
n1-highcpu-2 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highcpu-4 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highcpu-8 |
1、2、4 | 1、2、4、8 | 1、2、4 | 1、2、4 | |
n1-highcpu-16 |
1、2、4 | 2、4、8 | 1、2、4 | 1、2、4 | |
n1-highcpu-32 |
2、4 | 4、8 | 2、4 | 2、4 |
可选 GPU 会产生额外费用。
在单个虚拟机上共同调度多个副本
为了优化部署成本,您可以将同一模型的多个副本部署到配备多个 GPU 硬件加速器的单个虚拟机上,例如具有八个 NVIDIA H100 GPU 的 a3-highgpu-8g
虚拟机。每个模型副本都可以分配给一个或多个 GPU。
对于较小的工作负载,您还可以使用 NVIDIA 多实例 GPU (MIG) 将单个 GPU 划分为多个较小的实例。这样,您就可以在子 GPU 级别分配资源,从而最大限度地提高每个加速器的利用率。如需详细了解多实例 GPU,请参阅 NVIDIA 多实例 GPU 用户指南。
这两项功能旨在提高资源利用效率,并为您的服务工作负载带来更高的成本效益。
限制
此功能存在以下限制:
- 所有共同调度模型副本必须是同一模型版本。
- 不支持使用部署资源池跨部署共享资源。
支持的机器类型
支持以下机器类型。请注意,对于仅有一个 GPU 的机器类型,无需进行共同调度。
机器类型 | 共同调度 | 共同调度 + MIG |
---|---|---|
a2-highgpu-1g | 不适用 | 是 |
a2-highgpu-2g | 是 | 是 |
a2-highgpu-4g | 是 | 是 |
a2-highgpu-8g | 是 | 是 |
a2-highgpu-16g | 是 | 是 |
a2-ultragpu-1g | 不适用 | 是 |
a2-ultragpu-2g | 是 | 是 |
a2-ultragpu-4g | 是 | 是 |
a2-ultragpu-8g | 是 | 是 |
a3-edgegpu-8g | 是 | 是 |
a3-highgpu-1g | 不适用 | 是 |
a3-highgpu-2g | 是 | 是 |
a3-highgpu-4g | 是 | 是 |
a3-highgpu-8g | 是 | 是 |
a3-megagpu-8g | 是 | 是 |
a3-ultragpu-8g | 是 | 是 |
a4-highgpu-8g | 是 | 是 |
a4x-highgpu-8g | 是 | 否 |
前提条件
在使用此功能之前,请参阅使用 gcloud CLI 或 Vertex AI API 部署模型。
部署模型副本
以下示例演示了如何部署共同调度模型副本。
gcloud
使用以下 gcloud
命令在虚拟机上部署共同调度模型副本:
gcloud ai endpoints deploy-model ENDPOINT_ID \
--region=LOCATION_ID \
--model=MODEL_ID \
--display-name=DEPLOYED_MODEL_NAME \
--min-replica-count=MIN_REPLICA_COUNT \
--max-replica-count=MAX_REPLICA_COUNT \
--machine-type=MACHINE_TYPE \
--accelerator=type=ACC_TYPE,count=ACC_COUNT \
--traffic-split=0=100
替换以下内容:
- ENDPOINT_ID:端点的 ID。
- LOCATION_ID:您在其中使用 Vertex AI 的区域。
- MODEL_ID:要部署的模型的模型 ID。
-
DEPLOYED_MODEL_NAME:
DeployedModel
的名称。您还可以将Model
的显示名用于DeployedModel
。 - MIN_REPLICA_COUNT:此部署的最小节点数。 节点数可根据推理负载的需要而增加或减少,直至达到节点数上限并且绝不会少于此节点数。
- MAX_REPLICA_COUNT:此部署的节点数上限。 节点数可根据推理负载的需要而增加或减少,直至达到此节点数并且绝不会少于节点数下限。。每部署 2 个副本需要 1 个虚拟机。
- MACHINE_TYPE:要用于此部署的虚拟机类型。必须属于加速器优化机器系列。
- ACC_TYPE:GPU 加速器类型。应与 MACHINE_TYPE 相对应。对于
a3-highgpu-8g
,请使用nvidia-h100-80gb
。 - ACC_COUNT:每个副本可使用的 GPU 数量。必须至少为 1,且不得超过机器中的 GPU 总数。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER:项目编号。
- LOCATION_ID:您在其中使用 Vertex AI 的区域。
- MODEL_ID:要部署的模型的 ID。
-
DEPLOYED_MODEL_NAME:
DeployedModel
的名称。您还可以将Model
的显示名用于DeployedModel
。 -
MACHINE_TYPE:可选。用于此部署的每个节点的机器资源。其默认设置为
n1-standard-2
。详细了解机器类型。 - ACC_TYPE:GPU 加速器类型。应与“GPU_PARTITION_SIZE”相对应。
- GPU_PARTITION_SIZE:GPU 分区大小。例如,“1g.10gb”。
- ACC_COUNT:每个副本可使用的 GPU 数量。必须至少为 1,且不得超过机器中的 GPU 总数。
- MIN_REPLICA_COUNT:此部署的最小节点数。 节点数可根据推理负载的需要而增加或减少,直至达到节点数上限并且绝不会少于此节点数。
- MAX_REPLICA_COUNT:此部署的节点数上限。 节点数可根据推理负载的需要而增加或减少,直至达到此节点数并且绝不会少于节点数下限。
HTTP 方法和网址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
请求 JSON 正文:
{ "deployedModel": { "model": "projects/PROJECT_NUMBER/locations/LOCATION_ID/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACC_TYPE", "gpuPartitionSize": "GPU_PARTITION_SIZE", "acceleratorCount": "ACC_COUNT"" }, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT, "autoscalingMetricSpecs": [ { "metricName": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle", "target": 70 } ] } } }
如需发送您的请求,请展开以下选项之一:
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
使用以下 Python 命令在虚拟机上部署共同调度模型副本。
endpoint.deploy(
model=<var>MODEL</var>,
machine_type=MACHINE_TYPE,
min_replica_count=MIN_REPLICA_COUNT,
max_replica_count=MAX_REPLICA_COUNT,
accelerator_type=ACC_TYPE,
gpu_partition_size=GPU_PARTITION_SIZE,
accelerator_count=ACC_COUNT
)
替换以下内容:
MODEL:由以下 API 调用返回的模型对象:
model = aiplatform.Model(model_name=model_name)
MACHINE_TYPE:要用于此部署的虚拟机类型。必须属于加速器优化机器系列。在预览版中,仅支持
a3-highgpu-8g
。MIN_REPLICA_COUNT:此部署的最小节点数。 节点数可根据推理负载的需要而增加或减少,直至达到节点数上限并且绝不会少于此节点数。
MAX_REPLICA_COUNT:此部署的节点数上限。 节点数可根据推理负载的需要而增加或减少,直至达到此节点数并且绝不会少于节点数下限。
ACC_TYPE:GPU 加速器类型。应与 GPU_PARTITION_SIZE 相对应。
GPU_PARTITION_SIZE:GPU 分区大小。例如
"1g.10gb"
。如需查看每种 GPU 类型支持的分区大小的完整列表,请参阅多实例 GPU 分区。ACC_COUNT:每个副本可使用的 GPU 数量。必须至少为 1,且不得超过机器中的 GPU 总数。 对于
a3-highgpu-8g
,请指定介于 1 到 8 之间的值。
监控虚拟机使用情况
请按照以下说明在 Metrics Explorer 中监控已部署副本的实际机器数量。
在 Google Cloud 控制台中,前往 Metrics Explorer 页面。
选择要查看指标的项目。
在指标下拉菜单中,点击选择指标。
在按资源或指标名称过滤搜索栏中,输入
Vertex AI Endpoint
。选择 Vertex AI 端点 > 预测指标类别。在活跃指标下,选择机器数量。
点击应用。
结算
结算基于所使用的虚拟机数量,而不是 GPU 数量。您可以使用 Metrics Explorer 监控虚拟机用量。
高可用性
由于多个副本在同一虚拟机上进行共同调度,因此在副本数超过单个虚拟机节点可容纳的数量之前,Vertex AI Inference 无法将部署分布到多个虚拟机和多个可用区。为了实现高可用性,Google 建议您至少在两个节点(虚拟机)上进行部署。