两台DGX Spark部署DeepSeek的实战边界

两台 DGX Spark、一根高速线缆,再加一个量化模型,看起来就能搭出一台本地 DeepSeek 服务器。真正动手时,麻烦通常集中在三个地方:权重能否装下、推理框架能否执行、两台机器能否高效通信。

这三个条件缺一不可。网络连通,不代表分布式推理已经成立;模型文件小于总内存,也不代表加载后不会 OOM。

原始素材中的部署思路值得参考,但有几处需要先纠正:双机内存不会自动合并,284B 模型的 FP16 权重也不止 284GB。另外,素材没有给出可核验的 DeepSeek V4 Flash 模型仓库、量化版本和镜像标签,因此本文不把这些版本信息及性能数字当作已经验证的事实。硬件初始化和网络配置可以按步骤推进,模型部署则必须以实际仓库和框架支持情况为准。

一、先算清模型能不能装下

DGX Spark 的吸引力很明确:GB10 平台提供 128GB 统一内存,适合在桌面设备上尝试较大的量化模型。

不过,统一内存有两层含义需要区分。

单台设备上,CPU 和 GPU 共享物理内存,减少了独立显存容量带来的限制。两台设备连接后,各自仍然拥有自己的内存和地址空间。模型需要由推理框架切分,通过网络交换中间结果。

两台 128GB 设备提供的是两份可用于分布式部署的内存资源,不是一块透明的 256GB 显存。

假设目标模型确实有 284B 参数,仅按参数数量估算权重存储:

权重精度 理论权重体积 未计入的部分
FP16/BF16 约 568GB 缓存、运行时、临时张量
8-bit 约 284GB 量化元数据及未量化层
4-bit 约 142GB 缩放因子、混合精度层等
2-bit 约 71GB 编码开销、混合精度层等

这里使用十进制 GB。实际文件大小取决于量化格式,不能用理论值直接替代下载页面上的体积。

MoE 模型还容易带来另一个误解:激活参数少,是否意味着只需要存储这些参数?

通常不成立。每个 token 只调用部分专家,能够减少计算量;但后续 token 可能路由到其他专家,因此常见部署仍需保存全部专家权重。专家卸载可以改变内存占用,却会引入额外的数据搬运和延迟。

我的建议是:先确认权重格式和运行时开销,再讨论双机性能。 如果这一步算不清,后面的网络调优很容易变成无效劳动。

二、硬件准备要分清两张网络

双机部署最好把管理网络和计算网络分开。

管理网络用于 SSH、下载模型和访问 API。高速直连网络用于节点间通信。两者可以同时存在,但承担的任务不同。

建议准备:

项目 数量 用途
DGX Spark 2 台 分布式推理节点
兼容的高速直连线缆 按官方方案 连接高速网卡端口
普通网线 2 根 接入管理局域网
显示器、键鼠 1 套 按设备指南完成本地初始化
原装电源 2 套 供电
可用存储空间 两台分别检查 权重、镜像、缓存和日志

线缆不要只按 QSFP 外形购买。需要核对设备支持的接口类型、线缆型号、链路模式和固件要求。

原素材中"QSFP28 只有 50Gbps"的说法不准确。QSFP28 常见于 100GbE,实际链路速度取决于端口和双方支持的模式;线缆上的标称速率,也不保证设备会以同样速率建立连接。是否随双机套装附带线缆,应以具体销售配置为准。

还有一个不太显眼的约束:模型通常需要在两台节点上都能被正确读取。 除非部署方案明确使用共享存储,否则不能只在主节点下载权重,就默认工作节点也能访问。

三、单机初始化先把基础状态查清

两台设备分别完成首次设置,包括用户账号、主机名、管理网络和系统更新。具体开机与远程初始化方式,以对应设备版本的官方指南为准。

建议主机名使用 spark-1 和 spark-2,避免日志里两个节点看起来完全一样。

初始化后,在两台机器上分别执行:

复制代码
# 检查系统架构,Spark平台应为ARM64/aarch64
uname -m

