计算机体系结构技术杂谈(下)

计算机体系结构技术杂谈(下)
2.8 加速Transformer:稀疏注意力加速器分析
1. 稀疏注意力加速器简介
近年来, Transformer模型在深度学习的各个领域,包括自然语言处理、图像分类、图像及语音生成等方面,都取得了远超于传统神经网络模型的表现。最近的ChatGPT和各类基于Transformer的AIGC应用也由于其惊人的表现被大家广泛关注。
Transformer模型之所以能取得如此惊人表现的主要原因之一是其中的注意力机制模块(Attention Mechanism),然而注意力机制模块由于需要进行大量的矩阵乘计算,导致其成为影响Transformer模型性能的主要瓶颈。如何设计硬件加速器来高效地运行大型注意力机制模块便成为了近期研究关注的重点。在中,将与大家一起分享探讨近期各大顶会中发表的稀疏注意力机制加速器的实现方法,希望能给各位读者一些启发。
2. TRANSFORMER和自注意力机制的工作原理
先来看一看Transformer和自注意力机制的工作原理。Transformer模型通常可以由encoder模块堆叠而成。在encoder模块中,可以通过自注意力机制,计算出一个sequence中每个token和其他token之间的两两对应的关联性,从而得到需要被“注意”的token-pair。n个token间的两两对应的关联性可以用一个n x n的矩阵来表示,如图2-49所示。
图2-49 n个token之间的注意力关系
    Transformer模型架构,如图2-50所示。
图2-50 Transformer模型架构 
那么Transformer模型是如何一步一步计算出这些token之间的关联呢?如图2所示,假设Transformer的输入有n个token,首先,它们会先被一个embedding模块转换为n x d大小的X矩阵;随后,X会在Linear Transformation模块中分别与三个权重矩阵

 相乘,并线性转换为三个n x n大小的矩阵,分别称为Query(Q),Key(K)和Value(V):

   (1)

 和

 (既K矩阵的转置)相乘得到一个n x n的注意力得分(Attention Score)S矩阵,并对其每一行计算SoftMax,便可以得到一个表达token和token之间的关联性注意力权重(Attention Weight)A矩阵:

 (2)

最后,将A矩阵与V矩阵相乘,即可得到最终的n x d大小的自注意力输出Z。

 (3)

如图2所示,在Transformer模型中,注意力的输出还会通过一个残差连接与其输入相加,并通过计算LayerNorm函数加上一个前向网络(Feed-Forward Network,FFN)得到Transformer的encoder模块的最终输出。通常一个模型中会叠加多个encoder模块,并在最后使用一个分类器(Classifier)来完成一些分类预测的任务。
3. 注意力机制的计算复杂度
由于注意力机制的复杂度是随着token的数量增加(既sequence的长度)呈平方数增长的(如图1所示),从而增加了传统Transformer模型在硬件部署的难度。进一步分析一下一个Transformer中每一步所带来的计算开销:在一个传统的Transformer模型中,encoder模块有三个主要的矩阵乘计算,分别为:a)QKV的线性转换(公式1);b)自注意力计算(公式2和3);和c)FFN前向网络。如图2-51所示,通过计算在不同输入sequence长度下各个矩阵乘的计算量(FLOPs)对比可以看到,随着sequence长度的增加,自注意力计算的占比(蓝色部分)逐渐增加,最终远超于线性转换和前向网络计算量的总和(橙色部分)。
图-51 自注意力计算的开销占比
4. 加速自注意力机制:稀疏化注意力权重矩阵
通过上面的分析可以看到,在sequence长度大于一定量级时,注意力机制的计算便会成为Transformer模型计算的主要瓶颈,学术界和产业界也都提出了各种方法来加速注意力机制,其中最受关注的方法之一便是注意力权重剪枝。与普通的权重剪枝(Weight Pruning)有所不同的是,注意力矩阵只能在运行时由公式2计算得出,而无法像权重剪枝一样在运行之前就可以完成。所以,有一部分的研究关注在如何高效准确地在运行时对注意力矩阵进行剪枝,如[1]和[2]。当然,运行时进行剪枝会带来额外的开销以及硬件设计的难度,所以也有很多研究关注在如何使用固定的pattern进行剪枝而不损失Transformer模型的预测精确度。
2.9 DOTA:检测和忽略可扩展Transformer加速的薄弱环节
2.9.1 主要思想
提出了一种运行时剪枝注意力矩阵的方法。作者在训练Transformer模型时,同步训练了一个简单的弱注意力检测器(Weak Attention Detector)。在进行推理时,这个检测器会在计算注意力权重矩阵之前,预测出token间的弱关联性(即弱注意力),并在计算注意力时忽略这些token的计算。具体检测方法如下:首先,输入X会先被线性转换为低维度的

 和

 :

  (4)

其中,P为d x k大小的矩阵,其作用是将X的尺寸从n x d减小为n x k(其中k远小于d)。P矩阵的数据会在

 内做随机采样来决定。此外,

 和

 也都是k x k大小的权重矩阵。可以用

 和

 相乘得到一个n x n大小的预估注意力得分

 :

 

 (5)

这个检测器中的

 和

 ,可以通过一个MSE(Mean Squared Error)损失函数在训练Transformer时同步进行优化:

 (6)

