浅谈BERT/Transformer模型的压缩与优化加速

浅谈BERT/Transformer模型的压缩与优化加速_第1张图片

©作者 | 姚益武

单位 | 阿里巴巴集团

研究方向 | AI算法与工程架构

fd265eb18d60dc47684898d8cd4663f3.png

前言

BERT/Transformer 结构及其变体,已成为自然语言处理(NLP)、语音识别 (ASR)等领域的主流序列建模结构。并且,相比于卷积操作的局部特征提取能力、以及平移不变性,Self-Attention/Cross-Attention 的全局 Context 信息编码或长时依赖建模能力,能够使图像/视觉模型具备更强的相关性建模能力(更好的全局视野)、与动态建模能力(领域或样本适应性)。

因此在计算机视觉领域 (CV),Vision Transformer 模型结构(如 ViT、Deit、Swin-Transformer、PVT、SegFormer 与 DETR 等)也日益流行、方兴未艾。然而,Transformer 模型的高计算复杂度与参数量,限制了模型的推理部署(包括服务端与移动端应用),其计算、存储与运行时内存等资源开销都成为限制因素(存在大量密集计算算子、与访存算子,如 BatchMatMul、LayerNorm、Transpose/Reshape 等)。例如,从标准 Transformer layer 的 Tensor 处理结构来看,MHA 的 Context 特征计算与特征长度的平方、Embedding 特征维度成正比:

Standard Self-Attention (X=Y) / Cross-Attention (X!=Y):

浅谈BERT/Transformer模型的压缩与优化加速_第2张图片

 Standard FFN:

a721619beec074780d42753091a41295.png

本文从以下几个维度举例说明,解析 Bert/Transformer 模型的加速方法,体现了从建模依赖、数据依赖到硬件依赖的优化层次:

  • 模型结构精简化与知识蒸馏

  • 模型量化(Quantization)

  • 网络结构搜索(NAS: Network Architecture Search)

  • 计算图优化(计算图等价变换)

  • 推理优化引擎(Faster Transformer / Torch-TensorRT / AICompiler)

浅谈BERT/Transformer模型的压缩与优化加速_第3张图片

浅谈BERT/Transformer模型的压缩与优化加速_第4张图片

4c82dac65b99bdf848d0bd94e2aace68.png

模型结构精简化与知识蒸馏

2.1 Lite-Transformer

浅谈BERT/Transformer模型的压缩与优化加速_第5张图片

论文标题:

Lite Transformer with Long-Short Range Attention

收录会议:

ICLR 2020

论文链接:

https://arxiv.org/abs/2004.11886

代码链接:

https://github.com/mit-han-lab/lite-transformer

Lite Transformer 是一种融合卷积与 Self-Attention 操作的、高效精简的 Transformer 结构,可应用于 NMT、ASR 等序列生成任务。其核心是长短距离注意力结构(LSRA:Long-Short Range Attention),能够有效融合卷积与 Attention 机制。

LSRA 将输入 Embedding 沿 Feature 维度 split 成两部分,其中一部分通过 GLU(Gate Linear Unit)、一维卷积,用以提取局部 Context 信息;而另一部分依靠 Self-attention,完成全局相关性信息编码。一维卷积的引入,能够减轻计算量与参数量。Lite Transformer 核心结构如下,首先将 FFN 的宽度摊平(flatten),其次引入 LSRA 以替换 Self-Attention:

浅谈BERT/Transformer模型的压缩与优化加速_第6张图片

浅谈BERT/Transformer模型的压缩与优化加速_第7张图片

2.2 SAN-M

浅谈BERT/Transformer模型的压缩与优化加速_第8张图片

论文标题:

SAN-M: Memory Equipped Self-Attention for End-to-End Speech Recognition

收录会议:

INTERSPEECH 2020

论文链接:

https://arxiv.org/abs/2006.01713

