自适应并行推理:高效推理扩展的下一个范式 Stephen Xie 与 Long (Tony) Lian    2026年5月8日

Adaptive Parallel Reasoning overview
自适应并行推理概述。

如果一个推理模型能够 自行 决定何时分解并并行化相互独立的子任务、生成多少个并发线程,以及如何根据所面对的问题来协调它们,会怎样?我们对并行推理领域的最新进展进行了详细分析,尤其是自适应并行推理。

披露:本文部分是对该领域的综述,部分是对自适应并行推理的观点阐述。作者之一(Tony Lian)共同领导了 ThreadWeaver(Lian et al., 2025),这是下文讨论的方法之一。作者力求以各方法自身的立场来呈现每一种方法。

动机

近年来,LLM 推理能力的进展在很大程度上由推理时扩展驱动,此外还有数据和参数扩展(OpenAI et al., 2024; DeepSeek-AI et al., 2025)。显式输出推理 token(通过中间步骤、回溯和探索)的模型如今在数学、编程和智能体基准测试中占据主导地位。这些行为使模型能够探索替代假设、纠正先前的错误并综合得出结论,而不是只锁定于单一解法(Wen et al., 2025).

问题在于,顺序推理会随探索量的增加而线性扩展。 扩展顺序推理 token 是有代价的,因为模型有超出有效上下文限制的风险(Hsieh et al., 2024)。中间探索路径的累积使模型在关注其上下文中的信息时难以在干扰项之间进行区分,从而导致模型性能下降,这也被称为 上下文腐化 (Hong, Troynikov and Huber, 2025)。延迟也会随推理长度成比例增长。对于需要数百万 token 进行探索和规划的复杂任务,用户等待数十分钟甚至数小时才能得到答案并不罕见(Qu et al., 2025)。随着我们继续沿输出序列长度这一维度扩展,我们也会让推理变得更慢、更不可靠、计算更密集。并行推理已成为一种自然的解决方案。与其顺序地探索路径(Gandhi et al., 2024)并在每一步累积上下文窗口,我们可以让模型独立地(线程之间不依赖彼此的上下文)且并发地(线程可以同时执行)探索多个线程。

Figure 1: Sequential vs. Parallel Reasoning
图 1:顺序推理与并行推理

近年来,越来越多的研究在合成场景(例如 Countdown 游戏(Katz, Kokel and Sreedharan, 2025))、真实数学问题和通用推理任务中探索了这一想法。

从固定并行到自适应控制

现有方法表明并行推理是有帮助的,但其中大多数仍然在模型之外决定并行结构,而不是让模型自己选择。

简单的分叉-汇合。

  • 自洽性/多数投票 ——独立采样多条完整的推理轨迹,从每条轨迹中提取最终答案,并返回最常见的那个(Wang et al., 2023).
  • Best-of-N(BoN) ——与自洽性类似,但使用训练好的验证器来选择最佳解法,而不是使用多数投票(Stiennon et al., 2022).
  • 尽管实现简单,但这些方法往往会在各分支之间产生冗余计算,因为轨迹是独立采样的。

基于启发式的结构化搜索。

  • 思维树/图/骨架 ——一族结构化分解方法,使用已知的搜索算法(BFS/DFS)探索多个替代“思维”,并通过基于 LLM 的评估进行剪枝(Yao et al., 2023; Besta et al., 2024; Ning et al., 2024).
  • 蒙特卡洛树搜索(MCTS) ——通过采样随机推演来估计节点价值,并以置信上限(UCB)式的探索-利用方式扩展搜索树(Xie et al., 2024; Zhang et al., 2024).
  • 这些方法通过将任务分解为互不重叠的子任务,改进了简单的分叉-汇合;然而,它们需要关于分解策略的先验知识,而这种知识并不总是已知的。

近期变体。

  • ParaThinker ——训练模型以两个固定阶段运行:首先并行生成多个推理线程,然后对它们进行综合。他们引入了可训练的控制 token(<think_i>) 以及针对思维的特定位置嵌入,通过两阶段注意力掩码在推理期间强制独立性,并在总结期间实现受控整合(Wen et al., 2025).
  • GroupThink ——多个并行推理线程可以在 token 级别看到彼此的中间进展,并在生成过程中进行调整。与先前在独立请求上运行的并发方法不同,GroupThink 运行单个 LLM,同时产生多条相互依赖的推理轨迹(Hsu et al., 2025).
  • Hogwild! Inference ——多个并行推理线程共享 KV 缓存,并在没有显式协调协议的情况下决定如何分解任务。工作线程并发地生成到共享注意力缓存中,使用 RoPE 以不同顺序拼接各个 KV 块而无需重新计算(Rodionov et al., 2025).

