Paper

Orthrus 论文速读:双视图扩散架构实现 7.8x 无损并行解码加速

10 min read ·

一句话总结:Orthrus 用最朴素的方式解决了扩散语言模型的核心难题——不要重新训练整个模型,而是在冻结的自回归 LLM 上挂一个轻量扩散头,让两个视图共享同一份 KV Cache,各司其职。

论文背景

Orthrus: Dual-View Parallel Decoding Makes Language Model Inference Faster(arXiv 2605.12825)于 2026 年 5 月 12 日发表,作者团队来自 Adobe Research 和俄勒冈大学。论文直面一个被反复讨论但尚未优雅解决的问题:如何在不牺牲生成质量的前提下,打破自回归解码的顺序瓶颈?

这个问题之所以难,是因为过去的尝试都在某个维度上做了妥协:

Orthrus 的核心洞察是:不需要在自回归和扩散之间二选一,可以让它们并行共存在同一个模型中

双视图架构解析

整体设计思路

Orthrus 的架构可以用一句话概括:一个骨干,两个头,共享 KV Cache

具体来说:

  1. 骨干网络:一个标准的预训练自回归 LLM(如 Qwen3),完全冻结,不修改任何参数
  2. 自回归视图(AR View):原始的因果注意力解码头,负责上下文预填充和 KV Cache 构建
  3. 扩散视图(Diffusion View):新增的轻量级可训练模块,负责并行 token 生成

两个视图共享同一份 KV Cache,这是整个设计的精髓所在。

架构的文字描述

想象一条双车道公路。左车道(自回归视图)是一辆精密但缓慢的工程车,它逐站停靠,在每个位置精确测量并放置路标(KV Cache)。右车道(扩散视图)是一辆高速巡航车,它读取左车道放好的路标,一次性驶过多个站点(并行生成多个 token)。

关键约束:右车道只读路标,不写路标。所有路标的精度完全由左车道保证。这就是双视图共享 KV Cache 能保证无损的根本原因。

扩散头的具体实现

扩散头并非一个完整的扩散模型,而是一个嫁接在 LLM 最后若干层上的轻量模块。它的工作流程如下:

Step 1: 自回归头对输入上下文做标准预填充,构建 KV Cache
Step 2: 扩散头读取 KV Cache,初始化一组噪声 token 嵌入
Step 3: 扩散头执行 T 步去噪(T 通常为 5-10 步)
Step 4: 去噪后的 token 嵌入通过 LM head 映射到词表
Step 5: 精确共识机制验证生成的 token 序列
Step 6: 接受通过验证的 token,拒绝的部分回退给自回归头

这个流程中最关键的是第 5 步——精确共识机制。

精确共识机制

精确共识(Exact Consensus)是 Orthrus 保证无损推理的核心。其原理是:

  1. 扩散头并行生成 N 个候选 token:[t_1, t_2, ..., t_N]
  2. 自回归头对这 N 个 token 做一次前向传播验证
  3. 从左到右扫描,找到第一个与自回归头预测不一致的位置 k
  4. 接受 [t_1, ..., t_{k-1}],丢弃 [t_k, ..., t_N]
  5. 用自回归头从位置 k 继续生成

这与投机解码的验证机制类似,但关键区别在于:Orthrus 的扩散头和自回归头共享同一个骨干网络的隐状态,因此扩散头的”命中率”远高于独立草稿模型。论文报告平均接受长度为 6-8 个 token,而典型投机解码的接受长度仅 3-4 个。

为什么双视图比单一范式更优

理解 Orthrus 的价值,需要对比它与纯扩散和纯投机解码方法的差异。

与纯扩散语言模型的对比

维度纯扩散模型(MDLM / DFlash)Orthrus
训练成本从头训练,数千 GPU 小时微调 16%参数,数十 GPU 小时
生成质量低于同规模 AR 模型严格等价于基座 AR 模型
长上下文40K+ 严重退化40K+ 保持一致吞吐量
收敛保证无理论保证精确共识保证无损
内存开销需要完整的扩散模型参数O(1) 额外内存

