微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 华为研究团队突破代码修复瓶颈,8B模型击败32B巨型对手!

华为研究团队突破代码修复瓶颈,8B模型击败32B巨型对手!

2026-01-09 16:55
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-01-09 16:55 科技行者

这项由华为技术有限公司、南洋理工大学、香港大学和香港中文大学联合完成的突破性研究发表于2026年1月,论文编号为arXiv:2601.01426v1。研究团队通过一种名为SWE-Lego的创新训练方法,让相对较小的8B参数模型在软件代码自动修复任务上的表现超越了许多32B甚至70B的大型模型。这就像是让一位技艺精湛的专科医生在复杂手术中战胜了经验更丰富的全科医生一样令人惊讶。

想象一下,你的电脑程序出了bug,就像汽车引擎出现故障一样让人头疼。传统上,程序员需要像汽车修理工一样,花费大量时间阅读代码、测试各种可能性,然后手工修复问题。而AI代码修复就像是拥有了一个超级智能的自动诊断和修复系统,能够自动定位问题并提供解决方案。这种技术的价值不言而喻——它可以大大提升软件开发效率,减少人为错误,甚至在某些情况下比经验丰富的程序员更快更准确地解决问题。

然而,训练这样的AI系统面临着巨大挑战。现有的方法通常需要复杂的多阶段训练流程,就像培养一个医生需要经历医学院、实习、住院医师等多个阶段一样。这些方法不仅计算成本高昂,还容易在训练过程中出现各种问题。更关键的是,高质量的训练数据极其稀缺,就像寻找经验丰富的名医来指导新手一样困难。

华为研究团队提出的SWE-Lego框架就像是一套精心设计的医学培训体系,通过三个核心组件实现了令人瞩目的效果。首先是构建了一个包含32000个高质量任务实例和18000个验证轨迹的混合数据集,这就像是收集了大量真实的病例和专家的诊疗记录。其次是改进了传统的监督学习方法,引入了错误屏蔽和基于难度的课程学习,就像是在医学教学中先让学生处理简单病例,逐步提升到复杂手术,同时避免让学生学习错误的操作。最后是开发了测试时扩展技术,通过生成多个解决方案并使用验证器选择最佳方案,就像是让多位医生会诊后选择最优治疗方案。

研究团队的核心洞察在于发现了数据质量比模型规模更重要的事实。他们的8B参数模型SWE-Lego-Qwen3-8B在SWE-bench Verified基准测试中达到了42.2%的成功率,而32B模型更是达到了52.6%的惊人表现。当加上测试时扩展技术后,这两个数字分别提升到了49.6%和58.8%。这就像是一个受过良好训练的专科医生往往比经验不足的全科医生在特定领域表现更出色一样。

一、数据是王道:构建高质量的训练材料库

传统的AI训练就像是让学生只看教科书学医一样,缺乏真实世界的复杂性和多样性。华为研究团队认识到,要训练出真正实用的代码修复AI,需要的不仅仅是大量数据,更需要高质量、多样化的训练材料。就像培养优秀医生需要真实病例和模拟训练相结合一样,他们采用了混合数据策略,将真实世界的代码问题和人工生成的合成问题巧妙结合。

这种混合策略的精妙之处在于两种数据源的互补特性。真实世界的代码问题来自GitHub上的实际拉取请求,就像是从真实医院收集的病例一样,具有高度的真实性和复杂性,但数量有限。研究团队收集了18409个这样的真实任务,它们通常涉及多个文件的修改,平均需要修改3.7个文件、9.5个代码块和138行代码,就像复杂的综合性疾病需要全方位治疗一样。

相比之下,合成任务就像是在医学模拟器上练习一样,虽然复杂度相对较低,但可以大规模生成,为AI提供更多样化的训练机会。研究团队生成了13710个合成任务,它们通常只涉及单个文件的修改,平均修改1个文件、1.3个代码块和18.8行代码。这些合成任务通过两种巧妙的技术生成:一是让大语言模型重写代码,就像让医学生根据症状描述重新诊断疾病;二是通过抽象语法树变换技术,系统性地修改代码结构,就像在模拟器中设置各种病理状况。

