SIGIR 2022 | 面向长代码序列的Transformer模型优化方法,提升长代码场景性能

2022 年 7 月 13 日 PaperWeekly

 


©作者 | 汪诚愚、刘婷婷

来源 | 阿里灵杰


阿里云机器学习平台 PAI 与华东师范大学高明教授团队合作在 SIGIR 2022 上发表了结构感知的稀疏注意力 Transformer 模型 SASA,这是面向长代码序列的 Transformer 模型优化方法,致力于提升长代码场景下的效果和性能。 


由于 self-attention 模块的复杂度随序列长度呈次方增长,多数编程预训练语言模型(Programming-based Pretrained Language Models, PPLM)采用序列截断的方式处理代码序列。SASA 方法将 self-attention 的计算稀疏化,同时结合了代码的结构特性,从而提升了长序列任务的性能,也降低了内存和计算复杂度。



论文标题:

Understanding Long Programming Languages with Structure-Aware Sparse Attention

论文链接:

https://arxiv.org/abs/2205.13730

EasyNLP开源地址:

https://github.com/alibaba/EasyNLP




模型框架


下图展示了 SASA 的整体框架:



其中,SASA 主要包含两个阶段: 预处理阶段 Sparse Transformer 训练阶段 。在预处理阶段得到两个 token 之间的交互矩阵,一个是 top-k frequency 矩阵,一个是 AST pattern 矩阵。

Top-k frequency 矩阵是利用代码预训练语言模型在 CodeSearchNet 语料上学习 token 之间的 attention 交互频率,AST pattern 矩阵是解析代码的抽象语法树(Abstract Syntax Tree,AST ),根据语法树的连接关系得到 token 之间的交互信息。Sparse Transformer训练阶段以 Transformer Encoder 作为基础框架,将 full self-attention 替换为 structure-aware sparse self-attention,在符合特定模式的 token pair 之间进行 attention 计算,从而降低计算复杂度。

SASA 稀疏注意力一共包括如下四个模块:

Sliding window attention:仅在滑动窗口内的 token 之间计算 self-attention,保留局部上下文的特征,计算复杂度为 为序列长度, 是滑动窗口大小。
Global attention:设置一定的 global token,这些 token 将与序列中所有 token 进行 attention 计算,从而获取序列的全局信息,计算复杂度为 为 global token 个数。
Top-k sparse attention:Transformer 模型中的 attention 交互是稀疏且长尾的,对于每个 token,仅与其 attention 交互最高的 top-k 个 token 计算 attention,复杂度为
AST-aware structure attention:代码不同于自然语言序列,有更强的结构特性,通过将代码解析成抽象语法树(AST),然后根据语法树中的连接关系确定 attention 计算的范围。
为了适应现代硬件的并行计算特性,我们将序列划分为若干 block,而非以 token 为单位进行计算,每个 query block 与 个滑动窗口 blocks 和 个 global blocks 以及 个 top-k 和 AST blocks 计算 attention,总体的计算复杂度为 为 block size。
每个 sparse attention pattern 对应一个 attention 矩阵,以 sliding window attention 为例,其 attention 矩阵的计算为:



SASA 伪代码:






实验结果


我们采用 CodeXGLUE [1] 提供的四个任务数据集进行评测,分别为 code clone detection,defect detection,code search,code summarization。我们提取其中的序列长度大于 512 的数据组成长序列数据集,实验结果如下:


从实验结果可以看出,SASA 在三个数据集上的性能明显超过所有 Baseline。其中 Roberta-base [2],CodeBERT [3],GraphCodeBERT [4] 是采用截断的方式处理长序列,这将损失一部分的上下文信息。Longformer [5] 和 BigBird [6] 是在自然语言处理中用于处理长序列的方法,但未考虑代码的结构特性,直接迁移到代码任务上效果不佳。 

为了验证 top-k sparse attention 和 AST-aware sparse attention 模块的效果,我们在 BigCloneBench 和 Defect Detection 数据集上做了消融实验,结果如下:


sparse attention 模块不仅对于长代码的任务性能有提升,还可以大幅减少显存使用,在同样的设备下,SASA 可以设置更大的 batch size,而 full self-attention 的模型则面临 out of memory 的问题,具体显存使用情况如下图:


SASA 作为一个 sparse attention 的模块,可以迁移到基于 Transformer 的其他预训练模型上,用于处理长序列的自然语言处理任务,后续将集成到开源框架 EasyNLP 中,贡献给开源社区。



参考文献

[1] Shuai Lu, Daya Guo, Shuo Ren, Junjie Huang, Alexey Svyatkovskiy, Ambrosio Blanco, Colin B. Clement, Dawn Drain, Daxin Jiang, Duyu Tang, Ge Li, Lidong Zhou, Linjun Shou, Long Zhou, Michele Tufano, Ming Gong, Ming Zhou, Nan Duan, Neel Sundaresan, Shao Kun Deng, Shengyu Fu, Shujie Liu. CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation. NeurIPS Datasets and Benchmarks 2021

[2] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov. RoBERTa: A Robustly Optimized BERT Pretraining Approach. CoRR abs/1907.11692 (2019)

[3] Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, Ming Zhou. CodeBERT: A Pre-Trained Model for Programming and Natural Languages. EMNLP 2020

[4] Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tufano, Shao Kun Deng, Colin B. Clement, Dawn Drain, Neel Sundaresan, Jian Yin, Daxin Jiang, Ming Zhou. GraphCodeBERT: Pre-training Code Representations with Data Flow. ICLR 2021

[5] Iz Beltagy, Matthew E. Peters, Arman Cohan. Longformer: The Long-Document Transformer. CoRR abs/2004.05150 (2020)

[6] Manzil Zaheer, Guru Guruganesh, Kumar Avinava Dubey, Joshua Ainslie, Chris Alberti, Santiago Ontañón, Philip Pham, Anirudh Ravula, Qifan Wang, Li Yang, Amr Ahmed. Big Bird: Transformers for Longer Sequences. NeurIPS 2020



更多阅读




#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·

登录查看更多
0

相关内容

专知会员服务
21+阅读 · 2021年3月9日
【AAAI2021】预训练用户表示提升推荐
专知会员服务
43+阅读 · 2021年2月8日
【NeurIPS 2020】依图推出预训练语言理解模型ConvBERT
专知会员服务
11+阅读 · 2020年11月13日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
Transformer性能优化:运算和显存
PaperWeekly
1+阅读 · 2022年3月29日
浅谈BERT/Transformer模型的压缩与优化加速
PaperWeekly
1+阅读 · 2021年12月31日
使用上下文信息优化CTR预估中的特征嵌入
机器学习与推荐算法
0+阅读 · 2021年8月20日
面向Transformer模型的高效预训练方法
哈工大SCIR
1+阅读 · 2021年6月5日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
文本+视觉,多篇 Visual/Video BERT 论文介绍
AI科技评论
22+阅读 · 2019年8月30日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
7+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
7+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2022年9月13日
Arxiv
11+阅读 · 2019年6月19日
Arxiv
10+阅读 · 2018年3月22日
VIP会员
相关VIP内容
专知会员服务
21+阅读 · 2021年3月9日
【AAAI2021】预训练用户表示提升推荐
专知会员服务
43+阅读 · 2021年2月8日
【NeurIPS 2020】依图推出预训练语言理解模型ConvBERT
专知会员服务
11+阅读 · 2020年11月13日
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
相关资讯
Transformer性能优化:运算和显存
PaperWeekly
1+阅读 · 2022年3月29日
浅谈BERT/Transformer模型的压缩与优化加速
PaperWeekly
1+阅读 · 2021年12月31日
使用上下文信息优化CTR预估中的特征嵌入
机器学习与推荐算法
0+阅读 · 2021年8月20日
面向Transformer模型的高效预训练方法
哈工大SCIR
1+阅读 · 2021年6月5日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
文本+视觉,多篇 Visual/Video BERT 论文介绍
AI科技评论
22+阅读 · 2019年8月30日
相关基金
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
7+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
7+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员