12 天前

CodeT5+:面向代码理解与生成的开源代码大语言模型

Yue Wang, Hung Le, Akhilesh Deepak Gotmare, Nghi D.Q. Bui, Junnan Li, Steven C.H. Hoi
CodeT5+:面向代码理解与生成的开源代码大语言模型
摘要

基于海量源代码预训练的大语言模型(LLMs)在代码智能领域已取得显著进展。然而,现有的代码专用大语言模型在架构设计与预训练任务方面仍存在两大主要局限。首先,这些模型通常采用特定的架构模式(如仅编码器或仅解码器),或依赖统一的编码器-解码器网络来处理各类下游任务。前者因架构僵化而限制了应用场景的灵活性,而后者则将模型视为适用于所有任务的单一系统,导致在部分任务上表现欠佳。其次,现有模型普遍采用有限的预训练目标,这些目标可能与某些下游任务的相关性较弱,从而引发显著的性能下降。为解决上述问题,我们提出“CodeT5+”,一个面向代码的编码器-解码器类大语言模型家族。该模型通过灵活组合其组件模块,能够适配广泛的下游代码任务。这种灵活性得益于我们提出的多任务预训练目标混合策略,有效缓解了预训练与微调之间的差异。所采用的预训练目标涵盖跨度去噪(span denoising)、对比学习(contrastive learning)、文本-代码匹配(text-code matching)以及因果语言建模(causal LM)等,覆盖单模态与双模态的多语言代码语料库。此外,我们提出利用冻结的现成大语言模型(off-the-shelf LLMs)进行初始化,避免从头训练,从而高效扩展模型规模;同时探索指令微调(instruction-tuning)策略,使模型更好地对齐自然语言指令。我们在超过20个不同设置下的代码相关基准测试中对CodeT5+进行了全面评估,涵盖零样本(zero-shot)、微调(finetuning)和指令微调等多种场景。实验结果表明,CodeT5+在多种代码相关任务上均达到当前最先进(State-of-the-Art, SoTA)水平,包括代码生成与补全、数学编程以及文本到代码检索等任务。尤其值得注意的是,我们经过指令微调的CodeT5+ 16B模型在HumanEval代码生成任务上超越了其他开源代码大模型,取得了新的SoTA性能记录。