不重新训练,只改解码结构:PCTree 把 LLM 推理链条变树,速度涨了 3%–29%

昨天 arXiv 上挂出来一篇论文,标题叫「From Chains to Trees」,一眼就知道它想干什么——把 LLM 推理时那个逐 token 串行解码的链条,改成一种树状结构来并行试探。这类工作其实不少了,但这篇让我多看了两遍的原因很简单:它不需要重新训练模型,纯粹是解码策略层面的改动,就在 Qwen3 系列上拿到了实打实的加速。

现在大模型推理加速里,投机解码(Speculative Decoding)是一条很活跃的路线。思路是先弄一个小 draft 模型快速生成一串 token,然后拿目标大模型去并行验证,如果大部分都通过了,省下的就是逐 token 串行推演的时间。DSpark 是这条路线上一个比较有代表性的方案:它用一个轻量的 Markov head 一次生成整个 token block,只需要一次 backbone 前向传播。但 DSpark 的问题是,它生成的 block 是一条单链。一旦前面某个 token 没通过目标模型的验证,后面整段都作废了。block 设得越大,作废的成本就越高。

PCTree 的作者发现了一个很巧的事:DSpark 那个 Markov head 里已经学到了条件结构,天然就能给不同的「父 token」计算出不同的子 token 概率,只是 DSpark 没利用这个能力。他们做的事,就是不重新训练、不加额外的 backbone 前向传播,直接用这个现成的 Markov head 对每个具体的父 token 分别算候选子 token 的得分,然后在一块固定的验证预算里挑出最有可能的几条路径。一条链就变成了一棵树。

这就是在解码阶段做了一个非常轻量的搜索:不改变模型权重,不增加训练成本,只是把原来串行赌一条路的方式,改成在几个最有希望的分支上并行押注,让目标模型一次性验证更多有效 token。

实验结果是从 Qwen3-4B、8B、14B 三个尺寸,加上九个 benchmark 上跑的。在 block 大小 B=7 的时候,相对于 DSpark 的加速增益在 3.1% 到 29.5% 之间——这是跟 DSpark 比,不是跟最慢的自回归解码比,所以这个增益是增量收益。在 Qwen3-4B 跑 GSM8K、B=16 的条件下更明显:平均接受长度从 9.41 涨到 11.16,三次跑的平均自回归加速从 6.14× 提到 6.60×。

6.14× 到 6.60×,数字上看绝对值不算大,但这是纯解码策略换来的一刀。不调模型、不炼丹、不加硬件,只是改了一下 how you draft,就有了接近 8% 的额外加速。放在生产环境里,这能直接省一批 GPU 账单。

论文里也标了边界。这个增益在 B 较小的时候不明显,而且 PCTree 的效果依赖于 Markov head 本身的质量——如果 head 学到的条件分布本身不准,树再大也是劣质分支的堆砌。不过作者说了,整个方案是 inference-only change,torch.compile 或者 vLLM 里想集成它,不需要动模型 checkpoint。

这篇论文给我的感受是:2026 年,大家已经不在「训更大的模型」上卷了,而是开始在「怎么让现有模型跑得更快、更省」上抠细节。PCTree 这种工作就是典型的例子——不搞大新闻,不刷 SOTA 喊麦,只在一个很小的切入点里做了一层很干净的工程优化。但这类优化,凑多了,才是真正让 AI 落地变便宜的力量。

我还没看到他们把代码放出来,论文的 PDF 已经在 arXiv 上可读,实验是在 Qwen3 系列上做的。想在自家部署的模型上试这个思路,可以先读原文,看看 Markov head 这边的条件和验证预算怎么设。如果代码后续放出来,应该是挺容易接进现有的推理框架里的。