如何在两台 Mac Studio 上运行完整 DeepSeek V4 PRO Q4:DwarfStar 分片实战
2026/9/2 12:52:35 网站建设 项目流程

如何在两台 Mac Studio 上运行完整 DeepSeek V4 PRO Q4:DwarfStar 分片实战

【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4

DwarfStar(项目名ds4)是一个专为 DeepSeek V4 Flash 与 PRO 打造的本地推理引擎,支持 Metal、CUDA 与 ROCm 后端。本文将带你用它的流水线并行(分片)能力,把完整的 DeepSeek V4 PRO Q4 量化模型拆分到两台 Mac Studio 上运行——哪怕单机内存装不下整个模型,也能在消费级硬件上跑起来。

为什么需要"两台机器"?

DeepSeek V4 PRO 是参数量更大的旗舰版本,完整 Q4 量化后的 GGUF 文件超出单台 512 GB Mac Studio 的舒适内存范围。DwarfStar 给出的方案很直接:

  • 把模型按层(layer)切分,每台机器只加载自己负责的那一半
  • 通过coordinator(协调者)worker(工作者)角色,用普通 TCP 网络把激活值(activations)在机器间传递
  • 对外仍然是熟悉的命令行 / API 体验,交互方式不变

核心源码位于 ds4_distributed.c 与 ds4_distributed.h,配置细节可参考 README.md 中的 "Distributed inference" 章节。

分片原理:谁负责哪一层?

可以把整台推理系统想象成一条流水线

  1. coordinator负责分词、采样,并计算第 0–30 层
  2. worker连接上来,负责第 31 层直到输出头(31:output
  3. 每个 worker 还各自保存自己那部分层的 KV 缓存
  4. 数据在 worker 之间点对点直传,不需要协调者中转,流量路径为A -> B -> A

这个设计有两个巧妙之处:

  • 每个进程只映射自己需要的张量,内存占用直接减半
  • worker 拥有输出头后可以直接返回 logits,省去最后把完整隐藏状态传回协调者的开销

⚡ 小知识:预填充(prefill)阶段两台机器可以并行处理不同微批次,速度比单机还快;但生成(decode)是严格自回归的,每个 token 都要跨机器跑一整圈,所以生成速度会比单机略慢。

准备模型文件:各下载半个模型

仓库提供了现成的按层切分的 GGUF 文件,在两台机器上分别执行:

# 协调者机器(Mac Studio A) ./download_model.sh pro-q4-layers00-30 # 工作者机器(Mac Studio B) ./download_model.sh pro-q4-layers31-output

脚本会下载并保存到本地./gguf/目录(支持断点续传):

机器文件
A(coordinator)gguf/DeepSeek-V4-Pro-Q4K-Layers00-30.gguf
B(worker)gguf/DeepSeek-V4-Pro-Q4K-Layers-31-output.gguf

下载逻辑可查阅 download_model.sh。注意这两个分片文件不会更新默认的./ds4flash.gguf软链,启动时需要用-m显式指定。

最小双机配置:四行命令跑起来

两台机器用雷电 5(Thunderbolt 5)线直连效果最佳。以直连网口地址169.254.43.68(A)为例:

# Mac Studio A:协调者,负责分词、采样和第 0-30 层 ./ds4 -m gguf/DeepSeek-V4-Pro-Q4K-Layers00-30.gguf \ --role coordinator \ --layers 0:30 \ --listen 169.254.43.68 1234 # Mac Studio B:工作者,负责第 31 层到输出头 ./ds4 -m gguf/DeepSeek-V4-Pro-Q4K-Layers-31-output.gguf \ --role worker \ --layers 31:output \ --coordinator 169.254.43.68 1234

要点提示:

  • 层区间是闭区间10:20表示第 10 到 20 层;N:output表示第 N 层到最后一层加输出头
  • worker 会主动连接协调者并注册自己"能算哪些层",注册齐了才形成完整路由
  • 启动后就像正常使用./ds4一样交互:聊天、/read、普通生成都走同一套会话接口

实测表现:11.47 t/s 是什么体验?

项目团队在直连192.168.0.182/192.168.0.183的两台 Mac Studio 上做了贪心解码冒烟测试:

指标数值
生成速度11.47 t/s
本地层耗时约 39–43 ms/token
远端层耗时约 44–49 ms/token
单 token 总耗时约 84–92 ms

两点预期管理:

  1. 启动较慢:每侧都要把半个模型映射并驻留进内存,首次加载耐心等待
  2. 生成速度不算快:这是"容量型"部署,目标是"跑得起完整 PRO",而不是追求高吞吐。11 t/s 对于阅读和审查模型输出完全可用

PRO Q2 量化在单台 512 GB Mac Studio 上可达 9.56 t/s(见 README.md 的 Speed 表格),所以双机 Q4 方案用略高的速度换来了更高的量化精度

网络怎么选:雷电 5、以太网还是 WiFi?

分布式模式底层是纯 TCP,任何链路都能工作,但延迟直接决定体验。官方在两台 M5 Max 上用同一个 91 GB Flash 量化测得:

链路平均 Ping预填充生成
雷电 50.45 ms582.99 t/s25.09 t/s
WiFi77.20 ms250.70 t/s10.70 t/s
互联网 / VPN152.10 ms114.88 t/s3.63 t/s

强烈建议使用快速以太网或雷电网络。如果只有慢速链路,可以试试--dist-activation-bits 16把激活值按 16 位传输,减半流量。

调优与排障

  • 看遥测:协调者加--debug会打印每一跳的层范围、本地计算时间、下游等待时间、发送耗时和字节数,是判断切分是否均衡的第一工具
  • 预填充窗口--dist-prefill-window N控制端到端最多有几个预填充块在途;默认 4096 token 的分块(--dist-prefill-chunk)是经过验证的规范配置
  • worker 掉线:协调者会自动把该 worker 移出路由;会话恢复后可通过重放 token 历史重建 worker 的 KV 状态,无需从头开始
  • 会话持久化:分布式会话保存的 KV 文件与单机格式完全一致,ds4-agent/save/switch等机制照常可用

写在最后

DwarfStar 用极小的工程量演示了一个很有说服力的思路:当模型太大、内存不够时,把机器"粘"起来。两台 512 GB 的 Mac Studio,靠一根雷电线和一个按层切分的 GGUF,就能完整运行 DeepSeek V4 PRO Q4——这在一年前还是只有数据中心才玩得起的规格。

如果你想继续探索,推荐从以下材料入手:

  • 分布式配置全貌:README.md
  • 模型下载目标列表:download_model.sh
  • 分布式引擎接口:ds4_distributed.h
  • 基准测试数据:speed-bench/

注意:仓库迭代很快(beta 状态),协议尚未"发布稳定",协调者与 worker 请用同一 commit 构建,并只在受信任的机器与网络上使用。

【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询