Advertisement

A Framework for Accelerating Transformer-Based Language Model on ReRAM-Based Architecture(论文笔记)

阅读量:

背景

(发现问题):

在RRAM加速器架构中,自注意力机制用于解析输入序列数据时需要整合所有对应位置词项的计算结果,并且每个输入实例会被按时间顺序依次处理以确保数据完整性

由此可见,在自注意力机制中长期处于停滞状态。等到上一层计算完成时,这构成了数据潜在问题。如图所示,在采用RRAM加速器处理BERT语言模型时出现延迟问题。而BERT语言模型的基本结构则展示了其复杂的架构设计

数据风险涉及生成Q、K、V的同时进行内积计算这一过程,在BERT模型的每个编码器层中都必须执行注意力机制运算。因此这一操作将导致整体延迟显著上升。

并且图4 显示出注意力模块占据了大部分时间。因此,在解决数据风险的问题时才能使BERT模型加速。

解决办法:

  1. 构建解决数据风险的整体架构。
  2. 基于窗口自注意力机制展开研究,并限定其关注区间;同时提出了基于滑动窗口策略的最佳窗口集合选择方法。
  3. 开发一种高效的硬件架构设计方案。

窗口注意力机制

本文基于以下两点提出了窗口自注意力机制:

  1. 首先,在关注与目标词相关的关键词汇时,那些具有低注意力分数的词语对整体注意力结果的影响较为有限。因此,在计算自注意力得分较低的词语时进行排除操作并不会显著降低算法的准确性。
  2. 在自注意力机制中,则更倾向于集中于与目标词语位置相邻的词语,并且这些词语往往在整体上呈现出较高的注意力评分(如图6所示)。可以看出,在这种情况下较高的评分主要集中在了目标词语周围的位置。
  1. 传统自注意力模型在计算时涉及目标词与其他所有单词的关联程度,在该机制中仅专注于目标词周围的词汇,并减少了计算规模。

通过缩小注意力计算的范围,可以有效缓解数据危险,如图9所示。

采用传统的计算方法时,在处理每个单词时需考虑其与其他单词之间的关联程度以及相似性特征;具体而言,在处理w₁时其内积操作仅基于与w₁至w₂相关的key向量。

当引入窗口注意力机制后,在处理w₁时其内积操作将限定于与之直接相关的前两个关键词向量。

传统的处理流程直到第7步才完成一次完整的内积运算;而通过引入窗口注意力机制,在第3步即可完成一次完整的内积运算。

这种改进有效降低了模型在处理长距离依赖关系时所面临的潜在风险。

算法优化

然而,在实际应用中可能会遇到一些挑战:例如,在计算速度方面可能产生显著影响,并在模型准确性上带来挑战。该研究则建议采用贪心算法来确定一组最优的窗口尺寸参数。

该算法的输入为未经启用窗口自注意力机制的BERT模型、相关 downstream 任务以及目标精度;其输出包括最佳适应度的目标 window 大小集合以及经过微调优化的BERT 模型。

该算法分为两个阶段:

  1. 首先,在确保模型精度的前提下,在不同下游任务需求下确定一个全局最大窗口尺寸以缩减搜索范围;
  2. 然后依次运用贪心算法在各编码层寻找最佳窗口尺寸。

本文通过微调获得的新模型在预处理阶段被整合至RRAM架构中,并提出了一种支持自注意力机制的通用型RRAM架构硬件设计ReBERT。

REBERT框架:

REBERT-basic

值得特别注意的是,在本设计中采用基于LUT的实现方案来完成softmax运算。为了解决指数运算的结果溢出问题以及避免LUT表规模过大带来的计算负担,在设计中采取了相应的措施

为了避免指数运算结果超出范围,在每行数据中将所有元素减去该行的最大值以确保其范围限定于0至1之间;接着避免LUT占用过多存储空间的情况下, 将数据划分为最低有效位(LSB)和最高有效位(MSB)两部分, 从而通过一个小查找表配合乘法操作实现softmax计算过程

