创建自行管理的 Slurm 集群以用于 AI 工作负载

本文档介绍了如何配置和部署使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 或 A3 High 机器类型的自管理 Slurm 集群。如需详细了解这些加速器优化机器类型,请参阅 GPU 机器类型

本文档中的步骤介绍了如何使用 Cluster Toolkit 创建 Slurm 集群。Cluster Toolkit 是 Google 提供的开源工具,可使用蓝图简化集群的配置和部署。您可以完全控制集群,但也要负责管理集群。如果您想避免管理集群的开销,专注于运行工作负载,请使用 Cluster Director 创建全代管式集群

限制

根据集群中 Compute Engine 实例使用的机器类型,适用以下限制:

A4X Max

A4X

A4

  • 使用 A4 机器类型的实例不会获得持续使用折扣灵活承诺使用折扣。
  • 只能在某些区域和可用区中使用 A4 机器类型。
  • 您无法使用 Persistent Disk(区域级或可用区级)。您只能使用 Google Cloud Hyperdisk
  • A4 机器类型仅在 Emerald Rapids CPU 平台上提供。
  • 您不能将实例的机器类型更改为 A4 机器类型,也不能从 A4 机器类型更改为其他机器类型。您必须使用此机器类型创建新实例。
  • A4 机器类型不支持单租户
  • 不能在 A4 机器类型上运行 Windows 操作系统。
  • 对于 A4 实例,当您使用 ethtool -S 监控 GPU 网络时,以 _phy 结尾的物理端口计数器不会更新。对于使用 MRDMA 虚拟功能 (VF) 架构的实例,这是预期行为。如需了解详情,请参阅 MRDMA 函数和网络监控工具
  • 您无法将 2026 年 2 月 4 日之前创建的 Hyperdisk ML 磁盘挂接到 A4 机器类型。

A3 Ultra

  • 使用 A3 Ultra 机器类型的实例不会获得持续使用折扣灵活承诺使用折扣。
  • 只能在某些区域和可用区中使用 A3 Ultra 机器类型。
  • 您无法使用 Persistent Disk(区域级或可用区级)。您只能使用 Google Cloud Hyperdisk
  • A3 Ultra 机器类型仅在 Emerald Rapids CPU 平台上提供。
  • A3 Ultra 机器类型不支持更改机器类型。如需改用或停用此机器类型,您必须创建新的实例。
  • 不能在 A3 Ultra 机器类型上运行 Windows 操作系统。
  • A3 Ultra 机器类型不支持单租户
  • 对于 A3 Ultra 实例,当您使用 ethtool -S 监控 GPU 网络时,以 _phy 结尾的物理端口计数器不会更新。对于使用 MRDMA 虚拟功能 (VF) 架构的实例,这是预期行为。如需了解详情,请参阅 MRDMA 函数和网络监控工具

A3 Mega

A3 High

准备工作

在创建 Slurm 集群之前,如果您尚未完成以下步骤,请先完成这些步骤:

  1. 选择使用选项:您选择的使用选项决定了您如何获取和使用 GPU 资源。如需了解详情,请参阅选择消费选项
  2. 获取容量:每种使用选项的容量获取流程各不相同。如需了解所选使用选项的容量获取流程,请参阅容量概览
  3. 验证您是否有足够的 Filestore 容量配额:在部署之前,您需要在目标区域中拥有足够的 Filestore 配额。所需的最低容量取决于集群中的机器类型:
    • A4X Max、A4X、A4、A3 Ultra 和 A3 Mega:需要至少 10 TiB (10,240 GiB) 的 HIGH_SCALE_SSD(可用区级)容量。
    • A3 High:需要至少 2.5 TiB (2,560 GiB) 的 BASIC_SSD(标准)容量。

    如需查看配额或申请增加配额,请参阅以下内容:

  4. 安装 Cluster Toolkit:如需配置 Slurm 集群,您必须使用 Cluster Toolkit 版本 v1.62.0 或更高版本。

    如需安装 Cluster Toolkit,请参阅设置 Cluster Toolkit

所需的角色

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

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

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

设置存储桶

集群蓝图使用 Terraform 模块来预配云基础设施。使用 Terraform 时,最佳实践是在已启用版本的文件中远程存储状态。在 Google Cloud上,您可以创建已启用版本控制的 Cloud Storage 存储桶。