更重要的是,研究团队为每个任务都建立了完整的可执行环境,就像为每个病例提供了完整的检查设备和实验室条件。他们从3000多个Python仓库中精心挑选,确保每个仓库都能成功构建和运行测试。这种严格的质量控制就像医学院只选择教学医院进行临床实习一样,保证了训练环境的可靠性。

数据质量控制的另一个关键环节是防止AI"作弊"。在软件开发中,存在一个被称为"Git作弊"的问题,就像考试时偷看答案一样,AI可能会通过查看代码仓库的历史记录来直接获得问题的解决方案。研究团队为此采取了严格的防范措施,对于真实任务,他们移除了所有在问题创建日期之后的提交记录;对于合成任务,他们完全清除了Git历史记录。这确保AI必须真正"理解"代码并解决问题,而不是简单地复制现成答案。

通过这种精心设计的混合数据策略,研究团队最终构建了一个包含32119个任务实例和18110个验证轨迹的高质量数据集。实验结果显示,这种混合方法比单纯使用真实数据或合成数据都要有效得多。随着合成数据比例的增加,AI的性能稳步提升,就像医学生在真实病例和模拟训练的双重磨练下逐渐成长为优秀医生一样。

二、精准教学:改进传统的学习方法

传统的AI训练方法就像让学生死记硬背教科书的每一个字一样,不分重点地学习所有内容。华为研究团队发现,这种方法在代码修复任务中存在严重问题,因为专家演示的过程往往包含错误尝试和最终的正确解决方案,如果AI同时学习这两部分,就像让医学生同时记住错误诊断和正确诊断一样,容易产生混淆。

为了解决这个问题,研究团队开发了"步骤级错误屏蔽"技术,就像是给学生标注出教科书中的错误示例,让他们专注学习正确的方法。具体来说,当AI在学习专家轨迹时,系统会自动识别那些导致执行错误的操作步骤,比如工具调用失败或测试不通过的情况,然后在计算学习损失时忽略这些错误步骤。这就像老师在讲解手术过程时,会明确指出"这一步是错误的,不要学习",让学生只专注于学习正确的操作。

这种方法的效果立竿见影。在实际测试中,使用错误屏蔽技术的模型比传统方法提升了2个百分点以上。更有趣的是,这种改进主要体现在减少"实现错误"和"定位错误"这两类问题上,说明AI确实学会了避免常见的错误模式。

除了错误屏蔽,研究团队还引入了"基于难度的课程学习",就像学校教育中从小学到中学再到大学的渐进式培养体系。他们发现了一个有趣的规律:解决问题所需的交互轮次与任务难度高度相关,相关系数达到了惊人的-0.95。简单来说,越复杂的问题需要越多的尝试次数才能解决,这就像复杂疾病需要更多检查和治疗步骤一样。

基于这个发现,研究团队将训练数据按交互轮次分为三个难度等级:简单任务(0-50轮)、中等任务(50-70轮)和困难任务(70-100轮)。训练时,AI首先学习简单任务,掌握基本技能后再逐步接触更复杂的问题。这就像医学院的培养模式,学生先学习基础理论,然后接触简单病例,最后才处理复杂的疑难杂症。

为了防止AI在学习新内容时忘记之前学过的技能,研究团队在每个阶段都会加入前面阶段的训练数据进行巩固。这种"温故而知新"的策略确保了AI能够在掌握高难度技能的同时保持对基础技能的熟练度。

实验结果表明,错误屏蔽和课程学习的结合使用效果最佳。在SWE-bench Verified测试中,两种技术的协同作用为8B模型带来了2.8个百分点的提升,为32B模型带来了3.8个百分点的提升。这就像是精心设计的医学教育体系比传统的填鸭式教学更能培养出优秀医生一样。

三、多方案会诊:测试时扩展技术的智慧

