修复的艺术:利用指令微调模型优化迭代式程序修复
摘要
自动程序修复 (APR) 旨在减少识别和修复源代码错误所需的人工努力。在基于 LLM 的智能体兴起之前,一种常见的策略是增加生成补丁的数量,有时达到数千个,以在基准测试上获得更好的修复结果。最近,自迭代能力使 LLM 能够在反馈引导下通过多轮迭代来优化补丁。然而,文献通常侧重于多次迭代,而忽略了不同输出数量的影响。我们研究了一个平衡这两种方法(多输出生成和多轮迭代)的 APR 流水线,同时对每个错误施加总共 10 个补丁的限制。我们将三个最先进的指令微调 LLM——DeepSeekCoder-Instruct、Codellama-Instruct、Llama3.1-Instruct——应用于 APR 任务。我们进一步在三种规模(1K、30K、65K)和两种技术(全量微调和 LoRA)的 APR 数据集上对每个模型进行微调,使我们能够评估它们在两个 APR 基准测试(HumanEval-Java 和 Defects4J)上的修复能力。我们的结果表明,仅使用微调数据集的一小部分(<1%),我们就能将生成的合理补丁数量提高多达 78%,这挑战了先前报告全量微调收益有限的研究。然而,我们发现超过特定阈值会导致收益递减,这可能是由于过拟合。此外,我们表明基础模型极大地受益于以迭代方式创建补丁,而非一次性生成所有补丁。另外,迭代策略的优势在复杂基准测试中变得更加明显。即使是微调后的模型,虽然从迭代中获益较少,但仍然能获得优势,尤其是在复杂基准测试上。这项研究强调了需要平衡多输出生成和迭代优化的 APR 策略。
引用
@article{arxiv.2505.02931,
title = {The Art of Repair: Optimizing Iterative Program Repair with Instruction-Tuned Models},
author = {Fernando Vallecillos Ruiz and Max Hort and Leon Moonen},
journal= {arXiv preprint arXiv:2505.02931},
year = {2025}
}
备注
Accepted for publication in the research track of the 29th International Conference on Evaluation and Assessment in Software Engineering (EASE), 17-20 June 2025, Istanbul, T\"urkiye