NVIDIA DGX Spark
我看可以参考《部署两套 DGX Spark 系统》的《运行两套 Spark 系统》操作部分
Step 1 - 物理硬件连接
本次演示使用 NVIDIA 原厂 DGX Spark(下图上方金色系统) 与 ASUS OEM 的 GX-10 系统(下图下方银色系统),然后用一条 400GB QSFP 缆线的两头,分别插入两台系统的 QSFP 接口(如下图黄色框处)。

因为 Linux 可以同时给多用户使用,现在为两台机器都创建性同用户名,例如 "2nodes":
export NEW_USER="2nodes" # 名字请自行修改
# 添加用户
sudo useradd -m $NEW_USER
# 加到 sudo 群,使用 sudo 权限
sudo usermod -aG sudo $NEW_USER
# 配置密码
sudo passwd $NEW_USER
# 切换到新用户
su - $NEW_USER
# 执行 "sudo apt update" 看看是否具备 sudo 权限两台机器都做相同的配置,然后各自用 “whoami” 指令检查用户名是否一致

左(ASUS GX10)右(NVIDIA Spark)两个终端分别登录两台不同的 Spark系统,然后分别登录 2nodes 用户。
在两台机器中都执行 ibdev2netdev 指令,以建立网路连接:

现在证明网线与网口的连接是正常的。如果检测结果没有“Up”状态,请检查QSFP缆线的连接状态,重启系统后重新测试!
这里可以看到,左边(ASUS GX10)的 p1s0f0 与右边(NVIDIA DGX Spark)的 p1s0f1 连接,对照第一张图里的物理位置,就能轻松掌握端口与编号。
虽然这里只用1根QSFP缆线连接,可以使用较简单的 "自动分配IP” 方式处理,但是重启系统之后 IP 可能会重新分配,就会造成不确定因素,因此这里使用“netplan 配置文件手动分配 IP 地址”方式,能适用于更广泛的场景。执行步骤如下:
# 创建配置文件
sudo tee /etc/netplan/40-cx7.yaml > /dev/null <<EOF
network:
version: 2
ethernets:
enp1s0f0np0:
addresses:
- 192.168.100.10/24
dhcp4: no
enP2p1s0f0np0:
addresses:
- 192.168.100.12/24
dhcp4: no
EOF
# 配置权限并启动计划
sudo chmod 600 /etc/netplan/40-cx7.yaml && sudo netplan apply复制粘贴去执行以下指令,配置“奇数IP”给端口:
# 创建配置文件
sudo tee /etc/netplan/40-cx7.yaml > /dev/null <<EOF
network:
version: 2
ethernets:
enp1s0f1np1:
addresses:
- 192.168.100.11/24
dhcp4: no
enP2p1s0f1np1:
addresses:
- 192.168.100.13/24
dhcp4: no
EOF
# 配置权限并启动计划
sudo chmod 600 /etc/netplan/40-cx7.yaml && sudo netplan apply现在,我们分别在两个终端里输入 “ip -brief addr show | grep en” 指令,就会看到如下面的显示内容:

注、如果要加上另一组连线时,最好配置另一个网段(如 192.168.200.xx)的4个IP
这个环节是为了将来软件协作时能进行 “自动化任务”,而不需要因为输入 ID/PW 而中断任务。
这里同样有两种方式,熟悉 SSH 的人可以自己手动处理,不熟悉的可以使用 discover-sparks 工具来处理,都很简单
由于目前使用 2nodes 用户进行连线,必须要在两台机器上分别生成自己的公钥,然后复制到对方的指定位置去,以后就能免密码执行。
1. 生成密钥对(在两台机器上都执行)
ssh-keygen -t rsa -b 4096过程如下图,有两个需要你输入的地方,全部直接按 Enter 即可

然后会在 ~/.ssh 目录下生成 id_rsa(私钥)与id_rsa.pub(公钥)密钥对。
2. 在两个终端分别执行 ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<IP for 对方节点>
# 在左边终端执行
ssh-copy-id -i ~/.ssh/id_rsa.pub 2nodes@192.168.100.11
# 在右边终端执行
ssh-copy-id -i ~/.ssh/id_rsa.pub 2nodes@192.168.100.12
过程中会要求输入1次对方节点的密码
现在分别在两个终端内执行 ssh <username>@<IP for 对方节点>
# 在左边终端执行
ssh '2nodes@192.168.100.11'
# 在右边终端执行
ssh '2nodes@192.168.100.12'现在就不用输入密码,便能直接登录到对方节点上。

现在分别执行 exit 推出对方节点,回到自己节点上去,分别执行 ssh <IP for 对方节点> hostname
# 在左边终端执行
ssh 192.168.100.11 hostname
# 在右边终端执行
ssh 192.168.100.12 hostname就能显示对方的设备名称,如下图:

NVIDIA在 dgx-spark-playbooks 的 connect-two-sparks 项目中提供一个 discover-sparks 工具,分别在两个终端执行以下指令直接下载这个脚本就可以,不用下载整个代码仓:
wget https://raw.githubusercontent.com/NVIDIA/dgx-spark-playbooks/refs/heads/main/nvidia/connect-two-sparks/assets/discover-sparks下载完后在两个终端都执行以下指令:
bash ./discover-sparks脚本就会帮我们执行所需要的工作(如下图)

好了,现在就完成两台 DGX Spark 设备直接的连接动作了,后面再来尝试两台系统联手操作的测试。【完】
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。