- 简介在代码生成领域,自我调试非常关键。它允许LLM根据执行反馈来完善其生成的代码。这是特别重要的,因为对于复杂任务来说,在一次尝试中生成正确的解决方案是具有挑战性的。以往关于自我调试的研究主要集中在通过提供少量示例来引导LLM的方法,但这在小型开源LLM上效果不佳。在这项工作中,我们提出了一个训练框架,显著提高了LLM的自我调试能力。直观地说,我们观察到在错误代码的一系列解释后跟随代码完善有助于LLM更好地分析错误代码并进行完善。因此,我们提出了一个自动化流程来收集高质量的代码解释和完善数据集,通过生成一些解释和完善轨迹并通过执行验证进行筛选。我们对成功和失败的轨迹进行了监督微调(SFT)和进一步的强化学习(RL),采用一种新颖的奖励设计,考虑代码解释和完善的质量。SFT在四个基准测试中将pass@1提高了高达15.92%,将pass@10提高了9.30%。RL训练在pass@1上额外提高了3.54%,在pass@10上提高了2.55%。训练后的LLM表现出迭代完善能力,可以不断完善代码。最后,我们的人类评估表明,使用我们的框架训练的LLM生成更有用的代码解释,帮助开发人员更好地理解源代码中的错误。
-
- 图表
- 解决问题提高LLMs自我调试能力的训练框架。
- 关键思路通过一系列的代码解释和细化来帮助LLMs更好地分析错误代码并进行改进。使用自动化管道收集高质量的代码解释和细化数据集,并进行监督微调和强化学习,考虑代码解释和细化质量的新奖励设计。
- 其它亮点实验表明,该框架可以显著提高LLMs的自我调试能力。使用了四个基准测试集,SFT可以将pass@1提高高达15.92%,将pass@10提高9.30%。RL训练可以额外提高pass@1 3.54%和pass@10 2.55%。经过训练的LLMs具有迭代改进能力,可以持续改进代码。人类评估表明,使用该框架训练的LLMs可以生成更有用的代码解释,帮助开发人员更好地理解源代码。
- 先前的自我调试研究主要集中在通过提供少量示例来提示LLMs的方法,但在小型开源LLMs上效果不佳。
NEW
提问交流
提交问题,平台邀请作者,轻松获得权威解答~
向作者提问

提问交流