Transformer家族5 -- 推理加速(Faster-Transformer、TurboTransformers)


系列文章,请多关注
Transformer家族1 – Transformer详解和源码分析
Transformer家族2 – 编码长度优化(Transformer-XL、Longformer)
Transformer家族3 – 计算效率优化(Adaptive-Span、Reformer、Lite-Transformer)
Transformer家族4 – 通用性优化(Universal-Transformer)
Transformer家族5 – 推理加速(Faster-Transformer、TurboTransformers)
NLP预训练模型1 – 综述

1 背景

之前介绍了从编码长度、计算效率、通用性等角度对Transformer进行优化,并介绍了几个重要模型。本文介绍如何进行Transformer推理加速。相比于离线训练,在线推理加速更加关键。一方面由于在线流量大,加速可带来硬件成本的节省。另一方面在线推理加速,可大大提升AI应用的用户体验。

事实上,之前的多种方法,特别是计算效率优化,对推理加速很有帮助。这些模型从算法的角度,进行了推理速度优化。本文主要从框架层的角度,讲解如何对推理进行加速。主要带来NVIDIA的Faster-Transformer框架和腾讯的Turbo-Transformer框架。

2 Faster-Transformer

PPT资料:https://on-demand.gputechconf.com/gtc-cn/2019/pdf/CN9468/presentation.pdf
代码地址:https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer

实现方案

Faster-Transformer算法结构和原版Transformer基本一致,主要是从框架层角度来实现计算加速。主要方法有

  1. 算子融合。对除矩阵乘法外的所有算子,进行了合并。比如Add、Sub。从而减少了GPU kernel调度和显存读写。
  2. 半精度F16优化。
  3. GELU激活函数、层正则化、softmax等调用频次很高的操作的优化

效果

在这里插入图片描述
Encoder效果对比如上。Faster-Transformer基本吊打TF XLA,提升速度一倍多。在这里插入图片描述
Decoder效果对比如上。对比了32bit和16bit的结果。Decoding FP32和Decoding FP16为Faster-Transformer 的结果,也是吊打原始TensorFlow。

3 TurboTransformers

在这里插入图片描述代码地址 https://github.com/Tencent/TurboTransformers

实现方案

  1. 和Faster-Transformer一样,进行了算子融合。从而减少GPU kernel调用和显存占用
  2. 对于LayerNorm和softmax,由于不适合并行计算,重新开发并实现了并行计算版本。
  3. 内存缓存,避免频繁释放和分配内存。

和其他方案的对比

在这里插入图片描述

效果

在这里插入图片描述V100上的QPS,越高代表框架性能越好。对比了PyTorch、TensorFlow、Faster-Transformer、turboTransformers的效果,其中turboTransformers效果最好


系列文章,请多关注
Transformer家族1 – Transformer详解和源码分析
Transformer家族2 – 编码长度优化(Transformer-XL、Longformer)
Transformer家族3 – 计算效率优化(Adaptive-Span、Reformer、Lite-Transformer)
Transformer家族4 – 通用性优化(Universal-Transformer)
Transformer家族5 – 推理加速(Faster-Transformer、TurboTransformers)
NLP预训练模型1 – 综述

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值