Figure 2: Various Strategies for Parallel Reasoning
图 2:并行推理的各种策略

上述方法都有一个共同的局限:是否并行、并行程度以及搜索策略都由外部强加给模型,而不论问题是否真的能从中受益。然而,不同问题需要不同程度的并行化,而这对于并行化的有效性至关重要。例如,如果一个框架对“25+42等于多少?”和“在哪个最小的平面区域内,你可以将一个单位长度的线段连续旋转180°?”采用相同的并行结构,那么对前者是在浪费算力,对后者则很可能使用了错误的分解策略。在上述方法中,模型并没有被教会这种自适应行为。于是自然产生一个问题: 如果模型能够根据手头的问题,自行决定何时并行、生成多少线程以及如何协调它们,会怎样?

自适应并行推理(APR)通过将并行化纳入模型生成的控制流来回答这个问题。正式定义而言,自适应性指的是模型具备 在推理时在并行与串行操作之间动态分配算力的能力。换言之,具备自适应并行推理(APR)能力的模型被教会协调其控制流——何时顺序生成序列、何时并行生成序列。

需要指出的是,自适应并行推理这一概念由 Learning Adaptive Parallel Reasoning with Language Models (Pan et al., 2025)提出,但它是一种范式而非某种具体方法。在本文中, APR 指这一范式,而“APR方法”指Pan et al.(2025)中的具体实例。

这一转变之所以重要,原因有三。 与思维树相比,APR不需要针对特定领域的分解启发式。 在强化学习过程中,模型通过试错学习 通用的 分解策略。事实上,模型会以难以手工设计的方式涌现出有用的并行化模式,例如在自验证上一步的同时运行下一步,或用备用方案对冲主方案(Yao et al., 2023; Wu et al., 2025; Zheng et al., 2025).

与BoN相比,APR避免了冗余计算。 APR模型在分支之前就能控制每个并行线程要做什么。因此,APR可以学会先产生一组独特、互不重叠的子任务,再将它们分配给独立线程(Wang et al., 2023; Stiennon et al., 2022; Pan et al., 2025; Yang et al., 2025).

与非自适应方法相比,APR可以选择不并行。 自适应模型能够调整并行化程度,使问题的复杂度与并行化的复杂度和开销相匹配(Lian et al., 2025).

在实践中,这是通过让模型输出特殊token来控制何时并行推理、何时串行推理来实现的。下面是一个精简的ThreadWeaver风格轨迹:在<Parallel>块下有两个大纲和两条路径,随后各线程就一个带框的答案达成一致。

Figure 3: Example of an Adaptive Parallel Reasoning Trajectory from ThreadWeaver, manually condensed for ease of illustration.
图3:来自ThreadWeaver的自适应并行推理轨迹示例,为便于说明已手工精简。

Figure 4: Special Tokens Variants across Adaptive Parallel Reasoning Papers
图4:各自适应并行推理论文中的特殊Token变体

自适应并行的推理系统

我们实际上如何执行并行分支?我们从计算机系统,特别是多线程和多进程中汲取灵感。这项工作的大部分都可以看作是利用分叉-汇合(fork-join)设计。

在推理时,我们实际上是让模型执行一次map-reduce操作:

  • 将问题分叉为子任务/线程,并发处理它们
  • 将它们汇合为最终答案

Figure 5: Fork-join Inference Design
图5:分叉-汇合推理设计

具体而言,模型会遇到一个子任务列表。然后它会为每个子任务进行预填充,并将它们作为独立请求发送给推理引擎处理。这些线程随后并发解码,直到遇到结束token或超过最大长度。该过程会阻塞直到所有线程完成解码,然后聚合结果。这在各种自适应并行推理方法中是通用的。然而,在聚合时会出现一个问题:分支中生成的内容无法在KV缓存层面轻松聚合。这是因为独立线程中的token从相同的位置ID开始,导致编码重叠,并在将KV缓存重新合并时产生非标准行为。同样,由于独立线程彼此不进行注意力计算,它们拼接后的KV缓存会产生非因果的注意力模式,而基础模型在训练中从未见过这种模式。

