FTRANS:基于FPGA的Transformer能效加速

部署运行你感兴趣的模型镜像

FTRANS:基于FPGA的Transformer能效加速

1 引言

RNN及其变体长短期记忆(LSTM)单元[5]和门控循环单元 (GRU)[2]曾主导序列建模、语言建模和机器翻译等领域。然而,由于记忆(隐藏状态)中的瓶颈以及复杂的旁路逻辑(加法和导数分支),长距离信息传递效率普遍较低。此外,其具有固有的顺序性,这一特性使得通过反向传播在训练样本内部无法实现并行化,而这一点在较长的序列长度[8]下至关重要。

为了克服RNNs的不足,”Transformer”架构被提出,作为首个完全依赖自注意力机制而不使用序列对齐RNN或卷积的转导模型。它在序列到序列任务上实现了显著改进[18]。自从注意力机制随着Transformer的发明成为自然语言处理领域的主流以来,新模型的突破和发展以前所未有的速度加速。

许多基于Transformer的自然语言处理语言模型,如BERT [3]和RoBERTa[9],将预训练过程引入Transformer架构,并在主要的自然语言处理任务(包括问答、情感分析和语言推理)上取得了破纪录的结果。

然而,这些预训练语言表示所带来的密集计算和功耗问题阻碍了它们在计算和能量受限的边缘设备上的普及。此外,尽管基于Transformer的NLP模型取得了快速进展,但在压缩这些模型以适应嵌入式和物联网(IoT)设备方面的研究仍然严重不足。

本文中,我们提出了一种基于现场可编程门阵列的高效能加速框架Ftrans,用于基于Transformer的大规模语言表示。Ftrans包含一种改进的基于BCM的方法,可在算法层面实现语言表示的模型压缩,以及架构层面的加速设计。我们的贡献总结如下:

面向Transformer的增强型基于BCM的模型压缩
我们解决了传统BCM压缩导致的准确率下降问题,并提出了一种增强型BCM压缩方法,以减小Transformer中权重的存储占用。在精度损失较小的情况下,Ftrans实现了最高达16倍的压缩比。

基于现场可编程门阵列的Transformer整体优化
鉴于基于Transformer的模型具有较大的大小和复杂的数据流,即使采用模型压缩技术,我们仍需仔细调度计算资源以优化延迟和吞吐量。我们提出了一种两阶段优化方法,以缓解资源限制并实现高吞吐量。

低硬件占用和低功耗(能耗)
我们提出了一种支持模型压缩技术的现场可编程门阵列架构设计,并开发了设计自动化和优化技术。总体而言,与中央处理器和图形处理器基准相比,所提出的Ftrans在实现Transformer和RoBERTa时实现了最低的硬件成本和能耗。

实验结果表明,我们提出的框架可将NLP模型的大小显著减少最多达16倍。与中央处理器相比,我们的现场可编程门阵列设计在性能和能效方面分别实现了27.07×和 81×的提升。功耗为与现场可编程门阵列相比,图形处理器高达5.01×,而我们与图形处理器相比能效提升了最高8.80×。

2 相关工作

注意力机制已成为各种任务中强大的序列建模和转导模型的重要组成部分[8]。自然语言处理领域向基于注意力的模型发展的趋势,可以从亚马逊[7],、脸书[15],和赛富时[1]等公司开发的越来越多基于注意力的神经网络中得到印证。

Transformer的创新之处在于,它是首个完全通过自注意力机制消除递归、以处理输入与输出之间依赖关系的模型。

BERT[3]和RoBERTa[9]通过引入预训练过程,将 Transformer的能力从序列到序列模型扩展为通用语言模型,并在主要的自然语言处理基准上取得了最先进的结果。尽管在自然语言处理领域中,RNNs和卷积神经网络(CNN)正逐渐被基于Transformer的模型所取代,但目前仅有少数研究致力于加速Transformer并降低其能耗与功耗,例如,在[17]中使用前沿的FPGA板卡对Transformer进行了案例研究。然而值得注意的是,[17]针对的是采用高带宽内存(HBM)技术的专用FPGA架构。与传统FPGA不同,HBM直接封装在 FPGA结构内部,以缓解片上内存限制。但工作[17]并未采用模型压缩技术,且使用的序列长度为8和16,过短而不利于实际应用。此外,诸如编码器/解码器数量、隐藏层大小等模型细节也未列出。

