使用 A4 机器类型创建 AI 优化型 Slurm 集群

本页面介绍了如何借助 gcloud CLI 和 Cluster Toolkit,使用 A4 加速器优化型机器类型快速创建和部署 AI 优化型 Slurm 集群

A4 加速器优化型机器类型随附 NVIDIA B200 GPU,专为密集型 AI 计算而设计,可帮助您的 Slurm 集群高效处理大规模模型训练和推理。如需详细了解 Google Cloud上的 A4 加速器优化机器类型,请参阅 GPU 机器类型

或者,您也可以使用 Cluster Director 创建基于 A4 的 Slurm 集群。Cluster Director 是一项代管式服务,可简化和自动化集群部署,从而减少运营开销。如需了解详情,请参阅基于模板创建 AI 优化型集群


如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


教程概览

本教程介绍了设置使用 A4 加速器优化型机器类型的 AI 优化型 Slurm 集群的步骤。具体来说,您需要设置一个包含 Compute Engine 虚拟机的集群,创建一个 Cloud Storage 存储桶来存储必要的 Terraform 模块,并设置一个 Filestore 实例来预配 Slurm 集群。如需完成本教程中的步骤,请按照以下过程操作:

  1. 使用所需的权限和环境变量设置您的 Google Cloud 项目。
  2. 设置 Cloud Storage 存储桶。
  3. 设置 Cluster Toolkit。
  4. 切换至 Cluster Toolkit 目录。
  5. 创建 Slurm 部署 YAML 文件。
  6. 使用蓝图配置 Slurm 集群。
  7. 连接到 Slurm 集群。

准备工作

  1. 为 1 台 a4-highgpu-8g 机器预留容量块。本教程需要使用这些机器。
  2. 确保您有足够的 Filestore 配额来配置 Slurm 集群。您需要至少 10,240 GiB 的可用区级容量(也称为大规模 SSD 容量)。

    如需查看您的 Filestore 配额,请在 Google Cloud 控制台中查看配额和系统限制,并过滤表格以仅显示 Filestore 资源。

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Compute Engine、Filestore、Cloud Storage、Service Usage 和 Cloud Resource Manager API:

    启用 API

所需的角色

为确保 Compute Engine 默认服务账号具有部署 Slurm 集群所需的权限,请让您的管理员为 Compute Engine 默认服务账号授予以下 IAM 角色:

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

您的管理员也可以通过自定义角色或其他预定义角色为 Compute Engine 默认服务账号授予所需的权限。

费用

按照本教程操作的费用因您完成的每个部分而异,例如设置教程或运行作业。您可以使用价格计算器计算费用。

  • 如需估算设置本教程的费用,请使用以下规范:

    • 每个区域的 Filestore(标准)容量:10,240 GiB。
    • 标准永久性磁盘:50 GB pd-standard(Slurm 登录节点)。
    • 高性能 (SSD) 永久性磁盘:50 GB pd-ssd(Slurm 控制器)。
    • 虚拟机实例:1 a4-highgpu-8g

启动 Cloud Shell

在本教程中,您将使用 Cloud Shell,这是一个用于管理 Google Cloud上托管的资源的 shell 环境。

Cloud Shell 预安装有 Google Cloud CLI。gcloud CLI 为 Google Cloud提供了主要命令行界面。启动 Cloud Shell:

  1. 前往 Google Cloud 控制台。

    Google Cloud 控制台

  2. 在控制台的右上角,点击激活 Cloud Shell 按钮:Cloud Shell 图标

Cloud Shell 会话随即会启动并显示命令行提示符。 您可以使用此 shell 运行 gcloud 和 Cluster Toolkit 命令。

设置环境变量

在 Cloud Shell 中,设置以下环境变量以供本教程的其余部分使用。这些环境变量会为以下任务设置占位值:

  • 使用相关值配置您的项目,以访问预留的 a4-highgpu-8g 机器。

  • 设置 Cloud Storage 存储桶以存储 Cluster Toolkit 模块。

预留容量变量

export A4_RESERVATION_PROJECT_ID=A4_RESERVATION_PROJECT_ID
export A4_RESERVATION_NAME=A4_RESERVATION_NAME
export A4_DEPLOYMENT_NAME=A4_DEPLOYMENT_NAME
export A4_REGION=A4_REGION
export A4_ZONE=A4_ZONE
export A4_DEPLOYMENT_FILE_NAME=A4_DEPLOYMENT_FILE_NAME

替换以下内容:

  • A4_RESERVATION_PROJECT_ID:已授予 A4 机器类型预留块的 Google Cloud项目 ID。
  • A4_RESERVATION_NAME:项目中使用的 GPU 预留的名称。例如 a4high-exr
  • A4_DEPLOYMENT_NAME:Slurm 集群部署的唯一名称。例如 my-slurm-cluster-deployment
  • A4_REGION:运行预留 A4 机器预留块的区域。例如 us-central1
  • A4_ZONE:包含预留机器的可用区。 该字符串必须同时包含区域和可用区。例如 us-central1-a
  • A4_DEPLOYMENT_FILE_NAME:Slurm 蓝图 YAML 文件的唯一名称。如果您多次完成本教程,请每次选择一个唯一的部署名称。

存储空间容量变量

为 Cloud Storage 存储桶创建环境变量。