纯扩散模型的根本问题是:它试图用扩散过程替代自回归过程,但自然语言的因果依赖结构天然适合自回归。Orthrus 的聪明之处在于不替代,而是增强——让自回归处理它擅长的精确上下文建模,让扩散处理它擅长的并行生成。

与投机解码方法的对比

维度投机解码(EAGLE-3)Orthrus
额外模型需要独立草稿模型无需额外模型
内存开销草稿模型 + 双份 KV CacheO(1) 额外内存
平均接受长度3-4 token6-8 token
长上下文性能随上下文增长退化稳定
骨干依赖草稿模型需匹配目标模型直接嫁接在目标模型上

投机解码的瓶颈在于草稿模型和目标模型之间的”分布对齐”问题。草稿模型越小,速度越快但命中率越低;草稿模型越大,命中率越高但速度优势越小。Orthrus 跳出了这个困境——扩散头直接在目标模型的隐状态上工作,天然与目标模型对齐。

实验结果与性能分析

核心性能数据

论文在 Qwen3-1.7B、Qwen3-4B、Qwen3-8B 三个骨干上做了全面评测。以下是关键结果:

模型方法加速比生成质量(MT-Bench)额外参数量
Qwen3-8B基线(AR)1.0x8.2-
Qwen3-8BEAGLE-33.2x8.2+2.1B(草稿模型)
Qwen3-8BDFlash4.1x7.8+8B(扩散模型)
Qwen3-8BMedusa2.4x8.1+0.5B(多头)
Qwen3-8BOrthrus7.8x8.2+1.3B(扩散头)

几个关键发现:

  1. 加速比领先:Orthrus 的 7.8x 加速显著超过 EAGLE-3 的 3.2x 和 DFlash 的 4.1x
  2. 严格无损:MT-Bench 分数与基线完全一致,DFlash 则有 0.4 分的退化
  3. 参数高效:额外参数量仅 1.3B,低于 EAGLE-3 的 2.1B 草稿模型,远低于 DFlash 的完整扩散模型

长上下文性能

长上下文是 Orthrus 最显著的优势场景。论文在不同上下文长度下测试了端到端吞吐量:

上下文长度Orthrus(tokens/s)EAGLE-3(tokens/s)DFlash(tokens/s)
4K185142158
8K178135149
16K172121132
32K1659887
40K1608245

40K 上下文下,DFlash 的吞吐量暴跌至 45 tokens/s,而 Orthrus 仍保持 160 tokens/s。这背后的原因是:DFlash 的扩散过程需要对整个上下文做全局注意力,复杂度随上下文长度二次增长;Orthrus 的扩散头只在自回归头构建好的 KV Cache 上做局部操作,不受上下文长度直接影响。

不同模型规模的表现

骨干模型加速比扩散头参数占比训练时间(8xA100)
Qwen3-1.7B5.2x18%~12h
Qwen3-4B6.5x17%~28h
Qwen3-8B7.8x16%~48h

一个有趣的趋势:模型越大,加速比越高。这是因为更大的模型有更丰富的隐状态表示,扩散头能从中提取更多并行信息。

工程落地分析

安装与快速上手

Orthrus 已经在 GitHub 上开源,以下是基本使用方式:

# 安装
pip install orthrus-decoding

# 或从源码安装
git clone https://github.com/chiennv2000/orthrus.git
cd orthrus
pip install -e .

使用预训练的 Orthrus 模型进行推理:

from orthrus import OrthrusModel

# 加载预训练模型(基于 Qwen3-8B)
model = OrthrusModel.from_pretrained(
    "orthrus/orthrus-qwen3-8b",
    device="cuda"
)

# 标准生成
output = model.generate(
    "Explain the key innovations in transformer architecture",
    max_new_tokens=512,
    num_diffusion_steps=8  # 扩散步数,越少越快
)
print(output)

