论文阅读(第四部分):Full Stack Optimization of Transformer Inference: a Survey

论文阅读(第四部分):Full Stack Optimization of Transformer Inference: a Survey

原文链接:https://arxiv.org/pdf/2302.14017.pdf

3 模型优化

3.1 量化

high-precision arithmetic is often unnecessary for inference

  • 量化是一种压缩DNN模型的过程,通过用较低比特位,典型的(但并不必然)定点表示,如8比特整数( INT8 ),而不是32比特或16比特浮点数( FP32或FP16)来表示参数和/或激活

  • One obvious advantage of reduced precision is the reduction in memory consumption.

    • For example, quantizing model weights from FP32 to INT8 leads to a 4× smaller model size
    • 减少片外存储和带宽
    • 量化激活进一步允许减少内存流量和中间部分结果的存储。
  • A second advantage of quantizing model weights and activations is the reduced size, latency, and energy consumption of the ALUs and the corresponding PEs

    • 一般来说,浮点ALU在面积、延迟和能耗方面的效率往往低于整数ALU
    • 这是因为浮点PE在执行一次乘法操作时,需要乘尾数,加指数,并使用指数进行左移得到最终结果,而定点PE只需要一个乘法单元
    • modern GPUs and TPUs often contain INT8 processing paths
    • 量化的另一个关键应用是在纯整数硬件上部署模型
      • 一些面向低成本、低功耗嵌入式设备的边缘处理器,如ARM Cortex - M内核and GAP-8
        • 在这些处理器上部署模型时,不仅需要对模型的权重和激活值进行量化,而且所有的计算都必须使用整数运算
        • 否则,部署是不可能的,或者由于需要在片外处理非整数操作而导致相当大的开销。这将导致额外的延迟和数据传输到通用主机处理器的能量消耗
        • integer-only quantization reduces the end-to-end inference latency by 39.6× on Gemmini.
    • 量化方法大致可以分为均匀量化和非均匀量化,这取决于它们如何映射值。均匀量化将浮点域分割成均匀间隔的区间,并将每个区间映射为单一的固定点值。这可以从一个简单的算术规则中得到:

    Q ( r ) = I n t ( r / s ) + Z Q(r)=Int(r/s)+Z Q(r)=Int(r/s)+Z

        其中Q为量化操作,r为浮点值,S为缩放因子,Z为移位因子
    
    • 非均匀量化不要求区间间隔均匀
    • 通过给重要区域分配更多的量化单元,通常会导致压缩率的提高,非均匀量化比均匀量化能更准确地捕获原始数据在浮点数域的分布
    • 然而,在通用计算硬件上高效地部署非均匀量化模型通常更具挑战性。因此,均匀量化由于其简单性和对硬件的有效映射,目前是事实上的方法。
    • While lower bit quantization can lead to a better compression rate, reducing the precision too aggressively **can significantly degrade the model accuracy降低模型精度**
      • 解决办法:One promising strategy for alleviating this issue is mixed-precision quantization.
      • 模型中的不同层对量化的敏感度不同,为更敏感的层分配更高的比特精度是关键
    • 量化预训练Transformer模型的另一个挑战是激活中存在异常值
      • 均匀量化试图将从最小可能值到最大可能值的范围划分为多个bin,会导致显著的性能下降
      • 这是因为更多的值被映射到相同的量化值上(例如分辨率下降)由于离群值延长了每个量化分档的间隔。
      • 而非均匀量化可以作为规避异常值问题的一种解决方案
      • 此外,还提出了一种统一的量化方案,为包含离群值的激活分配更大的比特精度
      • 此外,最近引入的FP8精度在设置指数位精度时提供了额外的自由度,已被发现是整数量化由于异常值的存在导致精度降低的量化模型的一个合适的解决方案

    summary:

    量化是通过降低模型参数和/或激活的精度来压缩DNN模型的一种方式。量化的直接好处是减少了内存消耗,这允许减少片外存储和带宽,以及更有效的内存层次结构设计。此外,量化可以通过低比特精度算法来降低ALU和相应PE的大小、延迟和能耗。在某些情况下,量化也使得在仅有整数的硬件单元中部署DNN模型成为可能,否则可能是不可能的,或者可能会为卸载片外的非整数操作带来相当大的开销。虽然许多DNN模型对一定程度的量化噪声具有鲁棒性,但为了防止较低比特精度(例如, INT4甚至更少)的精度下降,必须进行一定的算法级改进。特别是,必须特别考虑量化没有精度下降的预训练Transformer,因为它们已知具有异常激活