3 Transformer工作负载分析

“Transformer”架构是所有最先进的大规模语言模型的核心。它具有如图1所示的编码器‐解码器结构[18]。编码器将输入符号序列x=(x1; x2; x3; …; xn)映射为连续表示序列z= (z1;z2;z3; …;zn)。给定x,解码器随后逐时间步生成输出符号序列y=(y1;y2;y3; …;ym)。对于下一步,模型在生成下一个符号时会将先前生成的符号作为额外输入。Transformer使用堆叠自注意力和全连接(FC)层来实现编码器和解码器的整体架构,如图1所示。

示意图0

编码器 :编码器由堆叠的N个相同层组成。每一层包含两个子层。第一个是多头自注意力机制,第二个是全连接前馈网络。在这两个子层周围均有残差连接,后接层归一化。

解码器 :解码器由堆叠的 N个相同层组成。在每一层中,包含三个子层,其中第三个子层与编码器相同。插入的第二个子层对编码器堆栈的输出执行多头注意力。第一个子层使用掩码多头注意力,以确保位置i的预测仅依赖于其之前的位置。

3.1 注意力

注意力函数可以描述为将查询q和一组键k及值v对映射到输出o的过程,如图2(a)所示,称为缩放点积注意力或单头注意力。

3.1.1 缩放点积注意力

在本文中,我们选择点积注意力作为注意力函数,因为它的速度更快且空间效率更高[18]。输入包含维度为dk的查询和键,以及维度为dv的值。我们将 √dk作为点积注意力的缩放因子。我们计算查询与所有键的点积,将每个结果除以 √dk,然后应用softmax函数以获得对值的权重。注意力函数作用于q、k和v时,可通过分别将它们拼接成矩阵Q、 K和V同时计算。相应地,输出矩阵Oatt为:

$$
O_{att} = \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V
$$

3.2 多头注意力

多个单头注意力被拼接为多头注意力,如图2(b)所示。

$$
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{Head}_1, \cdots, \text{Head}_h) \times W^O
$$

其中头(Head)定义如下:

$$
\text{Head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)
$$

其中投影是参数矩阵$W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}$、$W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}$ 和 $W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}$。多头注意力使模型能够在不同位置共同关注来自不同表示子空间的信息[18]。

在本研究中,我们实现了一个浅层Transformer和一个大规模Transformer,即RoBERTa。浅层Transformer具有h= 2个并行注意力层和4个注意力头,而RoBERTa(基础配置)具有 12层,每层12个头。对于每个头,我们分别在Transformer和 RoBERTa中使用dk= dv= dmodel/h= 200和768。

示意图1

4 使用增强块循环矩阵的Transformer压缩

大规模预训练语言表示带来的密集计算和权重存储给硬件实现带来了挑战。因此,模型压缩是缓解这些挑战的自然方法。

4.1 基于BCM的增强型Transformer

CirCNN [4]和C‐LSTM[19]分别在图像分类和语音识别的小到中等规模数据集上采用BCM进行模型压缩,并在性能和能效方面相比先前的工作实现了显著提升。使用该方法,我们可以通过将原始权重矩阵替换为一个或多个循环矩阵块来减少权重存储,其中每个行/列都是其他行/列的循环重构形式。我们用b表示每个循环矩阵的行/列大小(即块大小、FFT大小)。假设 Transformer中的权重矩阵(例如$W_i^Q$、$W_i^K$、$W_i^V$)的形状为 $W \in \mathbb{R}^{m \times n}$,在对W进行划分后将得到f × д个块,其中f= m ÷ b且д= n ÷ b。然后有$W=[W_{ij}]$, i ∈{1 … f},j ∈{1 … д}。输入 x也被划分为 x=[x₁ᵀ, x₂ᵀ, …, x_дᵀ]ᵀ。在每个BCM中,仅需存储和计算第一列/行,该部分称为索引向量index vector,pij。其理论基础推导见[20],,证明了基于BCM的神经网络具有通用逼近性质,且其误差界与通用神经网络一样高效。

