论文

LoopCoder-v2: 仅循环一次实现高效测试时计算扩展

LoopCoder-v2: 仅循环一次实现高效测试时计算扩展

Looped Transformers 通过重复应用共享块来扩展潜在计算,但顺序循环会随循环次数增加延迟和 KV-cache 内存。并行循环 Transformer (PLT) 通过交叉循环位置偏移 (CLP) 和共享-KV 门控滑动窗口注意力缓解了此成本,使循环次数成为实用的设计选择。 因此,我们从增益-成本视角研究 PLT 的循环次数选择:额外循环可精炼表示,但 CLP 在每个循环边界引入位置不匹配。我们通过训练 LoopCoder-v2 系列模型(7B PLT 编码器,不同循环次数)来实例化研究,从零开始训练 18T token,随后进行匹配的指令微调与评估。实验表明,两循环变体在代码生成、代码推理、agentic 软件工程和工具使用基准上均优于无循环基线:SWE-bench Verified 从 43.0 提升至 64.4,Multi-SWE 从 14.0 提升至 31.0。相反,三循环及更多循环变体性能下降,揭示了强烈的非单调循环次数效应。 诊断显示,循环 2 提供主要的生产性精炼,而后续循环产生递减的振荡更新和降低的表示多样性。由于 CLP 引起的位置不匹配大致固定,而精炼增益缩小,偏移成本逐渐占主导。这种增益-成本权衡解释了 PLT 在两循环处饱和的现象,并为循环次数选择提供了诊断标准。

论文精读

TL;DR 并行循环Transformer仅需两次循环即能高效增强表示,更多循环因位置偏移成本导致退化,在代码生成与工程任务上大幅提升。

问题

问题背景

测试时计算扩展(Test-Time Computation Scaling) 成为提升大模型推理能力的重要方向,它允许在推理阶段动态增加计算量以获得更好性能,而无需重训模型。Looped Transformers 通过循环复用同一组 Transformer 层来模拟深层网络,是实现该扩展的一种简洁架构。

现有方法局限

传统的 sequential looping 按顺序重复执行共享层,导致 延迟KV-cache 内存 随循环次数线性增长,严重制约了实际部署中的循环次数选择,使其难以作为有效的测试时扩展手段。为解决此开销,Parallel Loop Transformer (PLT) 通过 跨循环位置偏移(CLP)共享 KV 的门控滑动窗口注意力(G-SWA) 实现了并行循环,大幅降低了内存和延迟成本,但 CLP 在每个循环边界引入位置不匹配代价,使得循环并非无损叠加。然而,现有工作缺乏对 PLT 循环次数的系统研究:多循环可能细化表征,但偏移代价也随之累积,如何选择循环次数成为关键空白。

技术挑战与重要性

该问题的难点在于 增益--代价的非单调性:循环 2 通常带来显著性能提升(如 LoopCoder-v2 在 SWE-bench Verified 从 43.0 跃升至 64.4),但循环数再增加时,表征细化收益锐减甚至为负,而固定偏移代价持续消耗,导致性能退化。此外,这种退化在常规基准评测中不易暴露,需借助隐藏状态动态、有效秩、注意力分布等多维度诊断才能揭示根因。这并非简单的“越深越好”法则,对以代码生成为代表的、依赖深层推理能力的任务尤为关键,因为它直接关系到生产系统中计算预算与性能的帕累托最优

行业类比

这类似于在 chain-of-thought 推理中让模型输出更多中间步骤:合理长度的思维链能显著提升答案质量,但过长链可能引发注意力稀释和逻辑漂移,反而损害最终准确率。

核心洞察

  • **循环次数存在非单调最优:2 次循环为收益峰值** 在并行循环 Transformer 中,跨循环位置偏移(CLP)引入固定表示成本,而每次循环带来的精炼增益随着循环数增加快速衰减。实验表明,从无循环到 2 循环性能大幅提升,但 3 循环及以上反而退化,打破了“循环越多越好”的直觉。这一发现与顺序循环 Transformer 的无限循环假设相悖,揭示了 CLP 造成的边界不匹配在增益收敛后持续占优,为循环架构设计提供了明确的增益-成本框架:当固定偏移成本超过边际增益时,额外循环有害。工程上,这意味着循环次数不应无限制放大,而应借助隐状态步长、有效秩等诊断手段精确选定。
  • **并行循环 Transformer 使循环次数成为实用设计选择,但收益集中于第 2 层循环** 通过共享 KV 缓存和门控滑动窗口注意力,并行循环 Transformer 大幅降低了多次循环的延迟和内存开销,使得循环计数不再受制于高昂的推理成本。微观诊断显示,第 2 层循环才是主要的生产性精炼阶段,后续循环仅产生震荡且多样性下降的更新。这一洞察否定了“增加循环即增加思考深度”的朴素观念,表明在实际编程任务中,模型在第二遍循环已达成关键表示调整,之后不再显著改善。因此,在设计代码生成等任务的循环模型时,将资源集中在强化前两次循环质量,而非追求循环数量,是更高效的计算扩展策略。