在 Apple Silicon 上通过 MLX 运行:

from orthrus.mlx import OrthrusMLX

# MLX 原生推理
model = OrthrusMLX.from_pretrained(
    "orthrus/orthrus-qwen3-4b-mlx"
)

output = model.generate(
    "What is parallel decoding?",
    max_new_tokens=256
)

关键配置参数

model.generate(
    prompt,
    max_new_tokens=512,
    num_diffusion_steps=8,    # 去噪步数:5-10,越低越快但接受率下降
    num_candidates=16,        # 并行候选 token 数:8-32
    consensus_threshold=0.95, # 共识阈值:越高越严格
    temperature=0.7,          # 采样温度
)

💡 调参建议num_diffusion_steps=8num_candidates=16 是论文推荐的默认配置,在加速比和接受率之间取得了最佳平衡。如果对质量要求极高,可以将 consensus_threshold 提高到 0.99。

工程优势与限制

优势

  1. 即插即用:基于冻结的 LLM,不需要修改基座模型,可以快速适配新发布的模型
  2. 内存友好:O(1) 额外内存开销,不需要像投机解码那样维护双份 KV Cache
  3. Apple Silicon 原生:通过 MLX 直接在 Mac 上运行,对独立开发者非常友好
  4. 训练成本低:16% 参数微调,单机 8 卡 A100 两天内完成

限制

  1. 骨干限制:当前仅支持 Qwen3 系列,适配其他模型(Llama、Mistral)需要额外工程
  2. 批量推理:论文的 7.8x 加速基于单请求场景,高并发批量推理下优势可能缩小,因为 GPU 已经被充分利用
  3. 扩散步数敏感num_diffusion_steps 过低会导致接受率急剧下降,实际加速比可能不到 3x
  4. 流式输出:扩散头的并行生成特性意味着 token 是批量产出的,流式体验不如逐 token 输出平滑

方法论对比:并行解码的三条路线

2024-2026 年,并行解码领域形成了三条明确的技术路线。Orthrus 属于第三条——融合路线。

路线一:投机解码派

代表方法:Speculative Decoding、EAGLE 系列、Medusa

核心思路是”猜测+验证”:用一个快速的小模型生成草稿,再用大模型一次性验证。优点是理论完备,缺点是加速比受草稿模型质量约束,且需要维护额外的模型和内存。

EAGLE-3 是这条路线的当前最强方法,通过自回归特征预测替代独立草稿模型,将加速比推到 3x 以上。但它仍然需要额外的预测网络和双份前向传播。

路线二:纯扩散派

代表方法:MDLM、DFlash、Plaid

核心思路是”直接并行生成”:用扩散或掩码语言模型替代自回归解码。优点是理论加速比无上限,缺点是生成质量不如自回归模型,训练成本极高,长上下文下退化严重。

DFlash 是这条路线的代表,通过 flash attention 优化扩散过程的效率。但论文显示在 40K 上下文下其吞吐量降至基线以下。

路线三:融合派(Orthrus)

Orthrus 的立场很明确:不要抛弃自回归,而是增强它。自回归擅长精确建模因果依赖,扩散擅长并行生成——让两者各做自己擅长的事。

这种融合路线的优势在于:

对行业的潜在影响

推理服务提供商

对于运营 LLM 推理服务的公司,Orthrus 提供了一条低成本的加速路径。不需要更换模型架构,不需要重新训练,只需要在现有模型上嫁接扩散头即可获得数倍加速。如果 Orthrus 的骨干支持扩展到 Llama 和 Mistral 系列,预计会有大量推理服务提供商快速采用。

边缘设备推理

MLX 支持意味着 Orthrus 对 Apple Silicon 生态是一个重要信号。当前消费级设备运行 8B 模型的体验受限于逐 token 生成的速度,7.8x 加速(即使实际只有 4-5x)也会显著改善用户体验。

对投机解码的冲击

