写点什么

AI 驱动的编码工具“CodeT5”来了:一种可以实时理解和生成代码的机器学习模型

  • 2021 年 11 月 16 日
  • 本文字数:1307 字

    阅读完需:约 4 分钟

AI驱动的编码工具“CodeT5”来了:一种可以实时理解和生成代码的机器学习模型


图片来源:https://blog.einstein.ai/codet5/

人工智能驱动的编码工具,使用机器学习算法来根据输入数据生成代码,吸引了越来越多的关注。理论上,这些系统可以减少编写代码所花费的时间以及计算和运维成本,并且输出最少的错误。


然而,目前的编码预训练系统存在许多挑战。这些方法要么严重依赖一种类似 BERT 的编码器模型,要么严重依赖一种类似 GPT 的解码器模型。无论哪种方式,它都不是生成和理解任务的最优选项。例如,当用于代码摘要之类的任务时,CodeBERT 需要一个额外的解码器。除上述问题外,大多数现有方法都采用传统的 NLP 源代码预训练技术,将其视为自然语言(NL)中的标记序列。这在很大程度上忽视了编程语言中存在的丰富的结构信息,这对于充分理解其语义至关重要。


Salesforce 团队已经创建并开源了一种新的标识符感知统一预训练编码器 - 解码器模型,称为 CodeT5。到目前为止,他们已经在多个与代码相关的下游任务中展示了最先进的成果,例如跨多个方向的理解和生成,包括 PL 到 NL、NL 到 PL,以及从一种编程语言到另一种编程语言。


CodeT5 构建在与谷歌的 T5(文本到文本传输转换器,Text-to-Text Transfer Transformer)框架类似的架构上,但具有更好的代码理解能力。它提出了自然语言处理任务的统一模型。它将文本重新格式化为文本,其中输入和输出都是文本字符串。这允许任何任务应用到这个模型。



图片来源:https://blog.einstein.ai/codet5/

CodeT5 的研究团队有 835 万多个例子可以用来训练人工智能,包括来自开源 GitHub 代码库的用户写的评论。在训练期间,拥有 2.2 亿个参数的 CodeT5 的最大、功能最强的版本,在 16 个 Nvidia A100 GPUs 和 40GB 内存的集群上花费了 12 天时间。


CodeT5 在代码智能基准 CodeXGLUE [3] 中的 14 个子任务上实现了最先进的(SOTA)性能,如下表所示。



图片来源:https://blog.einstein.ai/codet5/


在 CodeT5 的应用方面,Salesforce 团队计划使用它为 Apex 开发者构建一个人工智能驱动的编码助手。下面,你可以看到一个具有三种编码智能功能并由 CodeT5 支持的编码助手示例:


  • 文本到代码生成:它可以根据自然语言描述生成代码

  • 代码自动补全:给定目标函数名,可以补全函数的完整代码

  • 代码摘要:它可以用自然语言描述生成一个函数的摘要


尽管 Salesforce 的 CodeT5 具有所有的优点和功能,但研究人员承认,它的一个主要缺点是,它可以从用于训练的数据集中的文本注释对种族或性别等刻板印象进行编码。


论文链接:https://arxiv.org/pdf/2109.00859.pdf

代码链接:https://github.com/salesforce/CodeT5

来源链接:https://blog.einstein.ai/codet5/


作者介绍:

Asif Razzaq 是 Marketpost,LLC 的编辑和联合创始人。他是一名人工智能科技记者和数字健康业务战略家,拥有丰富的医疗设备和生物技术行业经验,在健康应用程序、人工智能和数据科学的开发方面拥有令人羡慕的投资组合。作为一名精明的企业家,Asif 成功地将初创企业从初创阶段发展为盈利企业,从而使自己成为一名杰出的初创企业专业管理人士。


原文链接:

https://www.marktechpost.com/2021/09/08/salesforce-open-sources-codet5-a-machine-learning-model-that-understands-and-generates-code-in-real-time

2021 年 11 月 16 日 15:071191
用户头像

发布了 310 篇内容, 共 88.8 次阅读, 收获喜欢 417 次。

关注

评论

发布
暂无评论
发现更多内容

管理者如何才能不亲力亲为?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

Wireshark数据包分析学习笔记Day24

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

Python OpenCV 图像标记,取经之旅第 12 天

梦想橡皮擦

3月日更

程序思维与架构思维

Simon

架构实战营

畅玩国服LOL?MacBook M1 Windows虚拟机体验

Zhendong

arm MacBook m1

一束光的旅程

脑极体

Go Modules 常见使用陷阱

Rayjun

go modules Go 语言

一篇文章让你彻彻底底理解 I/O 多路复用

Java 程序员 架构 面试 计算机

LeetCode链表专题01: 反转链表

小马哥

Java 链表 LeetCode 数据结构与算法 七日更

mysql 检索分享上篇

new life

Redis - RDB

insight

redis 3月日更

极客时间·产品训练营·第八周作业

二大爷

极客大学产品经理训练营

使用雪花 id 或 uuid 作为 MySQL 主键,被老板怼了一顿!

Java小咖秀

MySQL 数据库 雪花算法 uuid 雪花id

K8s各节点常用命令

happlyfox

学习 k8s 3月日更

10年后端开发程序员精心整理「C/C++ Linux服务器」 成长路线(附思维导图)

Linux服务器开发

Linux 后端 C/C++ Linux服务器开发 Linux后台开发

go-admin开源项目分析-1[安装、配置、启动]

happlyfox

学习 3月日更 Go 语言 go-admin

面试三轮我倒在了一道sql题上——sql性能优化

牧小农

MySQL 数据库 面试 索引 索引优化

京东资深架构师带你深入理解 Spring Cloud 核心组件与底层原理

互联网架构师小马

软件工程笔记:学习方法

风翱

软件工程 笔记 3月日更

那些不得不知的缓存知识

Java 缓存 程序员 面试

设计与思考,关于资源和生命周期(三)

程序员架构进阶

设计模式 架构设计 28天写作 3月日更 池化技术

Redis - AOF

insight

redis 3月日更

架构师知识笔记2

felix徐

火爆全网!2021年最新发布Java面试清单(九大技术点)

比伯

Java 程序员 架构 程序人生 架构师

阿里二面,面试官居然把 TCP 三次握手问的这么细致

程序员肖邦

面试 TCP 三次握手 四次挥手

Redis 内存碎片清理

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

初识Golang之条件语句

Kylin

基础语法 3月日更 Go 语言

蚂蚁开源增强版 SpringBoot,都有高级特性?

Java小咖秀

开源 springboot 蚂蚁金服 SOFA

Go语言的初体验

Phoenix

Go 语言

Vue3源码 | 如何挂载组件元素?

梁龙先森

源码分析 前端 Vue3

Laravel使用中间件记录用户请求日志

autofelix

php laravel 日志

基于英特尔x86平台构建AI软件生态系统

基于英特尔x86平台构建AI软件生态系统

AI驱动的编码工具“CodeT5”来了:一种可以实时理解和生成代码的机器学习模型-InfoQ