使用 Cluster Toolkit 创建 AI 优化型 GKE 集群

本文档介绍了如何创建 AI 优化的 Google Kubernetes Engine (GKE) 集群,该集群使用 A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)Compute Engine 实例来支持 AI 和机器学习工作负载。

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

GKE 提供了一个单一平台界面,可运行各种工作负载,满足贵组织的需求。这些工作负载包括高性能分布式预训练、模型微调、模型推理、应用服务和支持服务。GKE 减轻了管理多个平台的运维负担。

选择如何创建 AI 优化型 GKE 集群

以下每种集群创建选项在集群配置和工作负载调度方面都提供了不同程度的便利性和灵活性:

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如需使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
  • 验证您是否拥有创建和管理 GKE 集群及关联服务账号所需的权限:
    • Kubernetes Engine Admin (roles/container.admin)
    • Compute Admin (roles/compute.admin)
    • Storage Admin (roles/storage.admin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)
    • Service Account Admin (roles/iam.serviceAccountAdmin)
    • Service Account User (roles/iam.serviceAccountUser)
    • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)
    • Role Administrator (roles/iam.roleAdmin)
    • Secret Manager Secret Version Manager (roles/secretmanager.secretVersionManager)
    • 如需使用单项目预留,请执行以下操作:针对项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
    • 使用共享预留:所有者项目以及您要使用预留的任何使用方项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)

选择使用选项并获取容量

如需获取容量,请完成以下步骤:

  1. 选择使用选项:根据您希望获取和使用 GPU 资源的方式进行选择。如需了解详情,请参阅选择使用选项。

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

  2. 获取容量:每种使用选项的容量获取流程各不相同。如需了解所选使用选项的流程,请参阅容量概览。

要求

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

  • 对于 A4X Max,您必须使用以下版本之一:

    • 对于 1.35 或更高版本,请使用 GKE 1.35.0-gke.2745000 版或更高版本。
    • 对于 1.34,请使用 GKE 1.34.3-gke.1318000 版或更高版本。

    这些版本有助于确保 A4X Max 使用以下各项:

    • R580.95.05,A4X Max 的最低 GPU 驱动程序版本,默认启用。
    • 基于驱动程序的一致性内存管理 (CDMM),默认处于启用状态。NVIDIA 建议 Kubernetes 集群启用此模式,以解决内存超报问题。CDMM 允许通过驱动程序(而非操作系统 [OS])管理 GPU 内存。此方法可帮助您避免操作系统将 GPU 内存联机,并将 GPU 内存作为非统一内存访问 (NUMA) 节点向操作系统公开。启用 CDMM 时,不支持多实例 GPU。如需详细了解 CDMM,请参阅硬件和软件支持。
    • GPUDirect RDMA 和 MNNVL,建议启用 A4X Max 节点池以使用 A4X Max 的网络功能。
  • 对于 A4X,您必须使用以下版本之一:

    • 对于 1.33 或更高版本,请使用 GKE 1.33.4-gke.1036000 版或更高版本。
    • 对于 1.32,请使用 GKE 1.32.8-gke.1108000 版或更高版本。

    这些版本有助于确保 A4X 使用以下各项:

    • R580,A4X 的最低 GPU 驱动程序版本,默认处于启用状态。
    • 基于驱动程序的一致性内存管理 (CDMM),默认处于启用状态。NVIDIA 建议 Kubernetes 集群启用此模式,以解决内存超报问题。CDMM 允许通过驱动程序(而非操作系统 [OS])管理 GPU 内存。此方法可帮助您避免操作系统将 GPU 内存联机,并将 GPU 内存作为非统一内存访问 (NUMA) 节点向操作系统公开。启用 CDMM 后,不支持多实例 GPU。如需详细了解 CDMM,请参阅硬件和软件支持。
    • GPUDirect RDMA 和 MNNVL,建议启用 A4X 节点池以使用 A4X 的网络功能。
  • 请确保您使用的是最低 GPU 驱动程序版本,具体取决于机器类型:

    • A4X Max:A4X Max 裸金属实例中的 GB300 GPU 至少需要 R580.95.05 GPU 驱动程序版本。请参阅前面提到的版本要求。
    • A4X:A4X 实例中的 GB200 GPU 至少需要 R580 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 驱动程序版本。
    • A3 Mega 和 A3 High:所有受支持的 GKE 版本中的默认 GPU 驱动程序版本都支持 A3 High 和 A3 Mega 实例中的 H100 GPU。您还可以设置 gpu-driver-version=latest,以访问受支持的 GKE 版本上提供的较新生产驱动程序。
  • 对于 A3 Ultra 节点池,您必须将磁盘类型设置为 hyperdisk-balanced。

  • 如需使用 GPUDirect RDMA,请根据机器类型使用以下最低版本:

    • A4X Max:请参阅前面提到的版本要求。
    • A4X:请参阅前面提到的版本要求。
    • A4:使用 1.32.2-gke.1475000 或更高版本。
    • A3 Ultra:使用 1.31.4-gke.1183000 或更高版本。
  • 如需使用 GPUDirect-TCPXO(适用于 A3 Mega)和 GPUDirect-TCPX(适用于 A3 High),请使用以下 GKE 版本:

    • A3 High:使用 1.34 之前的任何可用 GKE 版本。
    • A3 Mega:使用任何可用的 GKE 版本。
  • 如需使用 GPUDirect RDMA,GKE 节点必须使用 Container-Optimized OS 节点映像。不支持 Ubuntu 和 Windows 节点映像。

  • 您必须使用受预留约束的预配模型来创建具有 A4X Max 和 A4X 的集群。不支持其他预配模式。

