艺考网
全国站

长代码序列的Transformer模型优化方法,提高长代码场景下的性能

xunaa
2024-10-05 14:57:57
编辑说
论文:刘婷婷、王成宇、陈岑、高明和周傲英。通过结构感知稀疏注意力来理解长编程语言。 2022 年西吉尔
模型框架
下图为SASA整体框架:
其中SASA主要由两个阶段组成:预处理阶段

论文:刘婷婷、王成宇、陈岑、高明和周傲英。通过结构感知稀疏注意力来理解长编程语言。 2022 年西吉尔

模型框架

下图为SASA整体框架:

其中SASA主要由两个阶段组成:预处理阶段和Sparse Transformer训练阶段。在预处理阶段,获得两个token之间的交互矩阵,一个是top-k频率矩阵,另一个是AST模式矩阵。 Top-k 频率矩阵使用代码预训练语言模型来学习CodeSearchNet 语料库上标记之间的注意力交互频率。 AST模式矩阵是解析代码的抽象语法树(AST)。它是根据语法树的连接关系得到的。代币之间的交互信息。 Sparse Transformer 训练阶段使用Transformer Encoder 作为基本框架,用结构感知的稀疏自注意力替代完全自注意力,并在符合特定模式的token 对之间进行注意力计算,从而降低计算复杂度。

SASA稀疏注意力包括以下四个模块:

滑动窗口注意力:仅在滑动窗口内的标记之间计算自注意力,保留局部上下文的特征。计算复杂度为, 为序列长度, 为滑动窗口大小。全局关注:设置某些全局标记。这些token会与序列中的所有token进行注意力计算,以获得序列的全局信息。计算复杂度为,即全局token的数量。 Top-k稀疏注意力:Transformer模型中的注意力交互是稀疏且长尾的。对于每个token,仅计算注意力交互最高的top-k token。复杂性是。 AST-aware Structure Attention:代码不同于自然语言序列,具有更强的结构特征。将代码解析为抽象语法树(AST),然后根据语法树中的连接关系确定注意力计算的范围。为了适应现代硬件的并行计算特性,我们将序列分成若干块,而不是以令牌为单位进行计算。每个查询块都与

滑动窗块和

全局块和

用top-k和AST块计算attention,整体计算复杂度为

,

b 是块大小。

每个稀疏注意力模式对应一个注意力矩阵。以滑动窗口注意力为例,注意力矩阵的计算为:

ASA伪代码:

长代码序列的Transformer模型优化方法,提高长代码场景下的性能

实验结果

我们使用CodeXGLUE[1]提供的四个任务数据集进行评估,即代码克隆检测、缺陷检测、代码搜索和代码摘要。我们提取序列长度大于512的数据,形成长序列数据集。实验结果如下:

从实验结果可以看出,SASA在三个数据集上显着优于所有Baselines。其中,Roberta-base[2]、CodeBERT[3]和GraphCodeBERT[4]使用截断来处理长序列,这会丢失部分上下文信息。 Longformer[5]和BigBird[6]是自然语言处理中用于处理长序列的方法,但它们没有考虑代码的结构特征,直接转移到代码任务中效果不佳。

为了验证top-k稀疏注意力和AST-aware稀疏注意力模块的效果,我们在BigCloneBench和缺陷检测数据集上进行了消融实验。结果如下:

稀疏注意力模块不仅提高了长代码任务的性能,还大大减少了显存的使用。相同设备下,SASA可以设置更大的batch size,而full self-attention模型则面临内存不足的问题。具体内存使用情况如下:

