本文档介绍了如何创建自定义 Google Kubernetes Engine (GKE) 集群,该集群使用 A2 Standard (A100 40GB) 或 A2 Ultra (A100 80GB) 加速器优化机器类型来支持人工智能 (AI) 和机器学习 (ML) 工作负载。A2 是通用 GPU 机器系列,可提供独立的计算资源,专为主流 AI 任务(例如训练较小的模型和单主机推理)而设计。
GKE 提供了一个统一的平台,可为组织运行各种工作负载,从而减轻管理多个平台的运营负担。
如需创建使用 A2 系列机器的 AI 优化型 GKE 集群,您需要执行以下操作:
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行
gcloud components update命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
所需的角色
如需获得创建和管理 GKE 集群所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
- Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
选择使用选项并获取容量
选择使用选项。您可以根据自己希望如何获取和使用 GPU 资源来做出选择。如需了解详情,请参阅选择消费方案。
对于 GKE,在选择消费选项时,请考虑以下其他信息:
- 如需详细了解灵活启动(预览版)和 GKE,请参阅灵活启动的 GPU 可获取性简介。
- 灵活启动使用尽力而为的紧凑放置。如需检查拓扑,请参阅查看 GKE 集群中节点的物理拓扑。
- 只有在配置紧凑放置时,才能在使用 Spot 虚拟机时获取拓扑信息。
获取容量。了解如何为您的消费选项获取容量。
要求
对于使用 A2 机器的 AI 优化型 GKE 集群,您的 GPU 节点必须使用 450.80.02 或更高版本的 NVIDIA 驱动程序。
限制
以下限制适用于作为通用 GPU 的 A2 机器:
- 多实例 GPU:虽然 A2(A100 GPU)支持硬件分区,但在使用 GKE Autopilot 时不支持多实例 GPU (NVIDIA)。对于需要 A100 GPU 分区的工作负载,您必须使用 GKE Standard。
创建 GKE 环境
您可以在 Autopilot 或标准模式下创建集群。
Autopilot
如需创建 Autopilot 集群,请运行以下命令:
gcloud container clusters create-auto CLUSTER_NAME \
--region=REGION
替换以下内容:
CLUSTER_NAME:您的集群的名称。REGION:集群所在的区域。
标准
创建 Standard 集群和 GPU 节点池:
如需创建 Standard 集群,请运行以下命令:
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --enable-ip-alias替换以下内容:
CLUSTER_NAME:您的集群的名称。REGION:集群所在的区域。
创建节点池。 创建集群后,您可以添加具有 A2 GPU 的节点池。
请注意以下几点:
- A2 Standard 机器类型 (
a2-highgpu) 要求您手动将本地 SSD 磁盘挂接到节点,以便将其用于临时空间或缓存。使用--local-ssd-count标志。 - A2 Ultra 机器类型 (
a2-ultragpu) 默认会自动包含固定数量的本地 SSD 磁盘。 - 对于多节点训练工作负载,我们建议使用紧凑放置政策,以最大限度地缩短节点之间的网络延迟时间。
对于多节点训练工作负载,我们还建议启用 NCCL Fast Socket 以提升网络性能。
A2 Standard (A100 40GB)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTA2 Ultra (A100 80GB)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform"替换以下内容:
CLUSTER_NAME:您的集群的名称。REGION:集群所在的区域。ZONE:您所在区域内提供所请求 GPU 的一个或多个可用区,例如us-central1-a。使用紧凑放置时,必须指定此参数。NODE_POOL_NAME:节点池的名称。MACHINE_TYPE:节点的机器类型,例如a2-highgpu-1g。AMOUNT:要挂接到每个节点的 GPU 数量。LOCAL_SSD_COUNT:每个节点上预配的本地 SSD 卷的数量。
- A2 Standard 机器类型 (
连接到集群
连接到集群,以便运行后续部分中的 kubectl 命令:
gcloud container clusters get-credentials CLUSTER_NAME \
--region=REGION
替换以下内容:
CLUSTER_NAME:您的集群的名称。REGION:集群所在的区域。
如需了解详情,请参阅安装 kubectl 并配置集群访问权限。
配置 Pod 清单(仅限 Autopilot)
如果您创建了 Autopilot 集群,则必须在 Pod 清单中选择合适的 GPU,以便 GKE 预配硬件。
使用节点选择器指定所选 GPU 类型和特定预留:
spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/gke-gpu-driver-version: latest # Optional: Include if using reserved capacity cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific"替换以下内容:
ACCELERATOR:您预留的加速器。您必须使用nvidia-tesla-a100(对于 A2 标准)或nvidia-a100-80gb(对于 A2 Ultra)。RESERVATION_NAME:Compute Engine 容量预留的名称。如需使用共享预留或预留的特定块和子块,请参阅使用预留的可用区级路径资源中的相应部分。
将以下资源添加到请求 GPU 的容器:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNT将
AMOUNT替换为要附加到每个节点的 GPU 数量。