# 检查GPU及驱动状态
nvidia-smi

# 检查内存和磁盘余量
free -h
df -h

# 查看网卡名称和地址
ip -br link
ip -br addr

# 若已安装RDMA相关工具,检查RDMA设备与网卡的对应关系
ibdev2netdev
​

ibdev2netdev 中的 Up 状态说明对应链路已起来,但不能据此判断 RoCE、NCCL 和模型通信都正常。

记录两台机器的驱动、系统版本和后续容器镜像。分布式环境最怕一台更新了,另一台没更新,最后把版本问题误判成网络问题。

统一内存也意味着系统进程、CPU 工作负载和 GPU 推理共享资源。部署前应关闭不必要的应用,不要把 128GB 全部当成模型预算。

四、双机互联从固定地址开始

连接兼容线缆后,先确认实际处于 Up 状态的高速接口。两台设备上的接口名不一定相同,不能照抄截图里的名称。

下面给出固定地址的配置示例。它适用于两台设备直连、目标接口未被其他配置管理的情况。执行前先检查 /etc/netplan/ 中已有配置;如果系统工具已经配置了这条链路,不要再叠加一份。

在 Spark 1 上执行:

复制代码
# 必须替换为本机实际连接线缆的接口名
IFACE="enp1s0f1np1"

# 确认接口存在
ip link show "$IFACE"

# 创建仅用于直连链路的配置,不设置默认网关
sudo tee /etc/netplan/90-spark-direct.yaml >/dev/null <<EOF
network:
  version: 2
  ethernets:
    ${IFACE}:
      dhcp4: false
      dhcp6: false
      addresses:
        - 192.168.100.10/24
EOF

sudo chmod 600 /etc/netplan/90-spark-direct.yaml
sudo netplan generate

# 使用可回滚方式试用配置,确认正常后再接受
sudo netplan try
​

Spark 2 使用本机接口名,并把地址改成:

复制代码
addresses:
  - 192.168.100.11/24
​

这个网段必须与现有局域网、VPN 和容器网络错开。直连接口不设置默认网关,避免模型下载和管理流量被错误导向另一台机器。

在 Spark 1 上验证:

复制代码
# 检查访问对端时是否经过直连接口
ip route get 192.168.100.11

# 检查基本连通性
ping -c 4 192.168.100.11

# 检查接口实际协商速率,替换为本机接口名
sudo ethtool enp1s0f1np1
​

SSH免密只解决进程启动

如果部署方案需要主节点远程启动工作进程,可以配置 SSH 公钥认证。

在 Spark 1 上执行:

复制代码
# 若已有合适密钥,可跳过生成步骤;不要覆盖已有密钥
ssh-keygen -t ed25519 -f ~/.ssh/spark_cluster

# 将sparkuser替换为Spark 2上的真实用户名
ssh-copy-id -i ~/.ssh/spark_cluster.pub \
  sparkuser@192.168.100.11

# 验证公钥认证,禁止回退到密码交互
ssh -i ~/.ssh/spark_cluster \
  -o BatchMode=yes \
  sparkuser@192.168.100.11 hostname
​

首次连接时应核对主机指纹。是否需要反向免密登录,取决于启动器,不必默认把两台机器配置成完全互信。

如果使用 NVIDIA 提供的集群配置工具,应检查当前版本文档的适用范围。自动配置网络可以减少手工错误,但不会自动解决模型格式、推理框架和量化内核的兼容性。

五、ping通之后还要验证通信路径

网络测试需要分层,不能一步跳到"集群已就绪"。

验证层级 要确认的内容 常用工具
物理链路 端口是否连通、协商速率是否正确 ethtool
IP网络 地址、路由和基础通信是否正确 ip、ping
TCP吞吐 普通网络传输是否存在明显瓶颈 iperf3
RDMA通信 RoCE路径是否可用 RDMA测试工具
GPU集合通信 NCCL是否使用预期网络路径 nccl-tests

