练习 - 将自定义节点数组添加到 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 群集,包括定义具有相应分区的新节点数组。 为实现此目标,在编辑模板后,你导出并编辑了群集参数文件,并将其与修改后的模板一起导入到了群集中。

注意

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