练习 - 将自定义节点数组添加到 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) 功能的作业创建另一个分区和相应的节点数组。

  1. 导航到 Azure 门户。 出现提示时,使用在本模块中使用的 Azure 订阅中具有参与者或所有者角色的 Microsoft 帐户或 Microsoft Entra 帐户进行身份验证。

  2. 在 Azure 门户中,通过选择搜索文本框旁边的工具栏中的 Cloud Shell 图标来打开 Cloud Shell,并确保正在运行 Bash 会话。

  3. 在 Cloud Shell 中运行以下命令,以将工作目录设置为托管在上一练习中提取的 GitHub 存储库的目录:

    cd ~/cyclecloud-slurm/templates
    
  4. 运行以下命令以在 nano 编辑器中打开下载的模板:

    nano slurm.txt
    
  5. 在 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 图形界面修改模板参数的值,需要对模板应用更多更改。

  1. 在 nano 编辑器界面中,滚动到[[parameters Auto-Scaling]]节并直接在其前面添加以下内容:

    
        [[[parameter CUDAMachineType]]]
        Label = CUDA VM Type
        Description = The VM type for CUDA execute nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_NC24
    
    
  2. 滚动到[[[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
    
    
  3. 滚动到[[[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"}
    
    
  4. 滚动到[[parameters Advanced Networking]]节并直接在其前面添加以下内容:

    
        [[[parameter CUDAClusterInitSpecs]]]
        Label = CUDA Cluster-Init
        DefaultValue = =undefined
        Description = Cluster init specs to apply to CUDA execute nodes
        ParameterType = Cloud.ClusterInitSpecs
    
    
  5. 依次选择“Ctrl + O”组合键、“Enter”键和“Ctrl + X”组合键以保存所做的更改并关闭文件。

任务 3:导出 Azure CycleCloud 群集属性

在将在 Azure CycleCloud 模板中所做的配置更改应用到目标群集之前,首先需要导出群集属性。

  1. 在 Cloud Shell 中运行以下命令,以列出现有群集:

    cyclecloud show_cluster
    

    注意

    验证输出是否包含“contoso-custom-slurm-lab-cluster”条目。

  2. 运行以下命令以将“contoso-custom-slurm-lab-cluster”群集的参数列表及其值导出到文件“params.json”中:

    cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
    
  3. 运行以下命令以查看导出的参数列表及其值:

    cat ~/params.json
    

任务 4:编辑属性文件以包含新参数

虽然对 Azure CycleCloud 模板应用的编辑包含所有新引入的参数的默认值,但你也可能需要对其进行修改以满足特定要求。 在此任务中,你将设置“CUDAMachineType”和“MaxCUDAExecuteCoreCount”参数的值。

  1. 在 Cloud Shell 中运行以下命令,以在 nano 编辑器中打开下载的参数文件:

    nano ~/params.json
    
  2. 在 nano 编辑器中,滚动到文件末尾,并在右大括号 (}) 之前从新行开始添加以下内容:

       "CUDAMachineType" : "Standard_NC6",
       "MaxCUDAExecuteCoreCount" : 60
    
  3. 在上一步中添加的行之前的行末添加一个逗号:

       "CUDAMachineType" : "Standard_NC6"
    
  4. 依次选择“Ctrl + O”组合键、“Enter”键和“Ctrl + X”组合键以保存所做的更改并关闭文件。

任务 5:将修改后的模板和参数文件导入现有群集

本练习的最后一项任务是,将修改后的模板及其参数文件导入到现有群集,覆盖其当前配置。

  1. 在 Cloud Shell 中运行以下命令,以将修改后的模板及其参数文件导入现有群集:

    cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
    

    注意

    必须指定目标群集的名称和--force标志以覆盖现有群集的配置。

  2. 在计算机上打开另一个浏览器窗口,并导航到 URL https://<IP_address> 。 如果系统提示,请确认要继续操作。

  3. 如果系统提示进行身份验证,请提供用于配置 Azure CycleCloud CLI 的同一 Azure CycleCloud 应用程序用户帐户的凭据进行登录。

  4. 在 Azure CycleCloud 图形界面中,导航到“群集”页面。 在群集列表中,依次选择“contoso-custom-slurm-lab-cluster”条目、“编辑”。

  5. 在“编辑 contoso-custom-slurm-lab-cluster”弹出窗口的“关于”页面上,选择“下一步”。

  6. 在“必需设置”页面上,验证是否存在设置为“Standard_NC6”值的“CUDA VM 类型”条目和相应的自动缩放选项:

“编辑 contoso-custom-slurm-lab-cluster”弹出窗口“必需设置”页面的屏幕截图。

恭喜! 你已成功完成本模块的第二个练习。 在本练习中,你通过使用修改后的模板进一步自定义了 Azure CycleCloud 群集,包括定义具有相应分区的新节点数组。 为实现此目标,在编辑模板后,你导出并编辑了群集参数文件,并将其与修改后的模板一起导入到了群集中。

注意

如果打算运行下一个练习,请不要删除在本练习中部署和配置的资源。 要完成下一个练习,需要这些资源。