Parameter-Efficient Fine-Tuning of Large Language Models for Unit Test Generation: An Empirical Study

📄 arXiv: 2411.02462v2 📥 PDF

作者: André Storhaug, Jingyue Li

分类: cs.SE, cs.AI, cs.LG

发布日期: 2024-11-04 (更新: 2025-11-23)

备注: 26 pages, 2 figures, 6 tables, 1 listing


💡 一句话要点

研究参数高效微调LLM在单元测试生成中的应用,LoRA可媲美全量微调。

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

关键词: 单元测试生成 参数高效微调 大语言模型 LoRA Prompt Tuning 代码测试 软件工程

📋 核心要点

  1. 现有单元测试生成方法主要依赖LLM的全量微调,计算成本高昂,缺乏对参数高效微调(PEFT)技术的探索。
  2. 本文探索了LoRA、(IA)^3和Prompt Tuning等多种PEFT方法在单元测试生成中的应用,旨在降低计算成本并保持性能。
  3. 实验结果表明,LoRA在单元测试生成中可达到与全量微调相当的性能,而Prompt Tuning在考虑训练成本时最具成本效益。

📝 摘要(中文)

本文研究了参数高效微调(PEFT)方法在大语言模型(LLM)单元测试生成中的应用。PEFT方法通过仅微调模型参数的一个子集,在降低计算成本的同时保持性能。现有研究表明,PEFT技术的有效性依赖于具体任务,而目前单元测试生成领域主要采用LLM的全量微调。本文对比了全量微调和多种PEFT方法,包括LoRA、(IA)^3和Prompt Tuning,在13个不同架构和大小的模型上进行了实验。使用标准基准数据集评估了这些方法在单元测试生成中的有效性,并测量了生成测试的语法正确性、CodeBLEU、pass@1、指令覆盖率、分支覆盖率和突变分数。结果表明,在某些情况下,LoRA可以达到与全量微调相当的性能。如果重视训练成本,Prompt Tuning是最具成本效益的方法,特别是对于大型模型。然而,与基线模型相比,全量微调或PEFT微调的模型可能生成更少的有效测试用例,因为它们会生成更多调用不存在的方法或类型不匹配的测试。但对于生成的有效测试用例,微调模型的测试覆盖率优于基线模型。

🔬 方法详解

问题定义:论文旨在解决使用大型语言模型(LLM)生成单元测试时,全量微调带来的高计算成本问题。现有方法主要依赖全量微调,需要更新所有模型参数,这对于大型模型来说非常耗时耗资源。因此,如何降低微调成本,同时保持或提升单元测试生成的质量,是本文要解决的核心问题。

核心思路:论文的核心思路是探索参数高效微调(PEFT)技术在单元测试生成任务中的应用。PEFT方法通过只微调模型参数的一小部分,显著降低了计算成本,同时尽可能保持模型的性能。通过对比不同的PEFT方法,找到最适合单元测试生成的策略。

技术框架:论文的技术框架主要包括以下几个步骤:1) 选择预训练的LLM模型;2) 选择PEFT方法(LoRA, (IA)^3, Prompt Tuning)或全量微调;3) 使用单元测试数据集对模型进行微调;4) 使用微调后的模型生成单元测试;5) 使用一系列指标(语法正确性、CodeBLEU、pass@1、指令覆盖率、分支覆盖率、突变分数)评估生成的单元测试的质量。

关键创新:论文的关键创新在于首次系统性地研究了多种PEFT方法在单元测试生成任务中的有效性。之前的研究主要集中在全量微调,而本文通过实验对比,揭示了不同PEFT方法在单元测试生成中的优劣,为后续研究提供了指导。

关键设计:论文的关键设计包括:1) 选择了13个不同架构和大小的LLM模型,以保证实验结果的泛化性;2) 使用了标准基准数据集进行评估,保证了实验结果的可比性;3) 采用了多种评估指标,全面衡量了生成单元测试的质量;4) 详细分析了不同PEFT方法在不同模型上的表现,为选择合适的PEFT方法提供了依据。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,LoRA在单元测试生成任务中可以达到与全量微调相当的性能,但在训练成本上显著降低。Prompt Tuning在考虑训练成本时,对于大型模型而言是最具成本效益的方法。虽然微调后的模型生成的有效测试用例数量可能略低于基线模型,但有效测试用例的测试覆盖率更高。

🎯 应用场景

该研究成果可应用于软件开发流程的自动化测试环节,帮助开发者更高效地生成高质量的单元测试,从而提高代码质量、降低维护成本。尤其是在资源受限的环境下,PEFT方法能够以较低的成本定制LLM,使其更好地适应特定的代码库和测试需求。未来,该研究可以扩展到其他代码相关的任务,例如代码补全、代码修复等。

📄 摘要(原文)

Parameter-efficient fine-tuning (PEFT) methods, which fine-tune only a subset of model parameters, offer a promising solution by reducing the computational costs of tuning large language models (LLMs) while maintaining their performance. Existing studies have explored using PEFT and LLMs for various code-related tasks and found that the effectiveness of PEFT techniques is task-dependent. The state-of-the-art is limited to using LLMs with full fine-tuning to generate unit tests. The application of PEFT techniques in unit test generation remains underexplored. This paper investigates both full fine-tuning and various PEFT methods, including LoRA, (IA)^3, and prompt tuning, across thirteen models of different architectures and sizes. We use well-established benchmark datasets to evaluate their effectiveness in unit test generation and measure syntax correctness, CodeBLEU, pass@1, instruction coverage, branch coverage, and mutation score of the generated tests. Our findings show that LoRA can deliver performance comparable to full fine-tuning for unit test generation in several cases. If training costs are valued, prompt tuning is the most cost-effective approach, particularly for large models. However, the models tuned with full fine-tuning or PEFT may generate fewer executable test cases than the baseline model because they generate more tests calling nonexistent methods or having type mismatches. For the generated ones that are executable, the ones from the tuned models show better test coverage than those from the baseline model.