使用 Cluster Toolkit 创建集群

请按照以下说明使用 Cluster Toolkit 创建集群。本部分将引导您完成集群创建过程,确保您的项目遵循最佳实践并满足 AI 优化型 GKE 集群的要求。本部分还介绍了如何使用 Terraform 为部署预配和管理基础设施。

A4X Max

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照说明安装依赖项以准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 在 GitHub 代码库中的 examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml 蓝图中,填写 terraform_backend_defaults 和 vars 部分中的以下设置,以匹配部署的具体值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。默认值为 gke-a4x-max-bm。
    • REGION:集群的计算区域。
    • ZONE:A4X Max 机器节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • STATIC_NODE_COUNT:集群节点池中的 A4X Max 节点数,必须不超过 18 个。我们建议您使用 18 个节点,通过使用 NVLink 网域在一个子块中获取 1x72 的 GPU 拓扑。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。
    • 对于 reservation 字段,请使用以下选项之一,具体取决于您是否要在预配节点池时定位预留中的特定块:

    • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。

    • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • RESERVATION_PROJECT_ID:具有预留的 Google Cloud项目 ID。您的预留可能存在于与 PROJECT_ID 不同的项目中。

    • NUM_NODE_POOLS:要在集群中启用的节点池数量。如果您希望集群包含超过 18 个节点,则可以指定多个节点池。默认值为 1。

    如需修改高级设置,请修改 examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml 蓝图文件。

  5. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  6. 使用 gcluster deploy 命令,通过 A4X Max 机器类型部署蓝图并预配 GKE 基础架构:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x-max-bm/gke-a4x-max-bm-deployment.yaml \
        examples/gke-a4x-max-bm/gke-a4x-max-bm.yaml
    
  7. 出现提示时,选择 (A)pply 以部署蓝图。

    • 该蓝图会创建 VPC 网络、GPU RDMA VPC 网络、服务账号、集群和节点池。
    • 为了支持蓝图中的 fio-bench-job-template 作业模板,系统会创建Google Cloud 存储桶、网络存储和永久性卷资源。