先前的研究[4, 19]未探讨大规模语言表示。为了进一步保持预测精度,我们采用增强型基于BCM的模型压缩。我们对索引向量的公式进行如下修改:

$$
p_{ij} =
\begin{bmatrix}
\frac{1}{b} \sum_{j=1}^{b} W_{1j} \
\frac{1}{b} \sum_{j=1}^{b} W_{2j} \
\vdots \
\frac{1}{b} \sum_{j=1}^{b} W_{bj}
\end{bmatrix}
$$

其中$W_{ij}$是一个循环矩阵。我们观察到,通过这种方式,可以更好地保留参数信息并保持整体的预测精度。主要原因是先前的工作将第一列/行作为索引向量,从而缺失了对其他行/列的有效表示。

基于循环卷积定理[13, 16],,无需直接执行矩阵‐向量乘法,我们可以采用基于快速傅里叶变换(FFT)的乘法方法,该方法等价于矩阵‐向量乘法。基于BCM的矩阵‐向量乘法 $W_{ij}x_j$的计算为:$W_{ij} x_j = p_{ij} \circledast x_j = \text{IFFT}(\text{FFT}(p_{ij}) \circ \text{FFT}(x_j))$,其中‘⊛’表示循环卷积,◦ 表示逐元素乘法。因此,计算复杂度从$O(b^2)$降低到$O(b \log b)$。

5 架构

现场可编程门阵列因其高并行性和低延迟而广泛用于加速深度学习模型。由于大量Transformer参数超出了FPGA结构上的片上内存或块RAM(BRAM)容量,即使采用模型压缩技术,完整模型也无法全部存储在芯片上。为应对这一挑战,我们将模型划分为嵌入层和编码器/解码器堆栈。嵌入层占参数总量的30.89%,本质上是一个将离散标记转换到连续空间的查找表,其计算量远低于编码器和解码器。因此,我们的基本思路是将嵌入层卸载至片外内存,从而有可能将计算最密集的部分——即编码器和解码器堆栈——部署在芯片上,避免频繁访问片外权重,进而加速计算。其次,为了缓解I/O限制,我们提出了层间粗粒度流水线、层内细粒度流水线以及计算调度方法。

5.1 总体硬件架构

如图3所示,所提出的硬件架构包含用于编码器/解码器计算的计算单元、片上存储体、Transformer控制器以及片外内存 (DDR)和DDR控制器。Transformer控制器与主机通信,并控制现场可编程门阵列中的所有模块。主机PC通过PCIe将输入(即句子对)加载到现场可编程门阵列进行推理。在现场可编程门阵列部分,给定分词后的句子,嵌入查找模块访问 DDR以获取嵌入向量。随后,这些嵌入向量将被送入流水线式编码器/解码器堆栈进行推理。

示意图2

计算单元包括多头注意力、缩放点积注意力、逐点前馈层、线性运算以及加法与归一化(add/norm)。Transformer控制器协调来自PCIe、BRAM和FPGA结构上计算单元的输入数据流和计算流。由于编码器和解码器共享相同类型的运算,我们首先将其分解为不同的计算原语,包括不同大小的矩阵乘法、向量化指数运算等。在Transformer控制逻辑下,多头注意力、线性运算和加法与归一化模块可被重新配置以构成编码器或解码器。我们有两种流水线策略:对于浅层网络,可以 straightforward 地实现整个网络,即所有层均可使用专用FPGA资源实现;而对于 BERT和RoBERTa等最先进的设计,由于存在多个编码器/解码器,可能导致DSP等资源不足,在这种情况下,必须复用某些处理单元(PE)或整个编码器/解码器模块。

