使用 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 集群。如需完成本教程中的步骤,请按照以下过程操作:
- 使用所需的权限和环境变量设置您的 Google Cloud 项目。
- 设置 Cloud Storage 存储桶。
- 设置 Cluster Toolkit。
- 切换至 Cluster Toolkit 目录。
- 创建 Slurm 部署 YAML 文件。
- 使用蓝图配置 Slurm 集群。
- 连接到 Slurm 集群。
准备工作
- 为 1 台
a4-highgpu-8g机器预留容量块。本教程需要使用这些机器。 确保您有足够的 Filestore 配额来配置 Slurm 集群。您需要至少 10,240 GiB 的可用区级容量(也称为大规模 SSD 容量)。
如需查看您的 Filestore 配额,请在 Google Cloud 控制台中查看配额和系统限制,并过滤表格以仅显示 Filestore 资源。
- 如需详细了解如何查看 Filestore 配额,请参阅查看 API 特定的配额。
- 如果配额不足,请申请增加配额。
启用 Compute Engine、Filestore、Cloud Storage、Service Usage 和 Cloud Resource Manager API:
所需的角色
为确保 Compute Engine 默认服务账号具有部署 Slurm 集群所需的权限,请让您的管理员为 Compute Engine 默认服务账号授予以下 IAM 角色:
-
项目的 Storage Object Viewer (
roles/storage.objectViewer) -
针对项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
服务账号本身的 Service Account User (
roles/iam.serviceAccountUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员也可以通过自定义角色或其他预定义角色为 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:
前往 Google Cloud 控制台。
在控制台的右上角,点击激活 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 代码库
在 Cloud Shell 中,克隆 GitHub 代码库:
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
前往主工作目录:
cd cluster-toolkit/
构建 Cluster Toolkit 二进制文件
在 Cloud Shell 中,通过运行以下命令,从源代码构建 Cluster Toolkit 二进制文件:
make
如需验证构建,请运行以下命令:
如需部署 A4 高性能加速器优化型机器 Slurm 集群,您必须使用 Cluster Toolkit 的
v1.51.1版或更高版本。./gcluster --version
构建二进制文件后,您现在可以部署集群来运行作业或工作负载。
创建部署文件
在 Cluster Toolkit 目录中,创建 Slurm 部署 YAML 文件。
nano ${A4_DEPLOYMENT_FILE_NAME}.yaml将以下内容粘贴到 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如需保存并退出文件,请依次按 Ctrl+O、Enter 和 Ctrl+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 控制台以查看您的集群。
前往Google Cloud 控制台中的 Compute Engine > 虚拟机实例页面。
找到登录节点(
a4high-login-001或类似节点)。点击 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 集群
在运行销毁命令之前,前往 Cluster Toolkit 目录的根目录。默认情况下,
DEPLOYMENT_FOLDER位于 Cluster Toolkit 目录的根目录中。如需销毁集群,请运行以下命令:
./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 集群命令。
后续步骤
- 高级 Slurm 任务:
- 了解如何重新部署 Slurm 集群
- 了解如何测试 Slurm 集群的网络性能
- 了解如何管理主机事件:
- 查看计算实例的拓扑
- 在 Slurm 集群中监控计算实例
- 报告有故障的主机