@akshay_pachaar: 这个推理引擎运行 LLM 比 llama.cpp 快 4 倍:(Qwen3.5-9B 在 16GB Mac 上达到 92 tokens/s)我在一台…

X AI KOLs Following 工具

摘要

基准测试帖:Mirai 开源的推理引擎 Uzu 在 16GB M5 MacBook Pro 上运行 Qwen3.5-9B 达到 92.1 tokens/s——比 llama.cpp(22 tok/s)和 MLX(25.1 tok/s)快约 4 倍——通过使用基于树的投机解码和 Weaver 草稿模型,突破了普通本地解码的内存带宽瓶颈。

这个推理引擎运行 LLM 比 llama.cpp 快 4 倍: (Qwen3.5-9B 在 16GB Mac 上达到 92 tokens/s) 我在一台基础款 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 都需要再遍历一次模型。每次遍历约有 5.2 GB 的权重需要通过内存传输。 基础款 M5 的内存带宽约为 153 GB/s。 每次遍历只产出一个 token 的情况下,理论上限约为 153 ÷ 5.2,即 29 tokens/s,无论 GPU 计算多快。 Uzu 通过针对 Apple Silicon 优化的投机解码突破了这一上限。 投机解码使用一个较小的草稿系统来预测多个未来的 token。然后由完整的 9B 模型一次性校验这些预测,而不是为每个 token 单独遍历模型来生成。 Uzu 在两个方面更进一步: → 它一次草拟最多 16 个位置,并使用 Weaver 将独立的猜测转化为连贯的序列。 → 它以树状结构校验多个可能的序列,然后只为完整模型接受的路径提交状态。 9B 模型仍然控制着最终输出。Uzu 只是在每次遍历中给它提供了更多有价值的待批准工作。 在我的运行中,9B 模型每次遍历平均产出 7.5 个输出 token。 普通解码每次遍历恰好产出 1 个。 这就是 Uzu 在每次遍历上限仅约 29 个 token 的硬件上达到 92.1 tokens/s 的原因。 引擎的其他部分也是围绕这条路径设计的。Uzu 自带量化的检查点,在 M5 芯片上其 Metal 内核通过 GPU 的加速 int8 矩阵路径执行校验。 它是 Mirai 开源的推理引擎,提供 Rust、Swift、Python 和 TypeScript 的绑定。 仓库地址:https://github.com/trymirai/uzu (别忘了点星 🌟) 我撰写了完整的深度分析,解释为什么本地推理受限于内存带宽,以及 Uzu 如何突破这一限制,附有可复现的结果和代码。 文章引述如下。
查看原文
查看缓存全文

缓存时间: 2026/10/09 10:31

这个推理引擎比 llama.cpp 快 4 倍运行 LLM:

(Qwen3.5-9B 在 16GB Mac 上达到 92 tokens/s)

我在一台基础款 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 通常需要再对模型进行一次完整的前向传播。这次前向传播需要将大约 5.2 GB 的权重从内存中流式读取。

基础款 M5 的内存带宽约为 153 GB/s。

每次前向传播生成一个 token 的情况下,理论上限大约是 153 ÷ 5.2,即 29 tokens/s,无论 GPU 计算速度多快。

Uzu 通过针对 Apple Silicon 优化推测解码突破了这一上限。

推测解码使用一个较小的草稿模型来提前预测多个未来 token。然后由完整的 9B 模型一次性校验这些预测,而不是逐个 token 通过独立的前向传播来生成。

Uzu 在两个方面进一步推进了这一思路。

→ 它最多草拟 16 个位置,并使用 Weaver 将独立的猜测转化为连贯的序列。

→ 它将多条可能的序列为一棵树进行验证,然后仅为完整模型接受的路径提交状态。

9B 模型始终控制最终输出。Uzu 只是在每次前向传播中为它提供更多有用的待审批工作。

在我的测试中,9B 模型的每次前向传播平均产出 7.5 个输出 token。

普通解码每次恰好产出 1 个。

这就是 Uzu 在每次前向上限仅约 29 tokens/s 的硬件上达到 92.1 tokens/s 的原因。

引擎的其他部分也围绕这条路径设计。Uzu 自带量化的 checkpoint,在 M5 芯片上其 Metal 内核通过 GPU 的加速 int8 矩阵路径执行验证。

它是 Mirai 开源的推理引擎,提供 Rust、Swift、Python 和 TypeScript 的绑定。

仓库地址:https://github.com/trymirai/uzu

(别忘了点 🌟 Star)

我写了一篇完整的分析,解释本地推理为何受内存带宽限制,以及 Uzu 如何突破这一瓶颈,包含可复现的结果和代码。

文章全文如下。

相似文章

@akshay_pachaar:投机解码详解(用得好,LLM 推理速度可提升 4 倍)本地 LLM 通常每次……

X AI KOLs Timeline

这篇帖子通俗解释了投机解码(Speculative Decoding)的工作原理——草稿模型预测、目标模型并行验证并以概率方式接受或纠正——并介绍了开源引擎 Uzu,它在 Apple Silicon 上结合并行起草、连贯草稿路径与免回滚验证,使 4-bit Qwen3.5 9B 的推理速度从 llama.cpp 的 22 tokens/s 提升到 92–117 tokens/s。

@lxfater:有人用一块 RTX 3090 自制推理引擎,让 Qwen 27B 飞速跑出每秒 273 个 token!这速度……

X AI KOLs Timeline

一位开发者(coffeecup2020)打造了一款名为 tqllm 的自定义推理引擎,在 RTX 3090 上运行 Qwen3-27B(TQ3_4S-v2 量化版本),达到了惊人的每秒 273 个 token——文中将这一速度与人类阅读速度作对比,并指出近期出现了一波轻量级 LLM 推理方案的发布潮,包括在 12GB 显存上运行量化版 Qwen3.8-Flash-Next 的 Strata。

@akshay_pachaar: https://x.com/akshay_pachaar/status/2108252095380140203

X AI KOLs Timeline

文章介绍开源推理引擎 Uzu(Mirai 出品),通过最多提前草拟 16 个 token 的推测解码与为 Apple M5 优化的 kernel,在 M5 芯片上运行 4-bit Qwen3.5 9B 达到 92-117 tokens/s,远超 llama.cpp 与 MLX 的 22-25 tokens/s,并解释了 batch-one 解码的内存带宽瓶颈原理。