A4X

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照说明安装依赖项,以准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 在 GitHub 代码库中的 examples/gke-a4x/gke-a4x-deployment.yaml 蓝图中,在 terraform_backend_defaults 和 vars 部分中填写以下设置,以匹配部署的具体值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。默认值为 gke-a4x。
    • REGION:集群的计算区域。
    • ZONE:A4X 机器节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • STATIC_NODE_COUNT:集群节点池中的 A4X 节点数,必须不超过 18 个。我们建议您使用 18 个节点,通过使用 NVLink 网域在一个子块中获取 1x72 的 GPU 拓扑。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。
    • 对于 reservation 字段,请使用以下选项之一,具体取决于您是否要在预配节点池时定位预留中的特定块:

    • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。

    • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • RESERVATION_PROJECT_ID:具有预留的 Google Cloud项目 ID。您的预留可能存在于与 PROJECT_ID 不同的项目中。

    • NUM_NODE_POOLS:要在集群中启用的节点池数量。如果您希望集群包含超过 18 个节点,则可以指定多个节点池。默认值为 1。

    如需修改高级设置,请修改 examples/gke-a4x/gke-a4x.yaml 蓝图文件。

  5. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  6. 使用 gcluster deploy 命令部署蓝图,并使用 A4X 机器类型预配 GKE 基础设施:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4x/gke-a4x-deployment.yaml \
        examples/gke-a4x/gke-a4x.yaml
    
  7. 出现提示时,选择 (A)pply 以部署蓝图。

    • 该蓝图会创建 VPC 网络、GPU RDMA VPC 网络、服务账号、集群和节点池。
    • 为了支持蓝图中的 fio-bench-job-template 作业模板,系统会创建Google Cloud 存储桶、网络存储和永久性卷资源。

A4

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照说明安装依赖项,以准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 为 GKE 部署选择使用选项:

    默认情况下,部署文件配置为使用特定预留。如需使用其他使用模式(例如 Spot 虚拟机或灵活启动预配模式),请更新部署 YAML 文件。如需了解详情,请参阅 GKE 使用选项。

  5. 在 GitHub 代码库中的 examples/gke-a4/gke-a4-deployment.yaml 蓝图中,在 terraform_backend_defaults 和 vars 部分中填写以下设置,以匹配部署的具体值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。默认值为 gke-a4。
    • REGION:集群的计算区域。
    • ZONE:A4 机器节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。
    • 在特定预留部分中,配置以下设置:
    • 在 reservation_affinity 块的 specific_reservations 列表中,指定预留 name 字段:

      • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。
      • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • STATIC_NODE_COUNT:集群中的 A4 节点数。

    如需修改高级设置,请修改 examples/gke-a4/gke-a4.yaml 蓝图文件。

  6. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 命令部署蓝图,并使用 A4 机器类型预配 GKE 基础设施:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a4/gke-a4-deployment.yaml \
        examples/gke-a4/gke-a4.yaml
    
  8. 出现提示时,选择 (A)pply 以部署蓝图。

    • 该蓝图会创建 VPC 网络、GPU RDMA VPC 网络、服务账号、集群和节点池。
    • 为了支持蓝图中的 fio-bench-job-template 作业模板,系统会创建Google Cloud 存储桶、网络存储和永久性卷资源。

A3 Ultra

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照说明安装依赖项,以准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 为 GKE 部署选择使用选项:

    默认情况下,部署文件配置为使用特定预留。如需使用其他使用模式(例如 Spot 虚拟机或灵活启动预配模式),请更新部署 YAML 文件。如需了解详情,请参阅 GKE 使用选项。

  5. 在 GitHub 代码库中的 examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml 蓝图中,在 terraform_backend_defaults 和 vars 部分中填写以下设置,以匹配部署的特定值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。默认值为 gke-a3-ultragpu。
    • REGION:集群的计算区域。
    • ZONE:A3 Ultra 机器的节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。
    • 在特定预留部分中,配置以下设置:
    • 在 reservation_affinity 块的 specific_reservations 列表中,指定预留 name 字段:

      • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。
      • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:
      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • STATIC_NODE_COUNT:集群中的 A3 Ultra 节点数。

    如需修改高级设置,请修改 examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml 蓝图文件。

  6. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 命令部署蓝图,并使用 A3 Ultra 机器类型预配 GKE 基础设施:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \
        examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    
  8. 出现提示时,选择 (A)pply 以部署蓝图。

    • 该蓝图会创建 VPC 网络、GPU RDMA VPC 网络、服务账号、集群和节点池。
    • 为了支持蓝图中的 fio-bench-job-template 作业模板,系统会创建Google Cloud 存储桶、网络存储和永久性卷资源。

