2. 集群管理指南#
2.1. NVIDIA DGX Cloud 概述#
NVIDIA DGX Cloud 是一个面向企业开发者的 AI 平台,针对生成式 AI 的需求进行了优化。

DGX Cloud 提供了一个集成的、全栈解决方案,与领先的云合作伙伴共同设计,将他们一流的架构与最新的 NVIDIA AI 技术(涵盖加速计算、网络结构和软件)相集成,并提供直接访问 NVIDIA AI 专家的途径。
DGX Cloud 包括 NVIDIA AI Enterprise,提供加速的数据科学库、优化的框架和预训练模型,使开发者能够快速轻松地交付生产就绪的 AI。
2.2. 集群概述#
DGX Cloud 集群包括以下已配置并可供使用的组件
头节点(管理节点)
登录节点
CPU 工作节点
GPU 工作节点
共享 NFS 存储
共享高性能 Lustre 存储

每个可用组件的确切配置和容量都根据在入职流程中指定的具体要求进行定制。
Slurm 工作负载管理工具作为集群的主要界面提供给熟悉 HPC 调度器并希望直接访问底层系统的用户。
Slurm 实施由 NVIDIA Base Command Manager 部署和配置,并利用 Pyxis 和 Enroot 作为容器插件和运行时。
客户可以进一步修改和定制通过 Base Command Manager (BCM) 进行的集群配置以及 Slurm 配置,以适应特定的用例。
有关 BCM 的更多信息,请参阅 BCM 文档。
有关 Slurm 的更多信息,请参阅 Slurm 快速入门指南。
2.3. 集群管理概述#
本节概述了您作为客户所有者和管理员在 DGX Cloud 集群上可以执行的操作。 此信息仅供参考,属于高级概述。
有关提及的角色的更多信息,请参阅 DGX Cloud 入门快速入门指南。
有关 NVIDIA 和客户之间责任共担模型的详细信息,请参阅下方的 责任共担模型 部分。
2.3.1. 集群所有者任务#
对于集群所有者,常见任务包括
通过
cmsh
将集群管理员和用户加入集群。注册管理员和用户并邀请他们加入您的 NGC 组织。
激活他们的订阅并注册 NVIDIA 企业支持。
与 NVIDIA 和您的集群管理员合作,排除故障并提交与其 DGX Cloud 集群相关的任何问题。
2.3.2. 集群管理员任务#
对于集群管理员,常见任务包括
通过 Base View 加入集群用户。
创建/管理团队/帐户。
管理集群的高性能文件系统。
配置 Slurm 队列和用户配额。
更深入地检查和操作 Slurm 作业队列状态。
调试集群行为问题。
2.4. DGX Cloud 的安全性#
2.4.2. 其他安全注意事项#
作为 DGX Cloud 集群的运营商,一旦您接管集群,就必须考虑您自己的安全要求。 此集群由您根据您组织的要求进行运营。 但是,在集群的配置和入职过程中,您可能需要考虑一些不同的安全注意事项
在入职之前,您的组织将被要求指定无类别域间路由 (CIDR) 范围,以定义可以访问 DGX Cloud 集群的 IP 地址。 为了最大限度地降低风险,这些范围应尽可能小,甚至可以限制为通过跳板机 (jumphost) 的单个 IP 地址,以最大限度地提高安全性。
对于某些组织,可能不允许将
root
帐户用于 SSH 访问。 在这种情况下,请考虑按照 启用备用集群所有者帐户(仅限集群所有者) 文档在头节点上实施非 root 特权帐户。 默认情况下,只有root
帐户可以用于访问头节点,但启用备用非 root 特权帐户并将 root SSH 证书以安全方式存储为备份是一个值得考虑的良好实践。
2.5. DGX Cloud 集群入职#
提供了一个快速入门指南,其中提供了集群所有者、集群管理员和集群用户开始使用其 DGX Cloud 集群的分步说明。
有关更多信息,请参阅 DGX Cloud 入门快速入门指南。
2.6. 以管理员身份访问 DGX Cloud 集群#
作为管理员,您有多个连接选项可用于访问 DGX Cloud 环境。 集群仅公开端口 22 访问,因此端口 22 之外的所有端口访问均通过 SSH 端口转发完成。
头节点:集群所有者可以访问头节点以作为 root 用户管理 Base Command Manager (BCM)。 这是通过公共互联网使用无类别域间路由 (CIDR) 范围和用户在初始集群创建期间提供给 NVIDIA 的公共 SSH 密钥完成的。
登录节点:可以通过公共互联网使用用户提供给 NVIDIA 的 CIDR 范围来访问两个登录节点,并使用在 DGX Cloud 部署中注册的公共 SSH 密钥。
Base View:一个通过公共互联网使用用户提供给 NVIDIA 的 CIDR 范围访问的 Web 界面。 Base View 通过登录节点访问。
注意
NVIDIA 向集群所有者提供头节点和登录节点的 IP 地址。 请与集群所有者合作,检索正确的地址,以便使用以下步骤访问集群。
重要提示
集群所有者在头节点上使用的 root 帐户不应用于在 Slurm 集群中运行作业。 只有集群管理员和用户才能通过登录节点在 Slurm 集群上运行作业。
如果需要,集群所有者应创建自己的管理员和/或用户帐户,以便访问登录节点,进行不需要 root 访问权限的工作。
2.6.1. 以 Root 身份访问头节点(仅限集群所有者)#
作为集群所有者,您可以使用您提供给您的技术客户经理 (TAM) 的 SSH 密钥对来访问头节点。 要执行此操作,请使用以下命令
ssh -i /path/to/ssh_cert root@ip-addr-of-head-node
注意
如果您在尝试 SSH 时遇到任何问题,请参阅 SSH 密钥权限 以获得帮助。
2.6.2. 以非 Root 身份访问头节点(仅限集群所有者)#
可选地,可以创建一个非 root 特权帐户来访问头节点。 按照 启用备用集群所有者帐户(仅限集群所有者) 配置非 root 特权帐户。 要使用该帐户(在本例中命名为 dgxc-admin
),请使用以下命令
ssh -i /path/to/ssh_cert_for_dgxc_admin dgxc-admin@ip-addr-of-head-node
登录到头节点后,此用户帐户可以使用 sudo
提升到 root
用户,方法是运行以下命令
dgxc-admin@dgxc-bcm-prod-002-cluster1:~$ sudo su -
Node Status: running in active master mode
-------------------------------------------------------------------------------
Cluster Manager license expiration date: 03/Jul/2024, time remaining: 8w 2d
root@dgxc-bcm-prod-002-cluster1:~#
现在您可以利用 cmsh
以 root
身份进行配置和用户帐户更改。
root@dgxc-bcm-prod-002-cluster1:~# cmsh
[dgxc-bcm-prod-002-cluster1]% quit
root@dgxc-bcm-prod-002-cluster1:~#
2.6.3. 以 Root 身份访问登录节点(仅限集群所有者)#
要以
root
身份访问登录节点,请首先以root
身份登录到头节点,按照前面部分中的步骤操作。一旦您以 root 身份登录到头节点,您就可以使用以下命令从头节点 ssh 到登录节点(从头节点会话内部)
ssh slogin001
注意
slogin002
也可用。
2.6.4. 以集群管理员身份访问登录节点#
非 root 用户不允许 SSH 连接到头节点 - 他们只能 SSH 连接到集群的 Slurm 登录节点。
要 SSH 连接到 Slurm 登录节点,请确保您已创建用户帐户,并在您的系统上为该用户帐户关联了匹配的公共 SSH 密钥对。
2.6.4.1. 使用 SSH 密钥登录#
集群管理员将拥有对登录节点的 SSH 访问权限。 他们还可以从登录节点访问 Base View。
从您的集群所有者处获取登录节点地址。
使用集群所有者创建的用户帐户登录
ssh -i /path/to/ssh_cert <cluster-admin>@ip-addr-of-login-node
注意
如果您在尝试 SSH 时遇到任何问题,请参阅 SSH 密钥权限 以获得帮助。
2.6.5. 访问 Base View#
Base View 是一个基于浏览器的 GUI,提供集群的仪表板视图。 此 Web 应用程序托管在头节点上,并提供集群状态、运行状况和性能的统一视图。
Base View 专为集群管理员使用而设计,并且与所有主要桌面 Web 浏览器的最新版本兼容。 目前不支持在移动设备上使用。
2.6.5.1. 登录#
要登录 Base View,您将需要密码,您的集群所有者应在您入职用户时提供密码。 如果您不记得密码,您必须与您的集群所有者合作重置密码。
假设您的用户已经可以 SSH 连接到登录节点,请使用以下命令创建返回到本地桌面主机端口
8081
的 SSH 隧道ssh -i /path/to/ssh_cert <cluster-admin>@ip-addr-of-login-node -L8081:master:8081
头节点的主机名或 IP 地址应已作为集群先决条件信息的一部分提供。 在浏览器中输入正确的 URL 后,将出现登录屏幕。
从您的 Web 浏览器导航到
https://127.0.0.1:8081/base-view/
。在浏览器中,添加您的管理员用户名和密码以登录 Base View。
注意
首次使用浏览器登录集群门户时,默认集群配置中会出现关于站点证书不受信任的警告。 可以安全地接受此警告。
登录后,您将看到集群的概述,包括占用率、内存使用量、CPU 周期使用量、节点状态、GPU 使用率和其他集群详细信息的图表。

