Mirai Labs 开源 uzu,本地跑大模型速度快 4 倍
本地大模型推理迎来重大突破!这款全新推理引擎运行大模型的速度比 llama.cpp 快 4 倍:我在基础款 M5 MacBook Pro 上用三款引擎运行 Qwen3.5 9B 模型:
- llama.cpp:22.0 tokens/s
- MLX:25.1 tokens/s
- uzu:92.1 tokens/s
下面的视频并排展示了三次运行的过程。
前两个数值并不意味着 llama.cpp 或 MLX 构建得不好。但两者都恰好处于本地解码的硬性限制之下。当大模型生成文本时,每个新 token 都需要完整运行一次模型,而这次运行需要从内存中读取模型的全部权重。基础款 M5 的内存读取速度约为 153 GB/s。一个 4-bit 9B 模型的权重约为 5.2 GB。因此,在每次运行生成一个 token 的情况下,无论 GPU 计算速度多快,上限大致为 153 ÷ 5.2 ≈ 29 tokens/s。
uzu 通过每次运行生成多个 token 而非一个来突破这一上限:
↳ 一个小型草稿模型(DFlash)一次性提出接下来 16 个位置的候选 token。
↳ 一个微型适配器(Weaver,56.7M 参数)从左到右在候选 token 中进行选择,使猜测形成连贯的文本,并保留几个替代分支形成树状结构。
↳ 9B 模型在一次运行中检查整棵树,并保留它认可的最长路径。
主模型仍然决定最终输出的每一个 token。GitHub 仓库:(别忘了给它点个星 🌟)
在我的运行中,9B 模型每次运行平均生成 7.5 个 token。普通解码每次运行恰好生成 1 个。权重和内核也是围绕这一点设计的。uzu 自带 4-bit 检查点,在 M5 芯片上,它在 GPU 的 int8 矩阵路径上运行验证步骤。
uzu 是 Mirai Labs 开发的开源推理引擎,使用 Rust 编写并配备 Metal 内核。它提供 Swift、Python、TypeScript 和 Rust 绑定,因此同一引擎可以在 Mac 或 iOS 应用中运行。我在上面分享了 GitHub 仓库。如果你想深入了解,我的联合创始人写了一篇详细分析,解释了为什么本地推理受内存限制,以及 uzu 的推测解码如何突破这一限制。请在下面阅读。
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