原素材把 200Gbps 换算成约 25GB/s,这个单位换算没问题。但不能要求 NCCL all-reduce 的结果必须达到 25GB/s。

链路标称速率、有效传输吞吐、NCCL 输出的 algbw 和 busbw,衡量的内容不同。消息大小、集合通信算法、协议开销和 GPU 数据路径都会影响结果。

带宽偏低时,应检查:

  • NCCL 是否退回 TCP Socket,而未使用预期的 RDMA 路径;
  • 是否选中了管理网卡;
  • 容器是否能够访问所需的 GPU、RDMA 设备和库;
  • 两端 MTU、驱动及相关软件版本是否一致;
  • 测试消息是否太小,导致延迟主导结果。

只有几 GB/s 并不能直接证明 Netplan 接口名写错。直接反复修改地址,可能把原本正常的管理连接也改坏。

六、模型部署先过兼容性检查

到这里,两台机器具备了协同运行的基础条件。接下来才是模型部署。

对于素材中提到的 DeepSeek V4 Flash,需要补齐以下信息,才能写出可信的完整启动命令:

必须确认的信息 为什么需要
官方模型仓库和版本 确认架构、参数规模、配置及许可证
量化仓库和具体格式 确认实际权重体积和加载方式
推理框架版本 确认支持该模型架构
容器标签或镜像摘要 确保环境可复现
GB10量化内核支持 ARM64镜像可运行,不等于GPU算子可执行
双机启动方案 确认使用Ray、其他启动器或框架原生多节点机制
分片方式 确认权重和专家如何分布到两个节点

尤其需要注意:2-bit 专家量化、NVFP4 和泛称的 FP4,不是可以随意互换的格式。 某个模型能被一个后端加载,不代表 vLLM 也能直接读取。

容器兼容性同样有两层:

  • CPU 侧需要匹配 ARM64;
  • GPU 侧需要匹配 GB10、驱动、CUDA 和对应算子实现。

原素材没有给出完整镜像名称及版本,因此不能据此确认所谓"专用镜像"具备哪些优化。

部署顺序建议收敛为三步:

  1. 使用目标容器运行一个明确支持的小模型,验证 GPU 执行路径。
  2. 运行双节点通信或小模型分布式测试,验证启动器和通信后端。
  3. 加载目标量化模型,以短上下文、低并发启动,再逐步增加负载。

--tensor-parallel-size 2 只是并行度设置的一部分。它不会自动发现另一台机器,也不会自动完成工作进程启动和权重分发。

对于 MoE,还可能涉及专家并行。是否使用、如何组合,要看模型与推理框架的具体实现,不能只凭参数规模决定。

七、双机的收益要用实际请求验证

双机确实增加了可用资源,但也增加了通信。

张量并行会拆分部分矩阵计算,并在层间交换数据。如果单台已经能装下模型,且主要服务单用户、低并发请求,跨节点通信开销可能抵消第二台设备带来的收益。

部署方式 更适合的目标 主要代价
单机量化推理 个人使用、低并发、简化维护 容量与精度受限
双机张量并行 模型需要分片,或测试确认有收益 通信开销和运维复杂度
双机各跑一份模型 模型单机可容纳,希望提高总吞吐 无法扩大单实例模型容量

我的选型倾向是:能单机稳定承载的低并发场景,先用单机;确实需要更大模型或更高吞吐,再验证双机方案。

服务启动后,可以通过 OpenAI 兼容接口进行最小验证。以下示例要求模型已被服务命名为 local-deepseek,且 API 监听在本机 8000 端口:

复制代码
# 检查服务实际暴露的模型名称
curl -fsS http://127.0.0.1:8000/v1/models

# 发送一次短请求;model需与服务返回的模型名称一致
curl -fsS http://127.0.0.1:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local-deepseek",
    "messages": [
      {
        "role": "user",
        "content": "用三句话解释统一内存的作用。"
      }
    ],
    "max_tokens": 128,
    "temperature": 0.2
  }'
​

正常 JSON 只证明这次请求成功。还应确认输出合理、两台节点实际参与计算,并测试连续请求与长上下文。

