1. 入门快速入门指南#

1.1. 介绍和角色#

恭喜您获得新的 DGX Cloud 集群!

本指南旨在为集群所有者、集群管理员和集群用户提供必要的信息,以便开始履行他们在 DGX Cloud 集群上的主要职责。

本指南的预期工作流程从集群所有者开始,集群所有者是管理 DGX Cloud 订阅和集群的主要联系人。

有关用户角色和功能的更多详细信息,请参阅相应的指南

1.2. 集群所有者#

集群所有者负责

  • 通过 cmsh 引导集群管理员和用户入门

  • 注册并邀请管理员和用户加入 NGC

  • 激活他们的订阅并注册 NVIDIA 企业支持

  • 与 NVIDIA 和集群管理员协作,排查并报告与其 DGX Cloud 集群相关的任何问题

1.3. 集群管理员#

对于集群管理员,常见任务包括

  • 通过 Base View 引导集群用户入门,并创建/管理团队/帐户

  • 管理集群的高性能文件系统

  • 配置 Slurm 队列和用户配额

  • 更深入地检查和操作 Slurm 作业队列状态

  • 调试集群行为问题

1.4. 集群用户#

对于集群用户,常见任务包括

  • 在 Slurm 中调度计算作业

  • 临时的 Slurm 作业队列交互

  • 下载源代码或数据集

  • 操作配置文件

1.5. 集群所有者步骤#

1.5.1. 先决条件#

作为集群所有者,请确保已完成以下步骤

  • 您的技术客户经理 (TAM) 应该已经作为组织管理员与您联系。在此过程中

    • TAM 应该已经与您创建了共享沟通渠道。在您使用 DGX Cloud 的过程中,如有任何问题,请使用此渠道。

    • 您应该已经创建了 SSH 密钥对,并将公钥发送给您的 TAM,以便初始访问集群。

  • 为了访问集群,TAM 将提供以下信息

    • Head 节点:<IP 地址 of head node>

    • 登录节点:<IP 地址 of login nodes>

您将使用 Head 节点来管理 BCM 安装、集群配置以及管理员/用户入门。您将用于集群配置的工具是 cmsh(集群管理 shell)。

注意

cmsh 工具仅在集群 Head 节点上作为集群所有者 (root) 或启用 sudo 的管理员可用,并且无法从登录节点访问。

您将拥有通过 root 用户对 Head 节点的 SSH 访问权限,并且可以从 Head 节点 SSH 进入登录节点。

集群管理员和用户将主要使用登录节点在 DGX Cloud 集群上进行日常工作。他们将仅拥有对登录节点的 SSH 和 Base View 访问权限

作为集群所有者,您将负责为集群管理员和用户创建用户帐户。

重要提示

作为安全最佳实践,应尽可能减少 root 帐户的使用。有关为集群所有者创建非 root 用户以访问 Head 节点的说明,请参阅NVIDIA DGX Cloud 集群管理指南启用备用集群所有者帐户部分。

集群所有者在 Head 节点上使用的 root 帐户不应用于在 Slurm 集群中运行作业。只有集群管理员和用户才能通过登录节点在 Slurm 集群上运行作业。

如果需要,集群所有者应创建自己的单独管理员和/或用户帐户,以访问登录节点进行不需要 root 访问权限的工作。

1.5.2. 存储信息#

集群中有三种类型的存储可用

  • 专用于各个节点的本地连接存储

  • 共享 NFS 存储,在集群中的所有节点(包括 Head 节点)上可用

  • 共享高性能 Lustre 存储,仅在 Slurm 集群中的登录节点和工作节点上可用,在 Head 节点上不可用

有关作为本产品一部分提供的存储的更多详细信息,请参阅NVIDIA DGX Cloud 用户指南在 DGX Cloud 集群中工作概述部分。

1.5.3. 以 Root 身份访问 Head 节点(仅限集群所有者)#

作为集群所有者,您可以使用您提供给技术客户经理 (TAM) 的 SSH 密钥对访问 Head 节点。为此,请使用以下命令

ssh -i /path/to/ssh_cert root@ip-addr-of-head-node

注意

root 帐户只能使用外部 IP 地址直接登录到 Head 节点。要以 root 帐户访问登录节点,请在登录到 Head 节点后 SSH 进入它们。

