Meta 在 10 月 15 日放出 Muse Spark Open 的开放权重:816B 总参 / 42B 激活的 MoE,原生多模态输入,1M 上下文,官方称"迄今最强的美国开放权重模型"。真正让它在社区里传开的是另一句宣传语——两台 M5 Ultra Mac Studio 就能跑。
这句话成立,但成立的边界很窄。它其实是"刚好放得下、勉强够用一个开发者"的意思,并非"能在桌面上流畅跑一个大模型"。把这两件事分开算,才能判断这套配置对你有没有意义。
先看权重分布。vLLM 团队的拆解给出 816B 的构成:62 层全部是 MoE 层,每层 256 个专家,专家权重合计 799B;注意力 13.5B;MoE 的 latent 投影 4.2B;嵌入与输出层 3.3B;另有独立的约 2B 视觉编码器和小音频编码器。
关键点在于:MoE 每 token 只激活 42B,但那 799B 专家权重全部要驻留在内存里,因为下一个 token 可能路由到任何 8 个专家。Apple 的测算很直接:BF16 下光参数就要超过 1.6TB,4bit(NVFP4)量化后降到约 493GB——单台 Mac Studio 统一内存上限是 512GB,再扣掉推理中间激活和 macOS 自身的开销,装不下。
于是"两台"不是营销上的凑数,而是内存容量算出来的下限:两台 512GB 合起来约 1TB,权重放得下,剩下的空间留给 KV 缓存。第三方核对过的 NVFP4 checkpoint 在磁盘上约 537GB。
这也是整件事最容易误读的地方:决定这套方案可行性的是内存容量和带宽,而不是 GPU 算力。42B 激活参数按 4.5bit 算每 token 要读约 23GB,M5 Ultra 的 1.2TB/s 统一内存带宽(M3 Ultra 是 819GB/s)就是硬指标。
这三个设计原本是冲着多卡 GPU 集群去的,但恰好也把 Mac 这条路变得可行。
压缩 MoE 块(latent MoE)。 每层有 256 个专家共享的 pooler 和 unpooler 两个矩阵:8192×4096 的 pooler 把 token 宽度砍一半再送进专家,unpooler 之后还原。专家内部全程在 4096 维上算,两个专家投影层的参数量因此减半;路由(router)仍然读全宽向量。Baseten 的解读是,这同时降低了参数量和跨卡通信量——后者对流水线并行尤其重要。
混合注意力。 层与层之间按 4 层一个循环:三层做 2048 token 的滑动窗口注意力(SWA),第四层做全上下文注意力,且循环锚定在尾部,保证最后一层一定是全注意力层。62 层里 46 层是窄层、16 层是宽层,窄层只保留最近的 KV。Baseten 给出的数字是:长上下文下 KV 缓存开销降到约 3.7 分之一。
按 16 个 KV head、head dim 64、BF16 计算,每 token 每层约 4KiB;16 个全注意力层就是每 token 64KiB 的边际开销,46 个窄层被 2048 的窗口封顶。第三方据此推算的每序列 KV 占用:128K 上下文约 8.4GiB(若 62 层都是全注意力则约 31GiB,正好是 3.7 倍关系),1M 上下文约 64GiB。这个量级决定了 1M 上下文是"规格"而不是"日用配置"——Apple 自己的基准也只测到 65,536 token。
Sandwich normalization。 归一化放在每个 block 前后各一次(x + post_norm(F(norm(x)))),而不是常见的单侧。有意思的是,Apple 明说这种"专家输出单独归一化"会在张量并行下增加 prefill 阶段的通信量——后面那个反直觉的基准结果就和它有关。
快速估算长期内存占用的公式:
# 每序列 KV 缓存(bytes),BF16,16 个 KV head、head dim 64、46 层 SWA 窗口 2048
def kv_bytes(L, kv_heads=16, hd=64, bpe=2, n_full=16, n_swa=46, window=2048):
per_tok_per_layer = 2 * kv_heads * hd * bpe # 4096 bytes
return per_tok_per_layer * (n_full * L + n_swa * min(L, window))
print(kv_bytes(131_072) / 2**30) # ≈ 8.4 GiB
print(kv_bytes(1_048_576) / 2**30) # ≈ 64 GiBApple 那篇研究笔记给出了两条路,都靠 macOS 26.2 引入的 Thunderbolt 5 上的低延迟 RDMA 驱动,MLX v0.30.1 起在这层驱动上提供通信集合 jaccl(读作 "jackal"),并用 mlx.launch 一键跨机拉起任务。每两台机器之间用两根 Thunderbolt 线对接,目的是把链路带宽翻倍。
流水线并行(按深度切):一台跑前一半层,一台跑后一半层,中间只传一次中间输出。"实现极其简单,几乎不用改代码",decode 速度也与单机接近,因为层本来就是串行算的。额外收益在 prefill:MLX 把长上下文切块(例子中是 8192 token 一块)后,机器 B 算第 k 块的后面几层时机器 A 可以算第 k+1 块的前面几层,65,536 token 上下文下 prefill 最高快约 1.8 倍。
张量并行(按宽度切):每台机器拿每层的一部分,层内计算并行。实现复杂得多,且每个 token、每一层都要广播输入、汇总输出——大量小消息,因此低延迟 RDMA 是它能否有收益的前提。
对应的启动命令(来自 Apple 的方法说明):
# 流水线并行:两台机器
mlx.launch --hostfile hostfile.json --backend jaccl --env MLX_METAL_FAST_SYNCH=1 -- \
mlx_lm.benchmark --model meta-models/Muse-Spark-Open-816B-A42B-NVFP4 \
-p 8192 -g 128 -b 1 --prefill-step-size 8192 --pipeline
# 张量并行:去掉 --pipeline,机器数与 hostfile 里的节点数一致--backend jaccl 选 RDMA over Thunderbolt 后端,MLX_METAL_FAST_SYNCH=1 是实验性的 CPU-GPU 快速同步开关,减少"CPU 发起 TB 通信、GPU 做计算"之间的协调开销。
Apple 公布的实测(batch size 1,生成 128 token):
配置 | 8K 上下文 TTFT | 8K decode | 64K 上下文 TTFT | 64K decode |
|---|---|---|---|---|
两台,流水线 | 8.4 s | 15.74 tok/s | 47.6 s | 14.37 tok/s |
两台,张量 | 8.2 s | 24.99 tok/s | 70.3 s | 23.84 tok/s |
四台,张量 | 4.8 s | 36.73 tok/s | 40.6 s | 34.66 tok/s |
注意表中几个"不漂亮"的数字:两台机器做张量并行,在 64K 上下文下首 token 要等 70.3 秒,比流水线的 47.6 秒还慢 48%。Apple 的解释是机器数少时张量并行的通信开销会吃掉计算收益,而 Muse Spark Open 的专家归一化又额外增加了 prefill 通信;机器加到四台才把这个账算正(40.6 秒)。另外那根第二根线也有价格:四台机器、64K 上下文时,每链路单线 TTFT 约 50.5 秒,双线降到 40.6 秒。
decode 侧更简单:36.73 tok/s 已经高于人类平均阅读速度,但这是 8K 上下文、128 token 的最好成绩;长上下文下 decode 只掉到 34.66,掉得不多——因为 decode 受内存带宽约束,prefill 受算力约束。
如果只是聊天,36 tok/s 完全够用。但官方定位是 agentic coding——读代码库、改文件、跑测试、看输出再改。这类负载的特征是输入远比输出长,每一步都在重读大段上下文。
Apple 的数据摆在这里:64K 上下文、四台机器,首 token 40.6 秒;生成 128 token 再花约 3.7 秒,单步合计约 44 秒。一个任务几十次模型调用,就是几十分钟。两台机器流水线方案是 56 秒左右一步。这还没算 agent 框架自己的排队和工具执行时间。
对照 GPU 与托管路线,差距更清楚:
换句话说,Mac 方案是单用户低并发方案,不是吞吐方案。batch 1 的测法也说明 Apple 没打算用它服务多用户。
粗算一下效率也能看出余量在哪:42B 激活参数按 4.5bit 约 23GB/token,1.2TB/s 理论上一秒能读 50 多遍,实测两台流水线 14.37 tok/s 意味着每 token 70ms、有效带宽只有三百多 GB/s 量级——MoE 的稀疏 gather、专家分布在不同机器上、批大小只有 1,都在浪费带宽。这是"能跑"和"跑得好"之间的距离。
硬件:256GB 的 M5 Ultra Mac Studio 起价 10,799 美元,带 2TB 存储超过 11,000 美元;Meta 演示用的 512GB 版本要到 10 月底才上市,价格未公布。社区按 Apple 定价习惯估两台约 2.8–3 万美元,四台 256GB 的配置则要 3.8 万美元以上。这是买断的资本支出,换掉的是按 token 计费的云账单——Fireworks 上该模型的标价是每百万 token 输入 1.25 美元、缓存输入 0.15 美元、输出 4.25 美元。按这个价格,一路 15 tok/s 跑满一小时的输出也就几毛美元;也就是说,除非你有很稳的高负载或很强的数据驻留要求,纯从成本看自建并不划算。
许可:Muse Model License 不是标准开源协议。开发者改造模型、把模型嵌进自己产品里不收费用;但把它作为托管服务出售、且过去 12 个月毛收入超过 2,000 万美元的公司,需要单独和 Meta 签约。产品上要标注 "Built with Muse Spark Open",军事和关键基础设施用途禁止。有开发者提到,这类"大头单独签"的条款通常会让公有托管商之间的价格竞争变弱。
Meta 自己的对比表(各家用自己的 harness:Muse Spark 用 Muse Code,Claude Opus 5 用 Claude Code):
所以它的卖点是"长任务 + 工具编排 + 多模态输入(截图对比、录屏复现、语音直接输入)",而不是刷榜。另外要提醒:这些是 Meta 自报数字,且各家用不同 harness,横向比较的可比性有限。
适合:数据不能出内网的团队(代码库、法务/医疗文档、视频素材);负载稳定、能承受三四万美元一次性投入的 1–5 人小组;需要在离线环境跑 agent 的验证场景;把"能不能在本机跑前沿级模型"当作能力储备而非日常主力。
不适合:要多用户并发的服务;真正需要 1M 上下文常驻的工作流(1TB 内存里近 500GB 是权重,单序列 1M 上下文的 KV 就要 64GB 量级,留给激活的余量很薄);对首 token 延迟敏感的交互式补全;预算敏感只想试效果的人——直接调 API 更实际。
hostfile.json,先跑 mlx_lm.benchmark 复现 Apple 的表——两台先测流水线(--pipeline),四台测张量并行。用你自己真实的上下文长度测,别信 8K 的数字。一句话总结:Muse Spark Open 证明的不是"前沿模型已经能上桌面",而是"内存容量和互联带宽,正在成为本地推理唯一的硬门槛"——权重是免费的,喂得动它的内存不是。而当你为这块内存付完钱,会发现自己买到的是一个非常好的单用户、离线、合规优先的 agent,而不是一台小型推理服务器。
创作说明:本文在资料整理与成文中使用了 AI 辅助(DeepSeek),经作者审阅后发布,作者对内容负责。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。