计算机科学 > 软件工程
[提交于 2025年5月5日
]
标题: 修复的艺术:用指令微调模型优化迭代程序修复
标题: The Art of Repair: Optimizing Iterative Program Repair with Instruction-Tuned Models
摘要: 自动程序修复(APR)旨在减少识别和修复源代码中错误所需的手动工作量。在基于大型语言模型(LLM)的代理兴起之前,一种常见策略是增加生成补丁的数量,有时达到数千个,以在基准测试中获得更好的修复效果。最近,LLMs通过反馈引导实现了自我迭代的能力,在多轮迭代中改进补丁。然而,文献往往关注多次迭代而忽视了不同数量的输出。我们研究了一种平衡这两种方法的APR流水线,即生成多个输出和多轮迭代,同时对每个错误限制总补丁数不超过10个。我们将三种最先进的指令微调LLM——DeepSeekCoder-Instruct、Codellama-Instruct和Llama3.1-Instruct应用于APR任务。我们进一步使用三种大小(1K、30K、65K)和两种技术(全微调和LoRA)对每个模型进行微调,使我们能够在两个APR基准:HumanEval-Java和Defects4J上评估它们的修复能力。我们的结果显示,仅使用微调数据集的一小部分(<1%),我们可以将可能补丁的数量提高多达78%,这挑战了先前研究表明使用全微调时收益有限的研究。然而,我们发现超过某些阈值会导致收益递减,这可能是由于过拟合造成的。此外,我们表明基础模型从迭代式地创建补丁中受益匪浅,而不是一次性生成所有补丁。此外,在复杂的基准测试中,迭代策略的优势更加明显。即使是经过微调的模型,虽然从迭代中获益较少,但在复杂基准测试中仍能获得优势。这项研究强调了需要结合多输出生成和迭代精炼的平衡APR策略的重要性。
文献和引用工具
与本文相关的代码,数据和媒体
alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)
演示
推荐器和搜索工具
arXivLabs:与社区合作伙伴的实验项目
arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。
与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。
有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.