如果您在尝试 SSH 时遇到任何问题,请参阅故障排除以获得帮助。

1.5.4. 通过 cmsh 添加集群管理员#

作为集群所有者,您可以按照以下步骤添加管理员来帮助管理 Slurm 集群。

  1. 编译集群管理员列表:列出需要管理员权限才能访问集群的人员。

  2. 创建 SSH 密钥对:要求每位集群管理员使用以下命令为自己创建 SSH 密钥对

    ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/<cluster-admin>-ed25519-dgxc -C "cluster_admin_email@example.com"
    
  3. 获取公钥:每位管理员都有 SSH 密钥对后,让他们将他们的公钥 (<cluster-admin>-ed25519-dgxc.pub) 文件的内容发送给您,该文件在其 ~/.ssh/ 目录中生成。您将在以下步骤中使用此信息来创建集群管理员用户。

  4. 创建集群管理员用户:从 Head 节点以 root 身份运行以下命令以创建集群管理员。

    1. 使用此命令进入 cmsh

      cmsh
      
    2. 在 cmsh 中运行以下命令

       1 user
       2 add <cluster-admin>
       3 set password
       4 set profile tenantadmin
       5 commit
       6
       7 group
       8 use tenantadmin
       9 append members <cluster-admin>
      10 commit
      11 quit
      
    3. 切换到用户的帐户

      sudo su - <cluster-admin>
      
    4. 将他们的 SSH 公钥(在上面的步骤 3 中获得)添加到 authorized_keys 文件中,使用您选择的文本编辑器。例如,

      nano $HOME/.ssh/authorized_keys
      
    5. 配置他们的管理员用户帐户以在登录时自动加载 slurm 模块。这将避免用户每次登录时都必须运行 module load slurm 命令。运行以下命令执行此操作

      module initadd slurm
      
    6. 退出管理员用户的帐户

      exit
      
    7. 运行以下命令将管理员用户添加为 Slurm 管理员

      1 module load slurm
      2 sacctmgr add User User=<cluster-admin> Account=root AdminLevel=Administrator
      

      在出现提示时提交更改。

  5. (可选)为管理员用户在 LustreFS 上创建共享暂存空间:如果集群管理员将运行 slurm 作业,您可以配置他们的用户在 Lustre 共享文件系统上拥有暂存空间,或者他们可以在需要时从登录节点自行配置(使用 sudo)。按照以下步骤执行此操作。

    注意

    这些步骤假设集群所有者 (root) 正在执行这些步骤。也可以作为集群管理员运行这些步骤,但诸如 mkdirchownlfs 之类的命令将需要使用 sudo

    1. SSH 进入登录节点以便访问 Lustre 文件系统。以下命令假定 root 用户正在从 Head 节点 SSH 进入登录节点。

      ssh slogin001
      
    2. 运行以下命令以在 Lustre 文件系统上创建管理员用户的暂存空间

      mkdir -p /lustre/fs0/scratch/<cluster-admin>
      
      chown <cluster-admin>:<cluster-admin> /lustre/fs0/scratch/<cluster-admin>
      
    3. (可选)如果需要,您可以使用以下命令为管理员用户分配配额。更多详细信息请参见NVIDIA DGX Cloud 集群管理指南管理 Lustre 存储部分。

       1   # see current quota
       2   lfs quota -u <cluster-admin> -v /lustre/fs0/scratch/<cluster-admin>
       3
       4   #example output of lfs quota for a user named demo-user
       5   Disk quotas for usr demo-user (uid 1004):
       6       Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
       7   /lustre/fs0/scratch/demo-user/
       8                       4       0       0       -       1       0       0       -
       9   lustrefs-MDT0000_UUID
      10                       4       -       0       -       1       -       0       -
      11   lustrefs-OST0000_UUID
      12                       0       -       0       -       -       -       -       -
      13   lustrefs-OST0001_UUID
      14                       0       -       0       -       -       -       -       -
      15   lustrefs-OST0002_UUID
      16                       0       -       0       -       -       -       -       -
      17   lustrefs-OST0003_UUID
      18                       0       -       0       -       -       -       -       -
      19   lustrefs-OST0004_UUID
      20                       0       -       0       -       -       -       -       -
      21   Total allocated inode limit: 0, total allocated block limit: 0
      22   uid 1004 is using default block quota setting
      23   uid 1004 is using default file quota setting
      24
      25   # set quota, e.g., 100G, and inodes
      26   lfs setquota -u <cluster-admin> -b 100G -B 100G -i 10000 -I11000 /lustre/fs0/scratch/<cluster-admin>
      27
      28   #example output after running setquota for a user named demo-user
      29   Disk quotas for usr demo-user (uid 1004):
      30       Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
      31   /lustre/fs0/scratch/demo-user/
      32                       4  104857600 104857600       -       1   10000   11000       -
      33   lustrefs-MDT0000_UUID
      34                       4*      -       4       -       1*      -       1       -
      35   lustrefs-OST0000_UUID
      36                       0       -       0       -       -       -       -       -
      37   lustrefs-OST0001_UUID
      38                       0       -       0       -       -       -       -       -
      39   lustrefs-OST0002_UUID
      40                       0       -       0       -       -       -       -       -
      41   lustrefs-OST0003_UUID
      42                       0       -       0       -       -       -       -       -
      43   lustrefs-OST0004_UUID
      44                       0       -       0       -       -       -       -       -
      
  6. 将信息发送给管理员:管理员现在已设置好可以访问集群并开始工作。将以下信息发送给管理员

    • 登录节点地址

    • 他们的用户名和密码信息

    • 您为其用户配置的 SSH 公钥

    • (可选)他们的 LustreFS 暂存目录信息

    现在,每位集群管理员都应该能够使用以下命令从先决条件部分登录到登录节点

    ssh -i /path/to/cluster_admin_ssh_cert <cluster-admin>@ip-addr-of-login-node
    

    注意

    默认情况下,新集群管理员将无法 SSH 进入 Head 节点或使用 cmsh - 要为给定的集群管理员启用该功能,请按照NVIDIA DGX Cloud 集群管理指南启用备用集群所有者帐户部分进行操作。