SAN-M 表示 Self-Attention 与 DFSMN 记忆单元的融合,是一种 Transformer ASR 模型。DFSMN 适合捕获局部信息,Self-Attention 模块具备较强的长时依赖建模能力,因此二者存在互补性。SAN-M 通过将两个模块的特性融合在一起,实现了优势互补。Biasic Sub-layer 表示包含了 SAN-M 的 Self-Attention 模块,DFSMN 添加在 values 后面,其输出与Multi-head Attention(MHA)相加:

cf4bfd7ecce00a78f1221e16b5399cf3.png

浅谈BERT/Transformer模型的压缩与优化加速_第9张图片

2.3 MiniLM(知识蒸馏)

浅谈BERT/Transformer模型的压缩与优化加速_第10张图片

论文标题:

MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained Transformers

论文链接:

https://arxiv.org/abs/2002.10957

代码链接:

https://github.com/microsoft/unilm/tree/master/minilm

针对 NLP 任务,深度自注意力知识蒸馏(Deep Self-Attention Distillation),通过迁移 Teacher model 最后一层 Self-Attention 模块的 Attention score 信息与 Value relation 信息,可有效实现 Student model 的诱导训练。只迁移最后一层的知识,能够直接迁移语义信息,显得简单有效、训练速度更快;而且相比于层间特征迁移,不需要手动设计 Teacher-student 之间的层对应关系。Attention score 信息与 Value relation 信息的知识迁移如下:

Attention score transfer:

1a753c5eee1ab98b2452a6f46c2bac48.png

Value relation transfer:

浅谈BERT/Transformer模型的压缩与优化加速_第11张图片

浅谈BERT/Transformer模型的压缩与优化加速_第12张图片

若选择的 Self-attention layer 为 LSRA,除了在 Multi-head Attention(MHA)分支迁移 Attention score 与 Value relation;在 CNN 分支需要迁移 Feature map 的信息,这里主要计算 AT loss:

47101a94a9fb6bfbb8911cbb56c39c40.png

式中 表示学生网络里第 j 个网络层的特征输出, 表示 Teacher network 里第 j 个 group 的特征输出。

2.4 Switch-Transformer

浅谈BERT/Transformer模型的压缩与优化加速_第13张图片

论文标题:

Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity

论文链接:

https://arxiv.org/abs/2101.03961

代码链接:

https://github.com/tensorflow/mesh/blob/master/mesh_tensorflow/transformer/moe.py

针对内容理解与生成、以及多模态特征表征等 AI 任务,基于 MoE(Mixture of Experts)单元的大模型的参数规模不断扩展(Switch-Transformer 是其中的典型代表之一),但大模型对算力的需求、被 MoE 的稀疏激活(Sparse activation)或动态路由(Dynamic routing)机制有效缓解。

MoE 单元属于典型的 Sample 驱动型结构设计,使得 MoE-based 模型具备良好的动态建模能力(动态卷积、Self-Attention 等亦如是),因此 MoE 能够非常好的适应多任务/多模态、甚至在线实时的场景应用需求。Switch-Transformer 的 MoE 单元结构如下,具体执行过程包括动态路由(Dynamic routing)、数据分派(Data dispatch)、专家计算(Expert computation)与结果合并(Result combine):

浅谈BERT/Transformer模型的压缩与优化加速_第14张图片

5fd5b5257da73dcafdb1dc67bf93ae2a.png

模型量化(Quantization)

3.1 Transformer ASR 模型压缩

浅谈BERT/Transformer模型的压缩与优化加速_第15张图片

论文标题:

Extremely Low Footprint End-to-End ASR System for Smart Device

收录会议:

INTERSPEECH 2021

论文链接:

https://arxiv.org/abs/2104.05784

针对 Transformer ASR,文章提出了联合随机稀疏与 PTQ 量化(KL 量化、ADMM 与混合精度设置)的压缩策略,整体实现了 10 倍压缩,且绝对精度损失约 0.5%。总体流程如下:

  • 模型稀疏化,更新 Weight 重要性,渐进式增加稀疏度:

320139f8dd8b1512fb831efd8f0a530f.png

  • KL 量化,计算 Activation 量化参数:

c646a15c8ef7a0a91916351716b17155.png

  • ADMM,优化 Weight 量化参数:

浅谈BERT/Transformer模型的压缩与优化加速_第16张图片

2e09e54d0fc22ffee5c1a8235ecfb534.png

  • 混合精度量化设置,减少量化误差:

fa448a5fc7e6c1070ae274192903ff41.png

浅谈BERT/Transformer模型的压缩与优化加速_第17张图片

此外,针对 Transformer 模型的量化,需要讨论全网络 INT8 量化与计算的意义:

全网络 INT8 量化:

  • 同时减少计算密集算子与访存密集算子的开销;

  • 实现模型压缩,INT8 模型是 FP32 模型的 1/4;

Fully INT8 Attention Path:

  • 基本的全 INT8 通路:

  • Dense layer 的输入与输出均为 INT8 Tensor;

    Reshape 与 Transpose 的操作对象为 INT8 Tensor,节省内存开销:

    Dense+Reshape+Transpose、与 Transpose+Reshape+Dense 可以实现 Op fusion;

  • BatchMatMul、Softmax 的操作对象保留为 FP32 Tensor,确保模型预测精度;

浅谈BERT/Transformer模型的压缩与优化加速_第18张图片

Encoder的Self-Attention:

  • X=Y;

Decoder 的 Self-Attention:

  • X=Y,Batch_size=Batch_size * Beam_size,Seq_len=1;

  • k_dense 与 v_dense 的输出会添加到 Cache,按照 INT8 类型搬运数据,可节省访存开销:

浅谈BERT/Transformer模型的压缩与优化加速_第19张图片

3.2 PTQ for Vision Transformer

浅谈BERT/Transformer模型的压缩与优化加速_第20张图片

论文标题:

Post-Training Quantization for Vision Transformer

论文链接:

https://arxiv.org/abs/2106.14156

代码链接:

https://github.com/hahnyuan/PTQ4ViT

针对 Vision Transformer 的 PTQ 量化,分别针对 FFN 与 Self-Attention,提出了 Similarity-aware Quantization 与 Ranking-aware Quantization:

Similarity-aware Quantization:基于优化方式确定 Weight 与 Activation 量化的最优量化参数,并以 Pearson 相似度作为 Target loss;

6f3784e7e3e4cdcb60fe6e631be2ecaf.png

浅谈BERT/Transformer模型的压缩与优化加速_第21张图片

Ranking-aware Quantization:在相似度 Loss 基础之上,叠加 Attention map 的 Ranking loss 作为约束,以准确感知不同 Attention map 的重要性排序,确保 Self-attention 量化的有效性(优先保留重要 Attention map 的信息);

afd3aed1d5c35f8a5e9f02b1a58c849b.png

38cc9d2af4db8533f56170ea3446f456.png

浅谈BERT/Transformer模型的压缩与优化加速_第22张图片

3.3 PTQ4ViT

参考博客文章:

https://blog.csdn.net/nature553863/article/details/121564248

3.4 Q-Bert

浅谈BERT/Transformer模型的压缩与优化加速_第23张图片

论文标题:

Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT

收录会议:

AAAI 2020

论文链接:

https://arxiv.org/abs/1909.05840

针对 NLP 任务(MNLI、SQuAD 等),Q-Bert 是首个实现 Bert 模型混合精度量化的 QAT 算法。Bert 模型是由 Embedding layer、Encoder layer 以及 Task-specific output layer 构成的前馈结构模型,且 Encoder layer 包含了 MHA 与 FFN 等子模块。

不同的 Bert layer 体现了不同的量化敏感度(Quantization Sensitivity),配以不同的量化比特数,直接决定了量化后模型的预测精度。通常 Bert 的 Embedding layer 与 Output layer 的量化敏感度相对较高,故 Embedding layer 会配以较高的量化比特数(如 8bits),Output layer 则保留为 FP32 浮点实现。另外,尽管不同 Encoder layer 的结构相一致,但由于对 Context 信息编码的贡献有所区别,因此表现出不同的量化敏感性。