性能记录至少包含四项:

  • 首 token 延迟;
  • 单请求生成速度;
  • 多请求总吞吐;
  • 峰值内存与失败率。

不要只截取一个 token/s 数字。模型版本、量化格式、输入长度、输出长度和并发数不同,结果很难直接比较。

八、调优从内存预算开始

DGX Spark 的内存带宽会影响推理性能,但不同阶段的瓶颈不一样。长输入的预填充更依赖计算和算子效率,低批量逐 token 解码更容易受权重读取带宽影响;双机还要考虑通信等待。

因此,不宜直接套用"换一种量化就提升多少倍"的结论。

出现 OOM 时,也要先看发生在哪个阶段:

OOM阶段 优先检查
加载权重 权重体积、分片是否生效、加载时的临时副本
初始化缓存 最大上下文、并发数、缓存预算
运行请求 实际上下文增长、批处理规模、其他进程占用

降低 --gpu-memory-utilization 可能缩小 KV Cache 预算,缓解部分情况;如果权重本身装不下,它解决不了容量问题。

前缀缓存适合重复系统提示词、固定模板等场景,需要请求确实共享可复用的前缀。它也会消耗缓存空间,不能保证所有多轮对话都从分钟级缩短到秒级。

投机解码则需要草稿模型或模型特定机制,以及后端支持。接受率低时,额外计算甚至可能拖慢请求。素材中的 DSpark 支持情况和速度数字,没有对应版本与测试条件,不宜作为部署承诺。

下载模型时,优先使用可信来源并记录 revision。若使用第三方镜像,应核对文件完整性,避免把访问令牌发送到不可信站点。涉及 trust_remote_code 的模型,还需要审查仓库代码。

API 和集群控制端口也不要直接暴露到公网。管理网络中的访问控制、认证和防火墙配置,应与模型服务一起完成。

两台 DGX Spark 部署本地 DeepSeek,合理的验收顺序是:硬件状态正常、直连网络正常、GPU 通信正常、目标模型可加载、实际请求满足需求。每一步都有自己的证据,不能用前一步成功代替后一步验证。

可以从 NVIDIA 的 DGX Spark Playbooks 查找对应硬件和软件版本的实践,再与目标模型仓库、推理框架文档交叉核对。真正值得保留的部署记录,应包括模型 revision、镜像摘要、网络配置、完整启动命令和测试条件。

桌面设备跑大模型的价值很实在:数据留在本地,开发环境可控,也便于实验。但两台机器是否值得,最终要看它们有没有在你的上下文长度、并发规模和延迟要求下,带来可测量的收益。

相关推荐
weixin_440401692 小时前
大数据技术-人工智能编程题
大数据·人工智能·python·1024程序员节
远航计算机2 小时前
收录从分钟级变 3 到 7 天,抢首发为什么失效了
大数据·人工智能·爬虫·chatgpt·aigc·1024程序员节
CRMEB系统商城3 小时前
服装连锁的导购分销与企微私域
java·大数据·开发语言·人工智能·小程序·php·1024程序员节
有Li3 小时前
主动脉瘤的最佳风险重新分类:断层增强CT与二维经胸超声心动图对比研究文献速递/医学影像的几何测量
大数据·人工智能·深度学习·机器学习·医学生
renhongxia113 小时前
边缘AI部署与大模型轻量化技术全景:量化、蒸馏、RAG 与智能体落地实战
大数据·人工智能
企查查数据服务14 小时前
股权穿透+责任传导是医药并购合规健康度评分卡
大数据·人工智能
YH_Analytics15 小时前
2026 年增亮膜(DBEF)行业市场格局深度解析
大数据·网络
方芯半导体15 小时前
2026工业机器人控制芯片赛道:竞争格局与关键选型指标深度解析
大数据·人工智能·机器人
GlobalInfo15 小时前
上新 | 全球及中国起重机摄像系统行业研究报告(2026版):市场现状、行业前景与占有率分析
大数据·分布式·微服务·ai·相机