为您要创建的每位集群管理员用户重复步骤 16

1.5.5. 通过 cmsh 添加集群用户#

作为集群所有者,您需要收集一些信息才能引导用户入门集群。

  1. 编译集群用户列表:首先编译需要访问集群的用户列表。

  2. 创建 SSH 密钥对:每位用户都需要使用以下命令为自己创建 SSH 密钥对

    ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/<cluster-user>-ed25519-dgxc -C "your_email@example.com"
    
  3. 获取公钥:每位用户创建 SSH 密钥对后,让他们将他们的公钥 (<cluster-user>-ed25519-dgxc.pub) 文件的内容发送给您,该文件位于他们的 ~/.ssh/ 目录中。您将在以下步骤中使用它来创建集群用户。

  4. 创建集群用户:从 Head 节点以 root 身份运行以下命令以创建集群用户。

    1. 使用此命令进入 cmsh

      cmsh
      
    2. cmsh 中,运行以下命令以创建集群用户

      1 user
      2 add <cluster-user>
      3 set password
      4 set profile portal
      5 commit
      6 quit
      
    3. 使用以下命令切换到用户的帐户

      sudo su - <cluster-user>
      
    4. 将用户的 SSH 公钥(之前获得)添加到他们 ~/.ssh/ 目录中的 authorized_keys 文件中,使用您选择的文本编辑器。例如,

      nano $HOME/.ssh/authorized_keys
      
    5. 配置他们的用户帐户以在登录时自动加载 slurm 模块。这将避免用户每次登录时都必须运行 module load slurm 命令。运行以下命令执行此操作

      module initadd slurm
      
    6. 通过运行以下命令退出用户的帐户

      exit
      
  5. 为用户在 LustreFS 上创建共享暂存空间:接下来,为用户创建 LustreFS 目录。按照以下步骤为用户创建和配置共享存储。

    注意

    这些步骤假设集群所有者 (root) 正在执行这些步骤。也可以作为集群管理员运行这些步骤,但诸如 mkdirchownlfs 之类的命令将需要使用 sudo

    1. SSH 进入登录节点以便访问 Lustre 文件系统。以下命令假定 root 用户正在从 Head 节点 SSH 进入登录节点。

      ssh slogin001
      
    2. 运行以下命令以在 Lustre 文件系统上创建用户暂存空间

      mkdir -p /lustre/fs0/scratch/<cluster-user>
      
      chown <cluster-user>:<cluster-user> /lustre/fs0/scratch/<cluster-user>
      
    3. (可选)如果需要,您可以使用以下命令为用户分配配额。更多详细信息请参见NVIDIA DGX Cloud 集群管理指南管理 Lustre 存储部分。

       1 # see current quota
       2 lfs quota -u <cluster-user> -v /lustre/fs0/scratch/<cluster-user>
       3
       4 #example output of lfs quota for a user named demo-user
       5 Disk quotas for usr demo-user (uid 1004):
       6     Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
       7 /lustre/fs0/scratch/demo-user/
       8                     4       0       0       -       1       0       0       -
       9 lustrefs-MDT0000_UUID
      10                     4       -       0       -       1       -       0       -
      11 lustrefs-OST0000_UUID
      12                     0       -       0       -       -       -       -       -
      13 lustrefs-OST0001_UUID
      14                     0       -       0       -       -       -       -       -
      15 lustrefs-OST0002_UUID
      16                     0       -       0       -       -       -       -       -
      17 lustrefs-OST0003_UUID
      18                     0       -       0       -       -       -       -       -
      19 lustrefs-OST0004_UUID
      20                     0       -       0       -       -       -       -       -
      21 Total allocated inode limit: 0, total allocated block limit: 0
      22 uid 1004 is using default block quota setting
      23 uid 1004 is using default file quota setting
      24
      25 # set quota, e.g., 100G, and inodes
      26 lfs setquota -u <cluster-user> -b 100G -B 100G -i 10000 -I11000 /lustre/fs0/scratch/<cluster-user>
      27
      28 #example output after running setquota for a user named demo-user
      29 Disk quotas for usr demo-user (uid 1004):
      30     Filesystem  kbytes   quota   limit   grace   files   quota   limit   grace
      31 /lustre/fs0/scratch/demo-user/
      32                     4  104857600 104857600       -       1   10000   11000       -
      33 lustrefs-MDT0000_UUID
      34                     4*      -       4       -       1*      -       1       -
      35 lustrefs-OST0000_UUID
      36                     0       -       0       -       -       -       -       -
      37 lustrefs-OST0001_UUID
      38                     0       -       0       -       -       -       -       -
      39 lustrefs-OST0002_UUID
      40                     0       -       0       -       -       -       -       -
      41 lustrefs-OST0003_UUID
      42                     0       -       0       -       -       -       -       -
      43 lustrefs-OST0004_UUID
      44                     0       -       0       -       -       -       -       -
      

      注意

      如果未设置配额,则用户对整个 Lustre 文件系统具有无限的存储访问权限,如果不小心,可能会耗尽整个文件系统。

  6. 将信息发送给用户:用户现在已设置好可以访问集群并开始工作。将以下信息发送给用户

    • 登录节点地址

    • 他们的用户名和密码信息

    • 您为其用户配置的 SSH 公钥

    • 他们的 LustreFS 暂存目录信息

    现在,每位用户都应该能够使用以下命令从先决条件部分登录到登录节点

    ssh -i /path/to/cluster_user_ssh_cert <cluster-user>@ip-addr-of-login-node
    
  7. 为您要创建的每位集群用户重复步骤 16

  8. (可选)创建集群团队或 Slurm 帐户列表:有关更多信息,请参阅设置公平共享调度和团队