量化敏感度与混合精度量化:Q-Bert 采用线性均匀量化方式(min-max 量化),并通过 Dense layer 的 Hessian 信息(二阶梯度)定义其量化敏感度:

浅谈BERT/Transformer模型的压缩与优化加速_第24张图片

式中 Hessian 矩阵特征值(Top eigenvalues)的均值,反映了针对同一个下游任务(相同训练数据分布),不同 Dense layer 的量化敏感度;Hessian 矩阵特征值的标准差,反映了针对不同的下游任务(不同训练数据分布),Dense layer 量化敏感度的占比。然后,基于不同 Dense layer 的量化敏感度排序,可确定 Bert 模型的混合精度量化配置,并进一步执行 QAT 微调训练。

Group-wise量化:为了进一步提高量化后模型的精度,将 MHA 的 Q、K、V 与 O 权重矩阵按 Attention heads 分成不同的 Group,每个 Group 定义各自的量化范围(min-max 范围),从而更精细的保证不同 Group 的量化分辨率。而每个 Group 又可以根据实际需求、进一步划分为不同的 Sub-group,以满足更为苛刻的部署精度需求: 

浅谈BERT/Transformer模型的压缩与优化加速_第25张图片

60f0c572aa84dc379c37557afd4144ea.png

网络结构搜索(NAS)

4.1 AdaBert

浅谈BERT/Transformer模型的压缩与优化加速_第26张图片

论文标题:

AdaBERT: Task-Adaptive BERT Compression with Differentiable Neural Architecture Search

收录会议:

IJCAI 2020

论文链接:

https://arxiv.org/abs/2001.04246

针对 NLP 任务,AdaBer通过可微分搜索、与知识蒸馏,实现卷积类型的 NLP 模型搜索:

搜索空间:类似于 DARTS 的 Cell 设计,实现搜索空间的构造;区别于 Vanilla CNN,DARTS 的 Cell 单元结构体现出了非规整性,可能不利于实际推理引擎的加速;

浅谈BERT/Transformer模型的压缩与优化加速_第27张图片

搜索策略:基于 Gumbel Softmax 实现网络结构的随机采样(类似于 FBNet)、与可微分搜索,并且采样概率随着训练的进行、逐渐锐化,逼近 Argmax 采样;另外,基于 FLOPS 与 Model size 构造了 Efficiency-aware Loss,作为搜索训练的资源约束,实现 Hardware-aware 搜索;

知识蒸馏:多层次、任务相关的知识迁移;

浅谈BERT/Transformer模型的压缩与优化加速_第28张图片

4.2 DynaBert

浅谈BERT/Transformer模型的压缩与优化加速_第29张图片

论文标题:

DynaBERT: Dynamic BERT with Adaptive Width and Depth

收录会议:

NeurIPS 2020 (Spotlight)

论文链接:

https://arxiv.org/abs/2004.04037

代码链接:

https://github.com/huawei-noah/Pretrained-Language-Model/tree/master/DynaBERT

针对 NLP 任务,DynaBert 模型压缩策略可实现多个维度的压缩搜索(主要是 Width 与 Depth 维度)。DynaBert 是一种动态可伸缩性质的 One-shot NAS:首先基于预训练 Bert 模型(或其变体),进行多维度正则化训练;正则化训练之后,按照不同的资源约束需求,能够进行网络参数的裁剪、以获得子网络,并进行子网络的微调训练;从正则训练、到子网络微调,可协同知识蒸馏训练,进一步保持子网络的预测精度。主要步骤描述如下:

第一步:基于 Neuron与Attention head 的重要性,执行参数重排(Weight Re-wiring):

浅谈BERT/Transformer模型的压缩与优化加速_第30张图片

第二步:多阶段微调训练,实现宽度、与深度方向的自适应正则化:

浅谈BERT/Transformer模型的压缩与优化加速_第31张图片

4.3 NAS-Bert

参考博客文章:

NAS-Bert——确保One-shot与Task-agnostic:https://blog.csdn.net/nature553863/article/details/120764285

4.4 Evolved Transformer

浅谈BERT/Transformer模型的压缩与优化加速_第32张图片

论文标题:

Lite Transformer with Long-Short Range Attention

收录会议:

ICLR 2020

论文链接:

https://arxiv.org/abs/2004.11886

代码链接:

https://github.com/mit-han-lab/lite-transformer

针对序列生成任务,基于 NAS 搜索获得的 Transformer 结构:

  • 搜索空间:包括两个 Stackable cell,分别包含在 Transformer encoder 与 Transformer decoder。每个 Cell 由 NAS-style block 组成, 可通过左右两个  Block 转换输入 Embedding、再聚合获得新的 Embedding,进一步输入到 Self-Attention 模块。

  • 搜索策略:基于 EA(Evolutional Aligorithm)的搜索策略;

网络结构如下,融合了一维卷积与 Attention 的特点:

浅谈BERT/Transformer模型的压缩与优化加速_第33张图片

4.5 HAT: Hardware-aware Transformer

浅谈BERT/Transformer模型的压缩与优化加速_第34张图片

论文标题:

HAT: Hardware-Aware Transformers for Efficient Natural Language Processing

收录会议:

ACL 2020

论文链接:

https://arxiv.org/abs/2005.14187

代码链接:

http://github.com/mit-han-lab/hardware-aware-transformers.git

对 Transformer 模型进行网络结构搜索时,通常会面临两个关键问题:

  • FLOPS 不能完全代表 Transformer 模型的计算速度/实际执行效率,即只能间接反映硬件平台特性;

  • 不同硬件设备上,与计算硬件或计算库相适配的最优 Transformer 结构不尽相同;

针对序列生成任务,HAT(Hardware-aware Transformer)从搜索空间、搜索策略与搜索预测三方面加以分析:

搜索空间:Encoder-decoder Attention 的任意连接方式,以及 Transformer layer 内部结构(网络深度、Attention head 数目、Width 等);

搜索策略:训练了 SuperTransformer 作为超网络,并在超网络预训练之后,结合资源约束,通过进化搜索算法(EA: Evolutional Algorithm)寻找最优子网络;不同于权重共享型 NAS(如 FBNet、SPOS 等),HAT 是一种动态可伸缩类型的One-shot NAS;

搜索预测:单独、离线训练了 MLP 回归模型作为 Cost model 或 Predicter,用于预测不同子网络结构(Architecture embedding)、在指定硬件平台上的执行速度 (GPU 或 CPU latency),并且回归预测效果良好(以相关性系数作为Metric)。搜索预测的好处在于:一方面可直接、有效获取硬件平台特性,作为超网络预训练的资源约束;另一方面,在训练或搜索阶段,无需在硬件平台上测量推理延迟,提升搜索效率,从而有利于跨平台模型结构搜索;

浅谈BERT/Transformer模型的压缩与优化加速_第35张图片

浅谈BERT/Transformer模型的压缩与优化加速_第36张图片

4.6 AutoFormer

浅谈BERT/Transformer模型的压缩与优化加速_第37张图片

论文标题:

AutoFormer: Searching Transformers for Visual Recognition

收录会议:

ICCV 2021

论文链接:

https://arxiv.org/abs/2107.00651

代码链接:

https://github.com/microsoft/AutoML

针对 Vision Transformer 的结构搜索,AutoFormer 提出的 Weight entanglement,在不额外增加 Block choice 的前提下,通过通道宽度、网络深度、Attention head 数目等多个维度的调整,实现了 Vision Transformer 模型的动态可伸缩预训练与结构搜索。

Weight entanglement 的做法,类似于 BigNAS、FBNet-v2 的通道搜索,都不会额外增加通道维度的权重参数量。相比于手工设计的 CNN 模型(ResNet、ResNext、DenseNet)与 Vision Transformer 模型(ViT、Deit),AutoFormer 模型在相同资源开销条件下、能够获得最好的识别精度。