其中B为mini-batch的大小。由于 和公式2中A矩阵的尺寸相同,可以用 矩阵来预测A矩阵中的弱注意力位置,并在计算A矩阵时,跳过相应的计算。弱注意力的阈值可以通过一个top-K算法搜索得到。
 
2.9.2 加速器设计
DOTA整体加速器的主体设计,如图2-52所示。

图2-52 DOTA注意力机制加速器和弱注意力检测器
 
加速器整体分成多个lane实现token-level数据并行计算,每个lane中有一个可重构的矩阵乘单元(RMMU,Reconfigurable Matrix Multiplication Unit)用来计算浮点和整数精度的矩阵乘,以及一个弱注意力检测器。检测器会将预估的注意力得分与阈值进行比较,并由此生成一个n x n大小的bit mask用0和1来表示弱注意力和强注意力在注意力权重矩阵的位置,以便在之后的调度器(scheduler)中跳过弱注意力的计算。此外,检测器中还使用了乱序执行等方法做进一步的加速。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/783102.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机体系结构技术杂谈(中)

计算机体系结构技术杂谈(中) 例2:进阶算法 基础算法无法解决中断恢复的问题,即假如有两个写寄存器的操作,指令1,指令2,可能乱序执行时指令2的结果已经将写回了寄存器,但是指令1还未执行,此时发生中断后,从指令1重新开始执行,就会重新进行两次写入,将会发生错误。 只…

算子计算与调度杂谈

算子计算与调度杂谈 9.4.1 GPU内核驱动分析概述 不同CPU相比,GPU中包含了大量的并行计算单元,适合处理像素,矩阵,坐标等大量同类型的数据,因此,很多LINUX上的应用程序为了能够利用GPU的加速功能,都试图和GPU直接打交道,因此,系统中可能有多个组件或者程序同时使用GPU,…

misc一题

题目一开始给了个docx文件 无法打开 010editor发现为pk开头 后缀名改为zip 翻目录在1/page路径下找到使用notepad++查看 在unicodestring字段后进行拼接得到flag flag{xps?Oh,Go0d}

C#项目—模拟考试

C#模拟考试软件 开发了一个《模拟考试》的小软件,此小软件练习的目的主要是为了体会编程思想,深度理解高内聚、低耦合,掌握编程思维逻辑的大招,告别垃圾代码,重点体会编程之美,练习时长30分钟;开发一个项目之前,切记不要打开程序就写代码,首先要做的就是分析项目,从项…

基于直流潮流的IEEE30电力系统停电分布及自组织临界性分析matlab仿真

1.课题概述 详细的讲,我们的这个算法的安如下的步骤进行:步骤1:k=k+1,通过慢动态过程中的几个公式,对Pmax,Fmax进行更新;步骤2:考虑随机因素进行线路的断开,以一个随机概率来随机断开一条支路;步骤3:根据慢动态计算得到的参数开始进行慢动态仿真;步骤4:在慢动态仿…

基于多路径路由的全局感知网络流量分配优化算法matlab仿真

1.程序功能描述 2.测试软件版本以及运行结果展示MATLAB2022a版本运行3.核心程序figure; bar(alpha); text(0.5,0.8,用户1,8节点); text(1,0.9,用户2,8节点); text(1.5,0.8,用户1,11节点); text(2,0.9,用户2,11节点); axis([0,3,0,1.2])figure; bar(beta); text(0.6,0.3,用…

概览

https://tech.meituan.com/2018/11/15/java-lock.html

参数化pipeline,凭证管理

参数化pipeline 使用parameters指令pipeline {agent anyparameters {booleanParam(defaultValue: true,description: ,name: userFlag)}stages {stage(foo) {steps {echo "flag: ${params.userFlag}"}}} } 创建代码仓库 添加文件 新建Jenkinsfile文件再次查看,有文…

【第2期】INFINI Easysearch 免费认证培训开放报名啦

探索 Easysearch 的无限可能,与 INFINI Labs 共赴搜索技术前沿! 随着数字化转型的加速,搜索技术已成为企业数据洞察的核心。INFINI Labs 作为搜索创新技术的引领者,诚邀所有对 Easysearch 搜索引擎感兴趣的开发者、技术爱好者及合作伙伴,参加我们即将于 2024 年 8 月 17 日…

2024“钉耙编程”中国大学生算法设计超级联赛(8)

昨天是花冈柚子的生日,把这条信息转发至三个群电脑就会自动下载柚子社全家桶。我试过了是假的,而且我的电脑自动下载了原神,但昨天真的是花冈柚子的生日。目录写在前面10041007101210061005100810031010写在最后 写在前面 补提地址:https://acm.hdu.edu.cn/listproblem.php…

文献阅读——Dynamic Range Compression Preserving Local Image Contrast for Digital Video Camera

Dynamic Range Compression Preserving Local Image Contrast for Digital Video Camera 数字摄像机中保持局部图像对比度的动态范围压缩 摘要 本文提出了一种新的数字摄像机动态范围压缩方法。该算法的目的是在像素和周围注意力区域的亮度比来保持局部对比度。通常,数字视频摄…

Dynamic Range Compression Preserving Local Image Contrast for Digital Video Camera

Dynamic Range Compression Preserving Local Image Contrast for Digital Video Camera 数字摄像机中保持局部图像对比度的动态范围压缩 摘要 本文提出了一种新的数字摄像机动态范围压缩方法。该算法的目的是在像素和周围注意力区域的亮度比来保持局部对比度。通常,数字视频摄…