此外,在本研究中发现REBERT-basic在未充分发挥窗口自注意力机制的能力下表现欠佳。通过深入分析其原因,并提出相应的优化方案。

RRAM-advanced

首先是分析原因:

不同于传统自注意力机制,在窗口型自注意力机制中,在进行内积计算之前,则必须先对数据进行预处理以确保后续的有效性运算。如图所示:

在w2完成后生成其key向量时需要执行数据准备步骤,并使用RRAM中的运算阵列完成与w1相关的内积运算;由于数据准备与内积计算两项操作均需依赖RRAM内的运算单元阵列,在此条件下W1的内积运算只能受限于T4架构;因此数据准备与内积计算两项操作均需依赖RRAM内的运算单元阵列而导致系统运行出现潜在的安全风险

为了应对挑战或风险, 本文旨在优化以下三个步骤: 生成key向量的过程, 内积运算以及加权求和的过程. 采用双阵列架构的方法被命名为REBERT-advanced.

随后将单输入数据实例划分为前后两部分( MSBs / LSBs部分)。通过双阵列设计使计算速度得以提升,并在图13c中可见其运行效果

实验评估

基于窗宽搜索算法获得的最佳窗宽集合及其精度分析可知,在0至1%范围内。

在GLUE各种任务中,与其他加速方法的比较

MobileBERT模型基于知识蒸馏的方法构建,在性能表现上与BERT-base相当程度上具有显著优势。

在参数规模和计算效率方面也展现出明显优势。
该模型在运行速度上也有明显提升。

在DistillBERT的设计中,在每间隔两个层的位置上选择某一层的参数并将其作为基础参数设置;其结果是减少了transformer模型的整体层数。

图17展示了表II中基于ReRAM架构上的加速器对BERT进行各种设计配置后的加速比。BERT - ASIC是依据文献[39]的研究成果,在ASIC架构上的BERT处理系统,并经过计算得到其效率与GPU性能对比

实验结果分析

速度对比

ReBERT的基本版相比GPU提升了22.6倍的性能,并且相较于基准模型提升了3.4倍。然而,在结构上的风险使得基本版中的加速效果未能达到通过窗口自注意力机制获得的理想水平。

而ReBERT-advanced采用了双阵列输入设计,并有效利用了窗口自注意力机制的优势;相较于GPU而言,其平均执行速度提升了约24.6倍;在GLUE数据集上的测试结果显示,在基线与ReBERT-basic相比,该方法分别实现了3.7倍和1.8倍的性能提升。

对于 SQuAD 数据集而言,在 GPU 加速下的 ReBERT-advanced 其加速性能领先于 baseline 和 ReBERT-basic 各别约 2.2 倍和 1.9 倍。

能耗方面的对比

因为窗口自注意力将自注意力范围从 Nseq 减少到 2W + 2,其中 W 比 Nseq 小得多。

如图所示:首先,在内积计算环节上实现了一个50%的减少量,并占总计算开销的大约60%比例。经过优化后的softmax环节同样实现了约54%的效率提升。整体上每项自注意力模块的计算规模缩减了约37%.

普适性

除了在原始BERT模型中提升性能之外,在包括BERT-large和RoBERTa-base等其他基于transformer的语言模型中也进行了应用

在BERT-large基准上运行的ReBERT-advanced版本较基准模型提升了9.5倍的效果;而在RoBERTa-base上运行时其效果较基准模型提升了7.7倍。

总结

分析自注意力机制发现bert的注意力计算时延增加的原因:

存在数据冒险-解决办法:通过窗口注意力减少计算量;

贪心算法寻找最优窗口大小集合。

仍然存在结构性冒险:采用双阵列架构以提升计算效率的同时,通过消除结果风险,充分释放窗口自注意力机制的作用

提出结合了窗口注意力机制和支持注意力计算的硬件设计-REBERT。

在GLUE数据集中加速效果明显

全部评论 (0)

还没有任何评论哟~