AI Pulse
📡 X 信号

Uzu推理引擎在苹果M5上运行LLM速度比llama.cpp快4倍

Uzu推理引擎在苹果M5上运行LLM速度比llama.cpp快4倍

这个推理引擎运行大语言模型的速度是 llama.cpp 的 4 倍:(在 16GB Mac 上运行 Qwen3.5-9B 达到 92 token/s)

我在基础款 M5 MacBook Pro 上依次用三个本地推理引擎运行了 Qwen3.5 9B。
→ llama.cpp 达到 22.0 token/s
→ MLX 达到 25.1 token/s
→ Uzu 达到 92.1 token/s

视频展示了三个运行过程的并排对比。

前两个结果并不意味着 llama.cpp 或 MLX 优化做得不好。它们二者都已经接近普通本地解码的物理极限了。

每个新token生成通常都需要经过模型一次完整前向传播。这个过程会把大约 5.2 GB 的权重流过内存。基础款 M5 的内存带宽约为 153 GB/s。在一次前向传播生成一个token的情况下,理论上限大约是 153 ÷ 5.2,即 29 token/s,不管 GPU 计算速度有多快。

Uzu 通过为 Apple Silicon 优化投机解码突破了这个上限。投机解码使用一个更小的草稿模型来预测多个未来token。然后完整的 9B 模型一次性检查这些预测结果,而不用每个token都单独做一次前向传播。

Uzu 从两个方面进一步推进了这项技术。
→ 它最多可以生成 16 个位置的草稿,并用 Weaver 将独立预测转换为连贯序列。
→ 它将多个可能序列组织成树进行验证,然后只保留完整模型接受的路径的状态。

9B 模型始终掌控最终输出。Uzu 只是让它在每次前向传播中能验证更多有用的内容。在我的测试中,9B 模型每次前向传播平均生成 7.5 个输出token,而普通解码只能生成 1 个。这就是 Uzu 能在单次前向单token上限约为 29 的硬件上达到 92.1 token/s 的原因。

推理引擎的其余部分也围绕这个思路设计。Uzu 自带自己的量化检查点,在 M5 芯片上,它的 Metal 内核通过 GPU 加速的 int8 矩阵路径运行验证。

它是 Mirai 开发的开源推理引擎,提供 Rust、Swift、Python 和 TypeScript 绑定。仓库地址:(别忘了点星 🌟)

我写了一篇完整的分析,讲解为什么本地推理受内存限制,以及 Uzu 如何突破这个限制,附带可复现的结果和代码。文章内容附在下方。

质量确实重要,但本次测试只测推理吞吐量。三个测试都使用同一个 Qwen3.5 9B 基础模型,只是它们的 4 比特量化方法不同。质量测试需要单独用有代表性的提示集和一致的评分标准做基准测试。当然,质量很大程度上取决于你使用的量化方式。

本次测试三者用的完全是同一个模型,结果可复现。你可以查看下方文章,里面有所有代码。

本文由 AI 翻译自英文原帖,技术名词保留英文。

查看 X 原帖

订阅 AI Pulse

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