Cluster Toolkit 使用蓝图来定义和部署虚拟机的集群。蓝图定义了一个或多个 Terraform 模块,用于配置 Cloud 基础架构。此存储桶用于存储这些蓝图。

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

替换以下内容:

  • GOOGLE_CLOUD_BUCKET_NAME:您要为 Cloud Storage 存储桶使用的名称,该名称符合存储桶命名要求
  • GOOGLE_CLOUD_BUCKET_LOCATION:您选择的任何 Google Cloud 区域,存储桶将托管在该区域。例如 us-central1

切换至已获 A4 批准的项目

运行以下命令,确保您位于具有针对 A4 机器类型的已批准预留块的 Google Cloud项目中。

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

创建 Cloud Storage 存储桶

创建存储桶以存储 Terraform 模块。从 Cloud Shell 中,使用您的环境变量运行以下命令:

使用 Terraform 时,最佳做法是在启用版本的文件中远程存储状态。在 Google Cloud上,您可以创建已启用版本控制的 Cloud Storage 存储桶。

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${A4_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning

设置 Cluster Toolkit

如需在 Google Cloud 项目中创建 Slurm 集群,您可以使用 Cluster Toolkit 来处理集群的部署和预配。Cluster Toolkit 是 Google Cloud提供的开源软件,可简化在 Google Cloud上部署工作负载的过程。

请按照以下步骤设置 Cluster Toolkit。

克隆 Cluster Toolkit GitHub 代码库

  1. 在 Cloud Shell 中,克隆 GitHub 代码库:

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. 前往主工作目录:

    cd cluster-toolkit/

构建 Cluster Toolkit 二进制文件

  1. 在 Cloud Shell 中,通过运行以下命令,从源代码构建 Cluster Toolkit 二进制文件:

    make
  2. 如需验证构建,请运行以下命令:

    如需部署 A4 高性能加速器优化型机器 Slurm 集群,您必须使用 Cluster Toolkit 的 v1.51.1 版或更高版本。

    ./gcluster --version

    构建二进制文件后,您现在可以部署集群来运行作业或工作负载。

创建部署文件

  1. 在 Cluster Toolkit 目录中,创建 Slurm 部署 YAML 文件。

    nano ${A4_DEPLOYMENT_FILE_NAME}.yaml
    
  2. 将以下内容粘贴到 YAML 文件中。

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: A4_DEPLOYMENT_FILE_NAME
      project_id: A4_RESERVATION_PROJECT_ID
      region: A4_REGION
      zone: A4_ZONE
      a4h_reservation_name: A4_RESERVATION_NAME
      a4h_cluster_size: 1
    
  3. 如需保存并退出文件,请依次按 Ctrl+OEnterCtrl+X 键。

配置 Slurm 集群

如需配置 Slurm 集群,请运行以下部署命令。此命令会为 Slurm 集群预配 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml 蓝图文件。

在 Cloud Shell 中,开始创建集群。

./gcluster deploy -d ${A4_DEPLOYMENT_FILE_NAME}.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

连接到集群

部署后,连接到 Google Cloud 控制台以查看您的集群。

  1. 前往Google Cloud 控制台中的 Compute Engine > 虚拟机实例页面。

    转到虚拟机实例

  2. 找到登录节点(a4high-login-001 或类似节点)。

  3. 点击 SSH 进行连接。

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

销毁 Slurm 集群

我们建议您清理不再需要的资源。

默认情况下,A4 High 蓝图会在 Filestore 实例上启用删除防护。销毁 Slurm 集群时,您必须先停用删除防护,然后才能运行销毁命令。

停用防删除保护

如需在更新实例时停用防删除保护,请使用如下所示的命令:

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

INSTANCE_NAME 替换为您要修改的实例的名称。例如 my-genomics-instance

如需查找 INSTANCE_NAME,您可以运行 gcloud filestore instances list。此命令会列出您当前 Google Cloud 项目中的所有 Filestore 实例,包括其名称、位置(可用区)、层级、容量和状态。

运行该命令后,找到与本教程中运行的 a4-highgpu-8g 机器匹配的 Filestore 实例。

销毁 Slurm 集群

  1. 在运行销毁命令之前,前往 Cluster Toolkit 目录的根目录。默认情况下,DEPLOYMENT_FOLDER 位于 Cluster Toolkit 目录的根目录中。

  2. 如需销毁集群,请运行以下命令:

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    DEPLOYMENT_FOLDER 替换为部署文件夹的名称。通常与 DEPLOYMENT_NAME 相同。

销毁完成后,您会看到类似于以下内容的消息:

Destroy complete! Resources: xx destroyed.

删除存储桶

确保上一个命令没有错误结束后,删除 Cloud Storage 存储桶:

gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}

问题排查

  • 错误:Cloud Shell 无法配置集群,因为没有剩余存储空间。

    如果您是 Cloud Shell 的常用用户,并且存储空间用尽,可能会看到此错误。

    如需解决此问题,请参阅停用或重置 Cloud Shell

  • 错误:集群或蓝图名称已存在。

    如果您使用的项目已使用本教程中使用的确切文件名,您可能会看到此错误。例如,如果贵组织中的其他人从头到尾运行了本教程。

    如需解决此问题,请再次完成本教程,为部署文件选择一个唯一的名称,然后使用新的部署文件重新运行预配 Slurm 集群命令。

后续步骤