5.2 多头注意力设计

多头注意力包含用于矩阵乘法的多个处理单元(称为PE)存储体、缓冲区(K缓冲区、Q缓冲区和V缓冲区)、归一化模块(Norm)、用于掩码多头注意力的掩码函数,以及如公式 (2)所述并在图4中所示的softmax模块。

输入从DDR获取并送入编码器流水线,然后与存储在 BRAM上的查询矩阵Q和键矩阵K相乘。中间结果QWQ和 KWK随后被传送到缓冲区(即K缓冲区用于存储KWK,Q缓冲区用于存储QWQ)。接下来,我们计算K缓冲区和W缓冲区中存储的值的矩阵乘法。乘积将被加载到归一化(Norm)模块,即product√dk。经过softmax模块后,结果将被传送到 PE存储库,与V缓冲区中存储的矩阵进行矩阵乘法运算,即 VWV。每个头都有一个本地控制器,用于协调PE存储库和缓冲区的计算流和数据流。本地控制器还将启用多路复用器,以实现掩码多头注意力,目标是屏蔽序列中的未来标记(设置为0),以防止当前输出预测能够看到句子后面的词。

示意图3

为了支持掩码多头注意力,本地控制器控制多路复用器将未来标记设为0,使得当前输出预测无法看到后续序列。解码器多一个多头注意力机制,因此计算时间比编码器更长。在需要复用解码器模块的情况下,为了防止编码器流水线停顿,在编码器和解码器堆栈之间添加了一个缓冲区。该缓冲区还存储上一级编码器的输出,以支持残差连接。

5.3 处理单元设计和Softmax模块

我们开发了三种不同的可配置处理单元,分别为PE‐A、PE‐B和 PE‐FFT/IFFT。对于全连接层中基于BCM的矩阵‐向量乘法,我们使用基于FFT/IFFT的处理单元(PE);对于其他层,我们使用矩阵‐向量乘法,即针对不同矩阵大小采用PE‐A和PE‐B。

5.3.1 基于矩阵-向量乘法的处理单元

PE‐A 或 PE‐B 的主要部分是一个用于不同大小矩阵乘法的乘法器。它还包含两个累加器、除法器和指数单元,以支持多头注意力所需的缩放和 Softmax 操作。乘法器的输出作为数据流输入到除法器或累加器中,因此缩放和 Softmax 层可以与矩阵乘法重叠执行。

5.3.2 基于FFT/IFFT的处理单元

图5展示了基于FFT/IFFT的处理单元和 Softmax模块的设计,包括一个FFT/IFFT核、一个累加器和一个加法器。该累加器是一个具有N个输入的加法树(其大小与FFT/IFFT核的大小相同)。我们选择基‐2库利‐图基算法[6]用于FFT实现。

5.3.3 softmax模块

图5(b)展示了softmax函数$\text{softmax}(x)_i = \frac{\exp(x_i)}{\sum_j \exp(x_j)}$的实现。指数函数 $\exp(x_i)$ 或 $\exp(x_j)$ 在FPGA上的资源消耗较高。我们采用分段线性函数来估计其输出,以同时降低资源消耗并保持精度。使用缓冲区存储 $\exp(x_i)$ 并使用累加器计算$\exp(x_j)$的和。接下来,我们执行除法并生成 Softmax结果。

示意图4

6 设计自动化与优化

我们开发了一个用于原型设计和探索硬件架构的工作流程。首先,基于训练好的模型生成数据依赖图,以展示计算流。图中的算子在设计约束下进行调度,以构成流水线,实现最大吞吐量。最后,代码生成器接收调度结果并生成最终的C/C++实现,该实现可输入到商用HLS工具中进行综合。我们的目标综合后端是Xilinx SDx。

