创建具有 H4D 实例的支持 RDMA 的 HPC Slurm 集群
H4D 机器系列专为满足严苛的 HPC 工作负载的需求而设计。H4D 提供通过支持 RDMA 的 200 Gbps 网络提高工作负载可伸缩性的实例。如需详细了解 Google Cloud上的 H4D 计算优化型机器类型,请参阅 H4D 机器系列。
教程概览
本教程介绍了设置将 H4D 机器类型与 RDMA 结合使用的 HPC 优化 Slurm 集群的步骤。具体来说,您需要设置一个包含 Compute Engine 虚拟机的集群,创建一个 Cloud Storage 存储桶来存储必要的 Terraform 模块,并设置一个 Filestore 实例来预配 Slurm 集群。如需完成本教程中的步骤,请按照以下过程操作:
- 使用所需的权限和环境变量设置您的 Google Cloud 项目。
- 设置 Cloud Storage 存储桶。
- 设置 Cluster Toolkit。
- 切换至 Cluster Toolkit 目录。
- 创建 Slurm 部署 YAML 文件。
- 使用蓝图配置 Slurm 集群。
- 连接到 Slurm 集群。
准备工作
- 为两个 H4D 实例(每个实例具有 192 个 vCPU)请求预留的容量块。
验证您是否有足够的 Filestore 配额来预配 Slurm 集群。您需要至少 5,120 GiB 的可用区级容量,特别是 Filestore 服务层级为基本 SSD 时。
如需查看您的 Filestore 配额,请在 Google Cloud 控制台中查看配额和系统限制,并过滤表以仅显示 Filestore 资源。
- 如需详细了解如何查看 Filestore 配额,请参阅查看 API 特有的配额。
- 如果配额不足,请申请增加配额。
启用 Compute Engine、Filestore、Cloud Storage、Service Usage 和 Cloud Resource Manager API:
费用
按照本教程操作的费用因您完成的每个部分而异,例如设置教程或运行作业。您可以使用价格计算器计算费用。
如需估算设置本教程的费用,请使用以下规范:
- 每个区域的 Filestore(基本 SSD)容量:5,120 GiB。
- 标准永久性磁盘:对于 Slurm 登录节点为 50 GB
pd-standard
。 - 高性能 (SSD) 永久性磁盘:对于 Slurm 控制台为 50 GB
pd-ssd
。 - 虚拟机实例:使用
h4d-highmem-192
、h4d-standard-192
或h4d-highmem-192-lssd
机器类型创建的两个 H4D 实例。 - Hyperdisk Balanced 卷:对于每个 H4D 实例为 50 GiB。
启动 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 中,设置以下环境变量以供本教程的其余部分使用。这些环境变量会为以下任务设置占位值:
使用相关值配置您的项目,以访问预留的 H4D 实例。
设置 Cloud Storage 存储桶以存储 Cluster Toolkit 模块。
预留容量变量
export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME export H4D_REGION=H4D_REGION export H4D_ZONE=H4D_ZONE export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME
替换以下内容:
H4D_RESERVATION_PROJECT_ID
- 已为其授予 A4 机器类型预留块的 Google Cloud项目的 ID。H4D_RESERVATION_NAME
- 您的项目中找到的虚拟机预留块的名称。例如h4d-highmem-exr
。H4D_DEPLOYMENT_NAME
:Slurm 集群部署的唯一名称。例如h4d-hpc-slurm-cluster-deployment
。H4D_REGION
:运行预留的 A4 机器预留块的区域。例如us-central1
。H4D_ZONE
:包含预留机器的可用区。该字符串必须同时包含区域和可用区。 例如us-central1-a
。H4D_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
。
切换到具有预留的 H4D 容量块的项目
运行以下命令,确保您位于具有针对 H4D 实例的已批准预留块的 Google Cloud项目中。
gcloud config set project ${H4D_RESERVATION_PROJECT_ID}
创建 Cloud Storage 存储桶
创建存储桶以存储 Terraform 模块。从 Cloud Shell 中,使用您的环境变量运行以下命令:
使用 Terraform 时,最佳实践是在已启用版本的文件中远程存储状态。在 Google Cloud上,您可以创建已启用版本控制的 Cloud Storage 存储桶。
gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \ --project=${H4D_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
如需验证构建,请运行以下命令:
如需部署使用 H4D 实例的 HPC 优化 Slurm 集群,您必须使用
v1.47.0
版或更高版本的 Cluster Toolkit。./gcluster --version
构建二进制文件后,您现在可以部署集群来运行作业或工作负载。
创建部署文件
在 Cluster Toolkit 目录中,创建 Slurm 部署 YAML 文件。
nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
将以下内容粘贴到 YAML 文件中。
--- terraform_backend_defaults: type: gcs configuration: bucket: GOOGLE_CLOUD_BUCKET_NAME vars: deployment_name: H4D_DEPLOYMENT_FILE_NAME project_id: H4D_RESERVATION_PROJECT_ID region: H4D_REGION zone: H4D_ZONE
如需保存并退出该文件,请依次按 Ctrl+O > Enter > Ctrl+X。
配置 Slurm 集群
如需配置 Slurm 集群,请运行以下部署命令。此命令会为 Slurm 集群预配 H4D Cluster Toolkit 蓝图。
在 Cloud Shell 中,开始创建集群。
./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve
连接到集群
部署后,连接到 Google Cloud 控制台以查看您的集群。
前往Google Cloud 控制台中的 Compute Engine > 虚拟机实例页面。
找到登录节点,该节点的名称可能类似于
example-deployment-login-123
。点击 SSH 进行连接。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
删除 Slurm 集群
我们建议您清理不再需要的资源。
停用防删除保护
如需在更新实例时停用删除保护,请使用如下所示的命令:
gcloud filestore instances update INSTANCE_NAME \
--no-deletion-protection
您需要进行如下替换:
INSTANCE_NAME
:要修改的实例的名称。例如my-genomics-instance
。
如需查找 INSTANCE_NAME
,您可以运行 gcloud filestore instances list
命令。此命令会列出当前 Google Cloud 项目中的所有 Filestore 实例,包括其名称、位置(可用区)、层级、容量和状态。
运行该命令后,找到与本教程中使用的 H4D 机器类型匹配的 Filestore 实例。
销毁 Slurm 集群
在运行销毁命令之前,前往 Cluster Toolkit 目录的根目录。默认情况下,DEPLOYMENT_FOLDER 位于 Cluster Toolkit 目录的根目录中。
如需销毁集群,请运行以下命令:
./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
集群销毁完成后,您会看到类似于以下内容的消息:
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 集群中监控虚拟机
- 报告有故障的主机