创建使用 A4 或 A3 Ultra 的自定义 AI 优化型 GKE 集群

本页面介绍了如何创建经过 AI 优化的 Google Kubernetes Engine (GKE) 集群,该集群使用 A4 或 A3 Ultra 虚拟机 (VM) 来支持 AI 和机器学习工作负载。对于 A4X,请参阅创建使用 A4X 的自定义 AI 优化型 GKE 集群

A4 和 A3 Ultra 机器系列旨在让您能够运行大规模 AI/机器学习集群,并提供有针对性的工作负载放置、高级集群维护控制和拓扑感知调度等功能。如需了解详情,请参阅集群管理概览

GKE 提供了一个统一的平台,可供组织运行各种工作负载,从而减轻管理多个平台的运营负担。您可以运行高性能分布式预训练、模型微调、模型推理、应用服务和支持服务等工作负载。

在本页面中,您将学习如何使用 Google Cloud CLI 创建 GKE 集群,以便根据工作负载的需求尽可能灵活地配置集群。或者,您也可以选择使用 Cluster Toolkit 快速部署集群,其默认设置反映了许多使用情形下的最佳实践。如需了解如何执行此操作,请参阅创建具有默认配置的 AI 优化型 GKE 集群

使用 GPUDirect RDMA 的集群配置选项

如需使用 Google Cloud CLI 创建集群,您可以选择以下任一集群配置选项:

  • 如果您不打算运行分布式 AI 工作负载:请创建一个不使用 GPUDirect RDMA 的 GKE 集群。
  • 如果您计划运行分布式 AI 工作负载:请创建启用了 GPUDirect RDMA 的 GKE 集群。

准备工作

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

  • 启用 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. 获取容量。了解如何为您的消费选项获取容量

要求

AI 优化型 GKE 集群必须满足以下要求:

  • 如需使用灵活启动预配模型,您必须使用 GKE 1.32.2-gke.1652000 版或更高版本。
  • 请确保您使用的 GPU 驱动程序版本不低于最低版本,具体取决于机器类型:

    • A4:A4 虚拟机中的 B200 GPU 需要至少 R570 GPU 驱动程序版本。默认情况下,GKE 会自动在运行 A4 所需最低版本(即 1.32.1-gke.1729000 或更高版本)的所有 A4 节点上安装此驱动程序版本。
    • A3 Ultra:A3 Ultra 虚拟机中的 H200 GPU 需要最低 R550 GPU 驱动程序版本,该版本在 GKE 版本 1.31 中以 latest 驱动程序版本提供。对于 A3 Ultra 虚拟机,您必须使用 GKE 版本 1.31 设置 gpu-driver-version=latest 字段的值。对于 GKE 1.31.5-gke.1169000 版及更高版本,GKE 默认会自动在 A3 Ultra 节点上安装 R550 GPU 驱动程序版本,包括在您省略 gpu-driver-version 标志时。
  • 如需使用 GPUDirect RDMA,您还需要满足以下要求:

    • 请使用以下最低版本,具体取决于机器类型:
      • A4:请使用 1.32.2-gke.1475000 版或更高版本。
      • A3 Ultra:使用 1.31.4-gke.1183000 版或更高版本。
    • GKE 节点必须使用 Container-Optimized OS 节点映像。不支持 Ubuntu 和 Windows 节点映像。
    • 您的 GKE 工作负载必须使用所有可用的 GPU,并且您的 Pod 必须使用单个 GKE 节点上所有可用的次要网络接口卡 (NIC)。多个 Pod 无法在单个 GKE 节点上共享 RDMA。
    • 此设置会运行 NCCL 测试。如需运行此 NCCL 测试,您必须至少拥有 2 的虚拟机配额(也就是说,如果您使用 a4-highgpu-8ga3-ultragpu-8g 机器类型,则需要 16 个 GPU)。
    • GPUDirect RDMA 与 NCCL Fast Socket 或 GPUDirect TCPX/TCPXO 不兼容。请勿在使用 GPUDirect RDMA 的集群上启用 NCCL Fast Socket 或安装 TCPX/TCPXO 插件。
  • 确保您使用的位置提供您选择的机器类型。如需了解详情,请参阅 GPU 位置

创建经过 AI 优化的 GKE 集群

按照本部分中的说明创建满足 AI 优化型 GKE 集群要求的 GKE 集群。您可以选择创建启用或未启用 GPUDirect RDMA 的集群。

创建集群的注意事项

创建集群时,请考虑以下信息:

  • 选择集群位置
    • 确保您使用的位置提供您选择的机器类型。如需了解详情,请参阅 GPU 位置
    • 对于密集型预留,您可以创建区域级集群。在这种情况下,请将 --region 标志替换为 --zone=COMPUTE_ZONE 标志,其中 COMPUTE_ZONE 是控制平面的可用区。
    • 对于在 1,000 多个节点上运行且需要节点间网络延迟时间较低的工作负载,您可以创建区域集群。如需在物理上将对性能敏感的节点并置,请使用 --node-locations 标志在单个可用区内创建 GPU 节点池。
  • 选择驱动程序版本
    • 驱动程序版本可以是以下值之一:
      • default:为您的 GKE 节点版本安装默认驱动程序版本。如需详细了解默认驱动程序版本的相关要求,请参阅要求部分。
      • latest:为您的 GKE 版本安装最新可用的驱动程序版本。此选项仅适用于使用 Container-Optimized OS 的节点。
      • disabled:跳过自动驱动程序安装。创建节点池后,您必须手动安装驱动程序
    • 如需详细了解 GKE 节点版本的默认和最新 GPU 驱动程序版本,请参阅手动安装 NVIDIA GPU 驱动程序
  • 选择预留亲和性

    • 您可以找到有关预留的信息,例如预留的名称或预留中特定块的名称。如需查找这些值,请参阅查看未来预留请求
    • --reservation-affinity 标志的值可以是 specificany。不过,对于高性能分布式 AI 工作负载,我们建议您使用特定预留。
    • 使用特定预留(包括共享预留)时,请按以下格式指定 --reservation 标志的值:

      projects/PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      替换以下内容:

      • PROJECT_ID:您的 Google Cloud 项目 ID。
      • RESERVATION_NAME:预留的名称。
      • BLOCK_NAME:预留中特定块的名称。

