前语 大型言语模型 (LLMs) 最近在代码层面的一系列下流使命中体现非常出彩。经过对很多根据代码的数据 (如 GitHub 公共数据) 进行预练习,LLM 能够学习丰厚的上下文表征,这些表征能够迁移到各种与代码相关的下流使命。但是,许多现有的模型只能在一部分使命中体现杰出,这可能是架构和预练习使命限制造成的。

本文转载自机器之心

仅用于学术分享,若侵权请联系删去

欢迎重视大众号CV技能攻略,专注于计算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。

CV各大方向专栏与各个布置结构最全教程整理

【CV技能攻略】CV全栈辅导班、根底入门班、论文辅导班 全面上线!!

从架构的视点来看,现有的 LLMs 一般选用纯编码器或纯解码器的模型,这些模型一般只在一些了解或生成使命上执行的效果超卓。纯编码模型一般适用于了解文本、代码检索之类的使命,而生成代码类的生成使命用纯解码器模型能有更超卓的功能体现。并且,最近的一些模型用编码器 – 解码器这种更统一的架构来应对不同的使命。虽然这些模型能够一起支撑了解型、生成型使命,但在特定使命中无法达到最佳功能。在检索和代码完成使命上,编码器 – 解码器模型还是不如最先进 (SOTA) 的纯编码器和纯解码器基线。单模块架构虽然一般能够适用于一切使命,但它的局限性也会导致编码器 – 解码器模型的缺乏。总之,先前的办法在规划时并没有考虑怎么让单个组件能够被激活以更好地习惯不同类型的下流使命。

从学习对象的视点来看,现在的模型一般选用一组有限的预练习使命。因为预练习和微调阶段的差异,这些预练习使命会使一些下流使命功能下降。例如,根据 T5 的模型一般以跨度去噪方针进行练习。但是,在代码生成等下流使命中,大多数最先进的模型都是用下一个 token 猜测方针进行预练习的,该方针能够逐 token 自回归地猜测处理。学习比照代码表征对于了解文本、代码检索等使命至关重要,但许多模型没有接受过这一方面练习。虽然近期一些研讨尝试引进比照学习使命来缓解这个问题,但这些办法忽略了文本和代码表征之间的细粒度跨模态对齐。

为处理上述限制,来自 Salesforce 的研讨者提出了「CodeT5+」—— 一个新的根底 LLM 系列编码器 – 解码器,可用于广泛的代码了解和生成使命。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

  • 论文地址:arxiv.org/pdf/2305.07…
  • 项目地址:github.com/salesforce/…

CodeT5 + 是根据编码器 – 解码器的模型,但能够灵活地在纯编码器、纯解码器以及编码器 – 解码器形式下操作,来习惯不同的下流使用。总体架构如下图 1:

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

这种灵活性是根据预练习使命实现的,包含代码数据上的跨度去噪和因果言语建模 (CLM) 使命,以及文本 – 代码比照学习、匹配和文本 – 代码数据上的 CLM 使命。如此广泛的预练习使命能够帮助在代码和文本数据中学习丰厚的表征,并弥合各种使用中的预练习 – 微调差距。研讨者发现,将匹配使命与比照学习相结合,对于捕捉细粒度的文本 – 代码对齐和进步检索功能至关重要。

经过使用现成的 LLM 代码来初始化 CodeT5 + 的组件,用高效计算的预练习战略来扩展 CodeT5 + 的模型巨细。CodeT5 + 选用了「浅编码器和深解码器」架构,其中编码器和解码器都从预练习的 checkpoints 中进行初始化,并由穿插注意力层连接。此外,该研讨还冻结了深度解码器 LLM,只练习浅层编码器和穿插注意力层,然后大大减少了有用调优的可练习参数数量。最终,受 NLP 范畴的启发,研讨者开端探求 CodeT5 + 在指令调优上的效果,以更好地使模型与自然言语指令保持一致。

该研讨在 20 多个与代码相关的基准测验中对 CodeT5 + 进行了广泛的评价,包含零样本、微谐和指令调优。结果表明,与 SOTA 基线比较,CodeT5 + 在许多下流使命上有着实质性的功能提高,例如,8 个文本到代码检索使命 (+3.2 avg. MRR), 2 个行级代码补全使命 (+2.1 avg. Exact Match) 和 2 个检索增强代码生成使命 (+5.8 avg. BLEU-4)。

在 MathQA 和 GSM8K 基准上的两个数学编程使命中,低于十亿参数巨细的 CodeT5 + 模型显着优于许多多达 137B 参数的 LLM。特别是,在 HumanEval 基准上的零样本文本到代码生成使命中,指令调优后的 CodeT5+ 16B 与其他开源代码 LLM 比较,达到了新的 SOTA 结果,为 35.0% pass@1 和 54.5% pass@10,甚至超过了闭源 OpenAI code- cusherman -001 模型。最终,该研讨发现 CodeT5 + 能够无缝的看作半参数检索增强生成系统,在代码生成方面显着优于其他相似办法。一切的 CodeT5 + 模型都将开源,以支撑研讨和开发者社区。

CodeT5+:开源大型言语模型

本文开发了 CodeT5+,一个新的开源代码大型言语模型宗族,用于代码了解和生成使命。根据编码器 – 解码器架构,CodeT5 + 经过本文提出的在单模态和双模态数据上混合预练习方针的方式,增强了在不同下流使命中以不同形式运转的灵活性。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

架构细节

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