Base View 通过各种选项卡为集群管理员提供更多信息,如下表所示。
选项卡 |
信息 |
---|---|
设置 |
控制各种集群设置,例如集群名称和节点名称。 |
许可证信息 |
显示集群的各种许可证信息。 |
系统信息 |
显示节点的主要硬件规格(CPU、内存、BIOS)以及它运行的操作系统版本。 |
版本信息 |
显示重要集群软件组件的版本信息,例如 CMDaemon 数据库版本以及集群管理器版本和构建。 |
运行命令 |
允许在集群的选定节点上运行指定的命令。 |
2.6.6. 访问 NGC#
作为 DGX Cloud 订阅的一部分,您的组织已获得对 NVIDIA NGC 的访问权限,并启用了私有注册表和 NVIDIA AI Enterprise 订阅。
有关设置 NGC 组织的更多信息,请参阅 NGC 用户指南。
注意
集群所有者是 NGC 上的组织所有者。 然后,集群所有者还可以邀请和设置管理员来访问和管理 NGC 组织内的用户。
2.7. 管理您的 DGX Cloud 集群#
2.7.1. 管理用户和管理员#
2.7.1.1. 通过 cmsh 添加集群管理员(仅限集群所有者)#
作为集群所有者,您可以按照以下步骤添加管理员来帮助管理 Slurm 集群。
编制集群管理员列表:列出需要管理员权限才能访问集群的人员。
创建 SSH 密钥对:要求每位集群管理员使用以下命令为自己创建 SSH 密钥对
ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/<cluster-admin>-ed25519-dgxc -C "cluster_admin_email@example.com"
获取公钥:一旦每位管理员都拥有 SSH 密钥对,请让他们将他们的公钥(
<cluster-admin>-ed25519-dgxc.pub
)文件的内容发送给您,该文件在其~/.ssh/
目录中生成。 您将在以下步骤中使用此信息来创建集群管理员用户。创建集群管理员用户:从头节点以
root
身份运行以下命令以创建集群管理员。使用此命令输入
cmsh
cmsh
在
cmsh
中运行以下命令1user 2add <cluster-admin> 3set password 4set profile tenantadmin 5commit 6 7group 8use tenantadmin 9append members <cluster-admin> 10commit 11quit
切换到用户的帐户
sudo su - <cluster-admin>
使用您选择的文本编辑器将他们的 SSH 公钥(在上面的步骤 3 中获得)添加到
authorized_keys
文件。 例如nano $HOME/.ssh/authorized_keys
(可选)如果集群管理员将运行 Slurm 作业,您可以配置他们的用户帐户在登录时自动加载 Slurm 模块。 这避免了用户每次登录时都必须运行
module load slurm
命令。 运行以下命令即可执行此操作module initadd slurm
退出用户帐户
exit
运行以下命令将用户添加为 Slurm 管理员
1module load slurm 2sacctmgr add User User=<cluster-admin> Account=root AdminLevel=Administrator
出现提示时提交更改。
(可选)为管理员用户在 LustreFS 上创建共享暂存空间:如果集群管理员将运行 Slurm 作业,您可以配置他们的用户在 Lustre 共享文件系统上拥有暂存空间,或者他们可以在需要时自行配置。 按照 为集群管理员和用户创建和配置 Lustre 共享存储 中的步骤执行此操作。
将信息发送给管理员:管理员现在已设置好可以访问集群并开始工作。 将以下信息发送给管理员
登录节点地址
他们的用户名和密码信息
您为其用户配置的 SSH 公钥
(可选)他们的 LustreFS 暂存目录信息
现在,每位集群管理员都应该能够使用以下命令登录到登录节点
ssh -i /path/to/cluster_admin_ssh_cert <cluster-admin>@ip-addr-of-login-node
添加其他用户:为您要创建的每位集群管理员用户重复 通过 cmsh 添加集群管理员(仅限集群所有者) 和 为集群管理员和用户创建和配置 Lustre 共享存储 中的步骤。 然后,集群管理员可以按照 下一节中的步骤 创建集群用户。
2.7.1.2. 通过 cmsh 添加集群用户(仅限集群所有者)#
作为集群所有者,您需要收集一些信息才能将用户加入集群。
编制集群用户列表:首先编制需要访问集群的用户列表。
创建 SSH 密钥对:每位用户都需要使用以下命令为自己创建 SSH 密钥对
ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/<cluster-user>-ed25519-dgxc -C "your_email@example.com"
获取公钥:一旦每位用户都创建了 SSH 密钥对,请让他们将他们的公钥(
<cluster-user>-ed25519-dgxc.pub
)文件的内容发送给您,该文件位于其~/.ssh/
目录中。 您将在以下步骤中使用它来创建集群用户。创建集群用户:从头节点以
root
身份运行以下命令以创建集群用户。使用此命令输入
cmsh
cmsh
在
cmsh
中,运行以下命令以创建集群用户1user 2add <cluster-user> 3set password 4set profile portal 5commit 6quit
使用以下命令切换到用户的帐户
sudo su - <cluster-user>
使用您选择的文本编辑器将用户 SSH 公钥(之前获得)添加到其
~/.ssh/
目录中的authorized_keys
文件中。 例如nano $HOME/.ssh/authorized_keys
配置他们的用户帐户在登录时自动加载 Slurm 模块。 这将防止用户每次登录时都必须运行
module load slurm
命令。 运行以下命令module initadd slurm
通过运行以下命令退出用户帐户
exit
为用户在 LustreFS 上创建共享暂存空间:接下来,为用户创建 LustreFS 目录。
按照 为集群管理员和用户创建和配置 Lustre 共享存储 中的步骤为用户创建和配置共享存储。
将信息发送给用户:用户现在已设置好可以访问集群并开始工作。 将以下信息发送给用户
登录节点地址
他们的用户名和密码信息
您为其用户配置的 SSH 公钥
他们的 LustreFS 暂存目录信息
现在,每位用户都应该能够使用以下命令登录到登录节点
ssh -i /path/to/cluster_user_ssh_cert <cluster-user>@ip-addr-of-login-node
添加其他用户:为您要创建的每位集群用户重复 通过 cmsh 添加集群用户(仅限集群所有者) 和 为集群管理员和用户创建和配置 Lustre 共享存储 中的步骤。
(可选)创建集群团队或 Slurm 帐户列表:有关更多信息,请参阅 管理 Slurm 集群。
2.7.1.3. (可选)将用户提升为集群管理员(仅限集群所有者)#
重要提示
只有在用户需要集群管理员权限的情况下才应执行以下步骤。
从头节点以
root
身份输入cmsh
,使用此命令cmsh
在
cmsh
中运行以下命令1user 2use <target-cluster-admin> 3set profile tenantadmin 4commit 5 6group 7use tenantadmin 8append members <target-cluster-admin> 9commit 10quit
运行以下命令以将集群管理员添加为 Slurm 管理员
1module load slurm 2sacctmgr add User User=<target-cluster-admin> Account=root AdminLevel=Administrator
出现提示时提交更改。
2.7.1.4. 启用备用集群所有者帐户(仅限集群所有者)#
要启用具有 sudo
权限的备用非 root 集群所有者帐户,请按照以下步骤操作。
然后,此新用户(在本节中我们将其称为 dgxc-admin
)可以登录到头节点,而不是 root
用户,并且将拥有 sudo
权限以及提升为 root
的能力。
首先,按照 通过 cmsh 添加集群管理员(仅限集群所有者) 中定义的入职程序创建新用户。
用户创建完成后,在头节点的
/etc/ssh/sshd_config
文件中,将新用户附加到AllowUsers
行,并保存该文件。 下面提供了该行应如下所示的示例。AllowUsers root dgxc-admin
将用户添加到头节点上的
sudo
组。usermod -a -G sudo dgxc-admin
重启
ssh
服务。service ssh restart
通过执行测试
ssh
连接到头节点,验证更新是否成功。ssh dgxc-admin@ip-addr-of-login-node
确保
cmsh
可以与该帐户一起使用。1dgxc-admin@dgxc-bcm-prod-002-cluster1:~$ sudo su - 2[sudo] password for dgxc-admin: 3 4Node Status: running in active master mode 5 6------------------------------------------------------------------------------- 7Cluster Manager license expiration date: 03/Jul/2024, time remaining: 8w 2d 8root@dgxc-bcm-prod-002-cluster1:~# cmsh 9[dgxc-bcm-prod-002-cluster1]%
可以对 /etc/ssh/ssh_config
文件进行进一步更改,以完全限制 root
用户的 SSH 连接。 根据您组织的要求进行进一步更改。
2.7.1.5. 通过 Base View 添加用户#
2.7.1.5.1. 先决条件#
在 Base View 中创建用户之前,您需要收集一些信息才能将用户加入集群。
编制集群用户列表:首先编制需要访问集群的用户列表。
创建 SSH 密钥对:每位用户都需要使用以下命令为自己创建 SSH 密钥对
ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/<cluster-user>-ed25519-dgxc -C "your_email@example.com"
获取公钥:一旦每位用户都创建了 SSH 密钥对,请让他们将他们的公钥(
<cluster-user>-ed25519-dgxc.pub
)文件的内容发送给您,该文件位于其~/.ssh/
目录中。 您将在以下步骤中使用它来创建集群用户。
2.7.1.5.2. 在 Base View 中创建用户#
要执行此操作,请首先使用您的集群管理员用户帐户登录 Base View,按照 访问 Base View 中的说明进行操作。
登录 Base View 后,单击导航栏中的 身份管理 部分,然后选择 用户 选项。
单击页面底部的 + 添加 按钮,然后选择出现的 用户 选项。
填写 名称 字段以及您要创建的用户的 密码 和 确认密码 字段。 请勿更改任何其他值。
单击表单右下角的 保存 按钮。 成功的用户创建将在页面顶部以绿色 操作成功 横幅指示。
2.7.1.5.3. 在使用 Base View 创建帐户后为用户配置 SSH 访问#
用户帐户创建完成后,您需要添加他们的 SSH 密钥才能进行访问。 从新终端,SSH 连接到登录节点
ssh -i /path/to/ssh_cert <cluster-admin>@ip-addr-of-login-node
切换到用户的帐户
sudo su - <cluster-admin-or-user>
使用您选择的文本编辑器将他们的 SSH 公钥(在上面的先决条件部分中获得)添加到
authorized_keys
文件。 例如nano $HOME/.ssh/authorized_keys
配置他们的用户帐户在登录时自动加载 slurm 模块。 这将避免用户每次登录时都必须运行
module load slurm
命令。 运行以下命令即可执行此操作module initadd slurm
退出用户帐户
exit
继续 为集群管理员和用户创建和配置 Lustre 共享存储 部分,以便在必要时为用户创建暂存目录。
要完成集群管理员入职,请让集群所有者继续执行 (可选)将用户提升为集群管理员(仅限集群所有者) 部分。
用户现在已设置好可以访问集群并开始工作。 将以下信息发送给用户
登录节点地址
他们的用户名和密码信息
您为其用户配置的 SSH 公钥
他们的 LustreFS 暂存目录信息
现在,每位用户都应该能够使用以下命令登录到登录节点
ssh -i /path/to/cluster_user_ssh_cert <cluster-admin-or-user>@ip-addr-of-login-node
2.7.1.7. 更新密码#
基于密码的登录通过 SSH 禁用,但访问 Base View 需要密码。
应该为每个新用户或管理员创建一个默认帐户密码。
要在首次登录后更改密码,请使用 passwd
命令。
passwd
如果您不记得密码,请与集群所有者合作重置您的用户帐户密码。
2.7.1.7.1. 以 root 身份重置用户密码(仅限集群所有者)#
要重置其他用户的密码,请以 root 身份登录到头节点。登录后,运行以下命令以重置用户密码
passwd <cluster-user>
或者要通过 cmsh
重置密码,请以 root 身份运行以下命令
cmsh
user
use <cluster-user>
set password
commit
2.7.2. 管理主目录#
用户的主目录是他们登录 DGX Cloud Slurm 集群后的默认文件路径。其形式为 /home/demo-user
。
在 DGX Cloud Slurm 集群中,用户主目录驻留在网络文件系统 (NFS) 上。这允许集群中的所有节点在用户运行作业时同时访问相同的数据。
这种设计选择使得以下行为成为可能
编写一次脚本并在多个节点上同时运行
从存储库克隆一次代码,并在整个集群上可用
使用共享目录记录来自多个生产者的作业输出
允许用户在任何可用的系统上运行他们的代码 - 数据可用性不依赖于任何一个系统。
用户数据通过文件系统权限隔离(user-a 只能读取和写入 /home/user-a 的数据,而不能读取和写入 /home/user-b)。但是,如果主文件系统负担过重,用户可能会相互影响。
一些最佳实践和注意事项
主目录存储非常适合少量数据,特别是代码、脚本和配置文件。
主目录存储也可以接受用于日志文件,但对于将增长到很大或频繁写入的日志文件,应考虑替代存储。
主目录存储为每个用户的主目录配置了配额 - 如果您没有与 NVIDIA TAM 协作指定不同的配额,则默认的每个用户配额为 10 GB。管理员可以根据需要监控主目录容量,并偶尔鼓励用户删除不需要的数据或将数据迁移到其他位置。
并行文件系统为数据集和更密集的存储 IO 用例提供。以下部分讨论关键信息。
2.7.2.1. 检查利用率#
要检查相对于总可用容量的所有主目录的利用率,请从头节点或登录节点使用 df -h
命令。以下是用法和输出示例。
1df -h
2
3Filesystem Size Used Avail Use% Mounted on
4tmpfs 13G 1.6M 13G 1% /run
5/dev/sdb3 500G 56G 445G 12% /
6tmpfs 63G 28K 63G 1% /dev/shm
7tmpfs 5.0M 0 5.0M 0% /run/lock
8/dev/sda1 251G 32K 239G 1% /mnt/resource
910.14.1.4:/bcm-home 1.0T 308M 1.0T 1% /home
1010.14.1.4:/bcm-cm-shared 1.0T 2.5G 1022G 1% /cm/shared
在上面的示例中,/home
路径(由 Mounted on
列中的文本标识)指示已使用 1 TB 可用容量中的 308 MB。
要获取每个用户在其主目录中使用的容量的细分,可以使用 du -sh
命令。以下是用法和输出示例。
1du -sh /home/*
2
392K /home/charlie
440K /home/cmsupport
5196K /home/demo-admin
6288M /home/demo-user
752K /home/alice
848K /home/bob
在所有用户的主目录总利用率接近其最大容量的情况下,80-90% 的容量利用率是开始主动删除或迁移数据的常用范围。利用 du
命令是识别重度 NFS 存储用户的快速方法。
2.7.3. 管理 Lustre 存储#
作为 DGX Cloud 集群一部分提供的并行文件系统是 Lustre。在 DGX Cloud 集群中,Lustre 文件系统将挂载在 /lustre/fs0
。这可以通过使用 df
命令并在 Mounted on
列中查找 lustre/fs0
路径来查看。
1df -h
2
3Filesystem Size Used Avail Use% Mounted on
4tmpfs 63G 1.3M 63G 1% /run
5/dev/sda1 199G 14G 186G 7% /
6tmpfs 63G 0 63G 0% /dev/shm
7tmpfs 5.0M 0 5.0M 0% /run/lock
8tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
9/dev/sdb3 4.4G 4.0G 404M 91% /cm/node-installer-ebs
1010.14.1.4:/bcm-cm-shared 1.0T 2.5G 1022G 1% /cm/shared
1110.14.1.4:/bcm-home 1.0T 308M 1.0T 1% /home
1210.14.2.9@tcp:/lustrefs 79T 87G 75T 1% /lustre/fs0
13tmpfs 13G 4.0K 13G 1% /run/user/0
2.7.3.1. 检查利用率#
要检查相对于总可用容量的所有 Lustre 的利用率,请从登录节点使用 df -h
命令。以下是用法和输出示例。
1df -h
2
3Filesystem Size Used Avail Use% Mounted on
4tmpfs 63G 1.3M 63G 1% /run
5/dev/sda1 199G 14G 186G 7% /
6tmpfs 63G 0 63G 0% /dev/shm
7tmpfs 5.0M 0 5.0M 0% /run/lock
8tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
9/dev/sdb3 4.4G 4.0G 404M 91% /cm/node-installer-ebs
1010.14.1.4:/bcm-cm-shared 1.0T 2.5G 1022G 1% /cm/shared
1110.14.1.4:/bcm-home 1.0T 308M 1.0T 1% /home
1210.14.2.9@tcp:/lustrefs 79T 87G 75T 1% /lustre/fs0
13tmpfs 13G 4.0K 13G 1% /run/user/0
在上面的示例中,/lustre/fs0
路径(由 Mounted on
列中的文本标识,如上所述)指示已使用 79 TB 可用容量中的 87 GB。
要获取按目录划分的容量使用情况细分,可以使用 du -sh
命令。以下是用法和输出示例。
1du -sh /lustre/fs0/*
24.0K /lustre/fs0/admin-dir
387G /lustre/fs0/scratch
考虑到上述情况下的 admin-dir
使用的容量极小,因此可以进一步调查 scratch 目录。
1du -sh /lustre/fs0/scratch/*
2
34.0K /lustre/fs0/scratch/charlie
487G /lustre/fs0/scratch/demo-user
54.0K /lustre/fs0/scratch/alice
64.0K /lustre/fs0/scratch/bob
在 Lustre 容量利用率接近其最大容量的情况下,80-90% 的容量利用率是开始主动删除或迁移数据的常用范围。利用 du
命令是识别重度 Lustre 存储用户的快速方法。
2.7.3.2. 查看配额#
要查看特定用户(在本示例中为 demo-user
)目录的配额,可以使用以下 lfs quota
命令。
lfs quota -u demo-user -v /lustre/fs0/scratch/demo-user
2.7.3.3. 设置配额#
作为管理员,要在用户的 scratch 目录上设置用户配额,请使用 lctl setquota
命令。以下示例用于名为 demo-user
的用户在其专用 scratch 目录上。
lfs setquota -u demo-user -b 100G -B 100G -i 10000 -I11000 /lustre/fs0/scratch/demo-user
当管理员或用户检查目录的配额时,lfs quota
命令和生成的输出如下所示。
1lfs quota -u demo-user -v /lustre/fs0/scratch/demo-user
2
3Disk quotas for usr demo-user (uid 1004):
4 Filesystem kbytes quota limit grace files quota limit grace
5/lustre/fs0/scratch/demo-user/
6 4 104857600 104857600 - 1 10000 11000 -
7lustrefs-MDT0000_UUID
8 4* - 4 - 1* - 1 -
9lustrefs-OST0000_UUID
10 0 - 0 - - - - -
11lustrefs-OST0001_UUID
12 0 - 0 - - - - -
13lustrefs-OST0002_UUID
14 0 - 0 - - - - -
15lustrefs-OST0003_UUID
16 0 - 0 - - - - -
17lustrefs-OST0004_UUID
18 0 - 0 - - - - -
有关更多详细信息,请参阅 配额管理。
2.7.4. 管理 Slurm 集群#
2.7.4.2. 查看节点信息#
要查看集群中的所有节点及其当前状态,请 ssh
到集群的 Slurm 登录节点并运行 sinfo
命令
1sinfo
2
3PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
4defq* up infinite 64 idle gpu[001-064]
在此示例中,有 64 个可用节点,全部处于空闲状态。如果节点繁忙,当节点正在使用时,其状态将从 idle
更改为 alloc
1sinfo
2
3PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
4defq* up infinite 1 alloc gpu001
5defq* up infinite 63 idle gpu[002-064]
其他状态包括 drain
,表示节点当前已关闭,mix
,表示节点部分正在使用,以及 maint
,表示节点因维护而关闭。
要获取有关特定节点的更多信息,请按如下方式使用 scontrol
。
1scontrol show node gpu007
2
3NodeName=gpu007 Arch=x86_64 CoresPerSocket=48
4CPUAlloc=0 CPUEfctv=96 CPUTot=96 CPULoad=0.24
5AvailableFeatures=location=southcentralus
6ActiveFeatures=location=southcentralus
7Gres=gpu:a100:8(S:0-1)
8NodeAddr=gpu007 NodeHostName=gpu007 Version=23.02.7
9OS=Linux 5.15.0-1056-azure #64-Ubuntu SMP Tue Feb 6 19:23:34 UTC 2024
10RealMemory=1814258 AllocMem=0 FreeMem=1792041 Sockets=2 Boards=1
11State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
12Partitions=defq
13BootTime=2024-04-10T14:58:04 SlurmdStartTime=2024-04-15T14:37:44
14LastBusyTime=2024-04-15T14:37:45 ResumeAfterTime=None
15CfgTRES=cpu=96,mem=1814258M,billing=96,gres/gpu=8
16AllocTRES=
17CapWatts=n/a
18CurrentWatts=0 AveWatts=0
19ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
2.7.4.3. 排空节点#
如果节点需要停机进行维护或以其他方式不健康,则可以将其置于 drain
状态。这让 Slurm 知道不应为作业选择该节点,直到它返回到 idle
状态。如果节点当前正在运行作业,则可以将其设置为混合 drain
状态,其中节点将继续运行作业直到完成。完成后,节点将自动设置为 drain
,因此无法在其上运行另一个作业。
要排空节点,请运行以下命令,将节点名称替换为要排空的节点,并提供排空节点的原因,例如维护
scontrol update NodeName=<Enter name of node(s) to put in DRAIN state> State=Drain Reason="Specify reason for draining node here"
要确认节点已排空,请运行 sinfo
1sinfo
2
3PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
4default up 4:00:00 1 drain node001
2.7.4.3.1. 重启故障节点#
如果怀疑节点不健康,可以使用之前的步骤禁用该节点以供作业使用。
如果在与 NVEX 支持部门协调后,确定节点不健康且必须重新配置,则 root 管理员可以通过 cmsh
启动该过程,如下所示。
cmsh -c "device; terminate -n <name(s) of node(s) placed in DRAIN state>"
当 cmsh
设备子菜单指示节点的状态字段为 [DOWN], terminated
时,可以运行以下命令来重新配置这些节点。
cmsh -c "device; power on -n <name(s) of node(s) placed in DRAIN state>"
注意
将终止状态发送到 DGX Cloud 与底层云提供商准确更新配额之间可能存在延迟。如果在提交 power-on 操作后收到消息,指示配额已超出,或者如果节点的 power-on 操作进展到 [DOWN], terminated
,请等待十分钟,然后再次尝试打开任何受影响的节点。如果问题仍然存在,请联系您的 TAM 寻求支持。
配置替换节点可能需要十分钟或更长时间才能完成。在此期间,节点状态将更新为 [PENDING], terminated
。terminated
值将保留为状态的一部分,直到节点配置完成。
当 cmsh
设备子菜单指示节点的状态字段为 [UP]
时,管理员可以再次使用 scontrol
从 drain
状态中删除节点。
scontrol update NodeName=<Enter name of node(s) to remove from DRAIN state> State=Idle
如果节点持续存在问题,请联系 NVEX 支持部门以获取后续步骤。
2.7.5. 管理 NGC 上的用户#
注意
集群所有者是 NGC 上的组织所有者。 然后,集群所有者还可以邀请和设置管理员来访问和管理 NGC 组织内的用户。
要邀请用户加入 NGC 组织,请按照NGC 用户指南 此处 中的步骤操作。
2.8. 故障排除#
2.8.1. SSH 密钥权限#
2.8.1.1. 未受保护的私钥文件#
当在 Windows 上使用 WSL 尝试 ssh 连接到头节点时,您可能会看到此错误。
1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2 @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4 Permissions 0777 for '<path-to-ssh-key>' 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 "<path-to-ssh-key>": bad permissions
8 <cluster-user>@slogin001: Permission denied (publickey,gssapi-with-mic).
要解决此问题,您需要更新 WSL conf 以允许您拥有和更改 SSH 私钥的文件权限。
使用以下内容创建
/etc/wsl.conf
文件(作为sudo
)1 [automount] 2 options="metadata"
退出 WSL。
终止实例 (
wsl --terminate <distroname>
) 或将其关闭 (wsl --shutdown
)。重启 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>
2.8.2. Base View 权限#
通常,集群用户应使用用户门户而不是 Base View 作为 UI 来利用集群。如果权限不足的集群用户尝试登录 Base View,他们将看到类似于以下内容的错误。

Base View 主要供集群管理员使用。
2.8.3. 作业问题#
在 DGX Cloud Slurm 集群中,与作业相关的错误通常分为两类
用户导致或用户可控制的问题。
超出用户控制范围的因素导致的问题,例如系统健康问题。
要区分这两者,需要熟悉 Slurm、GPU 基础设施以及正在使用的特定软件。
2.8.3.1. 基本问题#
为了确定环境是否按预期运行,需要对作业队列和硬件状态进行基本检查作为健全性检查。考虑以下几点
作业是否完全在整个集群中完成,还是问题仅限于与集群中特定节点交互的作业?
问题是否仅限于特定应用程序或数据集?
像
nvidia-smi
和ibdev2netdev
这样的基本工具是否报告了预期的资源?在管理员级别,像
dmesg
这样的较低级别工具是否指示与症状相关的任何错误?
如果在调试过程中发现与预期行为有任何重大差异,则有几种方法可以继续。
2.8.3.2. 容器下载超时问题#
如果用户在启动以下形式的作业时观察到 Pyxis 错误
1slurmstepd: error: pyxis: [INFO] Querying registry for permission grant
2slurmstepd: error: pyxis: [INFO] Authenticating with user: $oauthtoken
3slurmstepd: error: pyxis: [INFO] Using credentials from file: /home/demo-user/.config/enroot/.credentials
4slurmstepd: error: pyxis: [INFO] Authentication succeeded
5slurmstepd: error: pyxis: [INFO] Fetching image manifest list
6slurmstepd: error: pyxis: [INFO] Fetching image manifest
7slurmstepd: error: pyxis: [INFO] Downloading 70 missing layers...
8slurmstepd: error: pyxis: curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
这表明 NGC 容器下载超时。发生这种情况的原因有很多,但与一两个节点作业相比,运行更大规模的作业时更常见。
重新运行作业通常会成功,并且是最佳的初始操作方案。如果重新运行不成功,则值得让用户考虑将容器下载到 Lustre 作为 squash 文件,并使用缓存文件作为其目标容器,如 将容器下载到集群 中所示。
2.8.3.3. 作业和应用程序问题#
如果作业导致问题,无论是由于用户还是应用程序本身,管理员通常可以使用 scontrol
来管理该作业来解决问题。
要使用 scontrol
查看特定作业,请首先运行 squeue
以识别 JOBID 值
1squeue -u demo-user
2
3 JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
4 235 defq bad-job demo-use R 49:40 4 gpu[002-005]
然后我们可以获取 JOBID 值 235 并将其用作 scontrol
的参数。
1scontrol show job 235
2
3JobId=235 JobName=bad-job
4UserId=demo-user(1004) GroupId=demo-user(1005) MCS_label=N/A
5Priority=4294901758 Nice=0 Account=(null) QOS=normal
6JobState=RUNNING Reason=None Dependency=(null)
7Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0
8RunTime=00:52:44 TimeLimit=02:00:00 TimeMin=N/A
9SubmitTime=2024-04-15T14:54:08 EligibleTime=2024-04-15T14:54:08
10AccrueTime=2024-04-15T14:54:08
11StartTime=2024-04-15T14:54:09 EndTime=2024-04-15T16:54:09 Deadline=N/A
12SuspendTime=None SecsPreSuspend=0 LastSchedEval=2024-04-15T14:54:09 Scheduler=Main
13Partition=defq AllocNode:Sid=slogin001:709779
14ReqNodeList=(null) ExcNodeList=(null)
15NodeList=gpu[002-005]
16BatchHost=gpu002
17NumNodes=4 NumCPUs=384 NumTasks=32 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
18ReqTRES=cpu=32,mem=515232M,node=4,billing=32,gres/gpu=32
19AllocTRES=cpu=384,node=4,billing=384,gres/gpu=32
20Socks/Node=* NtasksPerN:B:S:C=8:0:*:* CoreSpec=*
21MinCPUsNode=8 MinMemoryNode=0 MinTmpDiskNode=0
22Features=(null) DelayBoot=00:00:00
23OverSubscribe=NO Contiguous=0 Licenses=(null) Network=(null)
24Command=/lustre/fs0/scratch/demo-user/nemo-megatron-launcher/launcher_scripts/results/gpt3_5b/nemo-megatron-gpt3_5b_submission.sh
25WorkDir=/lustre/fs0/scratch/demo-user/nemo-megatron-launcher/launcher_scripts
26StdErr=/lustre/fs0/scratch/demo-user/nemo-megatron-launcher/launcher_scripts/results/gpt3_5b/log-nemo-megatron-gpt3_5b_235.err
27StdIn=/dev/null
28StdOut=/lustre/fs0/scratch/demo-user/nemo-megatron-launcher/launcher_scripts/results/gpt3_5b/log-nemo-megatron-gpt3_5b_235.out
29Power=
30TresPerNode=gres:gpu:8
此输出提供有关在哪里查找日志文件以及如何启动作业的信息。如果作业需要时间限制,请使用以下 scontrol
命令进行设置。
scontrol update job id=235 timelimit=01:00:00
或者如果需要取消作业,请使用 scancel
命令。
scancel job id=235
2.8.3.4. 稳定性和健康问题#
重复尝试运行作业但遇到错误可能会令人沮丧 - 例如,NCCL 可能会发出如下错误
gpu001:7127:17776 [2] socket.c:540 NCCL WARN Net : Connection closed by remote peer dgxc-bcm-prod-002-cluster1.cm.cluster<59366>
建议的第一步是在代码中添加调试标志。对于与 NCCL 相关的问题,将以下环境变量添加到遇到错误的新作业运行中将提供更多信息。建议不要始终启用它,因为它会生成大量的日志输出。
export NCCL_DEBUG=INFO
假设提供的信息继续表明节点存在问题,则适当的下一步是在对可能不健康的节点(在本例中为 gpu001)进行分类时,将其完全从使用中移除。如前几节所述,使用 scontrol
排空节点可以实现此目标。
scontrol update NodeName=gpu001 State=Drain Reason="NCCL errors"
如果类似或相同的作业现在没有问题地通过,则您已置于排空状态的节点可能存在问题。请联系您的 NVIDIA TAM,让客户支持部门参与对系统进行分类并提供更换。
2.8.3.5. 性能问题#
诊断性能问题通常涉及结合上述稳定性和特定于应用程序的部分中讨论的调试方法。除了这些方法之外,验证系统和应用程序的软件状态至关重要。
例如,代码库或容器最近是否有任何更新?集群上的操作系统软件是否已更新?
硬件、系统和软件之间的交互可能会演变,从而导致无法预见的后果。试验以前运行正常的作业配置是评估性能问题的第一步。
如果您确信存在不是应用程序错误的新问题,请联系您的 NVIDIA TAM 以打开支持票证。
2.9. 请求修改您的 DGX Cloud 集群#
虽然大多数管理任务对您可用,但某些任务需要 NVIDIA 的协助。
这些操作包括扩展和向集群添加其他节点、增加 NFS 或 Lustre 上的共享存储容量以及更改用户主目录的配额。
如需这些步骤的帮助,请与您的 TAM 合作,以确保对您的配额进行必要的修改。
2.10. 解决安全公告#
下面详细介绍了 DGX Cloud Slurm 集群的所有安全公告和相关解决方案。如果您有任何其他问题,请联系您的 TAM 寻求帮助。
2.10.1. NVIDIA Container Toolkit - 2024 年 9 月#
访问 NVIDIA 支持知识库 以获取有关此安全公告的更多详细信息。
要在使用默认软件映像和交付时的类别配置的 DGX Cloud Slurm 集群上更新 NVIDIA Container Toolkit,请运行以下命令。
1cm-chroot-sw-img /cm/images/amlfs-image
2apt update
3apt install --only-upgrade cm-nvidia-container-toolkit
4exit
5cmsh -c 'device imageupdate -w -c slurm-cpu,slurm-gpu,slurm-login --wait'
如果您已扩展集群以使用不同的软件映像或类别配置,请阅读更通用的 BCM 知识库,以了解如何更新不同的配置。