1.5.6. 设置 NGC#

作为 DGX Cloud 订阅的一部分,您的组织已获得对 NVIDIA NGC 的访问权限,并启用了私有注册表和 NVIDIA AI Enterprise 订阅。作为集群所有者,您将负责管理您的 NGC 组织,并邀请您的管理员和用户加入 NGC。

有关设置 NGC 组织的更多信息,请参阅NGC 用户指南

要邀请用户加入 NGC 组织,请按照NGC 用户指南此处中的步骤进行操作。

1.6. 集群管理员步骤(可选)#

集群管理员可以管理 Slurm 作业调度程序的配置、运行作业以及执行需要从登录、CPU 和 GPU 节点进行 sudo 访问的任务。此外,集群管理员还可以通过 Base View 引导其他集群管理员和用户入门。

注意

以下部分假设您的集群所有者创建了集群管理员用户。如果您尚未设置管理员用户和用于登录集群的 SSH 密钥对,请联系您的集群所有者以进行入门。

1.6.1. 访问登录节点#

作为集群管理员,您可以 SSH 访问登录节点,但不能访问 Head 节点。集群管理员还可以通过登录节点访问 Base View。

要访问登录节点,请按照以下步骤操作

  1. 从集群所有者处获取登录节点 IP。

  2. 使用集群所有者创建的用户帐户通过 SSH 登录

    ssh -i /path/to/ssh_cert <cluster-admin>@ip-addr-of-login-node
    

    注意

    如果您在尝试 SSH 时遇到任何错误,请参阅故障排除部分以获得帮助。