预练习细节

在单模态预练习阶段,研讨者使用很多的代码数据,用计算高效的方针预练习模型。在双模态预练习阶段,继续用较小的具有跨模态学习方针的代码 – 文本数据集预练习模型。对于每个阶段,使用相同的权重联合优化多个预练习方针。

研讨者发现这种分阶段练习办法能够有用地让模型触摸更多样化的数据,以学习丰厚的上下文表征。此外,他们探求了用现成的代码 LLM 初始化 CodeT5+,以有用地扩展模型。最终,CodeT5 + 中的模型组件能够动态组合以习惯不同的下流使用使命。

试验

研讨者实现了一系列 CodeT5 + 模型,模型巨细从 220M 到 16B 不等。

CodeT5+ 220M 和 770M 选用与 T5 相同的架构,并从头开端进行预练习,而 CodeT5+ 2B、6B、16B 选用「浅层编码器和深层解码器」架构,编码器分别从 CodeGen-mono 350M 初始化,解码器从 CodeGen-mono 2B、6B、16B 初始化。研讨者将 CodeT5 + 与 SOTA 代码模型进行了比较,这些 LLM 能够分为 3 种类型:纯编码器、纯解码器和编码器 – 解码器模型。

文本到代码生成使命的零样本评价

在给定自然言语规范的情况下,研讨者评价了模型在零样本设置下生成 Python 代码的才能,经过在单元测验中测验生成的代码来评价模型功能。表 2 中展现了合格率 pass@k。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

评价数学编程使命

研讨者一起调查了其他代码生成使命,特别是两个数学编程基准 MathQAPython 和 GSM8K 。如表 3 所示,CodeT5 + 取得了明显的功能提高,超过了许多更大规划的代码 LLM。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

图 6 展现了经过 MathQA-Python 上数学编程问题的复杂性来剖析模型功能。对于每个问题,提取处理问题所需的推理过程数。与 CodeT5 比较,CodeT5 + 对问题的复杂性 (即所需的推理过程数量) 更鲁棒。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

评价代码摘要使命

代码摘要使命旨在将代码片段总结为自然言语文档字符串。研讨者使用了六种编程言语的 Clean 版别的 CodeSearchNet 数据集来评价这项使命的模型。

从表 4 中能够发现,编码器 – 解码器模型 (CodeT5 和 CodeT5+) 的功能一般优于纯编码器模型、纯解码器模型以及 UniLM-style 的模型 UniXcoder 。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

评价代码补全使命

研讨者经过 line-level 补全使命评价了 CodeT5 + 仅解码器的生成才能,旨在根据上下文完成下一行代码。

如表 5 所示,CodeT5+(在纯解码器的形式下) 和纯解码器模型 (top block) 的功能都显着优于编码器 – 解码器模型(the middle block),验证了纯解码器的模型能够更好地习惯代码补全使命。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

评价文本到代码的检索使命

研讨者还经过跨多个 PL 的文本到代码检索使命评价 CodeT5 + 的代码了解才能。从表 6 中能够看出,CodeT5+ 220M 显着优于一切现有的纯编码器 / 纯解码器模型 (顶部块) 和编码器 – 解码器模型 (中间块)。

刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

更多研讨细节,可参阅原论文。

欢迎重视大众号CV技能攻略,专注于计算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技能文档】《从零建立pytorch模型教程》122页PDF下载

QQ沟通群:470899183。群内有大佬负责回答大家的日常学习、科研、代码问题。

其它文章

12篇CVPR 2023 最佳论文候选

ICLR2023 | 扩散生成模型新办法:极度简化,一步生成

明显提高模型精度!巧用 MMRazor 轻量级主干网络

小内存有救了!Reversible ViT:显存减少15倍,大模型遍及曙光初现!

DCSAU-Net | 更深更紧凑注意力U-Net

此「错」并非真的错:从四篇经典论文入手,了解Transformer架构图「错」在何处

CVPR 2023 | 即插即用!SQR:对于练习DETR-family方针检测的探求和思考

CVPR 2023 Highlight | 西湖大学提出一种全新的比照多模态变换范式

ReID专栏(二)多标准规划与使用

ReID专栏(一) 使命与数据集概述

libtorch教程(三)简略模型建立

libtorch教程(二)张量的常规操作

libtorch教程(一)开发环境建立:VS+libtorch和Qt+libtorch

NeRF与三维重建专栏(三)nerf_pl源码部分解读与colmap、cuda算子使用

NeRF与三维重建专栏(二)NeRF原文解读与体烘托物理模型

NeRF与三维重建专栏(一)范畴背景、难点与数据集介绍

反常检测专栏(三)传统的反常检测算法——上

反常检测专栏(二):评价方针及常用数据集

反常检测专栏(一)反常检测概述

BEV专栏(二)从BEVFormer看BEV流程(下篇)

BEV专栏(一)从BEVFormer深入探求BEV流程(上篇)

可见光遥感图像方针检测(三)文字场景检测之Arbitrary

可见光遥感方针检测(二)首要难点与研讨办法概述

可见光遥感方针检测(一)使命概要介绍

TensorRT教程(三)TensorRT的装置教程

TensorRT教程(二)TensorRT进阶介绍

TensorRT教程(一)初次介绍TensorRT​

AI最全资料汇总 | 根底入门、技能前沿、工业使用、布置结构、实战教程学习

计算机视觉入门1v3辅导班

计算机视觉沟通群

聊聊计算机视觉入门