Orthrus 的出现对投机解码方法是一个直接挑战。如果双视图融合架构能在更多骨干模型上复现,投机解码的”草稿模型”范式可能需要重新审视。当然,投机解码在某些场景下仍有优势——比如不需要任何训练就能使用,而 Orthrus 仍需要微调扩散头。

值得关注的后续方向

  1. 骨干扩展:当前仅支持 Qwen3,社区最关注的是 Llama 和 Mistral 的适配进展
  2. vLLM 集成:生产级推理引擎的集成是大规模采用的前提,目前尚未有官方支持
  3. 多模态扩展:双视图架构理论上可以扩展到视觉-语言模型,扩散头用于并行生成视觉 token
  4. 与 KV Cache 压缩的组合:Orthrus 的 KV Cache 是全量的,与 LaProx 等淘汰方法组合可能进一步降低内存占用
  5. 动态步数调节:根据生成难度自适应调整扩散步数,简单片段用 3 步,复杂推理用 10 步

总结

Orthrus 的贡献不在于提出了全新的理论框架,而在于用一种工程上极其优雅的方式组合了自回归和扩散两种范式。冻结骨干 + 轻量扩散头 + 共享 KV Cache + 精确共识——每个组件都不是新的,但组合在一起产生了 7.8x 的无损加速。

这种”组合式创新”恰恰是当前 LLM 推理优化最需要的思路。我们不缺新的解码范式,缺的是能在生产环境中低成本落地的方案。Orthrus 在这个维度上给出了一个令人信服的答案。

如果你在做 LLM 推理优化,Orthrus 值得立即关注:

Frequently asked questions

Orthrus 的双视图架构和投机解码有什么本质区别?
投机解码是'草稿-验证'两阶段流水线:小模型猜、大模型验。Orthrus 不需要独立的草稿模型,它直接在同一个 LLM 骨干上挂两个视图——自回归头建 KV Cache,扩散头并行生成 token。两者共享完全相同的隐状态表示,无需额外的验证轮次,通过精确共识机制一次完成。
仅微调 16% 参数就能获得 7.8x 加速,训练成本大概是多少?
论文中 Orthrus 基于 Qwen3 骨干训练,基础 LLM 严格冻结,仅训练新增的扩散头模块。这意味着训练数据需求和 GPU 小时数都远低于全量微调。论文报告 8B 模型在 8 张 A100 上训练约 48 小时即可收敛,远低于从头训练扩散语言模型(通常需要数千 GPU 小时)。
双视图共享 KV Cache 为什么能保证无损?不会有信息冲突吗?
关键在于职责分离:KV Cache 完全由自回归头构建和维护,扩散头只读不写。自回归头按标准因果注意力逐 token 预填充,保证 KV 表示和原始模型完全一致。扩散头基于这份'黄金标准'KV Cache 做并行生成,再通过精确共识机制过滤掉不一致的 token。因此最终输出在数学上等价于纯自回归解码。
Orthrus 对 Apple Silicon 的支持意味着什么?消费级设备能用吗?
Orthrus 通过 MLX 框架原生支持 Apple Silicon 推理,这意味着 MacBook Pro 等消费级设备可以直接运行。论文提供了 1.7B、4B、8B 三个规格的预训练模型。对于 8B 模型,16GB 统一内存的 MacBook 即可运行,配合扩散头的并行加速,实际推理体验会显著优于传统逐 token 生成。
Orthrus 在长上下文场景下为什么比 DFlash 表现更好?
DFlash 的扩散解码在长上下文下面临注意力稀释问题——随着上下文增长,扩散过程需要关注的 token 范围急剧扩大,导致生成质量快速退化。Orthrus 通过自回归头维护高保真 KV Cache,扩散头只需在这份精确缓存上做局部并行生成,不受上下文长度影响。论文实测在 40K 上下文长度下 Orthrus 保持一致的高吞吐量,而 DFlash 已经严重退化。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.