为解决这一问题,该领域在如何执行聚合过程上分成了两派,划分依据是它们修改推理引擎还是绕开它。

Multiverse修改推理引擎,以便在汇合时复用KV缓存。 在深入了解Multiverse(Yang et al., 2025)的内存管理之前,我们先理解在“汇合”阶段之前KV缓存是如何处理的。注意每个独立线程如何共享前缀序列,即子任务列表。若不优化,每个线程都需要为前缀序列预填充并重新计算KV缓存。然而,这种冗余可以通过 SGLang的RadixAttention(Sheng et al., 2023)来避免,它将多个请求组织成一棵基数树,即一棵以不同长度元素序列而非单个元素为节点的前缀树(trie)。这样,唯一新增的KV缓存条目就来自独立线程的生成。

Figure 6: RadixAttention’s KV Cache Management Strategy
图6:RadixAttention的KV缓存管理策略

现在,如果一切顺利,所有独立线程都已从推理引擎返回。我们现在的目标是想办法将它们重新合成为一个单一序列,以便继续解码后续步骤。事实证明,我们可以在合成阶段复用这些独立线程的KV缓存。具体来说,Multiverse(Yang et al., 2025)、Parallel-R1(Zheng et al., 2025)和NPR(Wu et al., 2025)修改了推理引擎,以复制每个线程生成的KV缓存,并编辑页表,从而将非连续的内存块拼接成一个单一的KV缓存序列。这避免了第二次预填充的冗余计算,并尽可能多地复用已有的KV缓存。然而,这种方法存在若干重大局限。

首先,这种方法需要修改推理引擎以执行非标准的内存处理,这可能导致意外行为。具体来说,由于合成请求引用了先前请求的KV缓存,这给系统带来了脆弱性以及出现错误指针的可能性。另一个请求可能进来并在合成请求完成之前驱逐所引用的KV缓存,从而要求它暂停并触发对先前线程请求的重新预填充。这个问题导致Multiverse的研究人员(Yang et al., 2025)限制了推理引擎可处理的批大小,从而限制了吞吐量。

Figure 7: KV Cache “Stitching” During Multiverse Inference
图7:Multiverse推理期间的KV缓存“拼接”

其次,这种方法改变了模型看待序列的方式,从而产生了一种模型未经预训练的分布偏移,因此需要更广泛的训练来对齐行为。具体来说,当我们以这种方式拼接KV缓存时,我们创建了一个具有非标准位置编码的序列。在独立线程生成期间,所有线程都从相同的位置索引开始,并且只关注先前的子任务,而不关注彼此。因此,当线程合并回来时,所得的KV缓存具有非标准的位置编码,并且不使用因果注意力。因此,这种方法需要大量训练才能使模型对齐这一新行为。为解决这个问题,Multiverse(Yang et al., 2025)及相关工作在训练期间应用修改后的注意力掩码,以防止独立线程相互关注,从而使训练和推理行为保持一致。

Figure 8: Multiverse’s Attention Mask
图8:Multiverse的注意力掩码

既然这些问题源于非标准的KV缓存管理,我们能否尝试一种无需修改引擎的方法?

ThreadWeaver保持推理引擎不变,并将编排移至客户端。 ThreadWeaver(Lian et al., 2025)将并行推理纯粹视为客户端问题。“分叉”过程与Multiverse几乎相同,但汇合阶段对内存的处理方式非常不同,因为它不修改引擎内部。相反,客户端将所有独立分支的文本输出拼接成一个连续的序列。然后,引擎执行第二次预填充,以生成结论生成步骤的KV缓存。虽然这引入了Multiverse试图避免的计算冗余,但预填充的成本显著低于解码。此外,这在推理期间不需要特殊的注意力处理,因为第二次预填充使用因果注意力(线程可以看到彼此),使得顺序自回归模型更容易适应这一任务。

Figure 9: ThreadWeaver’s Prefill and Decode Strategy
图9:ThreadWeaver的预填充与解码策略

