创建使用 A2 的自定义 AI 优化型 GKE 集群

本文档介绍了如何创建自定义 Google Kubernetes Engine (GKE) 集群,这些集群使用 A2 Standard (A100 40GB) 或 A2 Ultra (A100 80GB) 加速器优化机器类型来支持人工智能 (AI) 和机器学习 (ML) 工作负载。 A2 是 通用 GPU 机器系列, 可提供专为训练较小模型和单主机推理等主流 AI 任务设计的独立计算资源 。

GKE 提供了一个统一的平台界面,可为您的组织运行各种工作负载,从而减少管理多个平台的运营负担。

如需创建使用 A2 机器系列的 AI 优化型 GKE 集群,请执行以下操作:

  1. 创建 GKE 环境
  2. 连接到集群
  3. 配置 Pod 清单

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务, 安装初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新 版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

所需的角色

如需获取创建和管理 GKE 集群所需的权限,请让管理员在项目中向您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

选择使用选项并获取容量

  1. 选择使用选项 。根据您希望如何获取和使用 GPU 资源做出选择。如需了解详情,请参阅选择使用 选项

    对于 GKE,在选择使用选项时,请考虑以下附加信息:

  2. 获取容量 。了解如何 为您的使用选项获取容量 。

要求

对于使用 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 节点池:

  1. 如需创建 Standard 集群,请运行以下命令:

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    替换以下内容:

    • CLUSTER_NAME:您的集群的名称。
    • REGION:您的集群的区域。
  2. 创建节点池。 创建集群后,您可以添加包含 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_COUNT
    

    A2 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 卷的数量。

连接到集群

连接到集群,以便您可以在后续部分中运行 kubectl 命令:

gcloud container clusters get-credentials CLUSTER_NAME \
    --region=REGION

替换以下内容:

  • CLUSTER_NAME:您的集群的名称。
  • REGION:您的集群的区域。

如需了解详情,请参阅安装 kubectl 并配置集群访问权限

配置 Pod 清单(仅限 Autopilot)

如果您创建了 Autopilot 集群,则必须在 Pod 清单中选择相应的 GPU,以便 GKE 预配硬件。

  1. 使用节点选择器指定所选 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 Standard)或 nvidia-a100-80gb(对于 A2 Ultra)。
    • RESERVATION_NAME:Compute Engine 容量预留的名称。如需使用共享预留,或预留的特定区块和子区块,请参阅使用预留的可用区路径资源中的相应部分。
  2. 将以下资源添加到请求 GPU 的容器:

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    AMOUNT 替换为要挂接到每个节点的 GPU 数量。

后续步骤