Skip to main content
QUICK REVIEW

[论文解读] Parameter-Efficient Finetuning of Transformers for Source Code

Shamil Ayupov, Nadezhda Chirkova|arXiv (Cornell University)|Dec 12, 2022
Software Engineering Research被引用 4
一句话总结

本文在四个代码处理任务上评估了参数高效微调(PEFT)方法——LoRA 和适配器——在预训练代码模型(CodeT5 和 PLBART)上的表现。结果表明,尽管在代码理解任务中 PEFT 的表现与全量微调相当或更优,但在代码生成任务中其性能显著落后,凸显了 PEFT 在源代码 NLP 任务中存在领域特定的局限性。

ABSTRACT

Pretrained Transformers achieve state-of-the-art performance in various code-processing tasks but may be too large to be deployed. As software development tools often incorporate modules for various purposes which may potentially use a single instance of the pretrained model, it appears relevant to utilize parameter-efficient fine-tuning for the pretrained models of code. In this work, we test two widely used approaches, adapters and LoRA, which were initially tested on NLP tasks, on four code-processing tasks. We find that though the efficient fine-tuning approaches may achieve comparable or higher performance than the standard, full, fine-tuning in code understanding tasks, they underperform full fine-tuning in code-generative tasks. These results underline the importance of testing efficient fine-tuning approaches on other domains than NLP and motivate future research in efficient fine-tuning for source code.

研究动机与目标

  • 评估参数高效微调(PEFT)方法(LoRA 和适配器)在源代码处理任务中的有效性。
  • 比较 PEFT 方法(LoRA、适配器及其组合)与全量微调在性能和参数效率方面的差异。
  • 评估 PEFT 方法在自然语言处理中有效,是否能良好泛化至具有噪声更大、结构更复杂的代码特定任务。
  • 研究模型规模和超参数(如秩 r)对 PEFT 在代码生成和代码理解任务中性能的影响。
  • 为 PEFT 在软件开发工具(如 IDE)中部署的适用性提供实证依据,其中模型效率至关重要。

提出的方法

  • 通过引入低秩矩阵 $\Delta W = AB$ 应用 LoRA(低秩微调),以更新原始模型权重 $W$,其中 $A \in \mathbb{R}^{d \times r}$,$B \in \mathbb{R}^{r \times k}$,且 $r < \min(d,k)$,该方法应用于注意力层和前馈层。
  • 通过在 Transformer 的注意力块和前馈块之后插入小型前馈网络来实现适配器训练(AT),仅在微调过程中更新适配器参数。
  • 将 LoRA 与适配器结合(FF-LoRA + AT),以探索协同改进的潜力,同时监控参数量和推理开销。
  • 使用 CodeT5-base(223M 参数)和 PLBART-base(140M 参数)作为基础模型,在 CodeXGLEU 基准的四个任务上进行微调:代码摘要生成、代码克隆检测、代码翻译和代码生成。
  • 采用 HuggingFace 的 Transformers 库,并使用 BLEU-4、EM、CodeBLEU 和精确匹配等标准指标评估性能。
  • 在验证集上调整超参数(如秩 $r$),并将结果报告为三次运行的平均值及标准差。

实验结果

研究问题

  • RQ1在代码摘要生成和克隆检测等代码理解任务中,LoRA 和基于适配器的 PEFT 方法与全量微调相比表现如何?
  • RQ2在代码翻译和代码到文本生成等代码生成任务中,PEFT 方法在多大程度上保持了性能?
  • RQ3结合 LoRA 和适配器是否能在保持参数效率的同时提升性能?
  • RQ4秩 $r$ 的选择如何影响 PEFT 方法在代码特定任务中的性能和参数数量?
  • RQ5PEFT 方法能否有效处理从开源代码仓库中收集的真实、噪声较大的代码数据,尤其是在低数据量场景下?

主要发现

  • 在 Java 代码摘要任务中,使用 $r=8$ 的 FF-LoRA 达到了 18.10 的 BLEU-4 分数,优于全量微调的 17.32。
  • 在 C# → Java 代码翻译任务中,FF-LoRA 与 AT 结合且 $r=16$ 时,BLEU-4 得分为 76.89,相对而言优于全量微调(79.14),但绝对分数仍低于基线。
  • 在代码生成任务中,LoRA 和适配器始终表现逊于全量微调:LoRA 在代码翻译任务中 BLEU-4 得分为 74.26(全量微调为 79.14),表明存在显著性能差距。
  • 使用 $r=16$ 的适配器训练在代码翻译任务中达到 75.30 的 BLEU-4 分数,仍低于全量微调的基线 78.60,表明其在复杂生成任务中能力有限。
  • FF-LoRA 与 AT 的组合在代码翻译任务中实现了最高的 BLEU-4(76.89)和 CodeBLEU(82.53),但仍低于全量微调的 79.14 BLEU-4 和 84.33 CodeBLEU。
  • 定性分析显示,PEFT 方法生成的摘要通常更短或不够精确,AT 模型有时会引入事实性错误(例如,“Detects the operating system” 与 “Detect operating system” 的差异)。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。