我们应该如何训练模型来学习这种行为?朴素地说,对于每条并行轨迹,我们可以按照我们的推理模式将其分解为多个顺序片段。例如,我们会训练模型在给定提示的情况下输出子任务,在给定提示+子任务分配的情况下输出各个线程,以及在给定提示+子任务+对应线程的情况下输出结论。然而,这似乎冗余且计算效率不高。我们能做得更好吗?事实证明,可以。正如在ThreadWeaver(Lian et al., 2025)中那样,我们可以将一条并行轨迹组织成前缀树(trie),将其展平为单一序列,并在训练期间(而非推理期间!)应用仅祖先注意力掩码。

Figure 10: Building the Prefix-tree and Flattening into a single training sequence
图10:构建前缀树并展平为单一训练序列

具体来说,我们应用掩码和位置ID来模拟推理行为,使得每个线程仅以提示+子任务为条件,而从不关注兄弟线程或最终结论。

与引擎无关的设计使其易于采用,因为您无需设计单独的托管方法,并且可以利用现有的硬件基础设施。它还会随着现有推理引擎的改进而变得更好。更重要的是,采用与引擎无关的方法,我们可以服务一个能够在顺序和并行思考模式之间轻松切换的混合模型。

训练模型使用并行性

一旦推理路径存在,下一个问题就是教模型使用它。需要演示,因为模型必须学会输出编排控制流的特殊token。我们发现基础模型的指令遵循能力不足以生成并行线程。

这里一个有趣的问题是:SFT训练是诱导了此前缺失的并行执行的基本推理能力,还是仅仅将模型现有的预训练能力对齐到特定的控制流token语法。通常的观点是SFT教授新知识;但与常见看法相反,一些论文——特别是Parallel-R1(Zheng et al., 2025)和NPR(Wu et al., 2025)——认为他们的SFT演示只是诱导格式遵循(即如何构建并行请求)。我们将此留作未来工作。

Figure 11: Sources of Parallelization Demonstration Data
图11:并行化演示数据的来源

演示教会了模型并行控制流的语法,但并未完全解决激励问题。在理想情况下,我们只需奖励结果的准确性,而并行化模式会自然涌现,因为模型通过SFT学会了输出特殊token,类似于长CoT的涌现。然而,研究人员(Zheng et al., 2025)观察到这还不够,我们实际上确实需要并行化激励。那么问题就变成了:我们如何判断模型何时在有效地并行化?

仅基于结构的奖励太容易被钻空子。 直观上,我们可以根据生成的线程数量给予奖励。但模型可以生成许多简短无用的线程来骗取奖励。好吧,这行不通。那么,仅仅因为正确使用了并行结构就给予二元奖励如何?这在一定程度上解决了模型滥发新线程的问题,但模型仍然学会了在不需要时生成线程。Parallel-R1的作者(Zheng et al., 2025)引入了一种交替调度方案,只在20%的时间里奖励并行结构,这成功提高了并行结构的使用率(13.6% → 63%),但对整体准确率影响甚微。

采用这种仅基于结构的方法,我们可能偏离了提高准确率和降低延迟的初衷……我们如何直接针对帕累托前沿进行优化?准确率很简单——我们只需看结果。那延迟呢?

效率奖励需要追踪关键路径。 在纯顺序轨迹中,我们可以根据生成的总token数来衡量延迟。为了将其扩展到并行轨迹,我们可以关注关键路径,即因果依赖的最长token序列,因为这直接决定了我们的端到端生成时间(即挂钟时间)。举例来说,当有两个<Parallel>部分、每个部分有五个线程时,关键路径将经过第一个并行部分中最长的线程,然后是任何顺序token,再是第二个并行部分中最长的线程,依此类推,直到序列结束。

Figure 12: Critical Path Length Illustration
图12:关键路径长度示意图

目标是使关键路径的长度最小化。同时,我们仍然希望模型花费token来并行探索线程。为了结合这两个目标,我们可以着眼于使关键路径在总消耗token中占更小的比例。ThreadWeaver的作者(Lian et al., 2025)将并行化奖励表述为$1 - L_{\mathrm{critical}} / L_{\mathrm{total}}$,对于顺序轨迹该值为0,并且随着关键路径相对于生成的总token数变小而线性增加。

并行效率应以正确性为前提。 直观上,当多条轨迹都正确时,我们应该给并行化效率更高的轨迹分配更多奖励。但当它们全都错误时呢?我们应该分配任何奖励吗?大概不应该。

