面向程序修复的存高效大语言模型与语义引导补丁生成
软件工程
2025-10-20 v2 人工智能
摘要
在本文中,我们首先表明,即使对于小规模LLM(1B-7B参数),束搜索大小的增加也需要大量的GPU使用,导致基于LLM的APR中高达80%的重复崩溃。减少内存消耗看似简单的解决方案是(1)量化LLM模型,即将LLM的权重从高精度值转换为低精度值,以及(2)使束搜索顺序化,即顺序地将每个束通过模型转发,然后将它们连接回单个输出。然而,我们通过理论分析和实验表明,这些方法仍然不起作用。为了解决这个问题,我们引入了FLAMES,一种新颖的基于LLM的APR技术,它采用语义引导的补丁生成来提高修复有效性和内存效率。与依赖束搜索的传统方法不同,FLAMES利用贪婪解码来提高内存效率,同时通过语义引导的最佳优先搜索算法将搜索引导向更多潜在的良好修复候选。在每个解码步骤,FLAMES使用来自测试验证的语义反馈,例如通过和失败的测试用例数量,来选择最有希望进一步探索的标记。我们在Defects4J上的实证评估表明,与基于LLM的APR相比,FLAMES在不影响时间效率的情况下,将内存消耗大幅降低了高达83%。此外,FLAMES在Defects4J上正确修复了133个错误,比最佳基线多修复了10个错误。此外,这些改进也推广到了HumanEval-Java和TransformedD4J数据集,FLAMES分别比最佳基线多生成了12%和36.5%的正确补丁。
引用
@article{arxiv.2410.16655,
title = {Memory-Efficient Large Language Models for Program Repair with Semantic-Guided Patch Generation},
author = {Thanh Le-Cong and Bach Le and Toby Murray},
journal= {arXiv preprint arXiv:2410.16655},
year = {2025}
}
备注
Accepted to ICSE 2026, Research Track