【AI 集群实战】多节点 DGX Spark 集群共享大模型

📝 背景与痛点

在拥有多台高算力桌面级节点(如 NVIDIA DGX Spark)的 AI 实验室或生产环境中,我们经常面临一个存储痛点:

像 Qwen3.5-35B 这样的开源大模型动辄几十 GB。如果 8 台 DGX Spark 都去本地拉取一遍模型,不仅浪费几百 GB 的 NVMe 空间,后续更新模型(如增量微调的 LoRA 权重)也需要手动 Rsync 繁琐同步。

💡 解决方案与 GB10 统一内存优势

为了解决这个问题,我们选取一台搭载大容量 NVMe 硬盘的 DGX Spark 作为**"主镜像仓库"**,通过配置优化的 NFS (Network File System) over TCP 协议,将模型目录共享给整个内网。

🔥 DGX Spark 的终极架构红利:

得益于 GB10 芯片的 128GB 统一内存 (Unified Memory) 架构,CPU 和 Blackwell GPU 共享同一块物理内存。其他计算节点通过 NFS 将模型文件拉取到本地"系统内存"的瞬间,数据就已经直接躺在"GPU 显存"里了!全程零 PCIe 拷贝(Zero-copy),彻底打破传统架构的传输瓶颈。

核心收益:

  1. 极致省空间:全网只存一份模型,其余计算节点本地存储零占用。
  2. 秒级全网更新:主仓库更新权重,全网下一秒即可直接加载。
  3. 原生 VRAM 直达:千兆网拉取直达统一内存,省去显存搬运损耗。

🛠️ 环境准备

  • 服务端 (主镜像仓库) :Hostname 为 spark-8,模型存放路径 /home/nvidia/models
  • 客户端 (计算节点) :Hostname 为 spark-9 等。
  • 网络环境:标准千兆/万兆局域网(实测千兆网可达 118MB/s 满速)。

⚙️ 一、 服务端配置 (在 spark-8 节点执行)

1. 安装 NFS 服务端

bash 复制代码
sudo apt update && sudo apt install nfs-kernel-server -y

2. 配置共享目录与权限

必须将基础模型目录设置为 ro(只读)权限,防止误操作。

打开配置文件:

bash 复制代码
sudo nano /etc/exports

在文件末尾追加:

text 复制代码
/home/nvidia/models *(ro,async,insecure,no_root_squash)

(参数释义:ro 为只读;async 提升元数据响应;no_root_squash 信任客户端 root 映射。)

3. 重启服务使配置生效

bash 复制代码
sudo systemctl restart nfs-server
sudo exportfs -a

🚀 二、 客户端配置 (在 spark-9 等计算节点执行)

1. 安装 NFS 客户端工具

bash 复制代码
sudo apt update && sudo apt install nfs-common -y

2. 配置内网 Hosts 解析

为了避免 IP 变动导致挂载失效,打开 /etc/hosts,追加服务端的内网 IP:

text 复制代码
# 替换为真实的 spark-8 IP
192.168.x.8   spark-8-nfs

3. 配置开机自动挂载 (包含 AI 集群专属优化参数)

创建挂载点:sudo mkdir -p /mnt/shared_models

打开 fstab 文件写入配置:

bash 复制代码
sudo nano /etc/fstab

在文件末尾追加这行灵魂配置

text 复制代码
spark-8-nfs:/home/nvidia/models /mnt/shared_models nfs vers=4.2,rsize=1048576,wsize=1048576,tcp,timeo=600,retrans=2,ro,_netdev,x-systemd.automount 0 0

高阶参数解析:

  • rsize/wsize=1048576: 设定传输块大小为 1MB,大幅提升连续大文件(权重)的读取吞吐量。
  • tcp,timeo=600: 明确走 TCP 协议并增加超时容忍度,防止多机并发拉取时卡死。
  • _netdev,x-systemd.automount: 等待网络就绪后再挂载,防止重启时系统自检挂起。

4. 加载并验证挂载

bash 复制代码
sudo systemctl daemon-reload
sudo mount -a
df -h | grep shared_models

输出中看到 3.7T 容量即代表大功告成。


📊 三、 网络吞吐压测与 Python 实战

我们可以使用 dd 命令测试纯网络 I/O 速度:

bash 复制代码
# 清空缓存防止干扰
sudo sysctl -w vm.drop_caches=3
# 找一个真实的 safetensors 文件测速
dd if=/mnt/shared_models/Qwen3.5-35B/model.safetensors of=/dev/null bs=1M status=progress

(注:千兆网环境下,速度稳定在 118 MB/s 左右为绝佳状态。)

Python/PyTorch 零缝隙加载代码:

计算节点完全不需要下载,直接指向 NFS 路径即可启动!

python 复制代码
import time
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# 直接指向网络挂载目录
model_path = "/mnt/shared_models/Qwen3.5-35B-A3B-FP8"

print(f"🚀 开始从分布式存储加载模型,直达 DGX 统一内存...")
start_time = time.time()

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    device_map="auto",
    torch_dtype=torch.float16,
    trust_remote_code=True
)

print(f"✅ 模型加载成功!耗时: {time.time() - start_time:.2f} 秒")

🔥 隐藏福利 (Page Cache):在 DGX Spark 上运行一次后,只要不清理系统缓存,第二次启动代码将直接从内存读取,实现几秒钟内的"瞬间加载"!

相关推荐
正在走向自律2 小时前
AI视频生成:从文本到动态画面的技术演进
人工智能·hunyuanvideo引擎·ai视频技术
HIT_Weston2 小时前
9、【AI】【Agent】联网使用大模型(DashScope&ModelStudio)
人工智能
兴通扫码设备2 小时前
ocr工业场景适配升级:深圳市兴通物联XTC8501智能相机接口与环境适应性技术解析
数据库·人工智能·深度学习·数码相机·计算机视觉
小陈phd2 小时前
多模态大模型学习笔记(十六)——Transformer 学习之 Decoder Only
人工智能·笔记·深度学习·学习·自然语言处理·transformer
tinygone2 小时前
OpenClaw安装openclaw-dashboard监控面板
人工智能·经验分享
SEO_juper2 小时前
AI内容质量保证SOP:从生成、审核到发布的完整工作流
人工智能·搜索引擎·百度·ai·数字营销·2026
ai产品老杨2 小时前
打破芯片壁垒:基于Docker与K8s的GB28181/RTSP异构AI视频平台架构实战
人工智能·docker·eureka·时序数据库·etcd
Takoony2 小时前
OpenClaw 深度拆解:下一代自主智能体架构全面解析
人工智能·深度学习·算法·机器学习·架构·openclaw
mit6.8242 小时前
论大数据时代|产品
人工智能