创建不含 GPUDirect RDMA 的集群

如需创建不含 GPUDirect RDMA 的集群,请按照以下说明创建具有基于 CPU 的默认节点池和含 GPU 的其他节点池的集群。此方法允许默认节点池运行其他服务。

  1. 创建集群:

      gcloud container clusters create CLUSTER_NAME \
          --cluster-version=CLUSTER_VERSION \
          --region=COMPUTE_REGION
    

    替换以下内容:

    • CLUSTER_NAME:新集群的名称。
    • CLUSTER_VERSION:新集群的版本。如需详细了解哪个版本的 GKE 支持您的配置,请参阅要求部分。
    • COMPUTE_REGION:新集群所在的区域。 如果您计划创建可用区级集群,请使用 --zone 标志,而不是 --region 标志,例如: --zone=COMPUTE_ZONE。 将 COMPUTE_ZONE 替换为控制平面的可用区。
  2. 使用以下命令之一创建基于 GPU 的节点池。您需要运行的命令取决于您为部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

    受预留约束

    对于与预留绑定的配置,请运行以下命令:

      gcloud container node-pools create NODE_POOL_NAME \
          --region COMPUTE_REGION --cluster CLUSTER_NAME \
          --node-locations COMPUTE_ZONE \
          --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type MACHINE_TYPE \
          --num-nodes=NUM_NODES \
          --reservation-affinity=specific \
          --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAME
    

    替换以下内容:

    • NODE_POOL_NAME:节点池的名称。
    • COMPUTE_REGION:新集群所在的区域。
    • CLUSTER_NAME:新集群的名称。
    • COMPUTE_ZONE:节点池的可用区。
    • GPU_TYPEGPU 加速器的类型:

      • A4 虚拟机:输入 nvidia-b200
      • A3 Ultra 虚拟机:输入 nvidia-h200-141gb
    • AMOUNT:要挂接到节点池中节点的 GPU 数量。例如,对于 a4-highgpu-8ga3-ultragpu-8g 虚拟机,GPU 数量均为 8

    • DRIVER_VERSION:要安装的 NVIDIA 驱动程序版本。它可以是以下值之一:defaultlatestdisabled

    • MACHINE_TYPE:节点的 Compute Engine 机器类型。例如,对于 A4 虚拟机,请使用 a4-highgpu-8g;对于 A3 Ultra 虚拟机,请使用 a3-ultragpu-8g

    • NUM_NODES:节点池的节点数。

    • RESERVATION_NAME:预留的名称。如需查找此值,请参阅查看未来预留请求

    • BLOCK_NAME:预留中特定块的名称。如需查找此值,请参阅查看未来预留请求

    灵活启动

    对于灵活启动配置,请运行以下命令:

      gcloud container node-pools create NODE_POOL_NAME \
          --region COMPUTE_REGION --cluster CLUSTER_NAME \
          --node-locations COMPUTE_ZONE \
          --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type MACHINE_TYPE \
          --flex-start --enable-autoscaling --num-nodes=0 \
          --total-max-nodes TOTAL_MAX_NODES \
          --no-enable-autorepair --location-policy=ANY \
          --reservation-affinity=none [\
          --enable-queued-provisioning]
    

    替换以下内容:

    • NODE_POOL_NAME:节点池的名称。
    • COMPUTE_REGION:新集群所在的区域。
    • CLUSTER_NAME:新集群的名称。
    • COMPUTE_ZONE:节点池的可用区。
    • GPU_TYPEGPU 加速器的类型:

      • A4 虚拟机:输入 nvidia-b200
      • A3 Ultra 虚拟机:输入 nvidia-h200-141gb
    • AMOUNT:要挂接到节点池中节点的 GPU 数量。例如,对于 a4-highgpu-8ga3-ultragpu-8g 虚拟机,GPU 数量均为 8

    • DRIVER_VERSION:要安装的 NVIDIA 驱动程序版本。它可以是以下值之一:defaultlatestdisabled

    • MACHINE_TYPE:节点的 Compute Engine 机器类型。例如,对于 A4 虚拟机,请使用 a4-highgpu-8g;对于 A3 Ultra 虚拟机,请使用 a3-ultragpu-8g

    • TOTAL_MAX_NODES:整个节点池自动扩缩的节点数上限。

      如果您想使用灵活启动(带已排队的预配),请添加 --enable-queued-provisioning 标志。

      如需详细了解如何使用灵活启动,请参阅通过灵活启动(带排队配置)运行大规模工作负载

    Spot

    对于 Spot 预配,请运行以下命令:

      gcloud container node-pools create NODE_POOL_NAME \
          --region COMPUTE_REGION --cluster CLUSTER_NAME \
          --node-locations COMPUTE_ZONE \
          --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \
          --machine-type MACHINE_TYPE \
          --num-nodes=NUM_NODES \
          --spot
    

    替换以下内容:

    • NODE_POOL_NAME:节点池的名称。
    • COMPUTE_REGION:新集群所在的区域。
    • CLUSTER_NAME:新集群的名称。
    • COMPUTE_ZONE:节点池的可用区。