3.2Sparsity

Sparsity (also known as pruning) is a procedure of making DNN models sparse by removing those redundant/insensitive parameters.

This may be due to the fact that having redundant parameters from the beginning of the training may make the loss landscape easier to optimize

pruning can be categorized into two branches:

  • unstructured pruning
    • 非结构化剪枝允许对参数和特征图进行任意模式的稀疏化
    • 一个压缩的存储格式是必要的。此外,必须调整计算单元,使其能够直接对压缩后的数据进行运算。
    • 否则,必须在计算前对参数进行解压缩,然后再进行重新压缩,从而导致额外的开销。由于这些原因,商用的DNN加速器可能无法有效地利用非结构化的稀疏模式。
  • structured pruning
    • 严格去除参数的结构化集合
    • 例如,在Transformers中,线性层中的行和列,注意力头,甚至整个层都可以进行结构剪枝
    • 将MHA模块中的注意力头和FFN模块中的filters剪枝在一起
    • 这种结构化的剪枝方法导致比原来更小的密集矩阵,从而消除了对压缩内存格式或特殊硬件支持的需求,以获得内存减少和延迟改善。
    • 压缩率可能不如非结构化剪枝。
  • 虽然前述剪枝方法属于权重剪枝,但激活剪枝(即,动态剪枝)也可以应用于动态检测并在运行时将不重要的激活清零。
    • In Transformer inference, a popular branch of activation pruning is token pruning
      • 它从其余的推理中检测和丢弃每个Transformer层中不太重要的token。
      • 其背后的道理是,并非所有的(例如, NLP任务中的单词)tokens都是理解输入序列意义所必需的。
  • Common methodologies for pruning Transformers include the following:
    • **Magnitude pruning**是一种使用每个权重的绝对值作为其重要性的代理的技术。它对训练过程中幅值最小smallest magnitudes的权值进行剪枝。这种方法背后的原理是较小的权重对模型的最终结果贡献较小。
    • **Movement pruning**是一种考虑到微调过程中权重变化的技术,为随着微调过程的进行而进一步远离零的权重分配更大的重要性分数。已经发现,对于使用预训练和微调方案( e.g . , BERT )训练的模型,它比幅度剪枝更有效,因为它更好地捕获了随着微调过程的进展权重的重要性。
    • **First-order pruning**使用流入权重或一组权重的损失的梯度作为评估模型精度重要性的代理,这种方法认为梯度是参数置零对损失影响的一个指标。这个方案被进一步改进,其中权重大小和梯度的乘积被用作重要性的代理,因为它可能更准确地估计了零化权重的影响。
    • **Second-order pruning使用权重的Hessian矩阵或一组关于损失的权重作为代理重要性度量。**相比于一阶信息,二阶信息通常被认为是去除权重效果的更准确的指标。然而,由于Hessian矩阵的规模很大,且与权重的个数呈二次方增长,因此需要采用适当的、可扩展的近似,通常采用随机数值线性代数的算法
  • These methods use less memory by employing metadata to encode the positions of the nonzero entries in the matrices
  • 编码后的数据对应于更大比例的全尺寸输入张量。
  • 剪枝还可以减少不必要的计算,从而降低能耗和延迟。结构化剪枝更适合,非结构化剪枝涉及到绕过包含零元素的计算。

summary:

