ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用两台 MacBook 跑更大模型:DwarfStar 流水线并行完全指南

用两台 MacBook 跑更大模型:DwarfStar 流水线并行完全指南 用两台 MacBook 跑更大模型DwarfStar 流水线并行完全指南【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4DwarfStar 是一款专为 DeepSeek V4 Flash / PRO 与 GLM 5.2 打造的本地推理引擎支持 Metal、CUDA 和 ROCm 后端。当一台 Mac 的内存装不下模型时你可以用 DwarfStar 的**流水线并行Pipeline Parallelism**把两台 MacBook 的内存拼起来跑更大的模型同时还能把长文本预填充prefill速度提高最多 1.85 倍。本文带你从零搭好双机流水线并讲清它的原理、速度与网络选择。什么是流水线并行把多台机器的内存拼起来 流水线并行的思路很简单把 Transformer 的层layers按顺序切开分散到多台机器上每台机器只加载自己那一段的权重和 KV 缓存。激活值activations通过 TCP 在机器之间逐段传递最终由拥有输出头的机器算出 logits 并返回。理解这套机制只需记住 5 个要点GGUF 放在每台机器上但每台只加载一部分。--layers参数控制本机映射哪些层的张量写--layers 20:output的 worker 根本不会加载前 20 层。层区间是两端包含的10:20表示第 10 到 20 层N:output表示从第 N 层一直到最后一层外加输出头output head。一台机器当 coordinator协调者其余当 worker工作者。worker 主动连接 coordinator汇报自己负责的层区间。每个 worker 持有自己那一段的 KV 缓存KV 状态分布在整条链路上。通信是 worker 到 worker 直连的不需要 coordinator 中转coordinator 是 A、worker 是 B 和 C 时激活值沿A - B - C - 回到 A流动。这套能力在源码中由 ds4_distributed.c 实现约 8400 行对外暴露的会话接口定义在 ds4_distributed.h 中命令行参数--role、--layers、--listen、--coordinator等的解析与校验逻辑可参考 ds4_distributed.c。适合哪些场景先看清能力与速度边界 它的核心价值是容量其次是加速长文本预填充。跑单机装不下的模型经典例子是4-bit DeepSeek V4 Flash约 91 GB跑在两台 128 GB 的 MacBook 上——每个进程只映射自己的层切片内存占用直接减半。两台 512 GB 的 Mac Studio 甚至能跑完整的PRO Q4大模型。预填充可以真正变快prefill 路径是流水化的coordinator 可以在 worker 处理第 N 个块时并行处理第 N1 个块像流水线装配线一样。生成decode会变慢生成是严格自回归的token N1 必须等 token N 走完全部机器才能开始每个 token 至少多一次跨机传输。所以分布式推理不适合追求解码速度它主要解决装得下和长文档处理更快两个问题。快速开始四步搭好双机流水线 以下示例以两台 128 GB MacBook 运行 4-bit Flash 量化模型为例。第 1 步获取代码并编译两台机器需要相同的代码树和相同 commitgit clone https://gitcode.com/GitHub_Trending/ds4/ds4 cd ds4 make # macOS Metal 后端第 2 步下载模型./download_model.sh q4-imatrix下载脚本 download_model.sh 支持断点续传。注意两种分发策略完整 GGUF 放两台机器每台只映射自己的层简单直接Flash 场景分割 GGUF 各放一半PRO Q4 官方提供了按层切开的两个文件省一半带宽适合超大模型./download_model.sh pro-q4-layers00-30 # 前一半coordinator 机器 ./download_model.sh pro-q4-layers31-output # 后一半worker 机器第 3 步启动 coordinator机器 A./ds4 \ -m gguf/DeepSeek-V4-Flash-Q4KExperts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2.gguf \ --role coordinator \ --layers 0:19 \ --listen 169.254.43.68 1234第 4 步启动 worker机器 Bworker 会主动连接 coordinator 并持续重试直到 coordinator 加载完成./ds4 \ -m gguf/DeepSeek-V4-Flash-Q4KExperts-F16HC-F16Compressor-F16Indexer-Q8Attn-Q8Shared-Q8Out-chat-v2.gguf \ --role worker \ --layers 20:output \ --coordinator 169.254.43.68 1234worker 注册成功后coordinator 会检测到完整的路由route就绪。之后你只需像使用普通单机./ds4一样在 coordinator 上操作交互式聊天、/read、一次性-p提示全都照常工作ds4-agent、ds4-eval和ds4-bench也接入了同一套分布式选项。 完整的 PRO Q4 双机配置coordinator--layers 0:30 worker--layers 31:output见 README.md 的 Full DeepSeek V4 PRO Q4 on two Mac Studios 一节。最快配置方法--layers分层规则要点 写法含义10:20第 10 到 20 层两端都包含20:output第 20 层到最后一层加上输出头0:3031:output经典的对半切法三条实用建议让最后一个 worker 持有:output如--layers 20:output。这样最终 worker 直接算出 logits 返回避免 prefill 后回传一整批最终 hidden state。链路很慢或按流量计费时可写成--layers 20:42这样的纯数字区间让 coordinator 本地加载输出头并在本机算 logits用 coordinator 多干一点活换取更小的跨机传输。层分配尽量均衡。切得不均会让某台机器成为瓶颈可以用--debug打开 coordinator 的遥测来验证见下节。实测数据预填充提速 1.38x1.85x ⚡官方在两台 M5 Max 128 GB MacBook雷电 5 直连Q4 Flash GGUF默认 4096 token 预填充块上测得提示词长度单机参考两台 MacBook加速比9,421 tokens421.70 t/s582.22 t/s1.38x28,684 tokens405.30 t/s674.16 t/s1.66x63,819 tokens353.62 t/s654.79 t/s1.85x提示词越长加速越明显——这正是长文档审阅、代码库分析类工作负载的甜区。但生成速度是另一回事同一台双 Mac 雷电环境下12k 上下文的对照测试从单机 30.59 t/s 降到分布式 24.67 t/s约损失 19.4%。这是自回归生成的固有代价选型时务必心里有数。网络怎么选雷电 5 首选 实现是纯 TCPWiFi 也能跑但延迟对生成的杀伤非常大。同一组 M5 Max 双机、同一模型下的对比链路平均 Ping预填充生成雷电 5 直连0.45 ms582.99 t/s25.09 t/sWiFi77.20 ms250.70 t/s10.70 t/s互联网 / VPN152.10 ms114.88 t/s3.63 t/s结论交互使用强烈建议雷电或高速以太网直连。互联网/VPN生成只有 3.63 t/s不适合聊天但仍可用于多人临时拼机器跑一个谁都装不下的模型这类协作场景。慢链路主要伤生成延迟和短 prefill长 prefill 只要层切分均衡依然能从流水线中获益。进阶调优与排障 ️判断层切分是否均衡——用--debug在 coordinator 上给ds4-bench或ds4加--debug会打印路由形成过程和逐跳遥测层区间、token 跨度、本地计算时间、等待下游时间、socket 发送时间、收发字节数。这是官方推荐的切分是否均衡诊断手段示例命令见 README.md 的 Distributed inference 一节测试提示词可直接用 speed-bench/promessi_sposi.txt。常用调优参数参数作用建议--dist-prefill-chunk N预填充块大小保持默认 4096除非你在专门验证其他值--dist-prefill-window N全链路可同时 in-flight 的块数默认偏保守上限 64--dist-activation-bits N激活值传输精度32/16/8以太网/WiFi 上可先试 16 减半流量8 位属实验性模式故障恢复机制worker 掉线时coordinator 会把它从活动路由中移除进行中的请求可能失败之后会报告路由不完整直到有兼容 worker 重新注册。活会话不用担心coordinator 持有完整 token 历史路由恢复后可以重放前缀重建 worker 的 KV 状态。每个工作项还带滚动 64 位 token 前缀哈希校验防止重启后的 worker 默默接受错位的工作。CLI 中的 CtrlC 是协作式的会等当前分布式 token 或预填充块排空后再退出避免 coordinator 造成 KV 状态分裂。保存/恢复会话与单机格式完全一致保存时 coordinator 拉取 worker 持有的层张量合并成一个普通 KV 文件加载时再按当前路由分发。⚠️ 分布式协议没有加密和认证且尚未进入发布稳定状态。请确保 coordinator 与 worker 构建自同一 commit并只在可信的机器和网络上使用。常见问题 FAQ ❓Q为什么生成比单机慢生成是自回归的每个 token 都要走完整条跨机链路至少多一次激活值往返。分布式是为装得下和prefill 快服务的不是为解码提速服务的。Q流水线并行和张量并行Tensor Parallel有什么区别张量并行--tensor-parallel两台 Mac 雷电直连是让两台机器同时处理同一个 token、切分路由专家所有权从而降低每 token 延迟流水线并行是按层接力核心目标是内存扩容 prefill 加速。两者不要混用参数。Q只有一台机器内存大另一台较小可以吗层区间可以不等长但切分越均衡吞吐越高。建议先用--debug看逐跳时间再调整--layers边界。Q可以超过两台机器吗可以。架构上是 coordinator 任意多个 worker 的链式路由每个 worker 直连下一个 worker。相关文档与源码 完整用法与实测数据README.md分布式引擎实现约 8400 行ds4_distributed.c会话级 API 定义ds4_distributed.h模型下载与断点续传脚本download_model.sh基准测试提示词样本speed-bench/promessi_sposi.txt发布前完整测试矩阵含双机 TCP/RDMA 验证QA_BEFORE_RELEASES.md当你的模型比内存大时DwarfStar 流水线并行是目前在消费级 Mac 上最务实的扩容方案先拼内存跑起来再用雷电链路把长文档 prefill 拉到单机的一倍半以上。【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表