即使是训练有素的AI模型,在面对复杂问题时也可能出现"一招鲜"的局限性,就像单个医生可能会有思维盲区一样。华为研究团队借鉴了医学界多科会诊的智慧,开发了测试时扩展技术,让AI能够生成多个解决方案,然后通过"专家评审"选择最佳方案。

这种方法的核心思想是在AI推理时投入更多计算资源,就像面对疑难杂症时组织多科专家会诊一样。研究团队发现了两个关键的扩展维度:顺序扩展和并行扩展。顺序扩展就像是给医生更多时间进行诊断,允许AI进行更多轮次的思考和尝试;并行扩展则像是让多个医生同时独立诊断,然后比较他们的方案。

在顺序扩展方面,研究团队通过大量实验发现了一个重要规律:增加思考轮次在开始时效果显著,但在达到100-140轮后开始饱和。这就像医生在诊断初期每增加一项检查都能获得有用信息,但检查过多时新信息的价值会递减。超过这个临界点后,继续增加轮次的收益很小,反而应该将计算资源投入到并行扩展上。

并行扩展的关键在于如何从多个候选方案中选择最优解。研究团队比较了两种验证器设计:回归式验证器和生成式验证器。回归式验证器就像是给每个方案打分,然后选择得分最高的;生成式验证器则像是让评审专家阅读方案后回答"这个方案好不好",然后根据回答的概率来判断。

实验结果显示,生成式验证器明显优于回归式验证器,特别是在候选方案数量增加时优势更加明显。在16个候选方案中选择时,生成式验证器的表现比回归式验证器高出2.8个百分点。这种差异的原因可能在于生成式验证器更好地利用了大语言模型的内在知识和推理能力,就像经验丰富的专家在评估方案时会综合考虑多种因素,而不仅仅是按照固定标准打分。

在验证器训练方面,研究团队发现数据质量和规模都很重要。使用18000个轨迹训练的验证器比使用6000个轨迹的表现更好,而且随着候选方案数量增加,这种优势愈发明显。这就像培训经验丰富的评审专家需要大量的案例积累一样,更多的高质量训练数据能够让验证器具备更强的判断能力。

另一个有趣的发现是验证器规模的影响。对于8B模型生成的候选方案,8B和30B规模的验证器表现相似;但对于32B模型的输出,30B验证器明显优于8B验证器。这说明更强大的模型生成的方案往往包含更微妙的差异,需要更大规模的验证器才能准确识别,就像复杂病例需要更资深的专家来评判一样。

通过这种多层次的测试时扩展策略,华为研究团队的8B模型性能从42.2%提升到49.6%,32B模型从52.6%提升到58.8%。这种提升幅度证明了"集体智慧"在AI推理中的重要价值,就像多科会诊往往能够得出比单个专家更准确的诊断结果一样。

四、实战验证:与顶尖对手的较量

华为研究团队的SWE-Lego系统在实际测试中展现出了令人震撼的性能表现,就像一匹黑马在激烈竞争中脱颖而出。在软件工程界广受认可的SWE-bench Verified基准测试中,SWE-Lego不仅超越了同等规模的开源模型,甚至在某些情况下逼近了更大规模的商业模型。

SWE-bench Verified就像是软件修复AI的"高考",包含了500个精心筛选的真实软件问题,每个问题都经过严格验证,确保有明确的正确答案和可执行的测试环境。这个测试的难度在于它不是简单的代码生成任务,而是需要AI具备完整的软件工程能力:理解问题描述、浏览代码库、定位bug位置、设计修复方案、实施修改并验证效果,就像要求医生完成从接诊到治愈的完整诊疗流程。

在这场激烈的竞争中,SWE-Lego-Qwen3-8B取得了42.2%的成功率,而32B版本更是达到了52.6%的优异表现。这个数字的含义是,在500个测试问题中,8B模型能够完全正确解决211个问题,32B模型能够解决263个问题。考虑到这些都是来自真实软件项目的复杂问题,这样的表现水平已经具备了实用价值。