计算密集型的主要操作如图6所示。其他操作(如除法和 Softmax)消耗的时间要少得多,可以与这些主要操作合并或重叠执行。不同层的计算可以分解为通用的计算单元,即处理单元(PE)。相同颜色的层可以由同一个处理单元执行,但其运算量不平衡。例如,KWK、QWQ 和 VWV 所消耗的时间大约是 n 个头数所需计算时间的4倍。为了提高流水线的利用率,希望每一层消耗的时间大致相同。这可以通过为最慢的层分配更多资源来实现。我们采用两阶段优化流程:在第一阶段,寻找一种资源方案以最小化各层所需的最大时间;在第二阶段,在该资源约束下,优化单个编码器/解码器的调度。

优化从编码器/解码器的单个基本实现开始,即无并行化且无资源共享,以便我们可以估算每层的资源消耗、操作数量和执行时间,以及通过单位资源数量获得的吞吐量。然后我们将检查可以为每个编码器/解码器分配多少资源,以最小化最慢层的执行时间:

$$
\begin{aligned}
& \text{minimize } \max(T_1, T_2, \dots, T_n), \
& \text{subject to } RF[i] \geq \sum_{j=1}^{n} R_j[i] + R_{\text{misc}}[i]
\end{aligned}
$$

其中 $i \in {FF, LUT, DSP, BRAM}$,$j \in {1,\dots,n}$,$n$ 为编码器/解码器的总层数,$RF = [RF_{FF}, RF_{LUT}, RF_{DSP}, RF_{BRAM}]$ 是查找表(LUT)、触发器(FF)、数字信号处理单元(DSP)和 BRAM的片上资源约束。$T_j$ 是第$j$层所需的时间。$R_j$ 是第$j$层的资源利用率,也表示为一个向量:$R_j = [R_j^{FF}, R_j^{LUT}, R_j^{DSP}, R_j^{BRAM}]$。$R_{\text{misc}}$ 是除编码器/解码器模块以外其他模块的资源利用率,例如DDR控制器、PCIE控制器等。$T_j$ 可表示为:$T_j = \lceil N_{\text{iop}} / (F_j \cdot K_j) \rceil$,其中 $N_{\text{iop}}$ 是第$j$层所需的操作数量,$K_j$ 是第$j$层的资源分配因子,$F_j$ 是非优化设计的吞吐量,可通过实验获得。因此,吞吐量为:

$$
\text{Throughput} = \frac{\text{freq}}{n \cdot \max(T_1, T_2, \dots, T_n)}
$$

算法找到某层消耗更多资源后,更新资源消耗和执行时间。如果满足资源限制,则重复此过程直至无法进一步加速。然后算法将检查最快的层。如果该层所需时间明显少于最慢的层,则可以为该层分配较少资源,从而将更多资源分配给最慢的层。经过此过程后,我们得到资源限制,例如编码器和解码器中不同类型处理单元的数量。在资源限制下,每一层可能没有专用的计算资源,因此矩阵乘法器、加法器等必须共享。因此,必须仔细进行操作调度以最小化计算延迟。编码器/解码器可以用有向无环图(DAG)表示——$G(V,E)$,其中$V$是表示不同计算的顶点集合,边$E$表示依赖关系。可用的计算单元(如处理单元和加法器)由集合$\text{Op}={\text{PE-A1}, \text{PE-A2}, \dots, \text{Adder}}$表示。用于操作调度的算法以$G$和$\text{Op}$作为输入,如算法1所示。

示意图5

算法1:操作调度的伪代码

输入:依赖关系图 G(V, E),可用的处理单元
操作集合 = {处理单元_A1, 处理单元_A2, ..., 加法器}
输出:C和每层指定的处理单元

Q = TOPO_SORT(G(V, E))        \\ 拓扑排序以获得所有层的优先队列
P = Q[0]                       \\ 待调度的层列表
E = ∅                          \\ 正在执行的层列表
S = ∅                          \\ 最终调度结果
阶段 = 0