如需通过 CLI 创建此存储桶并启用版本控制,请运行以下命令:

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

替换以下内容:

安装 Cluster Toolkit

如需将 Slurm 与 Google Cloud搭配使用,您必须安装 Cluster Toolkit。对于 Linux 和 macOS,我们建议您安装预构建的软件包

安装 Cluster Toolkit 后,前往包含 gcluster 二进制文件的目录:

  • 如果您安装了预构建的软件包,请切换到 gcluster-bundle 目录:

    cd gcluster-bundle
  • 如果您是从源代码构建的二进制文件,请切换到 cluster-toolkit

    cd cluster-toolkit

    此集群部署需要 Cluster Toolkit v1.62.0 或更高版本。如需检查当前版本,请运行以下命令:

    ./gcluster --version

创建部署文件

创建一个部署文件,您可以使用该文件指定 Cloud Storage 存储桶,为网络和子网设置名称,并设置部署变量,例如项目 ID、区域和可用区。

如需创建部署文件,请按照所需机器类型和消费选项的步骤操作。

A4X Max

如需创建部署文件,请使用文本编辑器创建一个名为 a4xmax-bm-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_max_cluster_size: NUMBER_OF_INSTANCES
  a4x_max_reservation_name: RESERVATION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_INSTANCES:集群中 A4X Max 裸金属实例的数量。您可以指定任意数量的实例。不过,A4X Max 实例通过多节点 NVLink 系统以 18 个实例(72 个 GPU)为一组进行物理互连,从而形成一个 NVLink 网域。

    为获得最佳网络性能,我们建议您指定一个 18 的倍数的值(例如 18、36 或 54)。创建 A4X Max 集群时,A4X Max 蓝图会自动创建并应用紧凑布置政策,其中每个 18 个实例组的 GPU 拓扑为 1x72

  • RESERVATION_NAME预留的名称。

A4X

如需创建部署文件,请使用文本编辑器创建一个名为 a4xhigh-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4x_cluster_size: NUMBER_OF_VMS
  a4x_reservation_name: RESERVATION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_VMS:集群中的 A4X 虚拟机的数量。您可以指定任意数量的虚拟机。不过,A4X 虚拟机通过多节点 NVLink 系统以 18 个虚拟机(72 个 GPU)为一组进行物理互连,从而形成一个 NVLink 网域。

    为获得最佳网络性能,我们建议您指定一个 18 的倍数的值(例如 18、36 或 54)。创建 A4X 集群时,A4X 蓝图会自动创建并应用紧凑布置政策,其中每个 18 个虚拟机的组的 GPU 拓扑为 1x72。 如需详细了解 A4X 拓扑,请参阅 A4X 基础知识

  • RESERVATION_NAME预留的名称。

A4

您需要添加到部署文件的参数取决于您为部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

如需创建部署文件,请使用文本编辑器创建一个名为 a4high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_reservation_name: RESERVATION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。
  • RESERVATION_NAME预留的名称。

灵活启动

如需创建部署文件,请使用文本编辑器创建一个名为 a4high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_dws_flex_enabled: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

此部署会预配静态计算节点,这意味着集群始终具有一定数量的节点。如果您希望集群能够自动扩缩,请使用 examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml 文件,并修改 node_count_staticnode_count_dynamic_max 的值,使其与以下值一致:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a4h_cluster_size)

Spot

如需创建部署文件,请使用文本编辑器创建一个名为 a4high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a4h_cluster_size: NUMBER_OF_VMS
  a4h_enable_spot_vm: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

A3 Ultra

您需要添加到部署文件的参数取决于您为部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

如需创建部署文件,请使用文本编辑器创建一个名为 a3ultra-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_reservation_name: RESERVATION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。
  • RESERVATION_NAME预留的名称。

灵活启动

如需创建部署文件,请使用文本编辑器创建一个名为 a3ultra-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_dws_flex_enabled: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

此部署会预配静态计算节点,这意味着集群始终具有一定数量的节点。如果您希望集群能够自动扩缩,请使用 examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml 文件,并修改 node_count_staticnode_count_dynamic_max 的值,使其与以下值一致:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3u_cluster_size)

Spot

如需创建部署文件,请使用文本编辑器创建一个名为 a3ultra-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  a3u_cluster_size: NUMBER_OF_VMS
  a3u_enable_spot_vm: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