与竞争对手的比较更能体现SWE-Lego的优势。在8B级别的模型中,传统的SWE-Gym-7B只能达到10.6%的成功率,SWE-agent-LM-7B为15.2%,即使是表现较好的Klear-Agent-8B-SFT也只有39.0%的成功率。SWE-Lego-Qwen3-8B的42.2%成功率明显领先,就像是在同一场考试中,别的学生考60-70分时,它考到了85分以上。

在32B级别的竞争中,SWE-Lego的优势同样明显。R2E-Gym-32B的成功率为34.4%,Skywork-SWE-32B为38.0%,即使是采用强化学习的DeepSWE-32B-Preview也只达到42.2%。SWE-Lego-Qwen3-32B的52.6%成功率不仅大幅超越了这些对手,甚至逼近了一些采用复杂训练流程的更大模型的性能。

特别值得注意的是,研究团队报告的所有结果都是在防止"Git作弊"条件下获得的,而许多竞争对手的结果可能因为Git作弊而被人为抬高。Git作弊就像是考试时偷看答案,虽然能提高分数,但无法反映真实能力。这使得SWE-Lego的成绩含金量更高,就像在严格监考条件下取得的成绩更能反映学生的真实水平。

当加入测试时扩展技术后,SWE-Lego的表现更是令人惊叹。8B模型的成功率提升到49.6%,32B模型达到58.8%,这已经接近甚至超过了一些商业级的大型模型。这种提升就像是单个医生的诊断准确率为50%,但通过多科会诊能够将准确率提升到60%以上,充分体现了集体智慧的价值。

与商业模型的比较也颇为有趣。OpenAI的GPT-4o在内部评测中达到33.2%,Claude-4-Sonnet为66.6%,最新的GPT-5甚至达到71.8%。虽然SWE-Lego尚未达到这些顶级商业模型的水平,但考虑到它是完全开源的,而且模型规模要小得多,这样的表现已经相当出色,就像是让一个小诊所的医生与顶级医院的专家团队竞争,虽然还有差距,但已经展现出了足够的专业水平。

更重要的是,SWE-Lego证明了仅仅通过精心设计的监督学习就能取得接近复杂训练方法的效果。许多竞争对手需要结合预训练、监督微调、强化学习等多个阶段,就像培养一个专家需要经历漫长复杂的教育过程。而SWE-Lego仅通过改进的监督学习就达到了类似效果,这不仅降低了训练成本,也为其他研究者提供了一条更简洁高效的技术路径。

五、深度剖析:成功背后的技术洞察

华为研究团队在开发SWE-Lego的过程中获得了许多深刻的技术洞察,这些发现不仅解释了为什么SWE-Lego能够成功,也为整个AI代码修复领域提供了宝贵的经验。就像医学研究不仅要找到治疗方法,还要理解疾病的本质机制一样,理解这些技术洞察对于推动整个领域的发展至关重要。

通过对训练过程中错误模式的详细分析,研究团队发现AI在学习代码修复技能时遵循着清晰的发展轨迹,就像医学生从基础知识到临床实践的成长过程。在训练初期,AI最常犯的错误是"无法重现问题",占所有错误的38.97%。这就像新手医生刚开始时连病人的症状都无法准确识别一样。经过第一个训练周期后,这类错误完全消失,说明AI已经掌握了基本的问题理解和环境操作技能。

随着训练的深入,"超出最大轮次限制"成为主要问题,占错误的35.14%。这反映了AI在策略规划方面的不足,就像医生能够诊断出疾病,但不知道如何高效地制定治疗方案。这种错误模式的出现恰好验证了课程学习方法的价值——通过先训练简单任务,AI能够学会基本的解题策略,然后再应用到复杂问题中。

在训练的后期阶段,"错误实现"和"定位错误"成为主要瓶颈。这说明AI已经具备了基本的问题解决能力,但在精确定位问题和实施正确修复方案方面还需要提升。这就像经验丰富的医生能够大致判断病情,但在具体治疗细节上可能还会出错。这种转变恰好说明了错误屏蔽技术的重要性——通过避免学习错误的实现步骤,AI能够更好地掌握正确的操作方式。

