Exploring the Capabilities of LLMs for Code Change Related Tasks

2024年07月03日
  • 简介
    开发人员每天都要处理与代码更改相关的任务,例如审查代码。预先训练的代码和面向代码更改的模型已被改编,以帮助开发人员完成这些任务。最近,大型语言模型(LLMs)在与代码相关的任务中展现出了其有效性。然而,现有的用于代码的LLMs侧重于一般的代码语法和语义,而不是两个代码版本之间的差异。因此,LLMs在代码更改相关任务中的表现是一个开放性问题。 为了回答这个问题,我们使用超过1B参数的LLMs进行了实证研究,涉及三个与代码更改相关的任务,即代码审查生成、提交消息生成和即时评论更新,采用上下文学习(ICL)和参数高效微调(PEFT,包括LoRA和前缀微调)。我们观察到,没有示例时LLMs的性能很差,通常随着示例的增加而改善,但更多的示例并不总是导致更好的性能。经过LoRA微调的LLMs的性能与最先进的小型预训练模型相当。更大的模型并不总是更好,但Llama 2和Code Llama系列始终是最好的。最好的LLMs在仅修改注释的代码更改上表现优于小型预训练模型,在其他代码更改上表现相当。我们建议未来的工作应更加注重指导LLMs学习与代码相关的更改知识,而不是注释,以完成代码更改相关任务。
  • 图表
  • 解决问题
    本论文旨在探究大型语言模型(LLMs)在代码变更相关任务中的表现,包括代码审查生成、提交消息生成和及时评论更新。目前已有的LLMs主要关注代码语法和语义,而不是两个代码版本之间的差异。
  • 关键思路
    本论文通过使用上下文学习(ICL)和参数高效微调(PEFT)的方法,在超过1B参数的LLMs上进行了实证研究,发现LLMs在没有示例的情况下表现较差,但随着示例数量的增加,性能有所提高。使用LoRA微调的LLMs表现与最先进的小型预训练模型相当。较大的模型并不总是更好,但是Llama 2和Code Llama系列始终表现最佳。最好的LLMs在仅修改评论的代码更改上优于小型预训练模型,在其他代码更改上表现相当。
  • 其它亮点
    论文的实验设计合理,使用了多个数据集进行验证,并开源了代码。本论文的研究结果表明,未来的研究应该更加关注指导LLMs学习与代码更改相关的知识,而不是评论。
  • 相关研究
    最近的相关研究包括:《CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing》、《A Survey on Machine Learning Techniques for Code Smell Detection》、《Deep Learning for Code Smell Detection: A Comparative Study》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论