while Q ≠ ∅ or E ≠ ∅ do
    for layer in Q do
        if available PE exists for layer then
            Q.pop()
            Op.remove(PE)
            E.push_back((layer, PE))
            for V in NEIGHBOR(layer) do
                Q.push_back(V)
            end
        end
    end

    stage += 1

    for (layer, PE) in E do
        if IS_FINISHED(layer) == True then
            E.pop()
            S.push_back((layer, stage, PE))
            Op.push_back(PE)
        end
    end
end

return S

7 评估

7.1 基于Transformer的语言表示训练

在本节中,我们对线性层应用增强的基于BCM的模型压缩,并采用16位定点数据表示所有权重。我们通过两个方面评估精度影响:典型的Transformer结构,即包含编码器和解码器的浅层 Transformer,以及仅包含编码器的预训练深层 Transformer架构——RoBERTa(基础配置)[9]。浅层 Transformer在语言建模任务中进行评估,该任务是一个无监督序列到序列问题,需要解码器部分。另一方面,我们在情感分类任务上运行RoBERTa,这是一个有监督分类问题,不需要解码器块。软件实现基于PyTorch深度学习框架[14]和 FairSeq序列建模工具包[12]。表1总结了实验中浅层 Transformer和RoBERTa模型的关键参数。

表1:浅层Transformer和RoBERTa的关键参数

模型配置 浅层Transformer RoBERTa(基础配置)
Transformer结构 编码器‐解码器 仅编码器
Transformer层 2 12
隐藏Size 200 768
注意力头数 4 12
总计参数 6M 125M
7.1.1 用于情感分类的微调RoBERTa

我们评估了在 IMDB电影评论情感分类上对微调RoBERTa [9]所提出的模型压缩方法[10],以探讨训练次数减少的问题。从文献[9]中保存的预训练模型状态开始,我们对模型进行微调,直到其验证准确率达到最佳的95.7%。为了保持整体精度,我们压缩部分层。该过程通过使用确定性种子来抑制随机性,因此原始 RoBERTa与压缩版本之间的精度差异完全由压缩技术导致。

7.1.2 浅层Transformer

语言建模任务以一串单词作为输入,并判断该序列在多大程度上符合实际的人类语言。在本实验中,我们采用流行的WikiText‐2数据集[11],其中包含200万训练标记,词汇量大小为33k。建立了一个具有4个注意力头和200隐藏维度的浅层Transformer模型。

浅层Transformer和RoBERTa在WikiText‐2与IMDB评论数据集上的基线及模型压缩结果分别如表2所示。我们使用块大小为4或8的增强型BCM方法对模型进行压缩。从表2可以看出,对于浅层Transformer,块大小为4时无准确率损失,块大小为8时仅有0.6%的准确率损失。而RoBERTa在使用块大小为4和8进行模型压缩后,准确率分别下降了4.2%和4.3%。我们还观察到,从32位浮点数转换为16位定点数不会导致准确率损失。原始模型与权重压缩版本之间相当的精度表明了所提出的模型压缩方法的有效性。

表2:不同模型配置的比较

ID 网络类型 块大小 WikiText-2准确率 (%) 准确率损失使用BCM (%) 准确率损失使用BCM和量化 (%)
1 浅层Transformer - 91.3 - -
2 浅层Transformer 4 90.7 0.6 0
3 浅层Transformer 8 90.7 0.6 0.6
4 浅层Transformer 16 90.0 1.3 0.6
ID 网络类型 块大小 IMDB准确率 (%) 准确率损失使用BCM (%) 准确率损失使用BCM和量化 (%)
4 RoBERTa(基础版) - 95.7 - -
5 RoBERTa(基础版) 4 91.5 4.2 4.3
6 RoBERTa(基础版) 8 91.4 4.3 4.3

注:RoBERTa的准确率下降稍高,因为其参数是在千兆字节数据集(160GB文本)上使用掩码语言模型进行精心预训练的,因此对压缩更敏感。

