创建包含 A4 虚拟机的自行管理的 Slurm 集群

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

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

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


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

操作演示


教程概览

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

  1. 使用本指南所需的权限和用于预留机器的环境变量设置您的 Google Cloud 项目。
  2. 创建 Cloud Storage 存储桶。
  3. 设置存储环境变量。
  4. 设置 Cluster Toolkit。
  5. 切换至 Cluster Toolkit 目录。
  6. 创建 Slurm 部署 YAML 文件。
  7. 使用蓝图配置 Slurm 集群。
  8. 连接到 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

所需的角色

如需获得部署 Slurm 集群所需的权限,请让您的管理员为您授予以下 IAM 角色:

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

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

费用

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

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

    • 每个区域的 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 机器。

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 文件的唯一名称。如果您多次完成本教程,请每次选择一个唯一的部署名称。

切换至已获 A4 批准的项目

切换到具有针对 A4 机器类型的已批准预留块的 Google Cloud 项目:

gcloud config set project ${A4_RESERVATION_PROJECT_ID}

创建 Cloud Storage 存储桶

部署蓝图及其模块时,Terraform 会创建一个状态文件,用于将蓝图映射到云端资源。为了可靠地记录您的基础架构,最佳做法是将 Terraform 状态文件存储在远程的已启用版本控制的位置,例如已启用版本控制的 Cloud Storage 存储桶。

如需存储状态文件,请在 Cloud Shell 中创建一个启用版本控制功能的 Cloud Storage 存储桶:

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

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

替换以下内容:

  • BUCKET_NAME:新 Cloud Storage 存储桶的名称,必须符合存储桶命名要求
  • A4_RESERVATION_PROJECT_ID:已授予 A4 机器类型预留块的 Google Cloud项目 ID。
  • BUCKET_LOCATION:要在其中创建 Cloud Storage 存储桶的 Google Cloud 区域,例如 us-central1。Terraform 会将状态文件存储在此位置。

设置存储空间容量变量

在 Cloud Shell 中,为您在上一步中创建的存储桶创建环境变量。

export BUCKET_NAME=BUCKET_NAME
export BUCKET_LOCATION=BUCKET_LOCATION

替换以下内容:

  • BUCKET_NAME:存储桶的名称。
  • BUCKET_LOCATION:您的存储桶所在的区域。

设置 Cluster Toolkit

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

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

安装 Cluster Toolkit

如需安装 Cluster Toolkit,请下载并解压缩预构建的二进制文件软件包。ZIP 和 TAR (.tgz) 归档文件均可使用。

  1. 前往 GitHub 上的 Cluster Toolkit 发布版本页面

  2. 下载与您的平台和架构匹配的软件包。例如,如果您使用 Cloud Shell,请下载 gcluster_bundle_linux_amd64.zipgcluster_bundle_linux_amd64.tar.gz

  3. 在终端中,将软件包文件解压缩到新的 cluster-toolkit 目录:

    • 如果您下载的是 ZIP 软件包,请使用 unzip 命令提取文件:

      unzip BUNDLE_FILENAME -d cluster-toolkit
    • 如果您下载的是 TAR 软件包,请使用 tar 命令提取文件:

      mkdir -p cluster-toolkit
      tar -xzf BUNDLE_FILENAME -C cluster-toolkit

    BUNDLE_FILENAME 替换为您下载的软件包的名称。

  4. 转到 cluster-toolkit 目录:

    cd cluster-toolkit
  5. 验证安装:

    ./gcluster --version

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

创建部署文件

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

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

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: 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://${BUCKET_NAME}

问题排查

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

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

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

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

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

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

后续步骤