A3 Mega

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照安装依赖项的说明准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 在 GitHub 代码库中的 examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml 蓝图中,替换 terraform_backend_defaults 和 vars 部分中的以下变量,以匹配部署的具体值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • REGION:集群的计算区域。
    • ZONE:A3 Mega 机器节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。如需获取宿主机的 IP 地址,请运行 curl -s https://ifconfig.me 命令。
  5. 为 GKE 部署选择使用选项:

    默认情况下,部署文件配置为使用标准预留或未来预留。如需使用其他使用模式(例如按需容量、Spot 虚拟机或灵活启动预配模式),请更新部署 YAML 文件。如需了解详情,请参阅 GKE 消费选项。

    如需配置预留,请在特定预留部分中设置以下值:

    • 在 reservation_affinity 块的 specific_reservations 列表中,指定预留 name 字段:
    • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。
    • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • STATIC_NODE_COUNT:集群中的 A3 Mega 节点数。

    如需修改高级设置,请从 GitHub 代码库中修改 examples/gke-a3-megagpu/gke-a3-megagpu.yaml 蓝图。

  6. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 命令部署蓝图,并使用 A3 Mega 机器类型预配 GKE 基础设施:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-megagpu/gke-a3-megagpu-deployment.yaml \
        examples/gke-a3-megagpu/gke-a3-megagpu.yaml
    
  8. 出现提示时,选择 (A)pply 以部署蓝图。该蓝图会创建 VPC 网络、服务账号、集群和节点池。

A3 High

  1. 启动 Cloud Shell。虽然可以使用其他环境,但我们建议您使用 Cloud Shell,因为 Cluster Toolkit 的依赖项已预安装。如果您不想使用 Cloud Shell,请按照安装依赖项的说明准备其他环境。
  2. 安装 Cluster Toolkit。

  3. 创建一个启用了版本控制的 Cloud Storage 存储桶,用于存储 Terraform 部署的状态:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning

    执行以下变量替换操作:

    • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • COMPUTE_REGION_TERRAFORM_STATE:您要存储 Terraform 部署状态的计算区域。
  4. 在 GitHub 代码库中的 examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml 蓝图中,替换 terraform_backend_defaults 和 vars 部分中的以下变量,以匹配部署的具体值:

    • BUCKET:您在上一步中创建的 Cloud Storage 存储桶的名称。
    • DEPLOYMENT_NAME:部署的唯一名称,长度必须介于 6 到 30 个字符之间。如果部署名称在项目中不唯一,则集群创建会失败。
    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • REGION:集群的计算区域。
    • ZONE:A3 High 机器节点池的计算可用区。此可用区必须与预留中机器所在的可用区一致。
    • AUTHORIZED_CIDR:您希望允许连接到集群的 IP 地址范围。此 CIDR 块必须包含调用 Terraform 的机器的 IP 地址。如需了解详情,请参阅授权网络的工作原理。如需获取宿主机的 IP 地址,请运行 curl -s https://ifconfig.me 命令。
  5. 为 GKE 部署选择使用选项:

    默认情况下,部署文件配置为使用标准预留或未来预留。如需使用其他使用模式(例如按需容量、Spot 虚拟机或灵活启动预配模式),请更新部署 YAML 文件。如需了解详情,请参阅 GKE 消费选项。

    如需配置预留,请在特定预留部分中设置以下值:

    • 在 reservation_affinity 块的 specific_reservations 列表中,指定预留 name 字段:
    • 如需将节点池放置在预留中的任意位置,请提供预留的名称 (RESERVATION_NAME)。
    • 如需定位到预留中的特定区块,请使用以下格式的预留和区块名称:

      RESERVATION_NAME/reservationBlocks/BLOCK_NAME
      

      如果您不知道预留中有哪些块可用,请参阅查看预留的拓扑。

    • STATIC_NODE_COUNT:集群中的 A3 High 节点数。

    如需修改高级设置,请从 GitHub 代码库中修改 examples/gke-a3-highgpu/gke-a3-highgpu.yaml 蓝图。

  6. 生成应用默认凭证 (ADC),以向 Terraform 提供访问权限。如果您使用的是 Cloud Shell,请使用 gcloud auth application-default login 命令:

    gcloud auth application-default login
    
  7. 使用 gcluster deploy 命令部署蓝图,并使用 A3 High 机器类型预配 GKE 基础设施:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
        examples/gke-a3-highgpu/gke-a3-highgpu-deployment.yaml \
        examples/gke-a3-highgpu/gke-a3-highgpu.yaml
    
  8. 出现提示时,选择 (A)pply 以部署蓝图。该蓝图会创建 VPC 网络、服务账号、集群和节点池。

