MergeRepair: An Exploratory Study on Merging Task-Specific Adapters in Code LLMs for Automated Program Repair

📄 arXiv: 2408.09568v3 📥 PDF

作者: Meghdad Dehghan, Jie JW Wu, Fatemeh H. Fard, Ali Ouni

分类: cs.SE, cs.AI

发布日期: 2024-08-18 (更新: 2025-06-06)


💡 一句话要点

MergeRepair:探索代码LLM中合并任务特定适配器用于自动程序修复

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 自动程序修复 代码LLM 适配器合并 参数高效微调 持续学习

📋 核心要点

  1. 现有代码LLM在程序修复等任务中表现出色,但训练成本高昂,参数高效的微调方法是研究重点。
  2. MergeRepair探索了合并多个任务特定适配器的方法,旨在提升代码LLM在自动程序修复任务上的性能。
  3. 论文提出了持续合并方法,并对比了不同合并策略,验证了MergeRepair在APR任务上的有效性。

📝 摘要(中文)

大型语言模型(LLMs)在软件开发相关任务(如程序修复、文档编写、代码重构、调试和测试)中表现出强大的能力。然而,训练这些模型需要大量数据和显著的计算资源。适配器是专门设计的小型模块,用于对LLM进行参数高效的微调,以适应特定任务、领域或应用,而无需对整个模型进行大规模的重新训练。这些适配器提供了一种更有效的方式来定制LLM以满足特定需求,从而利用大型模型的现有能力。模型(和适配器)合并已成为一种开发能够执行多项任务的模型的技巧,只需极少的训练或无需训练。尽管模型和适配器合并在自然语言处理和计算机视觉等领域已显示出良好的性能,但其在软件工程任务中的适用性仍有待探索。在本文中,我们通过我们的方法MergeRepair,研究了合并适配器在软件工程环境中的有效性,特别关注自动程序修复(APR)任务。我们使用三种不同的合并方法(包括权重平均、ties和dare-ties)合并多个任务特定的适配器,并评估合并后的适配器在APR任务上的性能。我们引入了一种持续合并方法,这是一种新颖的方法,其中我们按顺序合并任务特定的适配器,其中合并适配器的顺序和权重起着重要的作用。我们进一步将我们的方法的性能与基线方法进行比较,该基线方法包括应用于不同适配器参数的等权重合并,其中所有适配器同等重要。

🔬 方法详解

问题定义:论文旨在解决如何高效地利用预训练代码LLM进行自动程序修复(APR)的问题。现有方法要么需要全参数微调,计算成本高昂;要么使用单一适配器,难以兼顾不同类型的修复任务。因此,如何将多个任务特定适配器的知识有效地整合到一个模型中,以提升APR的性能,是本文要解决的核心问题。

核心思路:论文的核心思路是通过合并多个任务特定适配器,构建一个能够执行多种修复任务的统一模型。通过适配器合并,可以在不进行大规模重新训练的情况下,将不同适配器学习到的知识迁移到新的任务上。此外,论文还提出了持续合并方法,通过控制合并的顺序和权重,进一步优化合并后的模型性能。

技术框架:MergeRepair的整体框架包括以下几个主要步骤:1)针对不同的程序修复任务,训练多个任务特定的适配器;2)使用不同的合并策略(如权重平均、ties和dare-ties)将这些适配器合并成一个统一的适配器;3)使用合并后的适配器对预训练代码LLM进行微调,得到最终的APR模型;4)在标准的APR数据集上评估模型的性能。

关键创新:论文的关键创新在于提出了持续合并方法,这是一种顺序合并任务特定适配器的策略。与传统的等权重合并方法不同,持续合并方法允许根据任务的重要性或适配器的性能,调整合并的顺序和权重。这种方法能够更有效地利用不同适配器的知识,从而提升APR的性能。

关键设计:在持续合并方法中,一个关键的设计是确定合并的顺序和权重。论文可能采用了启发式方法或基于验证集性能的搜索算法来确定最佳的合并顺序和权重。此外,论文还比较了不同的合并策略,如权重平均、ties和dare-ties,以选择最适合APR任务的合并方法。具体的参数设置和损失函数可能与适配器的训练过程相关,需要参考原始论文的详细描述。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,MergeRepair方法在自动程序修复任务上取得了显著的性能提升。通过对比不同的合并策略和基线方法,验证了持续合并方法的有效性。具体的性能数据(如修复成功率、修复时间等)需要在论文中查找,但总体而言,MergeRepair为APR任务提供了一种有效的解决方案。

🎯 应用场景

该研究成果可应用于自动化软件开发流程,提升代码质量和开发效率。通过自动程序修复,可以减少人工调试的工作量,缩短软件发布周期。此外,该方法还可以扩展到其他软件工程任务,如代码生成、代码审查和代码优化等,具有广泛的应用前景。

📄 摘要(原文)

Large Language Models (LLMs) have shown high capabilities in several software development-related tasks such as program repair, documentation, code refactoring, debugging, and testing. However, training these models requires massive amount of data and significant computational resources. Adapters are specialized, small modules designed for parameter efficient fine-tuning of LLMs for specific tasks, domains, or applications without requiring extensive retraining of the entire model. These adapters offer a more efficient way to customize LLMs for particular needs, leveraging the pre-existing capabilities of the large model. Model (and adapter) merging have emerged as a technique to develop one model capable of multiple tasks, with minimal or no training required. Although model and adapter merging has shown promising performance in domains such as natural language processing and computer vision, its applicability to software engineering tasks remains underexplored. In this paper, we investigate the effectiveness of merged adapters within the context of software engineering, with a particular focus on the Automated Program Repair (APR) task, through our approach, MergeRepair. In particular, we merge multiple task-specific adapters using three different merging methods, including weight-averaging, ties, and dare-ties, and evaluate the performance of the merged adapter on the APR task. We introduce a continual merging approach, a novel method in which we sequentially merge the task-specific adapters where the order and weight of the merged adapters play a significant role. We further compare the performance of our approach with a baseline method consisting of equal-weight merging applied on parameters of different adapters, where all adapters are of equal importance.