1.6.2. 访问 Base View#

Base View 是基于浏览器的 GUI,提供集群的仪表板视图。

有关详细信息,请参阅NVIDIA DGX Cloud 集群管理指南访问 Base View部分。

注意

root 用户无法访问 Base View。

1.6.3. 通过 Base View 添加用户#

注意

如果集群所有者已经通过 cmsh 完成用户创建,则无需执行本节中的步骤。如果集群管理员通过 Base View 创建用户,请继续执行以下步骤。

有关在 Base View 中创建用户和引导用户入门的更多信息,请参阅NVIDIA DGX Cloud 集群管理指南通过 Base View 添加用户部分。

1.6.4. 为集群管理员和用户创建和配置 Lustre 共享存储#

注意

如果集群所有者已经通过 cmsh 完成用户创建,则无需执行本节中的步骤。如果集群管理员通过 Base View 创建用户,请继续执行以下步骤。

集群管理员有权为用户在共享存储中创建和管理目录。有关此内容的更多信息,请参阅NVIDIA DGX Cloud 集群管理指南管理 Lustre 存储部分。

1.6.5. 设置公平共享调度和团队#

有关设置帐户(团队)和公平共享调度的信息,请参阅NVIDIA DGX Cloud 集群管理指南中的管理 Slurm 集群

1.7. 集群用户步骤#

集群用户可以在登录节点上执行以下操作

  • 使用 Slurm 命令(如 sinfosqueue)确定 Slurm 作业队列的状态

  • 与连接到集群的 NFS 和 Lustre 存储进行交互

  • 根据用例在 CPU 和 GPU 节点之间定向作业

  • 在 Slurm 作业队列上调度阻塞或交互式作业

  • 在 Slurm 作业队列上调度批处理作业

注意

以下部分假设您的集群管理员已与您合作创建了集群用户。如果您还没有用于登录集群的用户和 SSH 密钥对,请联系您的集群管理员以进行入门。

1.7.1. 访问登录节点#

集群用户将仅具有对登录节点的 SSH 访问权限。 集群用户还可以通过登录节点访问用户门户。

要访问登录节点,请按照以下步骤操作

  1. 从您的集群管理员处获取登录节点 IP。

  2. 使用集群管理员创建的用户帐户通过 SSH 登录

    ssh -i /path/to/ssh_cert <cluster-user>@ip-addr-of-login-node
    

    注意

    如果您在尝试 SSH 时遇到任何错误,请参阅故障排除部分以获得帮助。

1.7.2. 设置 NGC 集成#

有关设置您的用户帐户以便能够从 NGC 拉取容器的更多信息,请参阅DGX Cloud 集群用户指南中的设置 NGC 集成

1.7.3. 运行作业#

以下部分指导您如何从登录节点设置和运行基本作业。

1.7.3.1. 加载 Slurm 模块#

要与 DGX Cloud 集群中安装的软件进行交互,必须加载适当的模块。模块为在 DGX Cloud 环境中加载和卸载特定的软件和配置数据集提供了一种快速方法。有关模块的更多信息,请参阅Base Command Manager 管理员手册的第 2.2 节。

module load slurm

如果您想配置您的用户帐户以自动加载 Slurm 模块,请运行以下命令,注销,然后重新登录到登录节点。

module initadd slurm

1.7.3.2. 运行单节点作业#