A3 Mega

您需要添加到部署文件的参数取决于您为部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

如需创建部署文件,请创建一个名为 a3mega-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_reservation_name: RESERVATION_NAME
  a3mega_partition_name: PARTITION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。
  • RESERVATION_NAME预留的名称。
  • PARTITION_NAME:Slurm 分区的名称。

灵活启动

如需创建部署文件,请创建一个名为 a3mega-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_dws_flex_enabled: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

此部署会预配静态计算节点,这意味着集群始终具有一定数量的节点。如果您希望集群能够自动扩缩,请使用 examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml 文件,并修改 node_count_staticnode_count_dynamic_max 的值,使其与以下值一致:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3mega_cluster_size)

Spot

如需创建部署文件,请创建一个名为 a3mega-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3mega_cluster_size: NUMBER_OF_VMS
  a3mega_enable_spot_vm: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

A3 High

您需要添加到部署文件的参数取决于您为部署使用的使用选项。选择与您的使用选项的配置模式对应的标签页。

受预留约束

如需创建部署文件,请创建一个名为 a3high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_reservation_name: RESERVATION_NAME
  a3_partition_name: PARTITION_NAME

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 优化图片的相应技术凭据。这些值由您的 Google Cloud 客户支持团队提供给您。如需了解详情,请参阅获取 GPUDirect-TCPX 的凭据
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:具有预留机器的区域。
  • ZONE:您要在其中预配集群的可用区。如果您使用的是基于预留的使用选项,则区域和可用区信息是在交付容量时由您的客户支持团队提供的。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。
  • RESERVATION_NAME预留的名称。
  • PARTITION_NAME:Slurm 分区的名称。

灵活启动

如需创建部署文件,请创建一个名为 a3high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_dws_flex_enabled: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 优化图片的相应技术凭据。这些值由您的 Google Cloud 客户支持团队提供给您。如需了解详情,请参阅获取 GPUDirect-TCPX 的凭据
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

此部署会预配静态计算节点,这意味着集群始终具有一定数量的节点。如果您希望集群能够自动扩缩,请使用 examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml 文件,并修改 node_count_staticnode_count_dynamic_max 的值,使其与以下值一致:

      node_count_static: 0
      node_count_dynamic_max: $(vars.a3_static_cluster_size)

Spot

如需创建部署文件,请创建一个名为 a3high-slurm-deployment.yaml 的 YAML 文件,并添加以下内容。


terraform_backend_defaults:
  type: gcs
  configuration:
    bucket: BUCKET_NAME
vars:
  deployment_name: DEPLOYMENT_NAME
  project_id: PROJECT_ID
  region: REGION
  zone: ZONE
  tcpx_kernel_login: TCPX_KERNEL_LOGIN
  tcpx_kernel_password: TCPX_KERNEL_PASSWORD
  keyserver_ubuntu_key: KEYSERVER_UBUNTU_KEY

  network_name_system: SYSTEM_NETWORK_NAME
  subnetwork_name_system: SYSTEM_SUBNET_NAME
  slurm_cluster_name: CLUSTER_NAME
  a3_static_cluster_size: NUMBER_OF_VMS
  a3_enable_spot_vm: true

替换以下内容:

  • BUCKET_NAME:您在上一部分中创建的 Cloud Storage 存储桶的名称。
  • DEPLOYMENT_NAME:部署的名称。如果您要创建多个集群,请确保为每个集群选择唯一的名称。
  • PROJECT_ID:您的项目 ID。
  • TCPX_KERNEL_LOGINTCPX_KERNEL_PASSWORDKEYSERVER_UBUNTU_KEY:A3 High 优化图片的相应技术凭据。这些值由您的 Google Cloud 客户支持团队提供给您。如需了解详情,请参阅获取 GPUDirect-TCPX 的凭据
  • SYSTEM_NETWORK_NAME:要用于系统网络的 VPC 网络的名称。
  • SYSTEM_SUBNET_NAME:用于系统网络的子网的名称。
  • CLUSTER_NAME:Slurm 集群的名称。
  • REGION:您要在其中预配集群的区域。
  • ZONE:您要在其中预配集群的可用区。
  • NUMBER_OF_VMS:集群中所需的虚拟机数量。

配置 Slurm 集群