运行动态工作负载调度器示例作业

如果您使用动态工作负载调度器(灵活启动或已排队的预配)预配了集群,则可以通过提交示例 Kubernetes 作业来验证工作负载调度。

如需详细了解动态工作负载调度器预配模式,请参阅动态工作负载调度器灵活启动(带已排队的预配)。

提交示例作业

选择与您的使用选项对应的标签页:

灵活启动

此任务是可选的,仅适用于采用灵活启动预配模型预配的集群。为灵活启动配置的工作负载需要在其 Pod 规范中包含 cloud.google.com/gke-flex-start: "true" 节点选择器。

  1. 提交示例灵活启动作业:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex.yaml
    
  2. 监控作业和 Pod 的状态:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    替换以下内容:

    • JOB_NAME:您的作业的名称。
    • POD_NAME:您的 pod 的名称。
  3. 作业完成后,删除作业资源:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex.yaml
    

已排队的预配

此任务是可选的,仅当您使用排队预配功能预配集群时才适用。为排队预配配置的工作负载需要在其 Pod 规范中添加以下标签和注解:

  • 标签:kueue.x-k8s.io/queue-name: dws-local-queue
  • 注释: provreq.kueue.x-k8s.io/maxRunDurationSeconds: "MAX_RUN_DURATION"

如需了解详情,请参阅排队预配的工作负载清单要求。

  1. 提交示例排队预配作业:

    kubectl apply -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    
  2. 监控作业和 Pod 的状态:

    kubectl get jobs
    kubectl describe job JOB_NAME
    kubectl get pods
    kubectl describe pod POD_NAME
    

    替换以下内容:

    • JOB_NAME:您的作业的名称。
    • POD_NAME:您的 pod 的名称。
  3. 作业完成后,删除作业资源:

    kubectl delete -f examples/dws-sample-workloads/sample-job-flex-queue.yaml
    

测试广告联盟效果

我们建议您验证已预配集群的功能。为此,请使用 NCCL 测试,这些测试是针对 Google 环境进行了优化的 NVIDIA Collective Communications Library (NCCL) 测试。

运行可重现的基准测试

使用 Cluster Toolkit 创建集群后,您可以按照 GitHub 中提供的方案,在所选机器系列上重现大型机器学习开放模型的预训练基准。

每个方案都提供了完成以下任务的说明:

  • 准备环境。
  • 运行基准测试。
  • 分析基准测试结果。此审核包括基准测试结果和详细日志,以便进一步分析。

如需查看可用于训练和其他类型工作负载的所有配方,请参阅 GPU 配方 GitHub 代码库。

清理 Cluster Toolkit 创建的资源

为避免因本页中使用的资源而产生周期性费用,请使用 gcluster destroy 命令清理 Cluster Toolkit 预配的资源,包括 VPC 网络和 GKE 集群:

   cd ~/cluster-toolkit
   ./gcluster destroy CLUSTER_NAME/

将 CLUSTER_NAME 替换为您的集群名称。 对于使用 Cluster Toolkit 创建的集群,集群名称基于 DEPLOYMENT_NAME 名称。

后续步骤