数据规模与质量的权衡也提供了重要启示。研究团队发现,仅仅增加数据量并不能保证性能提升,数据质量同样重要。就像医学院不能只是增加教学时间,更需要优化教学内容和方法。通过混合真实数据和高质量合成数据,SWE-Lego在有限的计算资源下实现了最佳的性能收益比。

在测试时扩展的实验中,研究团队发现了顺序扩展和并行扩展之间的有趣关系。顺序扩展在达到饱和点后收益递减,这说明单纯增加思考时间并不总是有效的,就像医生花太多时间在单一诊断思路上可能会钻牛角尖。相反,并行扩展通过探索不同的解决路径,能够在相同的计算预算下获得更好的效果,这体现了"条条大路通罗马"的智慧。

验证器设计的比较也揭示了深层的技术原理。生成式验证器之所以优于回归式验证器,可能是因为它更好地利用了语言模型的语义理解能力。回归式验证器只能输出一个数值分数,而生成式验证器能够通过"是"或"否"的回答体现更丰富的推理过程,就像经验丰富的专家评估不仅看结果,更重视推理过程的合理性。

训练数据的构造过程也提供了宝贵经验。防止Git作弊虽然降低了部分性能指标,但确保了AI学习到的是真正的问题解决技能,而不是简单的模式匹配。这种"诚实学习"的原则虽然在短期内可能影响竞争成绩,但对于培养真正实用的AI系统具有长远价值,就像诚实考试虽然可能影响分数,但能确保学到真正的知识。

这些技术洞察不仅解释了SWE-Lego的成功,也为整个AI代码修复领域提供了重要指导原则:重视数据质量、采用渐进式训练、结合多种扩展策略、确保学习的真实性。这些原则就像医学教育中的基本理念一样,虽然看似简单,但正确应用就能产生显著效果。

说到底,SWE-Lego的成功并非依赖某项单一的技术突破,而是通过系统性的方法改进和精心的工程实践实现的。华为研究团队证明了在AI发展的当前阶段,智能的方法设计往往比简单的规模扩展更有价值,这就像精巧的手术技术往往比昂贵的设备更能决定治疗效果。

这项研究最重要的贡献在于为开源社区提供了一条可行的技术路径。通过开源SWE-Lego的数据集、模型和方法,华为研究团队为整个AI代码修复领域的发展做出了实质性贡献。就像医学进步需要全球医生共享经验和技术一样,AI技术的发展也需要这种开放协作的精神。

对于普通开发者和软件公司来说,SWE-Lego的意义不仅在于技术突破,更在于它展示了AI辅助编程的现实可能性。当AI能够自动修复大部分常见代码问题时,程序员就能将更多精力投入到创新性工作中,就像自动化诊断设备解放了医生,让他们能够专注于更复杂的医疗决策。这种技术进步最终将提升整个软件行业的效率和质量,让我们的数字生活变得更加可靠和流畅。

Q&A

Q1:SWE-Lego是什么?

A:SWE-Lego是华为研究团队开发的AI代码自动修复系统,能够像专业程序员一样自动诊断和修复软件bug。它最大的特点是通过改进训练方法,让相对较小的8B参数模型在代码修复任务上超越了许多更大的32B甚至70B模型,就像让技艺精湛的专科医生战胜了经验更丰富的全科医生。

Q2:SWE-Lego的核心创新技术有哪些?

A:主要有三大创新:首先是混合数据集,结合真实GitHub问题和高质量合成数据,提供32000个任务实例;其次是改进的监督学习方法,包括错误屏蔽技术和课程学习,就像让AI专门学习正确操作而避免错误示范;最后是测试时扩展技术,通过生成多个解决方案并用验证器选择最佳方案,类似多科医生会诊。

Q3:普通程序员如何受益于SWE-Lego技术?

A:当这种AI代码修复技术普及后,程序员可以像使用智能助手一样获得自动化的代码问题诊断和修复建议,大大提高开发效率并减少人为错误。程序员能够将更多时间投入到创新性工作中,而不是花费大量时间调试基础性bug,就像医生有了先进诊断设备后能专注于更复杂的医疗决策。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-