介绍如何使用 Azure CycleCloud 运行 Slurm

已完成

完成本单元后,你应该能够在 Azure CycleCloud 上使用 Slurm。

在 CycleCloud 上启用 Slurm

可以通过执行以下步骤,使用 Azure CycleCloud 部署高性能计算 (HPC) 群集:

  1. 连接到部署的 Azure CycleCloud 实例并执行身份验证。

  2. 在“创建新群集”页面上,查看可用选项,在“计划程序”部分,选择“Slurm”。

    屏幕截图展示了 Azure CycleCloud Web 应用程序的“创建新群集”页。

  3. 在“新建 Slurm 群集”页的“关于”选项卡上,在“群集名称”文本框中,提供 Slurm 群集的名称。

  4. 在“新建 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 虚拟网络子网。

    屏幕截图展示了 Azure CycleCloud Web 应用程序的“新建 Slurm 群集”页的“所需设置”选项卡。

  5. 在“网络连接存储”页上,配置你将使用内置还是外部 NFS 选项进行网络连接存储装载。 选择“内置”时,计划程序节点将配置为 NFS 服务器,用作其他节点的装入点。 如果指定外部 NFS,则可以提供有关网络连接存储设备的详细信息,例如 Azure NetApp 文件、HPC 缓存或运行 NFS 服务器的专门配置的 VM。

  6. 在“高级设置”页上,可以指定以下设置:

    • Slurm 版本:选择要用于群集的 Slurm 版本。
    • 作业计帐:指定是否要启用作业计帐以及你将选择用来存储计帐数据的设置。
    • 关闭策略:可以选择终止实例或解除分配实例。
    • 凭据:用于连接到关联的 Azure 订阅的凭据。
    • 计划程序 OS:选择哪个 Linux 操作系统用于托管计划程序。
    • HPC OS:指定哪个 Linux 操作系统用于托管计划程序。
    • 计划程序群集初始化:在此处,你需要指定适用于计划程序 VM 的自定义说明。
    • HTC 群集初始化:指定适用于 HTC 节点的自定义说明。
    • 高级网络:此选项可用来启用“返回代理”,指定是否可以从 Internet 地址访问头节点以及是否可以从 Internet 访问执行节点。

    屏幕截图展示了 Azure CycleCloud Web 应用程序的“新建 Slurm 群集”页的“高级设置”选项卡。

  7. 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