浅谈BERT/Transformer模型的压缩与优化加速_第38张图片

AutoFormer 总体思路如上图所示,是一种基于 Weight entanglement 的动态可伸缩搜索方法,其搜索维度包括 Attention heads、通道宽度与网络深度。下面从搜索空间、搜索策略与搜索效率这些维度加以分析:

搜索空间:Embedding dimension、Q-K-V dimension、Attention heads、MLP ratio 与 Network depth;根据不同的资源约束,分别设置 Supernet-tiny、Supernet-small 与 Supernet-base 三个基本的 Template model;

浅谈BERT/Transformer模型的压缩与优化加速_第39张图片

搜索策略:基于 Weight entanglement 的 One-shot NAS,完成超网络预训练之后,通过进化算法执行子网络搜索。包含 l 个网络层的子网络结构可按下式表示,表示第 i 层的 Block 结构,表示相应的权重参数:

浅谈BERT/Transformer模型的压缩与优化加速_第40张图片

而每个 Block 结构,都是按照 Weight entanglement 原则从超网络采样获得,下式表示 n 个动态选择范围:

浅谈BERT/Transformer模型的压缩与优化加速_第41张图片

c3af20083788be67fd752000d393f639.png

浅谈BERT/Transformer模型的压缩与优化加速_第42张图片

搜索效率:按照权重共享形式、完成超网络预训练,训练效率高、且收敛速度快;另外,由于没有引入额外的 Block choice,因此训练时的 Memory cost 较低。

46771379f6c7c52e768db98220ad8210.png

计算图优化

5.1 LINM

LINM(Loop-invariant Node Motion)是一种计算图等价变换技术,通过将 Transformer 模型涉及的自回归解码( Auto-regressive Decoding)的重复计算逻辑(Encoder-decoder Attention 的 k/v 计算、cache gather 等)移至 While-loop 之外,在确保计算功能不变的情况下,实现计算效率的提升:

浅谈BERT/Transformer模型的压缩与优化加速_第43张图片

5.2 MatMul替换为卷积

如果推理引擎的卷积算子具备很高的计算效率,并且为了避免一些不必要的访存算子开销,可以按如下计算图等价变换,将 Dense layer 替换为 Conv1D layer:

浅谈BERT/Transformer模型的压缩与优化加速_第44张图片

5.3 QKV计算合并

MHA(Multi-head Attention)模块在计算 Attention map 与 Context 编码特征之前,需要基于输入 Tensor 计算 QKV 矩阵、并 Split 成多份 Heads。可通过计算图等价变换,将 QKV 计算合并到同一个 Dense layer,能够充分利用 NPU 或 GPU 的并发计算特性:

1B, N, C = x.shape
2qkv = self.qkv(x).reshape(B, N, 3, self.sample_num_heads, -1).permute(2, 0, 3, 1, 4)
3q, k, v = qkv[0], qkv[1], qkv[2]

60663e3cf6acf665bc80a57d1bafa5f2.png

推理优化引擎

6.1 Faster Transformer

GitHub链接:

https://github.com/NVIDIA/FasterTransformer

Faster Transformer 是 NVIDIA 针对标准 BERT/Transformer 做的推理优化库,其发布时间线:

● 1.0版本:

  • 2019 年 7 月,开源了 FasterTransformer 1.0,针对  BERT 中的 Transformer Encoder 进行优化和加速;

  • 面向 BERT 分类、自然语言理解场景;

  • 底层由 CUDA 和 cuBLAS 实现,支持 FP16 和 FP32 计算,FP16 可充分利用 Volta 和 Turing 架构的 Tensor Core 计算单元;

  • 提供 C++ API、TF Op 与 TensorRT Plugin 三种接口;

  • 参考资料:https://zhuanlan.zhihu.com/p/73715272

