AI Pulse

64GB Mac跑95.5GiB Qwen:41–52tok/s

本教程将带你在一台 64GB 统一内存的 Mac 上,使用 Slipstream 推理引擎直接运行已有的 Qwen3.8-Flash-Next V3 模型(95.5 GiB)。与 llama.cpp 相比,解码速度从 ~23.1 tok/s 提升到 41–52 tok/s(平均 1.76 倍加速),并且长上下文(最高 130,000 token)下性能不会大幅下降。如果你还没有 V3 模型,步骤中也包含下载方法。

相关开源资源:

* Slipstream Engine on GitHub
* Original V3 Model on Hugging Face
* Optional Swift KV-Sparse Model on Hugging Face

---

1. 如何在 Slipstream 上运行你已有的 V3 模型

如果你已经下载过上一篇文章提到的模型(存放在 ~/models/qwen38-flash-next-v3),可以直接让 Slipstream 指向它,无需重新下载。

第一步:克隆仓库并编译(1 分钟内完成)

这一步会从 GitHub 获取 Slipstream 源码,并编译出可执行的推理引擎。

git clone https://github.com/npanj/slipstream.git
cd slipstream
make -j4

第二步:下载模型(如果你还没有)

如果你还没有 V3 模型,用 Hugging Face CLI 下载全部 3 个 GGUF 分片和 MTP 草稿头,总共约 95.5 GiB。

huggingface-cli download nitinpanj/qwen38-flash-next-v3 \
    --local-dir ~/models/qwen38-flash-next-v3

第三步:提高 GPU 有线内存上限并启动服务

64GB Mac 上需要先提高 GPU 有线内存上限(每次开机执行一次),然后启动 Slipstream 服务。这一步是为了让 GPU 能映射足够的显存来容纳模型权重和 KV 缓存。

# 每次开机后执行一次(64GB Mac 必需):
sudo sysctl iogpu.wired_limit_mb=59392

# 启动服务,指向你已有的模型:
./slipstream serve --model ~/models/qwen38-flash-next-v3 --port 8090

> 首次运行提醒:第一次启动时,Slipstream 会检测多分片 GGUF 文件,并准备优化后的流式数据包,写入 <model>/prepared/ 目录,大约需要 5–7 分钟。之后每次启动大约只需 10–15 秒。

服务启动后,会暴露一个标准 OpenAI 兼容接口:http://127.0.0.1:8090/v1/chat/completions,可直接用于 curl、Oh My Pi (omp)、Claude Code 或 OpenCode。

---

2. 速度对比:llama.cpp 分支 vs. Slipstream(同一 V3 检查点)

下面是在同一台 M5 Pro(64GB 统一内存,温度 0.0)上,用完全相同的 95.5 GiB 模型文件运行 6 个推理和编码任务的直接对比。

领域 / 任务Prompt 任务llama.cpp 分支Slipstream加速比llama.cpp TTFTSlipstream TTFT
数学推理GSM8K(鸡蛋问题)24.0 tok/s43.6 tok/s1.82x4,024 ms2,337 ms
数学推导MATH-500 系列($p - q$)24.3 tok/s43.1 tok/s1.77x1,655 ms1,587 ms
约束逻辑3 椅子演绎25.4 tok/s46.0 tok/s1.81x1,469 ms1,042 ms
Python 编码merge_intervals($O(N log N)$)19.7 tok/s35.0 tok/s1.77x1,507 ms1,070 ms
系统编码Rust CSV parser22.7 tok/s37.5 tok/s1.65x1,257 ms859 ms
技术写作Multi-head attention22.5 tok/s39.4 tok/s1.75x1,267 ms843 ms
平均值全部 6 个任务23.1 tok/s40.8 tok/s1.76x1,863 ms1,290 ms

TTFT 指“首 token 生成时间”(Time To First Token),数值越低,响应越快。

Slipstream 更快的三个原因:

1. 异步层预取(fcntl(F_RDADVISE)):在 llama.cpp 中,同步读取缺失的专家矩阵会因 NVMe 延迟(每块约 475 ms)而阻塞 GPU。Slipstream 使用非阻塞的读前提示,在 GPU 仍在执行上一层时,将后续专家层从 SSD 流式加载到内存,使 prefill 暂存延迟降低 28%。
2. 混合 MTP + Prompt Lookup 猜测解码:在工具调用和代码生成过程中,PLD(Prompt Lookup Decoding,提示查找解码)能在 50 ns 内匹配提示锚点,且零分配,避免了草稿被频繁拒绝。这使工具调用解码从 5.6 tok/s 提升到超过 45 tok/s。
3. Metal GPU 映射的 n-gram 表:llama.cpp 在 prefill 阶段访问 26.8 GiB 的 n-gram 表时会发生页错误。Slipstream 直接在 Metal kernel 中映射和聚合 n-gram embedding。

---

3. 上下文扩展:最长 130,000 token 的真实遥测数据

在标准 Transformer 中,随着上下文增长,KV 缓存膨胀、内存带宽饱和,解码速度会急剧下降。Qwen3.8-Flash-Next 凭借混合架构避免了这个问题:

* 48 层循环线性 DeltaNet 层(固定 $128 \times 128$ 隐藏状态,内存随上下文呈 $O(1)$ 增长)。
* 仅 16 层全注意力层。

以下是在 M5 Pro(64GB)上,进行真实 agent 编码会话期间,3,086 个实时请求的实测数据:

上下文范围(Tokens)实时运行数平均解码速度中位数 (p50)峰值解码速度平均 TTFT说明
< 1,00031441.5 tok/s41.9 tok/s59.8 tok/s2.16 s短基线
1k – 4,0002141.0 tok/s42.5 tok/s64.5 tok/s5.26 s小文档
4k – 8,0005843.6 tok/s43.2 tok/s67.2 tok/s7.36 s代码评审轮次
8k – 16,00011743.6 tok/s44.6 tok/s58.2 tok/s7.91 s多文件上下文
16k – 32,00056238.2 tok/s40.9 tok/s58.0 tok/s13.59 s深度 agent 会话
32k – 64,0001,02935.0 tok/s37.5 tok/s55.6 tok/s13.24 s大型仓库重构
64k – 96,00065032.4 tok/s34.7 tok/s53.9 tok/s12.81 s多轮对话记录
96k – 130,00036432.9 tok/s33.3 tok/s43.8 tok/s7.95 s缓存命中的深层轮次

核心结论:即使在 130k 上下文下,解码速度仍能保持在 33–44 tok/s 之间。也就是说,130k 上下文的生成速度,比原始 llama.cpp 在 500 token 提示词上还要快。

---

4. 可选:Swift 版 KV-Sparse 模型变体

如果你想获得更高的推理准确率和更低的 KV 缓存内存占用,可以使用这个可选的 Swift 变体:Swift-Qwen3.8-Flash-Next-V3。

Swift 版改变了什么:

* KV-Sparse 注意力:用从 Swift-1.5 蒸馏出的 KV-sparse 层替换标准密集注意力,降低长上下文下的内存压力。
* 拼接的 Q8 捐赠骨干网络:将 686 个高精度 Q8 张量拼接进常驻骨干层,以获得更清晰的表征。
* 简洁推理:通过蒸馏消除了深层上下文中的重复思维循环。

两个模型在 Slipstream 上使用完全相同的引擎命令运行。以下是在 145 个配对评估问题上的对比(温度 0.0,随机种子 1234):

领域 / 基准题目数原版 Flash-Next V3Swift-Flash-Next V3准确率差异原版解码速度Swift 解码速度
AIME 20252045.0% (9/20)45.0% (9/20)0.0%44.3 tok/s44.3 tok/s
MATH-500 (L4–5)3560.0% (21/35)62.9% (22/35)+2.9%44.8 tok/s44.8 tok/s
GPQA Diamond3545.7% (16/35)54.3% (19/35)+8.6%44.8 tok/s44.8 tok/s
GSM8K2596.0% (24/25)96.0% (24/25)0.0%45.6 tok/s45.6 tok/s
HumanEval2592.0% (23/25)92.0% (23/25)0.0%40.6 tok/s40.6 tok/s
Hard Systems Logic5100.0% (5/5)100.0% (5/5)0.0%39.2 tok/s39.2 tok/s
总体14567.6% (98/145)70.3% (102/145)+2.8%43.9 tok/s44.4 tok/s

如果要运行 Swift 版模型,只需更换下载目录和服务参数:

huggingface-cli download nitinpanj/Swift-Qwen3.8-Flash-Next-Q4_0-Q8out-v3-GGUF \
    --local-dir ~/models/swift-qwen38-flash-next-v3

./slipstream serve --model ~/models/swift-qwen38-flash-next-v3 --port 8090

---

5. 为 Qwen4 打下的基础

Slipstream 的核心原语全部围绕这种混合架构(线性循环 + 稀疏注意力 + 路由 MoE 专家)构建:

* 512 路由稀疏 MoE 流式传输 + SSD 预取
* QSA(Quasi-Sparse Attention,准稀疏注意力)索引器与选择 kernel
* 超连接混合与逐层 embedding 聚合
* Metal GPU 映射的 n-gram 表聚合
* 单通道推测验证(PLD 与 MTP)

如果 Qwen4 采用类似的蓝图(混合线性循环 + 稀疏注意力 + 路由 MoE 专家),Slipstream 应该能第一时间在消费级统一内存硬件上本地运行 Qwen4。

---

6. 测试硬件与移植到 NVIDIA / AMD

* 测试硬件:所有测试和基准测试均在 Apple MacBook Pro(M5 Pro,64GB 统一内存,2TB SSD) 上完成。
* CUDA / ROCm 移植:作者目前没有现代 NVIDIA 或 AMD GPU 硬件,无法自行构建或测试 CUDA/ROCm 后端。
* 如果你想帮助移植:如果你有 NVIDIA 或 AMD 硬件,并希望将专家流式传输和混合推测解码带到 Linux/Windows,作者乐意合作移植。欢迎在仓库中提 issue,或直接私信。

---

7. 致谢与上游项目

* Splash 团队(Incoai):感谢 Splash 的创建者。他们的 C++ Metal 推测解码设计和内存架构是本工作的基础。作者将准备一个干净的 PR,把这些 Flash-Next 和 SSD 流式扩展提议合并到 Splash 上游仓库。
* ds4 团队:感谢他们对 Metal 路由器数值精度(Taylor 多项式 softplus 展开)和流式调度设计的洞见。
* Qwen 团队:感谢训练 Qwen3.8-Flash-Next 并发布混合线性 MTP 架构。
* ukisai:感谢 Swift-1.5 蒸馏工作,使 KV-sparse 推理成为可能。
* bartowski 与 unsloth:感谢捐赠的量化权重和量化工具。
* mihailescu2m:感谢在 llama.cpp 中最初的专家流式工作。

阅读原文
📚 相关主题 本地大模型开源

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新