作者: Yue Wang, Hung Le, Akhilesh Deepak Gotmare, Nghi D.Q. Bui, Junnan Li, Steven C.H. Hoi
提交日期: 2023年5月13日
主题/分类: Computation and Language (cs.CL); Machine Learning (cs.LG); Programming Languages (cs.PL)
摘要:
在大规模源代码上预训练的大语言模型(LLMs)在代码智能领域取得了显著进展。然而,现有的代码LLMs在架构和预训练任务方面存在两个主要局限。首先,它们通常采用特定的架构(仅编码器或仅解码器),或依赖统一的编码器-解码器网络来处理不同的下游任务。前者范式在应用上缺乏灵活性,而后者则将模型视为处理所有任务的单一系统,导致在部分任务上性能欠佳。其次,它们通常采用有限的预训练目标集合,这些目标可能与某些下游任务不相关,从而导致性能大幅下降。
为了解决这些局限,我们提出了“CodeT5+”,一个用于代码的编码器-解码器大语言模型家族,其组件模块可以灵活组合以适应广泛的下游代码任务。这种灵活性通过我们提出的混合预训练目标来实现,以减轻预训练与微调之间的差异。这些目标涵盖了跨度去噪、对比学习、文本-代码匹配以及因果语言模型预训练任务,并在单模态和双模态的多语言代码语料库上进行。此外,我们提出使用冻结的现成大语言模型来初始化CodeT5+,而非从头开始训练,以高效扩展我们的模型,并探索指令微调以对齐自然语言指令。
我们在超过20个代码相关基准上,包括零样本、微调和指令微调等不同设置下,对CodeT5+进行了广泛评估。我们观察到CodeT5+在各种代码相关任务上取得了最先进的模型性能,例如代码生成与补全、数学编程以及文本到代码检索任务。特别是,我们经过指令微调的CodeT5+ 16B模型在HumanEval代码生成任务上,相对于其他开放的代码LLMs,取得了新的最先进结果。