作为稀疏注意力模块,SASA可以迁移到其他基于Transformer的预训练模型来处理长序列自然语言处理任务。未来将集成到开源框架EasyNLP(https://github.com/alibaba/EasyNLP)中。对开源社区的贡献。

论文链接:https://arxiv.org/abs/2205.13730

参考文献

[1] 鲁帅、郭大亚、任硕、黄俊杰、Alexey Svyatkovskiy、Ambrosio Blanco、Colin B. Clement、Dawn Drain、蒋大新、唐杜宇、李革、周立东、寿林军、周龙、 Michele Tufano、龚明、周明、Nan Duan、Neel Sundaresan、邓少昆、付胜宇、刘书杰。 CodeXGLUE: 用于代码理解和生成的机器学习基准数据集。 NeurIPS 数据集和基准2021

[2] Yinhan Liu、Myle Ott、Naman Goyal、Jingfei Du、Mandar Joshi、Danqi Chen、Omer Levy、Mike Lewis、Luke Zettlemoyer、Veselin Stoyanov。 RoBERTa: 一种稳健优化的BERT 预训练方法。 CoRR 绝对值/1907.11692 (2019)

[3] 冯章印,郭大亚,唐杜宇,端南,冯小成,龚明,寿林军,秦兵,刘婷,蒋大新,周明。 CodeBERT: 用于编程和自然语言的预训练模型。欧洲管理国家实验室2020

[4] 郭大亚、任硕、鲁帅、冯章印、唐杜宇、刘书杰、周龙、段南、Alexey Svyatkovskiy、付胜宇、Michele Tufano、邓少昆、Colin B. Clement、Dawn Drain、Neel Sundaresan 、 建银、 蒋大新、 周明。 GraphCodeBERT: 使用数据流预训练代码表示。 ICLR 2021

[5] 伊兹·贝尔塔吉(Iz Beltagy)、马修·E·彼得斯(Matthew E. Peters)、阿曼·科汉(Arman Cohan)。 Longformer: 长文档变压器。 CoRR 绝对/2004.05150 (2020)

用户评论

雪花ミ飞舞

终于来了!我一直想了解怎么让 Transformer 模型处理长代码。

    有12位网友表示赞同!

嘲笑!

这篇论文一定很有深度,期待研究一下其中的优化方法!

    有16位网友表示赞同!

凉城°

长代码处理一直是 Transformer 的难题,希望能有实用的成果。

    有19位网友表示赞同!

眉黛如画

提升长代码场景性能是现在许多开发者需要的

    有8位网友表示赞同!

可儿

终于有人关注这个问题了!我的项目有时候需要处理非常长的代码序列,

    有14位网友表示赞同!

一尾流莺

期待看到这篇论文能改善实际开发中的痛点!

    有14位网友表示赞同!

残留の笑颜

Transformer模型优化方法,这听起来很有意思啊!

    有17位网友表示赞同!

那伤。眞美

长代码和 Transformer 的结合太棒了!

    有14位网友表示赞同!

箜篌引

学习学习,赶紧看看这个具体的优化方法!

    有10位网友表示赞同!

墨城烟柳

期待看到论文中提到的创新点和实验结果

    有17位网友表示赞同!

心亡则人忘

这对提高软件开发效率很有帮助吧?

    有5位网友表示赞同!

ok绷遮不住我颓废的伤あ

长代码序列处理,这让我想到一些大型项目的代码维护问题...

    有15位网友表示赞同!

烟花巷陌

优化方法能有效提升性能吗?期待详细解读!

    有5位网友表示赞同!

醉婉笙歌

我等着看这个论文的效果!

    有20位网友表示赞同!

浮世繁华

长代码Transformer模型优化很实用!

    有18位网友表示赞同!

各自安好ぃ

真希望能让 Transformer 模型处理的更复杂!

    有12位网友表示赞同!

今非昔比'

这篇论文很有未来可期!

    有20位网友表示赞同!

命运不堪浮华

关注这方面的发展很久了,终于有了新的进展!

    有20位网友表示赞同!

免责声明
本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除!

大家都在看

长代码序列的Transformer模型优化方法,提高长代码场景下的性能

长代码序列的Transformer模型优化方法,提高长代码场景下的性能

论文:刘婷婷、王成宇、陈岑、高明和周傲英。通过结构感知稀疏注意力来理解长编程语言。 2022 年西吉尔 模型框架 下图为SASA整体框架: 其中SASA主要由两个阶段组成:预处理阶段
2024-10-05
他们知道这些外国人起的名字的含义吗?

他们知道这些外国人起的名字的含义吗?

看到这些外国人的中文名字,我瞬间想起了给自己取英文名字时的情景…… 当他选择这个名字时,他一定很高兴。 你觉得你可爱吗? 那么后羿呢? 就叫这个男孩“蝴蝶”吧。 还是小蝴蝶?
2024-10-05
泸州市最佳自驾游线路

泸州市最佳自驾游线路

最佳自驾游路线(一) 泸州市—泸州老窖旅游区—华天酒庄—龙回酒庄—返程(一日游) 游览市区三星街泸州老窖旅游区后,走G93高速公路在凤凰湖高速出口下,过308省道至华天酒庄,再沿308
2024-10-05
河北教育出版社七年级英语Unit46教材重点知识一处搞定。

河北教育出版社七年级英语Unit46教材重点知识一处搞定。

第24 课你周末过得怎么样? 1 你周末过得怎么样? 你周末过得怎么样 我度过了一个愉快的周末! 我度过了一个愉快的周末! 1.1how 疑问副词,how。他们经常形成疑问句,询问意见、计划
2024-10-05
获取一篇文章中的副词(越简单越重要)

获取一篇文章中的副词(越简单越重要)

什么是副词? 副词是描述动作的速度、频率、方式、程度等的词语。 副词主要修饰动词和形容词。有了副词,对动词和形容词的描述就会更加丰富。 比如:good,加个副词就变成very goo
2024-10-05
Fun 3.0发布资源部署、依赖下载、代码编译等功能增强

Fun 3.0发布资源部署、依赖下载、代码编译等功能增强

3.0带来的新特性 1.新增依赖安装支持 我们在原来的有趣安装的基础上做了一些增强。现在fun install不仅可以实现单行命令进行依赖安装,还支持交互式依赖安装、类似Docker体
2024-10-05
玩得开心。你还在用快乐吗?英语中fun的用法和搭配让你的英语口语更进阶

玩得开心。你还在用快乐吗?英语中fun的用法和搭配让你的英语口语更进阶

趣:的用法与搭配 1.lt's fun 后接不定式或动名词均可,意思基本相同。如: 驾船真有趣。=驾船真有趣。驾船真是太有趣了。 2.表示做某事很开心,可用have (there is) fun (in)do
2024-10-05
英语口语:有趣和好笑不能混在一起。

英语口语:有趣和好笑不能混在一起。

1. Fun不仅可以用作名词,还可以用作形容词。作为形容词,只能在名词前用作定语,不能用作谓语。它的意思相当于enjoy,中文意思是“有趣的;令人愉快的”。例如: 潜水是一件有趣的事情
2024-10-05
1分钟记住一个单词(第1781个)香蕉

1分钟记住一个单词(第1781个)香蕉

banana /bnn/ n. 香蕉: 点击收听音频跟读 例句/词组: 一串香蕉 一堆香蕉 英语解释: 一种长而弯曲的水果,具有厚厚的黄色果皮和柔软的果肉,生长在炎热国家的树上香蕉: 用户评论
2024-10-05
各种水果的英文表达方式超多,赶快来收集吧!

各种水果的英文表达方式超多,赶快来收集吧!

一个 苹果苹果 杏子[eprkt] 杏子 杏仁['mnd] 杏仁 乙 香蕉香蕉 槟榔['bitl,nt] 槟榔 苦橙苦橙 黑莓['blk'bri] 黑莓 蓝莓['blubri] 蓝莓 C 樱桃樱桃 海棠['krb'pl] 海棠 杨
2024-10-05