用于代码的大型语言模型热修复
软件工程
2024-11-07 v4
摘要
用于代码的大型语言模型(LLM4Code)已成为开发者工作流的重要组成部分,协助完成代码补全和生成等任务。然而,这些模型在发布后表现出不良行为,例如生成有错误的代码,这是因为它们在大量包含此类错误代码的源代码上进行了广泛训练。训练数据(通常来自开源软件)不断演变,例如开发者修复了错误代码。然而,适应这种演变以缓解LLM4Code的不良行为并非易事,因为在更新后的数据集上重新训练模型通常需要大量时间和资源。这促使我们提出LLM4Code热修复(hotfixing)的概念,以有效且高效的方式、最小的负面影响来缓解LLM4Code的不良行为。本文主要关注热修复LLM4Code,使其生成更少的有错误的代码和更多的已修复的代码。我们首先证明,来自流行的CodeGen家族的模型经常生成有错误的代码。然后,我们在热修复中定义了三个学习目标,并为每个目标设计了多个损失函数:(1) 学习期望的行为,(2) 消除不良行为,(3) 保留其他代码的知识。我们评估了四种不同的微调技术用于热修复模型,并获得了以下见解。共同优化这三个学习目标,使用LoRA(低秩适应),能有效影响模型的行为。具体而言,它将已修复代码的生成量提高了最多108.42%,将有错误代码的生成量减少了最多50.47%。统计检验证实,热修复不会显著影响模型在HumanEval基准测试上的功能正确性。此外,通过将电子邮件地址的暴露减少99.30%来评估热修复的泛化能力。
引用
@article{arxiv.2408.05727,
title = {Hotfixing Large Language Models for Code},
author = {Zhou Yang and David Lo},
journal= {arXiv preprint arXiv:2408.05727},
year = {2024}
}
备注
Add a case study on mitigting potential privacy leakage