介绍如何使用 Azure CycleCloud 运行 Slurm
完成本单元后,你应该能够在 Azure CycleCloud 上使用 Slurm。
在 CycleCloud 上启用 Slurm
可以通过执行以下步骤,使用 Azure CycleCloud 部署高性能计算 (HPC) 群集:
连接到部署的 Azure CycleCloud 实例并执行身份验证。
在“创建新群集”页面上,查看可用选项,在“计划程序”部分,选择“Slurm”。
在“新建 Slurm 群集”页的“关于”选项卡上,在“群集名称”文本框中,提供 Slurm 群集的名称。
在“新建 Slurm 群集”页的“所需设置”选项卡上,在“群集名称”文本框中配置以下设置:
- 区域:定义哪个数据中心将托管群集节点。
- 计划程序 VM 类型:使你能够指定将托管作业计划程序的虚拟机的 VM SKU。
- HPC VM Type:使你能够指定将托管 HPC 分区工作负载的虚拟机的 VM SKU。
- HTC VM 类型:使你能够指定将托管 HTC 分区工作负载的虚拟机的 VM SKU。
- 自动缩放:使你能够在需要或不再需要分区节点时启用或禁用托管这些节点的 VM 实例的启动和停止。
- 最大 HPC 核心数:自动缩放时可分配给 HPC 分区的最大 CPU 核心数。
- 最大 HTC 核心数:自动缩放时可分配给 HTC 分区的最大 CPU 核心数。
- 每个规模集的最大 VM 数:可用于托管分区工作负载的最大 VM 数。
- 使用现成实例:确定你是否要允许使用 Azure 现成实例。 虽然现成实例的运行成本要低得多,但可以在不发出警告的情况下移除它们,这可能会影响作业执行。
- 子网 ID:将托管群集节点 VM 的 Azure 虚拟网络子网。
在“网络连接存储”页上,配置你将使用内置还是外部 NFS 选项进行网络连接存储装载。 选择“内置”时,计划程序节点将配置为 NFS 服务器,用作其他节点的装入点。 如果指定外部 NFS,则可以提供有关网络连接存储设备的详细信息,例如 Azure NetApp 文件、HPC 缓存或运行 NFS 服务器的专门配置的 VM。
在“高级设置”页上,可以指定以下设置:
- Slurm 版本:选择要用于群集的 Slurm 版本。
- 作业计帐:指定是否要启用作业计帐以及你将选择用来存储计帐数据的设置。
- 关闭策略:可以选择终止实例或解除分配实例。
- 凭据:用于连接到关联的 Azure 订阅的凭据。
- 计划程序 OS:选择哪个 Linux 操作系统用于托管计划程序。
- HPC OS:指定哪个 Linux 操作系统用于托管计划程序。
- 计划程序群集初始化:在此处,你需要指定适用于计划程序 VM 的自定义说明。
- HTC 群集初始化:指定适用于 HTC 节点的自定义说明。
- 高级网络:此选项可用来启用“返回代理”,指定是否可以从 Internet 地址访问头节点以及是否可以从 Internet 访问执行节点。
Cloud-init 页使你能够在部署虚拟机节点后将自定义配置设置传递给这些节点。
内存设置
CycleCloud 自动设置 Slurm 用于计划目的的可用内存量。 由于可用内存量可能会因 Linux 内核选项的不同而略有变化,并且 OS 和 VM 可能会占用少量可用于作业的内存,因此 CycleCloud 会自动减少 Slurm 配置中的内存量。 默认情况下,CycleCloud 会保留 VM 中报告的可用内存的 5%,但可以通过将 slurm.dampen_memory
设置为要保留的内存百分比,在群集模板中重写此值。 例如,若要保留 VM 内存的 20%,请使用:
slurm.dampen_memory=20
配置 Slurm 分区
Azure CycleCloud 附带的默认模板有两个分区(HPC 和 HTC),你可以定义直接映射到 Slurm 分区的自定义节点数组。 例如,若要创建 GPU 分区,请将以下部分添加到群集模板:
[[nodearray gpu]]
MachineType = $GPUMachineType
ImageName = $GPUImageName
MaxCoreCount = $MaxGPUExecuteCoreCount
Interruptible = $GPUUseLowPrio
AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
[[[cluster-init cyclecloud/slurm:execute:2.0.1]]]
[[[network-interface eth0]]]
AssociatePublicIpAddress = $ExecuteNodesPublic
编辑现有 Slurm 群集
如果修改更改并将其应用于现有 Slurm 群集,则需要重新生成 slurm.conf
文件并更新群集中的现有节点。 你可以使用 Azure Cyclecloud 中部署的 Slurm 群集上名为 cyclecloud_slurm.sh
的特殊脚本来执行此操作。 该脚本位于 Slurm 计划程序节点上的 /opt/cycle/slurm
目录中。 对群集进行任何更改后,请使用 apply_changes
参数以 root 身份运行以下脚本。 例如,如果所做的更改会影响参与消息传递接口 (MPI) 分区的节点,请使用 /opt/cycle/slurm/cyclecloud_slurm.sh apply_changes
。
禁用节点或分区的自动缩放
可以通过直接编辑 slurm.conf
文件来禁用运行中的 Slurm 群集的自动缩放。 可以将单个节点或整个分区排除在自动缩放范围之外。
若要将一个或多个节点排除在自动缩放范围之外,请将 SuspendExcNodes=<listofnodes>
添加到 Slurm 配置文件。 例如,若要从 HPC 分区中排除节点 1 和 2,请将以下内容添加到 sched/slurm.conf
,然后重启 slurmctld 服务:
SuspendExcNodes=hpc-pg0-[1-2]
若要排除分区,还可以修改 /sched/slurm.conf
文件。 例如,若要将 HPC 分区排除在自动缩放范围之外,请将以下行添加到 slurm.conf
并重启 slurmctld
服务:
SuspendExcParts=hpc