方法

输入与序列建模

输入是代码文本的 token 序列,附加标准可学习位置嵌入。模型采用 并行循环 Transformer (Parallel Loop Transformer, PLT) 架构,在解码器堆栈中多次复用同一组 共享 Transformer 块。两次循环(loop)为默认配置,也可扩展至更多循环,形成深度递归的隐式计算路径。

关键模块:并行循环与高效注意力

传统循环 Transformer 顺序展开循环,导致延迟和 KV 缓存随循环数线性增长。PLT 通过两个核心设计实现并行化:

  • 跨循环位置偏移 (Cross-Loop Position offsets, CLP):为不同循环迭代分配不同的全局位置偏移量,使各循环的 token 表示可在一次前向传播中并行计算。这一设计打破了顺序依赖,但也带来每个循环边界固定的位置对齐误差(即 offset cost)。
  • 共享 KV 缓存 + 门控滑动窗口注意力 (Shared-KV Gated Sliding-Window Attention, G-SWA):所有循环共享同一组 Key/Value 缓存,显著降低显存占用;注意力计算限定在滑动窗口内,并通过可学习的门控参数调节窗口内各位置的影响权重,兼顾局部与远程依赖。

并行循环的实现流程:输入 token 经过嵌入层后,进入共享 Transformer 块;基于 CLP 偏移为第 k 次循环生成新的位置编码,然后在 G-SWA 层中与共享 KV 交互,最后通过 FFN 更新表示。多个循环的计算在并行维度上同时进行,循环间通过偏移值区分 token 位置。

输出与训练

最终循环输出的隐藏表示传入语言模型头,预测下一个 token。模型从零开始预训练:使用 18T tokens 的代码语料,训练 7B 参数的 PLT(循环数分别设为 1、2、3 等),随后进行统一的指令微调,覆盖代码生成、推理、智能体软件工程等任务。

循环计数选择:增益-成本权衡

PLT 将循环次数从固定架构超参数变为实用设计选择。实验表明,2 循环 相比无循环基线在 SWE-bench Verified(43.0→64.4)和 Multi-SWE(14.0→31.0)上大幅提升;≥3 循环时性能反而退化。诊断显示:第 2 次循环提供主要的表示精炼增益,后续循环更新幅度递减且振荡,表征多样性下降,而 CLP 引入的固定偏移成本不变,最终成本主导增益,导致非单调缩放。

差异点:与顺序循环 Transformer 相比,PLT 首次将并行化与循环计数权衡形式化为增益-成本分析,并通过实证给出“仅需一次额外循环”的实践指导,在代码领域实现高效测试时计算扩展。

实验

实验设计

本研究训练了 LoopCoder-v2 模型家族,这是一组基于 并行循环 Transformer (PLT) 架构的 7B 参数代码模型。PLT 通过 跨循环位置偏移 (CLP)共享 KV 门控滑动窗口注意力 实现高效并行循环,消除传统顺序循环 Transformer 的推理延迟与缓存增长问题。我们训练了不同循环次数(0、2、3 等)的变体,在 18T 代码相关 tokens 上从零开始预训练,随后进行统一的指令微调。评估涵盖四个核心能力维度:代码生成、代码推理、自主软件工程代理任务及工具调用,主要基准包括 SWE-bench VerifiedMulti-SWE

关键发现

  • 两循环模型全面领先:与无循环基线相比,两循环变体在所有类别上均取得显著提升。在 SWE-bench Verified 上,得分从 43.0 跃升至 64.4;在 Multi-SWE 上,从 14.0 提升至 31.0,相对提升超过一倍。
  • 循环次数效应呈强非单调:三级以上循环的模型出现性能退化,表明额外的循环并未带来持续的增益。显微诊断揭示,第 2 次循环是主要的有效细化阶段,后续循环则呈现递减且振荡的隐状态更新,且表示多样性下降。
  • 固定位置错配代价:CLP 在每个循环边界引入的位偏移错配大致恒定,当精炼收益随循环次数衰减后,该代价逐渐主导,导致整体退化。这解释了 PLT 在两循环处饱和的内在原因。

基线对比深度解读

