一句话:构建 APR-Instruction 指令数据集,系统评估四种 PEFT 方法在自动程序修复上的效果,最佳模型多修复 58% 缺陷。
自动程序修复(APR)利用大语言模型生成补丁,但现有研究多采用全模型微调(FMFT),对参数高效微调(PEFT)在 APR 上的基于执行的评估仍有限。本文先用提示工程增强现有 APR 数据集,构建指令数据集 APR-Instruction;再用四种 PEFT 方法微调四个预训练大语言模型,并与最先进的 LLM 型 APR 技术比较。最佳模型比 SOTA 多修复 58% 的缺陷;(IA)^3 在提升模型创造力与修复能力上表现最好。作者进一步探索 PEFT 超参数最优配置、指令数据规模的影响,发现更多参数与更大训练集未必带来更优性能,并分析峰值内存与可训练参数以说明效率。数据集、权重与代码均已开源。
Automated Program Repair (APR) aims to fix bugs by generating patches. And existing work has demonstrated that "pre-training and fine-tuning" paradigm enables Large Language Models (LLMs) improve fixing capabilities on APR. However, existing work mainly focuses on Full-Model Fine-Tuning (FMFT) for APR and limited research has been conducted on the execution-based evaluation of Parameter-Efficient Fine-Tuning (PEFT) for APR. Comparing to FMFT, PEFT can reduce computing resource consumption without compromising performance and has been widely adopted to other software engineering tasks.To fill this gap, we enhance the existing APR dataset by employing prompt engineering to create an instruction dataset, APR-Instruction, at first. Secondly, we fine-tune four pre-trained LLMs using four different PEFT methods with APR-Instruction. The best fine-tuned model fixes 58% more bugs than the state-of-the-art LLM-based APR techniques. The results also show that (IA)3 improves the creativity of LLMs more effectively through fine-tuning and achieves the highest fixing capability compared to the other three PEFT methods. Thirdly, we explore the optimal configuration of PEFT hyperparameters, and assess the impact of instruction dataset size, showing that a larger number of parameters and a larger training dataset do not necessarily result in better performance for PEFT. Lastly, we analyze peak memory usage and trainable parameters to show the efficiency of PEFT.This work provides a comprehensive exploration of PEFT on APR and suggests potentially promising directions for extension to other software engineering downstream tasks. APR-Instruction, PEFT weights, and the fine-tuning code are publicly available as open-source resources.
@inproceedings{LiZCHD24,
title = {Exploring Parameter-Efficient Fine-Tuning of Large Language Model on Automated Program Repair},
author = {Guochang Li and Chen Zhi and Jialiang Chen and Junxiao Han and Shuiguang Deng},
booktitle = {ASE},
year = {2024},
doi = {10.1145/3691620.3695066}
}