首页 > 其他分享 >刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+

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

时间:2023-06-25 16:55:39浏览次数:38  
标签:编码器 Salesforce 代码 CodeT5 任务 解码器 模型

前言 大型语言模型 (LLMs) 最近在代码层面的一系列下游任务中表现十分出彩。通过对大量基于代码的数据 (如 GitHub 公共数据) 进行预训练,LLM 可以学习丰富的上下文表征,这些表征可以迁移到各种与代码相关的下游任务。但是,许多现有的模型只能在一部分任务中表现良好,这可能是架构和预训练任务限制造成的。

本文转载自机器之心

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

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

从架构的角度来看,现有的 LLMs 通常采用纯编码器或纯解码器的模型,这些模型通常只在一些理解或生成任务上执行的效果出色。纯编码模型通常适用于理解文本、代码检索之类的任务,而生成代码类的生成任务用纯解码器模型能有更出色的性能表现。并且,最近的一些模型用编码器 - 解码器这种更统一的架构来应对不同的任务。虽然这些模型可以同时支持理解型、生成型任务,但在特定任务中没法达到最佳性能。在检索和代码完成任务上,编码器 - 解码器模型还是不如最先进 (SOTA) 的纯编码器和纯解码器基线。单模块架构虽然通常可以适用于所有任务,但它的局限性也会导致编码器 - 解码器模型的不足。总之,先前的方法在设计时并没有考虑如何让单个组件可以被激活以更好地适应不同类型的下游任务。

从学习对象的角度来看,目前的模型通常采用一组有限的预训练任务。由于预训练和微调阶段的差异,这些预训练任务会使一些下游任务性能下降。例如,基于 T5 的模型通常以跨度去噪目标进行训练。然而,在代码生成等下游任务中,大多数最先进的模型都是用下一个 token 预测目标进行预训练的,该目标可以逐 token 自回归地预测处理。学习对比代码表征对于理解文本、代码检索等任务至关重要,但许多模型没有接受过这一方面训练。尽管近期一些研究尝试引入对比学习任务来缓解这个问题,但这些方法忽略了文本和代码表征之间的细粒度跨模态对齐。

为解决上述限制,来自 Salesforce 的研究者提出了「CodeT5+」—— 一个新的基础 LLM 系列编码器 - 解码器,可用于广泛的代码理解和生成任务。

CodeT5 + 是基于编码器 - 解码器的模型,但可以灵活地在纯编码器、纯解码器以及编码器 - 解码器模式下操作,来适应不同的下游应用。总体架构如下图 1:

这种灵活性是基于预训练任务实现的,包括代码数据上的跨度去噪和因果语言建模 (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 + 通过本文提出的在单模态和双模态数据上混合预训练目标的方式,增强了在不同下游任务中以不同模式运行的灵活性。

架构细节

预训练细节

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

研究者发现这种分阶段训练方法可以有效地让模型接触更多样化的数据,以学习丰富的上下文表征。此外,他们探索了用现成的代码 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。

评估数学编程任务

研究者同时考察了其他代码生成任务,特别是两个数学编程基准 MathQAPython 和 GSM8K 。如表 3 所示,CodeT5 + 取得了显著的性能提升,超过了许多更大规模的代码 LLM。

图 6 展示了通过 MathQA-Python 上数学编程问题的复杂性来分析模型性能。对于每个问题,提取解决问题所需的推理步骤数。与 CodeT5 相比,CodeT5 + 对问题的复杂性 (即所需的推理步骤数量) 更鲁棒。

评估代码摘要任务

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

从表 4 中可以发现,编码器 - 解码器模型 (CodeT5 和 CodeT5+) 的性能通常优于纯编码器模型、纯解码器模型以及 UniLM-style 的模型 UniXcoder 。

评估代码补全任务

研究者通过 line-level 补全任务评估了 CodeT5 + 仅解码器的生成能力,旨在根据上下文完成下一行代码。

如表 5 所示,CodeT5+(在纯解码器的模式下) 和纯解码器模型 (top block) 的性能都明显优于编码器 - 解码器模型(the middle block),验证了纯解码器的模型可以更好地适应代码补全任务。

评估文本到代码的检索任务

研究者还通过跨多个 PL 的文本到代码检索任务评估 CodeT5 + 的代码理解能力。从表 6 中可以看出,CodeT5+ 220M 明显优于所有现有的纯编码器 / 纯解码器模型 (顶部块) 和编码器 - 解码器模型 (中间块)。

更多研究细节,可参考原论文。

 

欢迎关注公众号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辅导班

计算机视觉交流群

聊聊计算机视觉入门

标签:编码器,Salesforce,代码,CodeT5,任务,解码器,模型
From: https://www.cnblogs.com/wxkang/p/17503317.html

相关文章

  • Arduino连接带按键的编码器ec11使用 Bounce2库 实例代码
    #include<Bounce2.h>//定义编码器引脚constintencoderPinA=2;constintencoderPinB=3;constintbuttonPin=4;//创建编码器对象和按键对象BounceencoderButton=Bounce();BounceencoderPinAButton=Bounce();BounceencoderPinBButton=Bounce();vo......
  • 深度学习阅读笔记(二)之自动编码器SAD
    一、自动编码器(DAE)   7. 《深度自动编码器的研究与展望》   主要内容:讲述了自动编码器的发展由来。阐述了DAE的基本概念和原理;网络模型的构建和训练方法。并对DAE进行了分类,指出了DAE存在的问题和对DAE未来发展的展望。  (1)自动编码器比传统BP网络的优势:免去了人工提取数据......
  • 【salesforce技术积累】-REST CALLOUT处理
    1.HTTP和callout基本・RestCallOut是基于HTTP的,一般的HTTP函数有以下几种。①:GET➡用于获取指定数据②:POST➡用于做成数据③:DELETE➡用于删除数据④:PUT➡用于更新数据  2.具体事例・リモートサイト的设定 代码演示:publiccl......
  • 【salesforce技术积累】-APEX调用外部服务概念理解(包含外部站点设置)
    1.基本概念・salesforce中的「コールアウト」指的是salesforce作为客户端去调用其他的服务,「Webサービス」指的是salesforce作为服务器被其他客户端调用。(个人理解)下面这个网站是其他人的解释说明:Salesforce(他システムとの連携メモ)-Qiita打不开的小伙伴请继续看下面。。。......
  • 对抗性自动编码器系列--有监督对抗自动编码器SAAE的原理及实现-随机数生成想要的数字
    文章目录前言监督对抗性自动编码器SAAE风格和内容的分离SAAE训练结果AEAAESAAE实验对比结果恢复效果对比从随机数重建图像的效果这部分实验代码前言先来看看实验:我们使用MNIST手写数字,测试通过自动编码器和对抗性自动编码器学习重建恢复效果。原始图像:自动编码器重建效果......
  • 对抗性自动编码器系列--自动编码器AutoEncoder的原理及实现-手写数字的重建
    文章目录前言自动编码器介绍自动编码器重建手写数字关于损失函数重建结果这部分实验代码前言先来看看实验:我们使用MNIST手写数字,测试通过自动编码器和对抗性自动编码器学习重建恢复效果。原始图像:自动编码器重建效果对抗性自动编码器重建效果虽然这里看到,自动编码器和对抗性自......
  • 音乐编解码器的更新情况
    正文字数:2632阅读时长:4分钟在我最近关于高分辨率音频播放器以及为它们提供内容的服务和外部DAC和放大器的报道中,我意识到我向我的读者抛出了很多新的可能不熟悉的术语。自从我上一次深入介绍无损和有损音频压缩标准以来,已经有一段时间了,确切地说,是20年!而且世事变迁,所以这个简短的......
  • 新的Google Lyra音频编解码器对实时视频流意味着什么?
    正文字数:2602 阅读时长:4分钟通过语言编码中的码率缩减趋势,Lyra与Opus中的区别比较,Lyra的作用,XDN平台上的高效语音编码技术几个方面探讨新的GoogleLyra音频编解码器对实时视频流的意义。文/ RED5PRO https://www.red5pro.com/blog/what-does-the-new-google-lyra-audio-codec-......
  • SoundStream VS Lyra: 谷歌今年新推出的两款AI音频编解码器有何不同?
    作者 |Teresa、王晶技术审校 |王晶、王立众SoundStream 影音探索#001#近日,谷歌又推出了一款基于人工智能的音频编解码器——SoundStream,它是一款端到端的神经音频编解码器,可以提供更高质量的音频,同时编码不同的声音类型,包括干净的语音、嘈杂和混响的语音、音乐和环境声音。......
  • 视频编码器的智能化——AI辅助编解码的ASIC解决方案
    在此次LiveVideoStackCon2021音视频技术大会北京站,来自镕铭半导体的刘迅思详细列举了目前常用的AI辅助编解码的方法,论述如何在硬件和软件层面将AI结合编解码的实践,探索新的标准和新一代编码器结合AI应该如何设计。文|刘迅思整理|LiveVideoStack大家好,我是来自NETINT镕铭半导......