文章核心观点 华为研究团队推出的SWE-Lego是一个仅基于监督微调(SFT)的软件工程代码智能体解决方案,旨在解决复杂软件工程任务训练成本高、高质量数据稀缺的挑战[4][9] 该方法无需复杂的强化学习(RL)流程,通过在数据构建、训练方法和测试策略三方面的创新,在SWE-bench Verified基准测试中取得了同等规模开源模型的SOTA性能,甚至超越部分更大规模闭源模型[2][5] 混合数据集构建 - 采用真实世界数据与合成数据互补的混合构建策略,共包含32,119个高质量任务实例和18,110个验证轨迹(其中14,110个完全解决,4,000个半解决),覆盖3,251个代码仓库[14][24] - 真实数据来自严格筛选的GitHub Pull Requests,提供贴近生产环境的复杂性和真实性,但数量有限且成本较高[14] - 合成数据通过AST转换和LLM重写在真实代码库中故意注入Bug生成,具有可扩展、成本低、可共享沙箱的优势,但复杂度相对较低[15] - 通过严格的轨迹验证流程确保数据质量,包括防止Git历史泄露导致的解决方案泄露、处理工具调用错误、精简工具集以及过滤低质量轨迹[20][21][22] - 实验表明,混合数据集是性能提升的最大驱动力,为SWE-Lego-Qwen3-32B模型贡献了+25.6%的性能提升[13][25] 改进的监督微调 - 引入步骤级错误掩码技术,在保持完整轨迹上下文的同时,仅对正确的步骤计算损失,避免模型学习专家轨迹中的中间错误步骤[26][28] - 采用基于轨迹交互轮数的课程学习策略,将数据按难度分为简单(0-50轮)、中等(50-70轮)、困难(70-100轮)三个等级,并分阶段进行训练[29] - 改进的SFT方法(错误掩码+课程学习)为SWE-Lego-Qwen3-32B模型带来了+3.8%的性能提升[13] - 经过改进的SFT训练后,SWE-Lego-Qwen3-8B和32B模型在SWE-bench Verified上的解决率分别达到42.2%和52.6%[5][33] 测试时扩展策略 - 测试时扩展(TTS)可在不重新训练的情况下,通过分配额外测试阶段计算资源提升模型性能,为SWE-Lego-Qwen3-32B模型贡献了+6.2%的提升[13] - 策略包含两个正交维度:串行扩展(增加最大交互轮次)与并行扩展(生成多个候选轨迹并选优)[34] - 在有限测试预算下,应优先进行串行扩展至性能饱和(约100-140轮),再将剩余资源分配给并行扩展[34][37] - 在并行扩展中,比较了生成式与回归式两种打分器,生成式打分器在候选轨迹数量(K值)增加时表现更优且持续改进,而回归式打分器易趋于饱和[37][38][39] - 使用生成式打分器的SWE-Lego-Verifier-8B在TTS@16设置下达到49.6%的解决率,超越了OpenHands-Critic-32B(44.0%)和R2E-Gym-Verifier-14B(47.0%)[40] 性能成果与行业意义 - SWE-Lego在SWE-bench Verified基准测试中,基于Qwen3系列模型微调后,其8B和32B版本分别达到42.2%和52.6%的解决率,取得了同等规模开源模型的SOTA水平[5][8] - 该方法证明了仅使用轻量级的SFT方法,无需复杂RL流程,也能在软件工程任务上达到顶尖性能,降低了训练成本与复杂度,对中小团队更具可行性[2][43] - 项目已全面开源,包括代码、模型和全部数据,可供行业直接获取和使用[2] 未来展望 - 未来工作将探索更大模型与更多数据的组合,并将方法扩展到Python之外的其他编程语言及其他类型的代码任务[43] - 计划处理企业级的长序列、多文件复杂任务,并将SWE-Lego应用到真实的软件开发流程中[43]
华为推出软工代码智能体SWE-Lego,解锁SFT训练极致性能
机器之心·2026-01-13 12:08