下面的示例使用来自 NGC 容器的 NCCL 测试工具运行常见的单节点 GPU 作业。有关更多信息,请参阅DGX Cloud 集群用户指南中的单节点作业

  1. 使用您选择的文本编辑器在 $HOME/run-sn.sh 创建一个脚本,内容如下

    1#!/bin/bash
    2
    3srun -N1 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io#nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 4G -f 2 -g 8
    
    1#!/bin/bash
    2
    3srun -N1 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io#nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 4G -f 2 -g 8
    
    1#!/bin/bash
    2
    3srun -N1 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io#nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 16G -f 2 -g 8
    
  2. 通过运行以下命令使脚本可执行

    chmod +x $HOME/run-sn.sh
    
  3. 现在您可以运行脚本

    1cd $HOME
    2./run-sn.sh
    

    您应该看到类似于以下示例的输出

     1  pyxis: imported docker image: nvcr.io#nvidia/pytorch:24.09-py3
     2  # nThread 1 nGpus 8 minBytes 1073741824 maxBytes 4294967296 step: 2(factor) warmup iters: 5 iters: 20 agg iters: 1 validation: 1 graph: 0
     3  #
     4  # Using devices
     5  #  Rank  0 Group  0 Pid 848629 on     gpu008 device  0 [0x00] NVIDIA A100-SXM4-80GB
     6  #  Rank  1 Group  0 Pid 848629 on     gpu008 device  1 [0x00] NVIDIA A100-SXM4-80GB
     7  #  Rank  2 Group  0 Pid 848629 on     gpu008 device  2 [0x00] NVIDIA A100-SXM4-80GB
     8  #  Rank  3 Group  0 Pid 848629 on     gpu008 device  3 [0x00] NVIDIA A100-SXM4-80GB
     9  #  Rank  4 Group  0 Pid 848629 on     gpu008 device  4 [0x00] NVIDIA A100-SXM4-80GB
    10  #  Rank  5 Group  0 Pid 848629 on     gpu008 device  5 [0x00] NVIDIA A100-SXM4-80GB
    11  #  Rank  6 Group  0 Pid 848629 on     gpu008 device  6 [0x00] NVIDIA A100-SXM4-80GB
    12  #  Rank  7 Group  0 Pid 848629 on     gpu008 device  7 [0x00] NVIDIA A100-SXM4-80GB
    13  #
    14  #                                                              out-of-place                       in-place
    15  #       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
    16  #        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
    17  1073741824     268435456     float     sum      -1   8215.7  130.69  228.71      0   8214.6  130.71  228.75      0
    18  2147483648     536870912     float     sum      -1    16274  131.95  230.92      0    16273  131.97  230.95      0
    19  4294967296    1073741824     float     sum      -1    32231  133.25  233.20      0    33012  130.10  227.68      0
    20  # Out of bounds values : 0 OK
    21  # Avg bus bandwidth    : 230.034
    22  #
    

1.7.3.3. 运行多节点作业#

