部署 Slurm#

本文档是NVIDIA DGX BasePOD:部署指南,以 NVIDIA DGX A100 系统为特色的一部分。

工作负载管理系统有助于在节点集群上调度作业。以下步骤描述了如何设置 Slurm,以便必须显式请求 GPU。 这样,就可以更轻松地在多人之间共享 GPU 和 CPU 计算资源,而不会让用户互相干扰。

注意

在完成本文档中的步骤之前,请完成部署 Kubernetes

警告

# 提示符表示您在头节点上以 root 用户身份执行的命令。% 提示符表示您在 cmsh 中执行的命令。

安装并验证 Slurm#

  1. 启动交互式设置工具。

    1# cm-wlm-setup --disable --wlm-cluster-name=slurm --yes-i-really-mean-it
    2# cm-wlm-setup
    
  2. 选择“Setup (Step By Step)”(逐步设置),然后选择“OK”(确定)。

    _images/slurm-2.png
  3. 选择 slurm 作为工作负载管理系统,然后选择“OK”(确定)。

    _images/slurm-3.png
  4. 输入 Slurm 集群的名称,然后选择“OK”(确定)。

    _images/slurm-4.png
  5. 选择头节点作为 Slurm 服务器。

    _images/slurm-5.png
  6. 设置配置覆盖的覆盖名称和优先级,然后选择“OK”(确定)。此示例使用默认值。

  1. 选择“yes”(是)以配置 GPU 资源,然后选择“OK”(确定)。

    _images/slurm-7.png
  2. 最初,cm-wlm-setup 将设置没有 GPU 的 Slurm 客户端。 假设没有要设置的无 GPU 节点,取消选择所有类别并按“OK”(确定)。

    _images/slurm-8.png
  3. 假设没有无 GPU 的计算节点,请在以下屏幕上取消选择所有选项,然后按“OK”(确定)。

    _images/slurm-9.png
  4. 输入没有 GPU 的 Slurm 客户端的覆盖名称和优先级,然后选择“OK”(确定)。 该示例使用默认值。

    _images/slurm-10.png
  5. 为带有 GPU 的 Slurm 客户端的配置覆盖选择合适的名称。 该示例使用默认值。

    _images/slurm-11.png
  6. 选择您要包含在上一步中创建的配置覆盖中的带有 GPU 的计算节点类别。

    _images/slurm-12.png
  7. 选择应添加到配置覆盖的任何其他带有 GPU 的节点。

    _images/slurm-13.png
  8. 为配置覆盖选择优先级。 该示例使用默认值。

    _images/slurm-14.png
  9. 保持插槽数未配置。

    _images/slurm-15.png
  10. 选择 GPU 计算节点类别作为将从中提交作业的节点。 如果您有登录节点类别,您也会希望添加它。 我们将在下一个屏幕中添加头节点

    _images/slurm-16.png
  11. 选择您将从中提交作业的其他节点(例如,集群的头节点)。

    _images/slurm-17.png
  12. 为提交主机的配置覆盖选择名称(默认值即可)

    _images/slurm-18.png
  13. 为记帐节点的配置覆盖选择名称。

    _images/slurm-19.png
  14. 选择头节点作为记帐节点。

    _images/slurm-20.png
  15. 在每个节点中添加 8 个 GPU 作为可以请求的 GPU 资源。 也可以依赖 Slurm GPU 自动检测功能。 有关详细信息,请参阅 Base Command Manager (BCM) 文档。

    _images/slurm-21.png
  16. 除非将使用 CUDA 多进程管理 (MPS),否则将 MPS 设置留空。 如果要配置 MPS,则需要一些额外的设置步骤才能通过 prolog/epilog 启动/停止 MPS 守护程序。

    _images/slurm-22.png
  17. 启用以下 cgroup 资源约束,以确保作业无法使用它们未请求的 CPU 核心或 GPU

    _images/slurm-23.png
  18. 创建一个默认队列。 稍后始终可以定义更多队列

    _images/slurm-24.png
  19. 选择“Save config & deploy”(保存配置并部署),然后选择“OK”(确定)。

    _images/slurm-25.png
  20. 存储配置以供稍后使用。

  21. 设置完成后,您将需要使用 cmsh 重新启动所有计算节点。

    1device power reset -c dgx
    
  22. 节点恢复运行后,您可以通过检查来验证 Slurm 是否正常工作

    1[root@utilitynode-01 ~]# sinfo
    2PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    3defq*        up   infinite      8   idle dgx-[01-08]
    
  23. 默认情况下,Slurm 配置为不允许在同一节点上运行多个作业。 要更改此行为并允许(例如)在单个节点上最多同时运行 8 个作业。

    1[root@utilitynode-01 ~]# cmsh
    2[utilitynode-01]% wlm use slurm
    3[utilitynode-01->wlm[slurm]]% jobqueue
    4[utilitynode-01->wlm[slurm]->jobqueue]% use defq
    5[utilitynode-01->wlm[slurm]->jobqueue[defq]]% get oversubscribe
    6NO
    7[utilitynode-01->wlm[slurm]->jobqueue[defq]]% set oversubscribe YES:8
    8[utilitynode-01->wlm[slurm]->jobqueue*[defq*]]% commit
    9[utilitynode-01->wlm[slurm]->jobqueue[defq]]%
    
  24. 要验证 GPU 预留是否正常工作,请首先尝试不分配 GPU。

    1[root@utilitynode-01 ~]# srun nvidia-smi
    2No devices were found
    3srun: error: dgx-06: task 0: Exited with exit code 6
    4[root@utilitynode-01 ~]#
    
  25. 然后尝试分配,例如,两个 GPU。

     1[root@utilitynode-01 ~]# srun --gres=gpu:2 nvidia-smi
     2Thu Mar  4 08:50:44 2021
     3+-----------------------------------------------------------------------------+
     4| NVIDIA-SMI 450.102.04   Driver Version: 450.102.04   CUDA Version: 11.0     |
     5|-------------------------------+----------------------+----------------------+
     6| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
     7| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
     8|                               |                      |               MIG M. |
     9|===============================+======================+======================|
    10|   0  A100-SXM4-40GB      On   | 00000000:07:00.0 Off |                    0 |
    11| N/A   30C    P0    54W / 400W |      0MiB / 40537MiB |      0%      Default |
    12|                               |                      |             Disabled |
    13+-------------------------------+----------------------+----------------------+
    14|   1  A100-SXM4-40GB      On   | 00000000:0F:00.0 Off |                    0 |
    15| N/A   30C    P0    53W / 400W |      0MiB / 40537MiB |      0%      Default |
    16|                               |                      |             Disabled |
    17+-------------------------------+----------------------+----------------------+
    18
    19+-----------------------------------------------------------------------------+
    20| Processes:                                                                  |
    21|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    22|        ID   ID                                                   Usage      |
    23|=============================================================================|
    24|  No running processes found                                                 |
    25+-----------------------------------------------------------------------------+
    

下一步#

完成此页面上的步骤后,您可以(可选)部署 Jupyter 或配置高可用性