7.2 性能和能效

7.2.1 实验平台

赛灵思 Virtex UltraScale+ VCU118 开发板,包含 345.9Mb BRAM、6,840 个 DSP、2,586K 逻辑单元(LUT)以及两块 4GB DDR5内存,通过 PCIe Gen3 × 8 I/O 接口连接到主机。实验中所采用的主机是一台配置了多个英特尔酷睿 i7‐8700 处理器的PC。我们使用赛灵思 SDX 2017.1作为商业高级综合后端,以在选定的 FPGA 上综合基于高级(C/C++)的设计。

7.2.2 Transformer和RoBERTa的实验结果

我们将在现场可编程门阵列上实现压缩模型,以评估其性能和能效。对于不同的批量大小,基于算法1分别得到Transformer和RoBERTa 的编码器/解码器中7个阶段每个阶段的并行度,如表3所示。我们报告了现场可编程门阵列上的资源利用率,包括DSP、 LUT和FF。同时报告了延迟(毫秒)、吞吐量(每秒帧/序列数)和功耗(W)。我们的结果表明,延迟和功耗之间存在权衡。对于Transformer和RoBERTa,当批量大小为8时,可以实现最佳权衡(最低的延迟/功耗比),因为使用更大的批量大小时,延迟将显著增加,而吞吐量不会增加。

表3:不同模型配置的比较

浅层Transformer

批量大小 DSP FF LUT 延迟(毫秒) 功率(瓦) 吞吐量(帧/秒)
1 5647 304296 269361 11.59 22.45 680.91
4 5647 305820 269753 22.90 22.52 690.50
8 5647 306176 270449 45.54 22.66 698.72
16 - - - - 22.73 702.54

RoBERTa(基础版)

批量大小 DSP FF LUT 延迟(毫秒) 功耗(瓦特) 吞吐量(帧/秒)
1 6531 506936 451545 40.33 25.06 94.25
4 6531 508488 452005 79.03 25.13 99.13
8 6531 508916 452661 157.18 25.89 101.23
16 - - - - 25.96 101.79
7.2.3 跨平台比较

我们在相同的模型和基准(IMDB)下比较了中央处理器、图形处理器和现场可编程门阵列的性能(吞吐量)和能效,如表4所示。我们还在嵌入式低功耗设备上验证了我们的方法,将剪枝后的模型部署在Jetson TX2这一嵌入式AI计算设备上。该设备采用256核NVIDIA Pascal系列GPU构建,内存为8 GB,带宽为59.7 GB/s。与中央处理器相比,我们的现场可编程门阵列设计在吞吐量和能效方面分别提升了27.07×和 81×。对于GPU RTX5000,其功耗是现场可编程门阵列的5.01×倍,而我们的现场可编程门阵列设计相较于图形处理器在能效方面提升了8.80×,吞吐量提升了1.77×。对于嵌入式GPU Jetson TX2,我们的现场可编程门阵列设计在能效方面提升了2.44×。

表4:使用 RoBERTa 在中央处理器、图形处理器和现场可编程门阵列之间的性能和能效比较

i7‐8700K RTX5000 VCU118 Jetson TX2
吞吐量(帧/秒) 3.76 57.46 101.79 9.75
功耗(瓦特) 80 126 25.13 5.86
能效(FPS/W) 0.05 0.46 4.05 1.66

8 结论

本文提出了一种面向基于Transformer的大规模语言表示的能效加速框架。该框架包含一种改进的基于BCM的方法,可在算法层面实现大规模语言表示的模型压缩,以及在架构层面的加速设计。我们提出了一种现场可编程门阵列架构设计,以支持该模型压缩技术,并开发了设计自动化与优化技术,用于探索并行性,从而实现高吞吐量和高性能。实验结果表明,所提出的框架在Transformer上以较小的准确率损失显著减小了 NLP模型的大小。基于现场可编程门阵列的实现相比中央处理器和图形处理器在能效方面表现出显著优势。

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值