下面的示例使用来自 NGC 容器的 NCCL 测试工具运行上述 GPU 作业的多节点变体。有关多节点作业的更多信息,请参阅NVIDIA DGX Cloud 集群用户指南中的多节点作业

  1. 使用您选择的文本编辑器在 $HOME/run-mn.sh 创建一个脚本,内容如下

    1 #!/bin/bash
    2
    3 srun -N2 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io/nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 4G -f 2 -g 8
    
    1 #!/bin/bash
    2
    3 srun -N2 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io/nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 4G -f 2 -g 8
    
    1 #!/bin/bash
    2
    3 srun -N2 --exclusive --gpus-per-node 8 --mpi=pmix --container-image nvcr.io/nvidia/pytorch:24.09-py3 -p defq all_reduce_perf_mpi -b 1G -e 16G -f 2 -g 8
    
  2. 通过运行以下命令使脚本可执行

    chmod +x $HOME/run-mn.sh
    
  3. 现在您可以运行脚本

    ./run-mn.sh
    

    您应该看到类似于以下示例的输出

     1pyxis: imported docker image: nvcr.io#nvidia/pytorch:24.09-py3
     2pyxis: imported docker image: nvcr.io#nvidia/pytorch:24.09-py3
     3# nThread 1 nGpus 8 minBytes 1073741824 maxBytes 4294967296 step: 2(factor) warmup iters: 5 iters: 20 agg iters: 1 validation: 1 graph: 0
     4#
     5# Using devices
     6#  Rank  0 Group  0 Pid 824960 on     gpu005 device  0 [0x00] NVIDIA A100-SXM4-80GB
     7#  Rank  1 Group  0 Pid 824960 on     gpu005 device  1 [0x00] NVIDIA A100-SXM4-80GB
     8#  Rank  2 Group  0 Pid 824960 on     gpu005 device  2 [0x00] NVIDIA A100-SXM4-80GB
     9#  Rank  3 Group  0 Pid 824960 on     gpu005 device  3 [0x00] NVIDIA A100-SXM4-80GB
    10#  Rank  4 Group  0 Pid 824960 on     gpu005 device  4 [0x00] NVIDIA A100-SXM4-80GB
    11#  Rank  5 Group  0 Pid 824960 on     gpu005 device  5 [0x00] NVIDIA A100-SXM4-80GB
    12#  Rank  6 Group  0 Pid 824960 on     gpu005 device  6 [0x00] NVIDIA A100-SXM4-80GB
    13#  Rank  7 Group  0 Pid 824960 on     gpu005 device  7 [0x00] NVIDIA A100-SXM4-80GB
    14#  Rank  8 Group  0 Pid 822704 on     gpu006 device  0 [0x00] NVIDIA A100-SXM4-80GB
    15#  Rank  9 Group  0 Pid 822704 on     gpu006 device  1 [0x00] NVIDIA A100-SXM4-80GB
    16#  Rank 10 Group  0 Pid 822704 on     gpu006 device  2 [0x00] NVIDIA A100-SXM4-80GB
    17#  Rank 11 Group  0 Pid 822704 on     gpu006 device  3 [0x00] NVIDIA A100-SXM4-80GB
    18#  Rank 12 Group  0 Pid 822704 on     gpu006 device  4 [0x00] NVIDIA A100-SXM4-80GB
    19#  Rank 13 Group  0 Pid 822704 on     gpu006 device  5 [0x00] NVIDIA A100-SXM4-80GB
    20#  Rank 14 Group  0 Pid 822704 on     gpu006 device  6 [0x00] NVIDIA A100-SXM4-80GB
    21#  Rank 15 Group  0 Pid 822704 on     gpu006 device  7 [0x00] NVIDIA A100-SXM4-80GB
    22#
    23#                                                              out-of-place                       in-place
    24#       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
    25#        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
    261073741824     268435456     float     sum      -1    11214   95.75  179.53      0    11211   95.77  179.58      0
    272147483648     536870912     float     sum      -1    21949   97.84  183.45      0    21629   99.29  186.17      0
    284294967296    1073741824     float     sum      -1    44071   97.46  182.73      0    43494   98.75  185.15      0
    29# Out of bounds values : 0 OK
    30# Avg bus bandwidth    : 182.768
    31#
    

1.7.4. 访问用户门户#

用户门户是专为集群用户设计的基于浏览器的 GUI,以便他们可以拥有集群中自己的工作负载的仪表板。

有关更多信息,请参阅NVIDIA DGX Cloud 集群用户指南中的用户门户

1.8. 故障排除#

1.8.1. SSH 密钥权限#

1.8.1.1. WSL 中未受保护的私钥文件#

当在 Windows 上使用 WSL 尝试 ssh 连接到 Head 节点时,您可能会看到此错误。

1      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2      @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
3      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4      Permissions 0777 for '<ssh-key-file>' are too open.
5      It is required that your private key files are NOT accessible by others.
6      This private key will be ignored.
7      Load key "<ssh-key-file>": bad permissions
8      <cluster-user>@slogin001: Permission denied (publickey,gssapi-with-mic).

要解决此问题,您需要更新您的 WSL conf,以允许您拥有和更改 SSH 私钥的文件权限

  1. 创建 /etc/wsl.conf 文件(作为 sudo),内容如下

    1[automount]
    2options="metadata"
    
  2. 退出 WSL

  3. 通过命令提示符 (wsl --terminate <distro-name>) 终止实例或将其关闭 (wsl --shutdown)

  4. 重启 WSL

    然后,从 WSL 运行以下命令以更改私钥的权限

    user@local:$HOME/.ssh$ chmod 600 <ssh-key-file>
    

    然后,检查权限

    user@local:$HOME/.ssh$ ls -l <ssh-key-file>
    

    它应该看起来像

    -rw------- 1 user local 2610 Apr  2 19:19 <ssh-key-file>
    

1.8.2. Base View 权限#

通常,集群用户应使用用户门户而不是 Base View 作为 UI 来使用集群。如果权限不足的集群用户尝试登录 Base View,他们将看到类似于以下的错误。

_images/dgx-cloud-base-view-access-denied.png

Base View 主要供集群管理员使用。集群用户应访问用户门户。