将其形式化,$R = R_{\mathrm{correctness}} + R_{\mathrm{parallel}}$。假设结果正确性为二元值,这可以写成$R = \mathbf{1}(\text{Correctness}) + \mathbf{1}(\text{Correctness}) \times (\text{some parallelization metric})$。这样,模型只有在回答正确时才能获得并行化奖励,因为我们不想在模型无法正确回答问题的情况下对其施加并行化约束。

Figure 13: Differences in Reward Designs Across Adaptive Parallel Reasoning Works
图13:自适应并行推理工作中奖励设计的差异

评估与开放问题

归根结底,这些自适应并行方法实际表现如何?嗯……这是个难题,因为它们在模型选择和指标上各不相同。模型选择取决于训练方法、SFT问题难度和序列长度。在像s1k这样包含研究生水平数学和科学问题的困难数据集上运行SFT时,研究人员选择了大型基础模型(Multiverse使用Qwen2.5 32B(Yang et al., 2025))来捕捉解决方案轨迹背后的复杂推理结构。在运行RL时,由于计算成本限制,研究人员选择了小型、非CoT的指令模型(4B、8B)。

Figure 14: Difference in Model Choice Across Adaptive Parallel Reasoning Papers
图14:自适应并行推理论文中模型选择的差异

每篇论文还对自适应并行推理如何贡献于研究领域提供了略有不同的解读。它们针对不同的理论目标进行优化,因此使用略有不同的指标集:

  • Multiverse和ThreadWeaver (Yang et al., 2025; Lian et al., 2025)旨在以更快的速度达到顺序AR模型级别的准确率。Multiverse表明APR模型在相同的固定上下文窗口下可以实现更高的准确率,而ThreadWeaver表明APR模型在获得可比准确率的同时实现了更短的端到端token延迟(关键路径长度)。
  • NPR (Wu et al., 2025)将顺序回退视为一种失败模式,并针对100%真实并行率进行优化,该比率以并行token与总token之比来衡量。
  • Parallel-R1 (Zheng et al., 2025)不关注端到端延迟,而是针对探索多样性进行优化,将APR呈现为一种中期训练探索脚手架,在RL之后提供性能提升。

开放问题

虽然自适应并行推理代表了朝着更高效推理时扩展迈出的有希望的一步,但仍存在重要的开放问题。

如上所述,Parallel-R1(Zheng et al., 2025)将APR呈现为一种中期训练探索脚手架,而非主要的推理时技术。这引出了一个更根本的问题:推理时的并行化是否能持续提高准确率,还是它主要作为训练时的探索脚手架才有价值?Parallel-R1表明,在RL期间由并行结构诱导的多样性可能比测试时的并行化本身更重要。

一个相关的担忧是稳定性。此外,当并行化奖励被放松时,模型还存在一种持续倾向于回退到顺序推理的现象。Parallel-R1 的作者表明,在 200 步之后移除并行化奖励,会导致模型恢复为顺序行为。这究竟是训练稳定性问题、奖励信号设计问题,还是并行结构与自回归预训练塑造模型先验的方式确实存在冲突的证据?

除了 APR 是否有效之外,部署本身也带来了新的问题。我们能否设计出在推理时考虑可用计算预算的训练方法,使并行化决策由硬件条件驱动,而非纯粹由问题驱动?

最后,上述讨论的并行结构本质上是扁平的。如果我们允许并行深度大于 1 会怎样?递归语言模型(RLMs; Zhang, Kraska and Khattab, 2026)能够有效管理长上下文,并展现出颇具前景的推理时扩展能力。当用端到端 RL 训练 RLMs 以激励自适应并行化时,它们的表现如何?

致谢

我们感谢 Nicholas Tomlin 和 Alane Suhr 为我们提供的有益反馈。我们感谢 Christopher Park、Karl Vilhelmsson、 Nyx Iskandar、Georgia Zhou、 Kaival Shah和 Jyoti Rani 提出的富有洞见的建议。我们感谢 Vijay Kethana, Jaewon Chang, Cameron Jordan, Syrielle Montariol、Erran Li 和 Anya Ji 进行的有益讨论。我们感谢 Jiayi Pan, Xiuyu Li和 Alex Zhang 就自适应并行推理与递归语言模型进行的建设性通信。

订阅我们的 RSS 订阅源. 广而告之: 评论