ARTICLE DETAIL

资讯详情

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

跨 Mac 张量并行:DwarfStar 如何用 RDMA 在两台 M5 Max 上拆分矩阵

跨 Mac 张量并行:DwarfStar 如何用 RDMA 在两台 M5 Max 上拆分矩阵 跨 Mac 张量并行DwarfStar 如何用 RDMA 在两台 M5 Max 上拆分矩阵【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4DwarfStards4是一个面向 DeepSeek V4 Flash / PRO 与 GLM 5.2 的原生本地推理引擎支持 Metal、CUDA 与 ROCm 后端。它最惊艳的玩法之一是跨 Mac 张量并行用一根 Thunderbolt 5 线缆把两台 M5 Max MacBook 连起来通过RDMA over Thunderbolt把每一层的矩阵计算拆到两块 GPU 上让 128 GB 内存装不下的 4-bit 大模型以全内存驻留的方式跑起来——解码速度甚至比单机 SSD 流式加载还快 3 倍以上。本文将带你从零理解这套机制为什么拆矩阵而不是拆层、RDMA 如何接入 Thunderbolt、以及如何在两台 M5 Max 上完成部署与实测。 先搞懂张量并行与流水线并行有何不同DwarfStar 提供两种多机方案很多人会混淆流水线并行Pipeline张量并行Tensor Parallel拆分单位按层切分A 机跑 0-19 层B 机跑 20 层之后按矩阵权重切分两台机器同时计算同一个 token 的同一层主要收益装下更大的模型、加速长文本 prefill降低每 token 延迟让模型全量驻留内存通信量每层传递完整隐状态每层仅在同步门处交换 16-24 KB 部分和典型场景两台 Mac Studio 拼出 512 GB 跑 PRO Q4两台 M5 Max 拼出 256 GB 跑 188 GiB 的 GLM 5.2关键区别在于张量并行下两台机器在同一时刻处理同一个 token。每个解码 token 内部GPU 内核在图的同步点gate处交换各自算出的部分和加起来才是完整结果。这就把拆大模型变成了拼快机器。 矩阵是怎么拆的专家分片 图内同步门张量并行的核心设计实现见 ds4_tp.h路由专家对半分每台机器各驻留连续一半的路由 MoE 专家权重路由内核永远不触碰对方机器的专家——这正是能拼内存的原因。其余权重复制稠密层、注意力、共享专家、嵌入与输出头在两边各存一份输出头则按词表行切分worker 算完后把自己的 logits 半区回传给 coordinator。同步门GateMetal 图内每层埋入注意力门DS4_TP_GATE_ATTN与前馈门DS4_TP_GATE_FFN两个同步点。GPU 内核把部分和写入一块共享的门板gate slab协议层负责把它发给对端并等待对端数据落盘。锁步镜像coordinator 把每个session_sync/session_eval调用镜像给 worker两台引擎执行完全一致的图序列KV 缓存始终同步。门板布局与帧协议完整定义在 ds4_tp.h控制连接上的 HELLO/帧校验逻辑在 ds4_tp.c。值得注意的是RDMA 库是运行时dlopen加载的——没有 RDMA 栈的机器会自动回落到一条专用全双工 TCP 通道零链接期依赖DeepSeek 的 gate 向量是 16 KB恰好一次 RDMA 消息发完GLM 的 6144 维向量是 24 KB会被拆成两条有序 RDMA 消息。 一键接入RDMA over Thunderbolt 配置步骤RDMA 走的是 Apple 的 Thunderbolt UC 队列对AppleThunderboltRDMA驱动只支持双向 send/recv不支持单边 WRITE这些驱动怪癖都在 ds4_tp.c 中处理好了。每次开机后在两台机器上执行# 1. 提高 GPU 可钉住内存上限默认约 75% RAM专家分片需要 ~97.5 GiB KV/scratch sudo sysctl iogpu.wired_limit_mb120000 # 2. 给 Thunderbolt 成员接口直接配 IPv4桥接 IP 不算数。 # 用 ifconfig 里 active 的那个接口例如 A 机 en1、B 机 en6 sudo ifconfig en1 inet 10.99.0.2/30 alias # 机器 A sudo ifconfig en6 inet 10.99.0.1/30 alias # 机器 B加载模型前先确认 verbs 设备rdma_ctl status ibv_devinfo -v设备必须处于 active 状态并暴露上述地址的 IPv4-mapped GID如::ffff:10.99.0.2。IP 能 ping 通不代表 RDMA 已激活。 两步启动worker 先行coordinator 监听两台机器需要相同的代码树、commit 和 GGUF 路径。张量并行固定 50/50 切分因此不要传--layers。以 GLM 5.2 为例MODELgguf/GLM-5.2-UD-IQ2_XXS_RoutedIQ2XXS_blk78Q2K.gguf # 机器 Bworker先启动coordinator 加载期间会自动重试 ./ds4 -m $MODEL --tensor-parallel --role worker \ --coordinator 10.99.0.2 9911 --transport rdma # 机器 Acoordinator监听 Thunderbolt 成员接口地址不是桥接地址 ./ds4 -m $MODEL --tensor-parallel --role coordinator \ --listen 10.99.0.2 9911 --transport rdma -c 8192 \ -p Tell me something about the sea.常用参数--transport auto|rdma|tcp默认自动探测RDMA 不可用时回退 TCP--rdma-device rdma_en6 --rdma-gid-index 1verbs 设备歧义时手动指定启动耗时约 9 秒/台每个 rank 从 SSD 预取自己的 ~100 GiB 分片并通过 Metal 驻留集钉住。DeepSeek V4 Flash 用各自的 GGUF 即可完全同法运行。 实测性能两台 M5 Max vs 单机官方在两台 M5 Max 128 GB 上测了 GLM 5.2IQ2_XXS188 GiB指标双机张量并行单机 SSD 流式解码~16.8 t/s4k 上下文 15.4~4.8 t/sprefill4096 token~94 t/s~3-5 t/s驻留方式完全内存驻留专家从 SSD 流式加载解码提速约 3.5 倍、prefill 提速约 20-30 倍且代价只是一根雷雳线。作为对照同硬件的流水线并行方案在长 prefill 上有 1.38x-1.85x 加速但会损失约 19% 的解码速度——如果你的目标就是又快又全量驻留张量并行是更优解。⚠️ 说明拆分图是确定性的但浮点归约顺序不同结果不会与单机逐字节一致这是所有张量并行系统的正常现象。 源码与延伸阅读想深入这套实现的读者可以从这些文件入手协议与门板设计ds4_tp.h、ds4_tp.cMetal 图内的 GPU 门回调机制ds4_metal.mMoE 路由内核专家分片的执行侧metal/moe.metal完整部署文档与网络对比TB5/WiFi/VPN 实测表README.md发布前测试矩阵含张量并行回归项QA_BEFORE_RELEASES.md单机构建基准数据与绘图脚本speed-bench/README.md总结张量并行 拆矩阵两台 Mac 同时算同一个 token每层只交换 16-24 KB 部分和RDMA over Thunderbolt是关键微秒级延迟让图内同步几乎免费不可用时自动回落 TCP配置只需三条命令启动只需 worker/coordinator 两条指令收益显著GLM 5.2 解码 ~16.8 t/s比单机 SSD 流式快 3.5 倍且完全内存驻留。手上有两台 128 GB 的 Mac一根 Thunderbolt 5 线缆就是最便宜的大显存方案。【免费下载链接】ds4DeepSeek 4 Flash and PRO local inference engine for Metal, CUDA and ROCm项目地址: https://gitcode.com/GitHub_Trending/ds4/ds4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表