Cluster Toolkit 会根据您在上一步中创建的部署文件和默认集群蓝图来预配集群。如需详细了解蓝图安装的软件(包括 NVIDIA 驱动程序和 CUDA),请详细了解 Slurm 自定义映像

如需预配集群,请选择以下选项之一,以便从 Cluster Toolkit 目录中运行适用于您的机器类型的命令。此步骤大约需要 20-30 分钟。

A4X Max

./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --auto-approve

A4X

./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --auto-approve

A4

./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --auto-approve

A3 Ultra

./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --auto-approve

A3 Mega

./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --auto-approve

A3 High

./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --auto-approve

连接到 Slurm 集群

如需访问集群,您必须登录 Slurm 登录节点。如果您在尝试连接到节点时遇到错误,请参阅排查 SSH 错误

如需连接到集群中的登录节点,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 找到登录节点,其名称为 DEPLOYMENT_NAME-login-001

  3. 在该节点的行中,点击连接列中的 SSH

gcloud

如需连接到集群中的登录节点,请完成以下步骤:

  1. 如需确定登录节点,请使用以下 gcloud compute instances list 命令

    gcloud compute instances list \
        --filter="name ~ login" \
        --format "value(name)" \
        --zones=ZONE
    

    如果输出列出了多个 Slurm 集群,则您可以通过在之前的步骤中指定的 DEPLOYMENT_NAME 来确定登录节点。

  2. 如需连接到登录节点,请使用带有 --tunnel-through-iap 标志的 gcloud compute ssh 命令

    gcloud compute ssh LOGIN_NODE \
        --tunnel-through-iap \
        --zone=ZONE
    

    替换以下内容:

    • ZONE:节点所在的可用区。

    • LOGIN_NODE:登录节点的名称。

测试 Slurm 集群的网络性能

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

重新部署 Slurm 集群

如果您需要增加计算节点的数量或向集群添加新分区,则可能需要通过重新部署来更新 Slurm 集群的配置。使用之前部署中的现有映像可以加快重新部署集群的速度。为避免在重新部署期间创建新映像,请指定 --only 标志。

如需使用现有映像重新部署集群,请执行以下操作:

  1. 连接到集群

  2. 根据集群使用的机器类型,选择以下选项之一。本部分中的命令仅适用于已存在映像的重新部署。该命令仅重新部署集群及其基础设施。

    A4X Max

    ./gcluster deploy -d a4xmax-bm-slurm-deployment.yaml examples/machine-learning/a4x-maxgpu-4g-metal/a4xmax-bm-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4X

    ./gcluster deploy -d a4xhigh-slurm-deployment.yaml examples/machine-learning/a4x-highgpu-4g/a4xhigh-slurm-blueprint.yaml --only cluster-env,cluster --auto-approve -w

    A4

    ./gcluster deploy -d a4high-slurm-deployment.yaml examples/machine-learning/a4-highgpu-8g/a4high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Ultra

    ./gcluster deploy -d a3ultra-slurm-deployment.yaml examples/machine-learning/a3-ultragpu-8g/a3ultra-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 Mega

    ./gcluster deploy -d a3mega-slurm-deployment.yaml examples/machine-learning/a3-megagpu-8g/a3mega-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

    A3 High

    ./gcluster deploy -d a3high-slurm-deployment.yaml examples/machine-learning/a3-highgpu-8g/a3high-slurm-blueprint.yaml --only cluster-env,cluster -w --auto-approve

销毁 Slurm 集群

默认情况下,A4X Max、A4X、A4 和 A3 Ultra 蓝图会在 Filestore 实例上启用删除防护。如需在销毁 Slurm 集群时删除 Filestore 实例,请先停用防删除保护,然后再运行销毁命令。如需查看相关说明,请参阅在现有实例上设置或移除防删除保护

如需销毁 Slurm 集群,请完成以下步骤:

  1. 如果尚未断开与集群的连接,请先断开连接。

  2. 在运行 destroy 命令之前,请前往 Cluster Toolkit 目录的根目录。

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

    ./gcluster destroy DEPLOYMENT_FOLDER --auto-approve

    DEPLOYMENT_FOLDER 替换为部署文件夹的名称。

当 Cluster Toolkit 销毁您的集群时,输出类似于以下内容:

Destroy complete! Resources: DEPLOYMENT_NAME destroyed.

后续步骤