当前位置:   article > 正文

GPU底层优化 | 如何让Transformer在GPU上跑得更快?

transformer如何调用gpu

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

前言

 

Transformer 对计算和存储的高要求阻碍了其在 GPU 上的大规模部署。文章中,来自快手异构计算团队的研究者分享了如何在 GPU 上实现基于 Transformer 架构的 AI 模型的极限加速,介绍了算子融合重构、混合精度量化、先进内存管理、Input Padding 移除以及 GEMM 配置等优化方法。

60fd7c7f9bfd7a2f76cd71dd151012ca.png

8890d1038519656b7b8641ef637f763b.png

08b34f8e26e5d87c017f1523afc52628.png

图 1:基于 Transformer 架构的 NLP 模型规模

261605d04ec44c14a60d37c484ce2c0f.png

219ed6cf84a95b5ad54b183804cfe15f.png

图 2:基于 Transformer 架构的应用

c28ccbbdadce9471ab7e22582146d6ad.png

9baffd18ffd843bc3568a10dce77af66.png

图 3:Transformer 模型的架构

17f4f7364e1c97c0aacd51df80cbe80a.png

697dd3415ef0abac98c4e50e80248db8.png

图 4:Beam Search Decoding (Decoder + Beam Search) 流程图

ca0c7c442bb032f7473d39b4f08094eb.png

Transformer 家族模型

根据具体模型架构和应用的不同,研究者将 Transformer 家族的模型分为四大类(如图 5):

501f9702ed872e6e193dd0e8282df416.png

图 5:经典的基于 Transformer 结构的 AI 模型

bd078dbe706bafe5b8329dcd036431f2.png

7dddd39e74104f674f4040fcd09be91f.png

fc17c528723b0e27d81f1ad2a7d8262a.png

d019b4296171937ff16198875bac236b.png

图 6:Transformer 架构中 Self-attention 和 Feedforward 模块的 CUDA kernel 融合和重构,参见[14]

3375493386db676fa3a595d018b9b3de.png

f6bcdc3acc5637a34ddb5b2cbe488757.png

图 7:Transformer FP16 版本的几个关键 CUDA kernel 采用的量化精度

674735b424f37390fa8d97fb0c1dc677.png

313a0e6d1355e8f36415b2ade646020e.png

图 8:Transformer CUDA 实现的内存管理

ed9a64efa31e55c20c62345a3ab70371.png

4a5414187bd9dc8f0c0d37aa43152a61.png

9a0388a6889dc6de3a8a9b3ca8f998ac.png

图 9:输入 Padding 移除的方案 - 通过引入 Offset Mask,移除 Padding 的 Sequence 和原始的 Sequence 可以互相转换重建

a1130c7d5b49e35e58c6aa5273086872.png

6ade85535d756d791ba99b7b054d58dc.png

图 10:通过对 CUDA Kernel 的分类判断是否可以移除 Padding

cfbfb9c7b7619da421fb9c7a08fa69a7.png

066335d4e46363176e091c2261cda9b0.png

图 11:Transformer GEMM 配置的优化

总结

3ad948bf18417b27767e0372a03ec582.png

参考文献

[1] M. Luong et al, Effective Approaches to Attention-based Neural Machine Translation, arXiv:1508.04025v5 (2015).

[2] A. Vaswani et al. Attention is all you need, Advances in neural information processing systems (2017).

[3] J. Devlin et al. Bert: Pre-training of deep bidirectional transformers for language understanding, arXiv:1810.04805 (2018).

[4] A. Radford et al. Language Models are Unsupervised Multitask Learners, 2019.

[5] https://www.microsoft.com/en-us/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft/

[6] C. Raffe et al. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, arXiv:1910.10683v3 (2019).

[7] T. Brown et al, Language Models are Few-Shot Learners, arXiv: 2005.14165v4 (2020).

[8] N. Carion et al, End-to-End Object Detection with Transformers, arXiv: 2005.12872 (2020).

[9] M. Chen et al, Generative Pretraining from Pixels, ICML (2020).

[10] F. Yang et al, Learning Texture Transformer Network for Image Super-Resolution, CVPR (2020).

[11] D. Zhang et al, Feature Pyramid Transformer, ECCV (2020).

[12] Y. Zhao et al, The SpeechTransformer for Large-scale Mandarin Chinese Speech Recognition. ICASSP 2019.

[13] A. Gulati et al, Conformer: Convolution-augmented Transformer for Speech Recognition, arXiv:2005.08100v1 (2020).

[14] https://github.com/NVIDIA/DeepLearningExamples/tree/master/FasterTransformer

  1. 下载1:OpenCV-Contrib扩展模块中文版教程
  2. 在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
  3. 下载2:Python视觉实战项目52
  4. 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
  5. 下载3:OpenCV实战项目20
  6. 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
  7. 交流群
  8. 欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/423467
推荐阅读
相关标签
  

闽ICP备14008679号