练习 - 将自定义节点数组添加到 HPC 群集
注意
本文中提到了 CentOS,这是一个已终止服务 (EOL) 的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南。
节点数组是 Azure CycleCloud 群集中配置相同的节点的集合。 其作用是随着排队作业数量的变化适应群集计算资源的水平缩放。 每个节点数组都有一个名称、一组应用于其每个节点的特性,以及描述该节点数组应如何缩放的可选特性。
Slurm 作业计划程序采用分区将节点分组为逻辑集和可能重叠的集。 其作用是通过考虑资源或时间限制等特定约束来优化作业的处理。 计划程序将作业分配给分区中的节点,直到其资源耗尽或所有作业处理完毕。
你想要修改新部署的 Azure CycleCloud 托管群集,以满足特定于作业的资源需求。 为了实现此目标,你决定对基础模板应用更多更改并验证你的方法。
在本练习中,您将执行以下任务:
- 任务 1:将节点数组定义添加到 Azure CycleCloud 模板
- 任务 2:将图形界面参数添加到 Azure CycleCloud 模板
- 任务 3:导出 Azure CycleCloud 群集属性
- 任务 4:编辑属性文件以包含新参数
- 任务 5:将修改后的模板和参数文件导入现有群集
注意
在开始本练习之前,请确保已成功完成上一个练习。
任务 1:将节点数组定义添加到 Azure CycleCloud 模板
首先,在上一练习中自定义的 Slurm 模板中添加节点数组的定义。 示例模板包括标记为“hpc”和“htc”的两个分区。 你将为受益于计算统一设备体系结构 (CUDA) 功能的作业创建另一个分区和相应的节点数组。
导航到 Azure 门户。 出现提示时,使用在本模块中使用的 Azure 订阅中具有参与者或所有者角色的 Microsoft 帐户或 Microsoft Entra 帐户进行身份验证。
在 Azure 门户中,通过选择搜索文本框旁边的工具栏中的 Cloud Shell 图标来打开 Cloud Shell,并确保正在运行 Bash 会话。
在 Cloud Shell 中运行以下命令,以将工作目录设置为托管在上一练习中提取的 GitHub 存储库的目录:
cd ~/cyclecloud-slurm/templates
运行以下命令以在 nano 编辑器中打开下载的模板:
nano slurm.txt
在 nano 编辑器界面中,滚动到
[parameters About]
节并直接在其前面添加以下内容:[[nodearray cuda]] MachineType = $CUDAMachineType ImageName = $CUDAImageName MaxCoreCount = $MaxCUDAExecuteCoreCount AdditionalClusterInitSpecs = $CUDAClusterInitSpecs [[[configuration]]] slurm.autoscale = true slurm.hpc = true [[[cluster-init cyclecloud/slurm:execute]]] [[[network-interface eth0]]] AssociatePublicIpAddress = $ExecuteNodesPublic
注意
如果使用的是 Windows 计算机,可以使用“Shift + Insert”组合键粘贴剪贴板的内容。
注意
你的更改定义了一个额外的节点数组。
任务 2:将图形界面参数添加到 Azure CycleCloud 模板
为了能够使用 Azure CycleCloud 图形界面修改模板参数的值,需要对模板应用更多更改。
在 nano 编辑器界面中,滚动到
[[parameters Auto-Scaling]]
节并直接在其前面添加以下内容:[[[parameter CUDAMachineType]]] Label = CUDA VM Type Description = The VM type for CUDA execute nodes ParameterType = Cloud.MachineType DefaultValue = Standard_NC24
滚动到
[[[parameter HPCMaxScalesetSize]]]
节并直接在其前面添加以下内容:[[[parameter MaxCUDAExecuteCoreCount]]] Label = Max CUDA Cores Description = The total number of CUDA execute cores to start DefaultValue = 100 Config.Plugin = pico.form.NumberTextBox Config.MinValue = 0 Config.IntegerOnly = true
滚动到
[[[parameter SchedulerClusterInitSpecs]]]
节并直接在其前面添加以下内容:[[[parameter CUDAImageName]]] Label = CUDA OS ParameterType = Cloud.Image Config.OS = linux DefaultValue = cycle.image.centos7 Config.Filter := Package in {"cycle.image.centos7", "cycle.image.ubuntu18"}
滚动到
[[parameters Advanced Networking]]
节并直接在其前面添加以下内容:[[[parameter CUDAClusterInitSpecs]]] Label = CUDA Cluster-Init DefaultValue = =undefined Description = Cluster init specs to apply to CUDA execute nodes ParameterType = Cloud.ClusterInitSpecs
依次选择“Ctrl + O”组合键、“Enter”键和“Ctrl + X”组合键以保存所做的更改并关闭文件。
任务 3:导出 Azure CycleCloud 群集属性
在将在 Azure CycleCloud 模板中所做的配置更改应用到目标群集之前,首先需要导出群集属性。
在 Cloud Shell 中运行以下命令,以列出现有群集:
cyclecloud show_cluster
注意
验证输出是否包含“contoso-custom-slurm-lab-cluster”条目。
运行以下命令以将“contoso-custom-slurm-lab-cluster”群集的参数列表及其值导出到文件“params.json”中:
cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
运行以下命令以查看导出的参数列表及其值:
cat ~/params.json
任务 4:编辑属性文件以包含新参数
虽然对 Azure CycleCloud 模板应用的编辑包含所有新引入的参数的默认值,但你也可能需要对其进行修改以满足特定要求。 在此任务中,你将设置“CUDAMachineType”和“MaxCUDAExecuteCoreCount”参数的值。
在 Cloud Shell 中运行以下命令,以在 nano 编辑器中打开下载的参数文件:
nano ~/params.json
在 nano 编辑器中,滚动到文件末尾,并在右大括号 (}) 之前从新行开始添加以下内容:
"CUDAMachineType" : "Standard_NC6", "MaxCUDAExecuteCoreCount" : 60
在上一步中添加的行之前的行末添加一个逗号:
"CUDAMachineType" : "Standard_NC6"
依次选择“Ctrl + O”组合键、“Enter”键和“Ctrl + X”组合键以保存所做的更改并关闭文件。
任务 5:将修改后的模板和参数文件导入现有群集
本练习的最后一项任务是,将修改后的模板及其参数文件导入到现有群集,覆盖其当前配置。
在 Cloud Shell 中运行以下命令,以将修改后的模板及其参数文件导入现有群集:
cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
注意
必须指定目标群集的名称和
--force
标志以覆盖现有群集的配置。在计算机上打开另一个浏览器窗口,并导航到 URL https://<IP_address> 。 如果系统提示,请确认要继续操作。
如果系统提示进行身份验证,请提供用于配置 Azure CycleCloud CLI 的同一 Azure CycleCloud 应用程序用户帐户的凭据进行登录。
在 Azure CycleCloud 图形界面中,导航到“群集”页面。 在群集列表中,依次选择“contoso-custom-slurm-lab-cluster”条目、“编辑”。
在“编辑 contoso-custom-slurm-lab-cluster”弹出窗口的“关于”页面上,选择“下一步”。
在“必需设置”页面上,验证是否存在设置为“Standard_NC6”值的“CUDA VM 类型”条目和相应的自动缩放选项:
恭喜! 你已成功完成本模块的第二个练习。 在本练习中,你通过使用修改后的模板进一步自定义了 Azure CycleCloud 群集,包括定义具有相应分区的新节点数组。 为实现此目标,在编辑模板后,你导出并编辑了群集参数文件,并将其与修改后的模板一起导入到了群集中。
注意
如果打算运行下一个练习,请不要删除在本练习中部署和配置的资源。 要完成下一个练习,需要这些资源。