大语言模型硬件加速器综述
大语言模型(LLMs)已成为自然语言处理任务的强大工具,凭借其理解和生成类似人类文本的能力,彻底改变了该领域。随着对更复杂大语言模型的需求持续增长,迫切需要应对与其规模和复杂性相关的计算挑战。本文对旨在提高大语言模型性能和能源效率的硬件加速器进行了全面综述。通过研究包括图形处理单元(GPUs)、现场可编程门阵列(FPGAs)和定制设计架构在内的多种加速器,我们探索了为满足大语言模型独特计算需求而定制的硬件解决方案格局。该综述涵盖了对架构、性能指标和能源效率考量的深入分析,为旨在在实际应用中优化大语言模型部署的研究人员、工程师和决策者提供了宝贵的见解。
CCS概念
计算机系统组织→可重构计算;异构(混合)系统;神经网络;数据流架构。
附加关键词和短语
大语言模型;硬件加速器;现场可编程门阵列;图形处理单元;综述;Transformer;能源效率
1. 引言
诸如GPT-3等大语言模型,是一类人工智能系统,旨在以前所未有的复杂性和细微差别理解、生成和处理人类语言。这些模型在广泛的数据集上进行训练,涵盖了人类话语的广泛范围,这使它们能够执行从翻译、摘要到对话和内容创作等一系列与语言相关的任务。在过去几年中,大语言模型领域见证了显著的发展,其特点是在模型架构、训练方法和数据处理能力方面取得了重大进展。
这种发展是由深度学习的突破和大规模计算资源的日益普及推动的。大语言模型对社会和商业的影响是深远而多方面的。它们彻底改变了我们与技术交互的方式,在客户服务、内容生成和决策支持系统等领域引入了新的效率和能力。此外,大语言模型通过为数据分析、模式识别和预测建模提供增强功能,在推动包括医疗保健、金融和教育在内的各个行业的创新方面发挥了重要作用。这种变革性影响凸显了探索和理解这些模型的基础、运行机制以及它们在不同领域广泛应用的意义的重要性。
到目前为止,还没有关于硬件加速器以加速Transformer中计算量最大任务的全面综述。在文献[31]中,提出了一项关于自动驾驶中Transformer网络硬件加速的调查。该论文介绍了在加速诸如目标检测、3D分割和车道检测等任务方面的多项工作。
2022年,Huang等人发表了一篇关于Transformer硬件加速的综述[12]。该论文主要侧重于基于硬件加速器的Transformer模型压缩算法,并且大多局限于基于FPGA的实现。
2023年,Emani等人[6]对大语言模型在多个计算平台上进行了全面的性能研究,并评估了这些模型在不同平台上的性能特征。他们使用微基准测试、GPT-2模型以及一个名为GenSLM的由大语言模型驱动的科学用例来评估这些系统。在评估过程中,他们使用了GPU以及其他AI加速器,如Sambanova、Cerebras、Graphcore和Habana Gaudi 2。具体来说,他们利用大语言模型应用程序来评估系统性能,并对提出的加速大语言模型应用程序的解决方案进行分类。
在本文中,我们对利用硬件加速器加速大语言模型和自然语言处理中Transformer网络的多项研究工作进行了全面综述。该综述介绍了已提出的框架,然后对每个框架的技术、处理平台(GPU、FPGA、ASIC)、加速比和能源效率进行了定性和定量的比较。
2. 计算和能源需求
2.1 计算复杂度
大语言模型是当代人工智能研究中计算量最大的应用之一。大语言模型的计算强度主要归因于其架构和所处理数据的规模。这些模型通常包含数亿到数十亿个参数,这些参数是经过学习的权重,决定了模型如何处理和生成语言。训练这些参数需要多次迭代庞大的数据集,这一过程需要大量的计算资源。
此外,大语言模型旨在执行的任务的复杂性加剧了其计算需求。诸如上下文理解、细致入微的语言生成以及处理人类语言中的歧义等任务,需要具有多层的深度神经网络,每一层都增加了整体的计算负载。模型训练和微调的迭代性质,涉及通过这些深度网络不断进行前向和后向传播,进一步放大了计算需求。
2.2 训练中的计算复杂度
大语言模型的训练阶段本质上很复杂,因为需要大量计算资源来处理大规模数据集并从中学习。这种复杂性源于几个关键因素:
参数数量:像GPT-3这样的大语言模型包含数量极高的参数(通常达数十亿个),在训练过程中每个参数都需要进行计算。调整这些参数以最小化误差需要大量的计算工作。
训练数据大小:大语言模型在庞大的数据集上进行训练,这需要巨大的计算能力来处理和从数据中学习。这个过程包括诸如分词、编码以及应用复杂算法来理解语言模式和结构等任务。
神经网络深度:大语言模型中使用的深度神经网络架构由多个层组成,这增加了计算负载。每一层都有助于模型理解和生成语言的能力,在训练期间的前向和后向传播都需要大量计算。
2.3 推理中的计算复杂度
虽然人们通常认为大语言模型的计算复杂性主要在训练阶段是个问题,但推理阶段也需要大量的计算资源:
模型大小和内存占用:大语言模型中的大量参数即使在推理期间也会导致相当大的内存占用。有效地管理和访问这些参数需要大量计算资源,特别是在处理复杂查询或大量数据时。
实时处理要求:对于需要实时响应的应用程序,如聊天机器人或交互式工具,大语言模型必须快速处理输入并生成输出。这需要分配大量计算资源,以确保低延迟和高吞吐量。
上下文和细致语言处理:大语言模型理解语言中的上下文和细微差别的能力,虽然计算强度低于训练,但仍然需要大量的处理能力。对于涉及长上下文窗口或复杂语言结构的任务来说尤其如此。
总之,大语言模型的训练和推理阶段都具有很高的计算复杂性。虽然这两个阶段复杂性的性质和规模可能有所不同,但两者都需要大量计算资源,才能实现最先进语言模型所期望的高性能和高准确性。这凸显了持续研究更高效的模型架构和计算策略以优化大语言模型训练和应用的重要性。
2.4 能源消耗
大语言模型巨大的计算需求转化为大量的能源消耗。训练一个最先进的大语言模型所消耗的能源可能相当于多辆汽车的终身能耗,这凸显了这些模型对环境的影响。这种能源消耗主要源于使用高性能GPU或TPU,这些对于训练这些模型所需的并行处理能力是必要的。
大语言模型的高能耗性质引发了对其碳足迹的担忧,特别是当它们在由不可再生能源供电的数据中心进行训练和运行时。这些模型持续用于推理任务也会导致持续的能源使用,尽管通常低于训练所需的能源。大语言模型带来的好处与其环境影响之间的权衡是一个持续的研究和辩论领域,强调了对更节能的模型架构以及在人工智能领域采用绿色计算实践的需求。
降低大语言模型能源消耗的努力包括优化模型架构以提高效率、采用更节能的硬件,以及为数据中心使用可再生能源。这些措施旨在在保持大语言模型先进能力的同时减少其对环境的影响。
3. 基于FPGA的加速器
3.1 MNNFast
2019年,Jang等人提出了MNNFast以加速大语言模型[14]。MNNFast通过三种优化方法来加速大语言模型。首先,为了减少内存带宽消耗,MNNFast提出了一种新的基于列的流式算法,该算法最小化了数据溢出的大小,并隐藏了大部分片外内存访问开销。其次,为了降低高计算开销,MNNFast提出了零跳过优化,以绕过大量的输出计算。最后,MNNFast提出了一个专门的嵌入缓存,用于高效缓存嵌入矩阵。
MNNFast已在多种平台(CPU、GPU和FPGA)上实现。MnnFast在CPU、GPU和FPGA上分别将整体吞吐量提高了5.38倍、4.34倍和2.01倍。移植到FPGA上的实现实现了高达6.54倍的能源效率提升。
3.2 FTRANS
2020年,Li等人[17]提出了一个名为FTRANS的硬件加速框架,旨在加速基于Transformer的大规模语言表示。该框架包括基于增强块循环矩阵(BCM)的权重表示,以便在算法层面实现大规模语言表示的模型压缩,这可以显著减小模型大小(最多可达16倍),同时将精度损失降至最低。
FTRANS将模型划分为嵌入层和编码器 / 解码器堆栈,重点将嵌入层卸载到片外内存以优化计算。此外,它还开发了一种设计自动化和优化技术以实现最大吞吐量。FTRANS通过提出两阶段优化方法来有效调度计算资源,解决了基于Transformer的模型规模大、数据流复杂的问题,优化了FPGA上的延迟和吞吐量。
基于性能评估,与CPU相比,FTRANS实现了27倍的加速比和81倍的能源效率提升,与GPU相比,能源效率提升高达8.8倍。
3.3 多头注意力
2020年,Lu等人提出了一种基于FPGA的架构,用于加速Transformer网络中计算量最大的部分[19]。在他们的工作中,针对Transformer中两个最复杂的层,即多头注意力(MHA)残差块和逐位置前馈网络(FFN)残差块,提出了一种新颖的硬件加速器。
首先,引入了一种有效的方法来划分Transformer中的巨大矩阵,使两个残差块能够共享大部分硬件资源。其次,精心设计了计算流程,以确保脉动阵列(设计中最大的模块)的高硬件利用率。第三,对复杂的非线性函数进行了高度优化,以进一步降低硬件复杂度和整个系统的延迟。
所提出的框架在Xilinx FPGA上实现。基于性能评估,与V100 GPU相比,该设计实现了14.6倍的加速比。
3.4 FPGA NPE
2021年,Khan等人提出了一种用于语言模型的FPGA加速方案,称为NPE[15]。NPE架构由指令控制单元(ICU)、内存读取单元(MRU)、内存写入单元(MWU)、矩阵乘法单元(MMU)和非线性向量单元(NVU)组成。
MMU的计算包括五个阶段:数据选择、内积计算、加法树归约、累加和量化。数据选择从输入缓冲区加载必要的矩阵操作数,并根据需要重新排列它们。矩阵乘法通过一个处理单元(PE)阵列实现,每个PE使用一个乘法器阵列进行内积计算,然后接一个加法树。在我们的实现中,MMU有128个PE,每个PE有16个乘累加单元(总共2048个乘法器)。这些乘累加单元映射到FPGA的DSP切片上。
NPE设计的关键新颖组件是非线性向量单元(NVU),它以最小的资源开销处理高吞吐量的非线性函数计算。NVU是一种数据并行向量加载 / 存储架构,每个时钟周期对多个元素执行算术和逻辑运算。
NPE在时钟频率为200MHz的Xilinx Zynq Z 7100 FPGA开发板上实现。NPE与其他框架(如FTRANS)以及在CPU和GPU上的实现进行了比较。虽然与其他计算平台相比没有显著的加速比,但主要优势在于能源效率。NPE的能源效率比CPU(i7 8700k)高约4倍,比GPU(RTX 5000)高6倍。
3.5 列平衡块剪枝
2021年,Peng等人提出了一种使用列平衡块剪枝加速Transformer网络的新颖方案[21]。列平衡块剪枝结合了存储体平衡剪枝和块剪枝的关键特征。列平衡块剪枝通过按列对块的L2范数进行排序来获得剪枝阈值,并对每列进行块剪枝。
通过结合压缩稀疏存储体(CSB)格式和块压缩稀疏行(BCSR)格式,形成了压缩稀疏列块(CSCB)。然后引入了一种专门的处理单元(PE)用于稀疏矩阵乘法加速器,并且可以使用多个PE来提高加速器的吞吐量。
所提出的框架已在不同的硬件平台(Intel i5 5257U(2.7 GHz)CPU、Nvidia Jetson TX2 GPU和Xilinx Alveo U200 FPGA)上实现,以进一步比较延迟和吞吐量。实验结果表明,与CPU平台相比,FPGA平台实现了11倍的加速比,与GPU平台相比实现了2倍的加速比。
3.6 FPGA DFX
2022年,Hong等人提出了DFX[11],用于加速大语言模型中使用的Transformer网络。与NPE类似,DFX架构提出了一种模块化架构,由几个计算核心组成,用于加速Transformer网络。
为了解决文本生成的顺序特性,DFX计算核心针对单令牌处理进行了优化。它还使用了一种基于利用HBM内存高带宽的高效平铺方案和数据流架构。DFX在多FPGA系统上使用模型并行性,以增加并行工作的计算核心的物理数量,同时将完整的工作负载平均分配给每个设备。DFX在汇编语言级别提出了自定义指令集架构(ISA),以支持推理的端到端处理。与NPE类似,DFX核心有两个处理单元,矩阵处理单元(MPU)和向量处理单元(VPU)。
为了进行评估,DFX在配备四个Xilinx Alveo U280数据中心加速卡的Intel Xeon Gold 6226R CPU上实现。与GPU设备相比,DFX实现了平均3.8倍的吞吐量提升和4倍的能源效率提升。
3.7 FPGA OPU
2023年,Bai等人提出了另一种加速Transformer网络的方案,称为Overlay OPU[2]。为了支持多种网络的推理,他们提出了一种可配置的计算单元。具体来说,他们提出了48个处理单元(PE),这些处理单元被配置用于加速Transformer网络。加法树的输出阶段可以在推理过程中切换。通过这种方式,来自前向模块的数据可以在预定义的连接状态下流经计算单元。该方案与CPU相比实现了5 15倍的加速比,与GPU(RTX 3090)相比实现了1 2.9倍的加速比,与其他FPGA加速器(如NPE[15])相比实现了1.10 2.5倍的加速比。
3.8 FPGA加速Transformer网络
2022年,Tzanos等人提出了一种用于Transformer网络的高性能硬件加速器[24]。Transformer网络使用一种称为注意力的技术。注意力源于神经科学领域,是指能够有选择地专注于特定数据,同时忽略环境中其他数据的能力。在深度学习中,我们通过注意力机制模仿这种技术,一种实现方式是将序列编码为不是单个固定向量,而是创建一个模型,通过添加一组稍后将被优化的权重,为每个输出步骤生成一个向量。
因此,模型不仅学习在输出中产生什么,还学习如何有选择地对特定输入数据赋予权重,以最大化正确输出的概率。BERT基于使用多个注意力块。每个注意力块使用通用矩阵乘法(GEMM)操作转换输入,然后使用GEMM和非线性函数(如Softmax、层归一化和高斯误差线性单元(GELU))生成输出。
本文提出了一种针对FPGA平台的新颖架构,用于加速特定功能,即通用矩阵乘法、Softmax、层归一化和GELU。
由于GEMM操作约占总执行时间的70%,该架构主要侧重于如何优化加速网络的矩阵乘法操作。此外,该方案的目标是将Transformer网络中计算量最大的矩阵乘法与对运行时影响很小的函数(如Gelu、Softmax和Layernorm)集成,以防止主机与FPGA内核之间不必要的数据传输,这肯定会增加实现成本。内核是在Vivado HLS上开发的,针对Alveo U200 FPGA卡,时钟频率为411MHz。
性能评估表明,与40线程处理器相比,该框架对BERT模型可实现2.3倍的系统加速比,比单核CPU快80.5倍。
3.9 FlexRun
2023年,Hur等人提出了一种基于FPGA的加速器FlexRun[13],用于加速多样且复杂的自然语言处理(NLP)模型。该论文聚焦于加速诸如简单循环神经网络(SRNN)或长短期记忆网络(LSTM)等递归神经网络(RNN)模型,以及基于注意力机制的NLP模型,如Transformer和GPT2。
FlexRun由三个主要部分组成:FlexRun架构、FlexRun算法和FlexRun自动化。
FlexRun的主要优势在于,它利用FPGA的高可重构性,使架构能够动态适应目标模型及其配置。FlexRun的基础架构采用深度流水线架构,减轻了向量运算的开销。该架构由参数化的预定义基本模块构成,这些模块可以进行配置,以适配输入模型及其配置。
接下来,他们通过FlexRun算法框架对算法进行设计空间探索,为输入模型寻找最佳模块,从而确定最优的计算单元设计。最后,利用FlexRun算法的结果,他们为特定模型找到最佳架构,并使用名为FlexRun自动化的工具在FPGA上实现该架构。
通过对NLP和LLM应用程序的分析,他们发现计算量最大的任务是通用矩阵乘法和向量处理。因此,他们提出了一种模块化架构,由通用矩阵乘法单元(Gemv单元)和向量处理单元组成。Gemv单元由多个单指令多数据(SIMD)算术单元构成,向量单元通过一些额外的运算符(如规约、指数运算、高斯误差线性单元运算)执行向量运算,以支持基于注意力机制的NLP模型。
在评估过程中,他们将FlexRun与基于Stratix-10 GX FPGA的类似英特尔Brainwave的架构,以及启用张量核心的Tesla V100 GPU进行比较。与FPGA基线相比,FlexRun在不同配置的BERT模型上平均实现了1.59倍的加速比。对于GPT2,FlexRun平均加速比达到1.31倍。此外,与GPU实现相比,FlexRun在BERT和GPT2上的性能分别提升了2.79倍和2.59倍。
3.10 基于ODE的加速
2024年,Okubo等人[20]提出了一种用于加速Transformer网络的混合方法。该方法使用残差网络(ResNet)作为骨干架构,并将其部分卷积层替换为多头自注意力(MHSA)机制。通过这种方式,他们使用神经常微分方程(Neural ODE)作为骨干架构(而非ResNet),成功大幅减少了此类模型的参数数量。与基于卷积神经网络(CNN)的模型相比,所提出的混合模型在不降低精度的情况下,将参数数量减少了94.6%。
该模型被部署在一个中等规模的FPGA设备上,用于边缘计算应用。为了进一步降低FPGA资源的利用,研究人员采用量化感知训练(QAT)方案而非训练后量化(PTQ)对模型进行量化,以抑制精度损失。结果,一种极其轻量级的基于Transformer的模型得以在资源受限的FPGA上实现,非常适合边缘应用。
在Xilinx Zynq UltraScale+ MPSoC平台上的性能评估表明,与基于ARM Cortex-A53 CPU的实现相比,所提出的FPGA实现实现了12.8倍的加速比和9.2倍的能源效率提升。
4. 基于CPU和GPU的加速器
4.1 SoftMax
2022年,Choi等人[5]提出了一种通过重组Softmax层来加速Transformer网络的新颖框架。Softmax层将注意力矩阵的元素归一化到0到1之间,该操作沿着注意力矩阵的行向量进行。根据分析,缩放点积注意力(SDA)块中的Softmax层在BERT、GPT-Neo、BigBird和Longformer的总执行时间中分别占比36%、18%、40%和42%。
在他们的工作中,提议将Softmax层分解为子层,使其数据访问模式与相邻层匹配。然后,通过将分解后的Softmax子层与后续和先前的操作融合,他们成功减少了片外内存流量,从而缩短了该层的总执行时间。
通过显著减少片外内存流量,Softmax重组在A100 GPU上对BERT、GPT-Neo、BigBird和Longformer进行推理时,分别实现了高达1.25倍、1.12倍、1.57倍和1.65倍的加速比。
4.2 LightSeq2
2022年,Wang等人[26]提出了一系列GPU优化方法,用于在GPU上加速通用Transformer模型的训练,称为LightSeq2。
LightSeq2提出了三种加速Transformer网络训练的技术。首先,对于所有类型的Transformer,LightSeq2在编码器和解码器层都使用融合内核运算符。将相邻的细粒度逐元素内核融合为一个粗粒度内核,从而减少内核启动次数和中间结果。例如,自注意力层的最后一个内核通过一次内核启动,实现了偏差添加、随机失活和残差内核操作。
LightSeq2还在训练中应用了混合精度更新。在训练器初始化期间,LightSeq2将所有参数/梯度复制到一个张量中,然后重置并将它们链接为工作空间的片段。在每个训练步骤中,LightSeq2仅执行一次训练器内核操作来更新工作空间,避免了在每个参数/梯度片段上启动大量碎片化的GPU内核。
最后,LightSeq2通过减少内存分配和释放次数来压缩内存,从而降低内存占用,且不产生额外成本。LightSeq2将GPU内存划分为固定大小的永久内存,用于存储参数和梯度,以及可变大小的临时内存,用于存储中间张量。
性能评估表明,在不同的GPU上,LightSeq2始终比以前的系统更快(快1.4 3.5倍),并且在大型公共数据集上可实现高达3倍的加速比。
4.3 简化Transformer网络
He和Hofmann[10]也提出了一种新颖的框架,通过简化Transformer来加速GPU上的Transformer网络,同时不影响收敛特性和下游任务性能。
基于信号传播理论和实证证据,他们发现可以去除许多部分来简化类似GPT的解码器架构以及编码器风格的BERT模型。具体来说,他们表明可以去除跳跃连接、值参数、投影参数和顺序子块,同时在训练速度和下游任务性能方面与标准Transformer相匹配。
基于对仅自回归解码器模型和仅BERT编码器模型的性能评估,简化后的Transformer在每次更新的训练速度和性能上模仿了标准Transformer,同时在GPU上的训练吞吐量提高了15%,并且使用的参数减少了15% 。
4.4 LLama
2023年,微软提出了LLMA[28],这是一种LLM加速器,用于加速带有参考的大语言模型推理。LLMA的提出主要是基于观察到在许多实际场景中(例如检索到的文档),大语言模型的解码结果与可用参考之间存在许多相同的文本片段。LLMA首先从参考中选择一个文本片段,然后将其标记复制到解码器中,接着在一个解码步骤内并行检查这些标记作为解码结果的适用性。改进后的计算并行性使LLMA在生成结果与贪心解码相同的情况下,为大语言模型实现了超过2倍的加速比。然而,这种加速仅在上下文参考与输出之间存在显著重叠的用例中(例如搜索引擎和多轮对话)才能实现。
与其他高效解码算法(如需要引入额外高效草稿生成模型进行检查的推测解码[27]和推测采样[4])相比,LLMA的主要优势在于它不需要额外的模型,并且更容易实现和部署。
在性能评估中,他们使用了具有70亿、130亿和300亿参数的LLaMA模型,所有推理均以半精度浮点数进行。对于70亿和130亿参数的模型,推理在一个英伟达32G V100 GPU上进行,对于300亿参数的模型,推理在一台机器上的四个英伟达32G V100 GPU上进行。根据模型大小和场景的不同,所提出的方案实现了从2.19倍到3.06倍的加速比。
4.5 UltraFastBERT
2023年,Belcak和Wattenhofer提出了一种纯粹在软件层面加速语言模型的新颖方案,称为UltraFastBERT[3]。UltraFastBERT在每层推理中仅选择性地使用4095个神经元中的12个。这通过将前馈网络替换为快速前馈网络来实现。UltraFastBERT的中间层在设计上具有指数级的速度提升:假设有一个前馈(FF)网络和一个快速前馈(FFF)网络,每个网络都有n个神经元,通过FFF网络进行前向传递的时间复杂度为O(log₂n),而不是FF网络的O(n)。
与优化后的基线前馈实现相比,UltraFastBert实现了78倍的加速比,与等效的批处理前馈推理的PyTorch实现相比,实现了40倍的加速比。
5. ASIC加速器
5.1 A3
2020年,Hma等人提出了一项早期关于Transformer网络加速的研究成果——A3[8]。该论文提出了一种用于神经网络中注意力机制的硬件加速器,它不仅专注于在硬件中高效实现注意力机制,还通过算法优化和近似来减少注意力机制中的计算量。论文提出了一种近似候选选择机制,以减少搜索目标的数量,从而降低计算量。
此外,他们提出了一种专门的硬件流水线,利用并行性来加速近似注意力机制,这不仅提高了系统性能,还提升了能源效率。
所提出的方案未在FPGA上实现,但已在针对台积电40nm ASIC、时钟频率为1GHz的精确周期Verilog设计中实现。基于性能评估,与英特尔Gold 6128 CPU的实现相比,该方案可实现高达7倍的加速比,与CPU实现相比,能源效率提高了11倍。
5.2 ELSA
2021年,Ham等人提出了一种用于加速Transformer网络的硬件 软件协同设计方法,称为Elsa[9]。
基于通过计算近似相似度可以有效过滤掉无关关系这一事实,ELSA大幅减少了自注意力操作中的计算浪费。与传统硬件(如CPU或GPU)不同,ELSA提出了一种专门的硬件,能够直接利用这种计算量的减少来进一步提高性能和能源效率。
近似自注意力方案由三个子操作组成。第一个子操作通过利用键和查询的简洁表示,以最小的计算量估计两个向量(例如一个键和一个查询)之间的角度。然后,基于点积与两个向量之间夹角的余弦成正比这一事实,利用估计的角度来计算查询和键之间的近似相似度。最后,将近似相似度与某个阈值进行比较,以确定特定键与查询是否相关。
他们评估了几个具有代表性的面向自注意力的神经网络模型,以证明ELSA的有效性。在性能评估方面,他们针对时钟频率为1GHz的40nm ASIC实现了一个用于ELSA的自定义模拟器。在自注意力计算中,ELSA moderate与GPU相比,实现了高达157倍的加速比,能源效率比GPU提高了两个数量级。
5.3 SpAtten
2021年,Want等人提出了一个用于加速大语言模型的框架——Spatten[25]。
SpAtten提出了一种新颖的方案,通过三种算法优化来加速NLP:级联令牌剪枝、级联头剪枝和渐进式量化,以减少计算量和内存访问。
剪枝应用于令牌和头,而不是像通常那样应用于权重。级联意味着一旦一个令牌/头被剪枝,它将在所有后续层中被移除,因此一层只需要处理前一层剩余的令牌/头。层越深,被剪枝的令牌/头就越多。
这三种技术是输入相关的,因为剪枝的计算量和位宽会根据输入实例进行自适应调整。级联剪枝需要实时对令牌/头的重要性分数进行排序。所提出的硬件架构基于用于令牌/头选择的高并行top k引擎、专门的内存层次结构和全流水线数据路径,以提高性能并降低能耗。
所提出的方案已使用SpinalHDL在精确周期设计中实现,并使用台积电40nm库映射到ASIC。与GPU(TITAN Xp)和Xeon CPU相比,SpAtten分别实现了162倍和347倍的加速比。在能源效率方面,与GPU和CPU相比,SpAtten分别实现了1193倍和4059倍的能源节省。
5.4 Sanger
2021年,Lu等人提出了另一种用于加速Transformer网络的新颖方法——Sanger[18]。
Sanger通过结合动态稀疏模式和可重构架构来加速稀疏注意力模型。软件部分提供稀疏模式,这可以实现高性能和均衡的工作负载。架构设计具有可重构性,以支持稀疏性的动态特性,这有助于提高压缩比。
在软件层面,Sanger提出了一种算法,通过计算注意力矩阵的低比特版本并通过二进制阈值化将小的注意力权重归零来预测动态稀疏性。为了确保高效硬件实现的负载平衡,Sanger将具有非结构化稀疏性的最终注意力掩码编码为多个细粒度的结构化块。由于Sanger是基于每个样本动态确定稀疏模式的,因此预测和编码是实时进行的。
在硬件层面,Sanger提出了一种分数固定数据流,统一了稀疏双精度矩阵乘法(SDDMM)和稀疏矩阵乘法(SpMM)操作的计算。使用这种数据流,Sanger在处理单元中保持稀疏分数固定,直到计算完成,这有效地避免了解码开销。
为了在稀疏模式上提供更大的灵活性,Sanger基于这种数据流提出了一种可重构脉动阵列。Sanger在Chisel硬件中实现,并转换为Verilog RTL。该设计针对使用UMC 55nm技术、时钟频率为500MHz的ASIC。
5.5 Energon
2023年,Zhou等人提出了一种算法 架构协同设计方法,通过动态稀疏注意力加速各种Transformer,称为Energon[32]。Energon提出了一种混合精度多轮过滤(MP MRF)算法,在运行时动态识别查询 键对。
Energon在每个过滤轮次中采用低比特宽度,只有最终选择的对才用于注意力阶段的高精度张量,以降低整体复杂度。通过这种方式,他们在精度损失可忽略不计的情况下,成功将计算成本降低了4到8倍。
Energon作为针对45nm ASIC库的协处理器实现。基于性能评估,与英特尔Xeon 5220 CPU和英伟达V100 GPU相比,Energon分别实现了168倍和8.7倍的加速比,能源消耗分别降低了10000倍和1000倍。
6. 内存内硬件加速器
6.1 ATT
2020年,Guo等人提出了另一种基于电阻式随机存取存储器(RRAM)加速基于注意力机制的加速器的方法——ATT[7]。ATT基于交叉阵列式电阻式随机存取存储器(RRAM),通过为基于注意力的神经网络设计专门的流水线,消除了内存与处理单元之间的权重移动。所提出的方案由几个模块组成。
QKV引擎采用基于交叉阵列的RRAM执行矩阵 向量乘法。掩码生成器根据Q K V引擎获取的矩阵计算掩码。该模块输出两个不同的掩码,一个转发到注意力引擎,另一个存储在掩码缓存中,用于过滤全连接引擎的输入和输出。
最后,注意力引擎分三个阶段执行矩阵到矩阵的乘法。第一阶段用于计算q向量与k向量转置之间的内积。第二阶段对前一阶段的内积结果进行Softmax操作。第三阶段将Softmax结果与v向量相乘。
所提出的方案已使用CACTI 7.0在32nm工艺下进行模拟,以对SRAM缓冲区和掩码缓存的功耗和面积进行建模。基于性能评估,与英伟达GTX 1080 Ti GPU相比,ATT可实现202倍的加速比。
6.2 ReTransformer
2020年,Yang等人提出了一种用于加速Transformer的内存内框架——ReTransformer[29]。ReTransformer是一种基于RRAM的内存内架构,用于加速Transformer,它不仅利用基于RRAM的内存内架构加速Transformer的缩放点积注意力,还通过使用所提出的矩阵分解技术避免写入中间结果,从而消除了一些数据依赖。此外,ReTransformer针对多头自注意力提出了一种新的子矩阵流水线设计。
RRAM用于执行Transformer网络的矩阵乘法和缩放操作。ReTransformer还通过整合内存内逻辑来优化SoftMax,以最大程度地利用处理子阵列中的片上RRAM交叉阵列。具体来说,ReTransformer使用基于RRAM的比较和选择逻辑来找到最大值,并使用查找表来执行指数和对数函数。
性能评估表明,与GPU相比,ReTransformer可实现高达23.21倍的加速比,同时相应的总功耗降低了1086倍。
6.3 iMCAT
2021年,Laguna等人提出了一种新颖的用于加速长句Transformer网络的内存内架构——iMCAT[16]。所提出的框架结合了交叉阵列(XBars)和内容可寻址存储器(CAMs)来加速Transformer网络。通过结合多种技术,如内存内计算(从而最小化内存传输开销)、缓存可重用参数以减少操作数量、利用注意力机制中可用的并行性,以及最后使用局部敏感哈希根据序列元素的重要性过滤元素数量,实现了对Transformer网络的加速。
性能评估表明,对于长度为4098的序列,该方法实现了200倍的加速比和41倍的能源效率提升。
6.4 X-Former
2023年,Sridharan等人提出了一种新颖的内存内硬件加速方案X-Former[23],用于加速Transformer网络。X-Former是一种混合空间内存内硬件加速器,由非易失性存储器(NVM)和互补金属氧化物半导体(CMOS)处理单元组成,能够高效执行Transformer工作负载。
X-Former主要由一个带有NVM处理单元的投影引擎和一个带有CMOS处理单元的注意力引擎组成,投影引擎用于执行MV MStatic操作,注意力引擎用于执行MV MDynamic操作。与其他内存内架构的主要区别在于,所有层的权重都存储在投影引擎中,以避免对NVM单元进行重新编程,而由于面积限制,注意力引擎仅针对最大的自注意力层进行优化处理。
X-Former提出了一种序列分块数据流,该数据流使两个处理单元的计算重叠,从而减少了总执行时间。X-Former还拥有专门的基于总线的互连网络,用于在投影引擎和注意力引擎之间进行数据传输,以降低能耗和延迟。与之前的内存内方案相比,X-Former通过将静态操作映射到NVM交叉开关,同时使用内存内CMOS处理单元处理动态操作,避免了频繁的重新编程。
性能评估显示,与NVIDIA GeForce GTX 1060 GPU相比,X-Former在延迟和能源效率方面分别实现了高达85倍和7.5倍的提升;与最先进的内存内NVM加速器相比,在延迟和能源效率方面分别实现了高达10.7倍和4.6倍的提升。
6.5 Flash
2024年,苹果公司提出了一种利用闪存高效部署Transformer网络的新颖方案[1]。该论文解决了在运行超出可用动态随机存取存储器(DRAM)容量的大语言模型时所面临的挑战,即将模型参数存储在闪存中,并根据需求将其加载到DRAM中。所提出的方法构建了一个推理成本模型,该模型考虑了闪存的特性,用于在两个关键领域进行优化:减少从闪存传输的数据量,并以更大、更连续的块读取数据。在这个硬件感知框架内,苹果公司引入了两种主要技术。
第一种技术称为“窗口化”,通过重用先前激活的神经元来减少数据传输;第二种技术“行列捆绑”,针对闪存的顺序数据访问优势进行了优化,增加了从闪存读取的数据块大小。这些方法共同使得运行的模型大小可达可用DRAM大小的两倍,与在CPU和GPU上的简单加载方法相比,推理速度分别提高了4 5倍和20 25倍。
7. 定量比较
下表展示了所有已提出的基于硬件的加速器及其主要特性。每一行列出了加速器的名称、加速器类型(FPGA/GPU/ASIC/内存内)、加速比、能源效率以及用于比较的参考平台。在某些情况下,所提出的方案会同时与CPU和GPU进行比较,此时会同时列出加速比和能源效率。在本节中,我们对所提出的方案进行定量和定性的比较。
7.1 技术
研究人员主要利用四种计算平台来加速大语言模型和Transformer网络,分别是GPU、FPGA、ASIC和内存内计算。GPU是最常用的平台,许多大语言模型在训练和推理时都会使用GPU。FPGA可以通过定制架构来加速特定功能,其核心思路是将计算量最大的任务从CPU卸载到FPGA上,这样开发者既能保留CPU的灵活性,又能提升应用程序的运行速度。FPGA的主要优势在于,所提出的方案可以在FPGA上实现并进行评估,从而测量实际的整体加速比。
也有一些方案针对ASIC实现。这些方案提出定制架构,可作为协处理器来加速诸如矩阵乘法等计算量最大的任务。尽管目前没有一个方案在实际ASIC中实现,但所有方案都在精确周期设计中完成,并使用如CACTI[22]这样的精确周期模拟器和功耗估算器进行评估。大多数方案基于40nm工艺技术进行评估,部分方案采用45nm或55nm工艺实现。
最后,一些加速器采用内存内计算技术。内存内计算是一项很有前景的技术,它可以利用NVM和忆阻器处理数据,例如进行矩阵乘法运算。尽管内存内计算有诸多优势,但目前在工业界尚未广泛应用,在商业化方面也存在一些限制。
在这些方案中,MNNFast[14]比较特殊,它所提出的优化方法已在CPU、GPU和FPGA等多个平台上应用。在CPU平台上,他们使用开源的BLAS库OpenBLAS,通过C++实现MNNFast;在GPU平台上,借助CUDA Toolkit 10.0提供的cuBLAS库进行矩阵乘法运算;在FPGA平台上,利用Vivado High Level Synthesis(HLS)设计并实现了基于FPGA的MNNFast加速器。
7.2 加速比
加速比是指所提方案的执行时间与参考设计执行时间的比值。然而,每个加速器所对比的参考计算平台各不相同,这使得在同一参考平台下评估更高的加速比变得困难。此外,部分加速器以CPU为参考平台,而另一些则以GPU为参考设计。即便有些方案与CPU进行比较,也并非总能明确参考设计是单核CPU还是多核CPU实现。不过,通过比较仍能得出一些一般性结论。
如表中所示,基于ASIC和内存内的加速器往往比基于FPGA或GPU的加速器提供更高的加速比。内存内Transformer加速器的加速比最高可达200倍,而SpAtten与CPU相比,加速比最高可达347倍。然而,ASIC和内存内计算在制造方面需要投入大量的时间和资金。FPGA的加速比相对较低(如FTrans最高可达81倍),但这些平台可立即投入使用,无需像ASIC那样额外花费成本和时间。
7.3 能源效率
能源效率是指执行一项操作的总能耗与参考平台的比值。同样,每个方案所对比的计算平台不同,这给评估最节能的解决方案带来了困难。不过,与加速比情况类似,ASIC和内存内计算加速器相比FPGA和GPU,能源效率要高得多。Energon宣称与CPU相比,能源效率提高了4个数量级,与GPU(V100)相比,能源效率提高了3个数量级 。同样基于40nm工艺技术的SpAtten和ELSA,通过算法优化,与GPU相比,能源效率也提高了3个数量级。然而,就像加速比的情况一样,FPGA虽然能源效率较低,但随时可用,并且可以与现有数据中心的现成组件集成。
8. 结论
大语言模型已成为一项对科学和社会都具有巨大潜力和影响力的技术。然而,其极高的计算复杂度给数据中心带来了新的挑战,因为这些应用会消耗大量能源。硬件加速器可用于加速这些应用,并显著降低能源需求。目前提出的架构表明,硬件加速器可以定制化,以加速Transformer网络中要求最高的功能,并且能够将数据中心的能源需求降低超过4个数量级。能源消耗的减少还会降低碳排放和冷却用水消耗。随着大语言模型和相关模型的复杂度和处理需求不断增加,未来数据中心必然需要利用硬件加速器来满足需求。