无循环的普通 Transformer 在复杂代码任务上表现不足,而顺序循环 Transformer 虽可加深表示计算,却以线性增长的延迟和 KV 缓存为代价。LoopCoder-v2 的两循环 PLT 设计 在几乎不增加推理开销的前提下,通过一次额外的并行细化实现了大幅提升,直接将 SWE-bench 表现推至 64.4,这在实际软件工程代理场景中意味着更可靠的补丁生成与问题修复能力。然而,试图通过增加循环次数进一步扩展测试时计算时,反而带来负收益——这与“越多循环越好”的直觉相悖,凸显了增益-代价权衡在架构设计中的核心地位。该发现对 PLT 的实际部署有直接指导意义:严格控制循环次数为 2,可最大化效率与效果,避免无谓的计算开销。相比先前工作仅强调并行循环的效率优势,本研究首次系统量化了循环次数选择的影响,并揭示了位置错配作为隐性瓶颈的作用。

行业影响

落地场景

Parallel loop Transformers (PLT) 通过 两轮循环 实现高效测试时计算扩展,特别适合对延迟敏感、需要持续上下文更新的代码生成与编辑任务。可直接集成到:

  • 智能编程助手(如 GitHub Copilot 类产品):代码补全、跨文件重构、基于自然语言的代码生成。
  • 软件工程代理:自动修复 SWE-bench 类 bug、批量提交代码审查建议、执行多步工具调用(如调用 API、运行测试)。
  • 交互式文档/教程平台:实时生成可运行的代码示例,并根据用户反馈在循环中迭代优化。

商业价值

PLT 的核心优势在于 用更少的循环次数获得非单调的最优性能,直接带来三重价值:

  • 降本:两循环 vs. 多循环或更大模型,KV-cache 内存和推理延迟大幅降低。在相同硬件上可支撑更高并发,适合云 API 按 token 计费场景。
  • 增收:性能提升直接转化为更高完成质量与采纳率。SWE-bench Verified 从 43.0 提升至 64.4 分(+21.4),Multi-SWE 从 14.0 到 31.0 分(+17.0),显著增强产品竞争力。
  • 体验提升:端到端延迟可控,用户感知等待时间短;同时循环间的表征细化减少明显错误,提高一次生成可接受率。

与现有产品/工作流的接口

PLT 作为 Transformer 变体,与现有自回归推理栈高度兼容:

  • 架构层面:只需将标准 Transformer 块替换为 共享 KV 的门控滑动窗口注意力(G-SWA)+ 跨循环位置偏移(CLP) 的并行循环块。训练完成后,推理时无需额外的显式思维链或多次前向调用,可在单次前向过程中完成多轮迭代。
  • 部署层面:可直接用于替换现有代码模型的 backbone(例如从 LLaMA 类迁移),训练配方和 token 化保持通用;结合 vLLM 等高效推理框架,通过修改注意力层实现即可。
  • 工具链集成:在 SWE 代理场景中,模型输出可直接挂载到现有的测试框架、版本控制系统,无需改变业务逻辑。

具体落地用例

  1. 全球电商平台:自动生成商品描述页的响应式前端代码。用户输入文案与图片素材,模型在 两轮循环 内先理解布局需求,再精细化 HTML/CSS,确保视觉正确性和响应式断点准确,减少人工审核成本。
  2. 编程教育服务:学生提交编程作业,模型通过循环迭代诊断错误并生成修复建议。第一轮定位语法/逻辑问题,第二轮生成改进的修复片段,避免多轮对话造成的上下文丢失和延迟,提升交互实时性。

局限

  • - **循环次数收益饱和且存在非单调退化**:论文明确指出,在两轮循环之后,增加循环次数反而导致性能下降,这源于**跨循环位置偏移 (CLP)** 引入的固定位置失配成本,随着循环加深,可提供的表征精炼收益递减而成本不变,使得增益–成本平衡点停留在两轮。这意味着 PLT 无法通过简单增加循环次数无限扩展测试时计算,限制了其在大规模推理任务上的可伸缩性。
  • - **仅在 7B 参数代码模型上验证,领域和规模泛化性未知**:所有实验均基于 7B 的 LoopCoder-v2,且训练数据以代码为主。虽然代码任务具有代表性,但 PLT 架构在自然语言理解、多模态等场景下的表现尚未探索;同时,对于更大规模模型(例如 13B、30B)的适用性缺乏实验支撑,工业级部署的参考价值有限。
  • - **共享 KV 缓存与门控滑动窗口注意力的潜在能力上限**:PLT 通过共享 KV 和**门控滑动窗口注意力 (G-SWA)** 降低存储和延迟,但这种设计可能削弱模型处理超长距离依赖的能力。论文未系统分析 G-SWA 在不同序列长度下的有效性边界,也未对比完全注意力机制下的性能上限,为实际应用中的长上下文场景留下不确定性。
论文Jian Yang2026-06-16原文

相关内容