稀疏性(或剪枝)是另一种广泛使用的方法,通过去除冗余或不太重要的权重和激活来降低过参数化DNN模型的推理成本。与量化类似,剪枝有助于减少片外存储器消耗和相应的内存通信量,降低能耗和延迟。剪枝大致可以分为权重剪枝和激活剪枝。权重剪枝可以进一步分为允许任何稀疏模式的非结构化剪枝和对稀疏模式施加额外约束的结构化剪枝。虽然结构化剪枝可以在没有额外硬件支持的情况下提供内存、能耗和延迟等方面的好处,但众所周知,它比非结构化剪枝获得更低的压缩率,激活修剪裁剪掉了推理过程中的冗余激活,对于Transformer模型尤其有效。然而,这需要支持在运行时动态检测和清零不重要的激活。

3.3特定Transformer的优化方法

Accelerating Attention:

  • 对于长序列来说。计算注意力成为整个运行时的主要部分

    • 为了更有效地计算注意力网络,一种常见的方法是token剪枝,这涉及到移除不重要的token以减少有效序列长度。
  • 高效识别并实时丢弃不重要的token的需求催生了多种软硬件协同设计方法:

  • 另一种加速注意力的方法是利用注意力分数激活的动态稀疏模式

    合理的假设是许多查询和关键token的组合在语义上是没有意义的,因此与这种组合相关的注意力分数将接近于零

    • 通过避免关联的act - to - act矩阵,可以在降低计算成本的同时保持推理精度
    • Sanger框架建议在计算注意力分数之前对查询和键值进行量化,因为如果这些值没有被量化,那么得到的注意力分数中的无关紧要的条目将为零.
    • DOTA提出通过使用查询和键值的低秩(因而更小)投影的矩阵乘法作为代理来近似将注意力分数项置零。
    • LeOPArd对查询×密钥乘法采用比特串行计算,以便在未达到预定阈值时提前结束计算

Nonlinear Operations:

  • 集成一个专门用于计算非线性操作的硬件模块可能是一个可行的解决方案。
  • One popular solution is function approximation
    • which seeks to approximate the exact value of the nonlinear function, in order to obtain a good yet computationally efficient approximation.
  • Another widely-adopted approach is lookup tables
    • which store pre-calculated output values for a given range of inputs.
      • focused on reducing the size of the lookup table to save area and latency.

Accelerating Decoding:

  • One avenue to reduce inference latency is to skip unnecessary computation through early exiting
    • This method dynamically adjusts the depth of the decoder for each token generation by terminating the inference at a mid-layer and making a prediction using the intermediate hidden states
    • 由于注意机制的存在,一个token的生成依赖于之前所有token的激活。
  • 最近的另一个尝试是协同使用多个不同大小的模型
    • motivation:大多数简单的单词生成可以卸载到一个速度更快、精度更低、尺寸更小的模型中
    • 有时,当小模型无法准确预测一个词时,它会将控制切换到更大的模型,以获得更准确的预测
    • token-level parallel

Selecting Which Optimization Methods to Use:

  • in the same datapath versus containing separate datapaths for each of these modules can have a significant impact on the optimizations that can be performed.
  • 采用通用的权重矩阵静态剪枝方法:
    • but do not aim to exploit attention-specific pruning methods such as dynamic sparsity动态稀疏
    • 与使用通用的、统一的数据通路相比,使用单独的数据通路或可重构的PE会产生额外的开销。

summary:

虽然一般的现成优化方法也可以有效地进行变压器推断,但已有大量研究利用变压器特有的特性来设计优化策略。一个机会是优化MHA模块中的注意力机制,其运行时间成本随序列长度呈二次方增长。例如,动态剪枝已被广泛用于利用注意力分数激活的稀疏特性。

此外,非线性运算的有效计算也应予以考虑。为了减少与实现非线性运算专用硬件单元相关的硬件成本,函数逼近和查找表方法已被提出作为可行的替代方案。

最后,**模型优化方法还应该了解底层的硬件架构和数据通路。**对MHA和FFN模块使用单独的数据通路可以具有更高的面积开销,但与对这两个模块使用单一的数据通路相比,可以实现更积极的优化。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值