● 2.0版本:

  • 2020 年 2 月,新增对 Transformer decoder 的优化和加速,包括 decoder与 decoding 两种加速模式;

  • 面向生成式场景,如 NMT、文本内容生成与 ASR 等;

  • 底层由 CUDA 和 cuBLAS 实现,支持 FP16 和 FP32 计算模,FP16 可充分利用 Volta 和 Turing 架构的 Tensor Core 计算单元;

  • 提供 C++ API、TF Op 与 TensorRT Plugin 三种接口;

  • 参考资料:快无止尽!FasterTransformer 2.0让Decoder不再是你的性能瓶颈

● 2.1版本:

  • 2020 年 6 月,引入 Effective Transformer 优化;通过 remove_padding 的支持,提高计算与访存效率;

  • 并新增 PyTorch Op 接口;

  • 参考资料:https://github.com/bytedance/effective_transformer

● 3.0版本:

  • 2020 年 9 月,新增 BERT encoder 的 INT8 量化加速支持;

  • 仅支持 Turing 架构 GPU;

  • 同时支持 PTQ 与 QAT 方法,提供了 TF 量化工具;

  • 相比于 FP16 计算,约 20~30% 加速,但存在精度损失风险。

● 3.1版本:

  • 2020 年 12 月,新增对 PyTorch 使用 INT8 推理的支援;

  • 在 Turing 以后的 GPU 上,FP16 的性能比 3.0 提升了 10% ~ 20%;

  • INT8 的性能比 3.0 最多提升了 70%。

● 4.0版本:

  • 2021 年 4 月,新增对 GPT-3 等百亿/千亿级参数规模模型的多机多卡推理加速能力;

  • 新增 FP16 fused MHA 算子,同时支持 Volta 与 Turing 架构的 GPU;

  • 以及对解码端 Kernel 的优化,可以省略已完成语句的计算,节省计算资源;

  • 参考资料:https://zhuanlan.zhihu.com/p/363517823;

● 支持矩阵:

浅谈BERT/Transformer模型的压缩与优化加速_第45张图片

Transformer 计算图表示,主要包含三个部分的表示:

  • Encoder layer;

  • Decoder layer;

  • Decoding logic;

浅谈BERT/Transformer模型的压缩与优化加速_第46张图片

6.2 Torch-TensorRT

参考博客文章:

深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)

https://blog.csdn.net/nature553863/article/details/81083955

6.3 AICompiler

基于 AICompiler(AI 编译优化),可通过 Op fusion 方式(算子融合),提升 Transformer 模型的执行效率。Op fusion 具备的好处主要是:1)首先,将多个零碎算子合并成计算功能等价的一个大算子,可减少密集的 Kernel launch 开销 (CUDA 核函数启动);2)其次,由于相邻算子之间存在内存读写开销,Op fusion 可有效减少密集的内存访问开销;3)最终通过算子实现的自动寻优、与代码生成(CodeGen),可自动生成优化的可执行代码。 

5d6f0a461223440362553f298fe49aa3.png

总结

深度学习领域的高性能计算,总结为如下公式:

高性能计算 = 高效率算法 + 模型压缩 + 系统/硬件优化

可以单独的强调其中一种优化策略,或者实现多种选项的联合优化(例如 Hardware-aware NAS,压缩与编译联合优化等),以满足实际应用场景的部署需求。在工业界,包括阿里淘系 MNN、阿里云 PAI、华为昇腾计算、Open AI Lab 的 Tengine、百度 EasyDL 等平台,在该领域均构建了相对完善的软硬件技术栈,为开放、普惠的 AI 应用提供了坚实基础。

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

浅谈BERT/Transformer模型的压缩与优化加速_第47张图片

浅谈BERT/Transformer模型的压缩与优化加速_第48张图片

浅谈BERT/Transformer模型的压缩与优化加速_第49张图片

fa9695667d503290d4a103d33d232322.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

浅谈BERT/Transformer模型的压缩与优化加速_第50张图片

△长按添加PaperWeekly小编

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

7e2d9b8dca968378aca16d2cc024b330.png

你可能感兴趣的:(算法,机器学习,人工智能,深度学习,java)