成为VIP会员查看完整内容
VIP会员码认证
首页
主题
发现
会员
服务
注册
·
登录
0
TurboTransformers开源技术文档
2020 年 4 月 24 日
微信AI
项目背景
以BERT为代表的Transformer神经网络是近年来NLP领域最重要的模型创新,很多NLP任务,如阅读理解、文章摘要、语义分类、同义改写等,都通过采用BERT获得了显著的效果提升。但是,如下图所示,Transformer带来更高的模型精度的同时也引入了更多的计算量,使用Transformer的线上NLP服务的高效部署面临着巨大挑战。鉴于BERT在各大互联网公司的广泛应用,非常必要实现一个能发挥充分CPU/GPU硬件计算能力的Transformer推理方法。
在业界,Transformers模型的训练部分通常采用tensorflow或者pytorch这种训练框架完成。由于深度学习的训练和推理任务存在差异,训练框架直接应用于线上推理并不能得到极致的性能。众多算法工程师经常遇到模型效果很好,但是无法上线的问题。很多工作尝试弥合推理和训练之间实现差异的鸿沟,如onnxruntime、tensorRT、torchlib、XLA等,这些工作大多需要根据输入尺寸预先对计算图进行预处理和优化,以获得更好的推理时性能。和图像处理任务的输入常常没有变化不同,NLP推理任务输入尺寸多个维度会存在变化。实际推理时通过补零或者截断成整理成固定的输入尺寸,这样引入了额外补零计算开销,预处理优化的方案对NLP任务并不适用。
项目介绍
面对丰富的Transformer的线上服务场景,腾讯微信开源了名为TurboTransformers的Transformer推理加速工具。就像增压器turbo能跑给汽车的发动机引擎带来更强劲的功率,TurboTransformers也可以让你的Transformer推理引擎变强。它的特点是高速、实用、简单。它在CPU和GPU上力求取得业界最佳的性能表现。它支持变长输入序列,无需预处理更适合NLP任务。它支持C++和python方式调用,在pytorch基础上增加几行代码可以获得端到端BERT加速。
Turbo 具有如下特征
1. 优异的CPU/GPU性能表现。
面向Intel多核CPU和NVIDIA GPU硬件平台,通过核心融合,TurboTransformers充分
发挥硬件的各层级计算能力。在多种CPU和GPU硬件上获得了超过pytorch/tensorflow和目前主流优化引擎(如onnxruntime-mkldnn/onnxruntime-gpu, torch JIT, NVIDIA faster transformers)的性能表现。
2. 为NLP推理任务特点量身定制。
TurboTransformers可以支持变长输入序列处理,且不需要预处理过程。
3. 简单的使用方式。
TurTurboTransformers支持python和C++接口进行调用。它可以作为pytorch的加速插件,在Transformer任务上,通过加入几行python代码获得的端对端加速效果。
TurboTransformers
已经应用腾讯内部于多个线上BERT服务服务场景。比如,微信的FAQ的服务获得1.88x加速,公有云情感分析服务获得2.11x加速,QQ推荐服务获得13.6x加速。
和其他工作的对比如下,TurboTransformers在性能,使用方式都具备优势。
技术创新
TurboTransformers的软件架构如下图,它让微信内部众多NLP线上应用能够充分榨取底层硬件的计算能力,让算法更好地服务
于
用户。
具体来说TurboTransformers可以在算子优化、框架优化和接口部署方式简化三个方面做了工作。
>>>
1.
算子层优化
让我们先看看Transformer都包含了什么计算。如下图所示,图(a)展示了论文Transformer结构示意图,这里称灰色方框内的结构为·一个Transformer Cell,BERT encoder堆叠了Nx个这样的Transformer Cell。图(b)将一个Cell的细节加以展开,每一个矩形都是一个独立的计算核心。
Transformer Cell计算包含了8个GEMM(通用矩阵乘法,General Matrix Multiplication)运算。我们通过调优Intel MKL和cuBLAS的GEMM调用方式来获得最佳GEMM性能。通过调整了预训练矩阵存储方式。并且在硬件允许条件下,在GPU上使用tensor core方式进行GEMM运算。
类似NVIDIA FasterTransformers方案,我们将所有GEMM运算之间的计算融合成一个调用核心。融合会带来两个好处,一是减少了内存访问开销,二是减少多线程启动开销。对于这些核心,我们在CPU上采用openmp进行并行,在GPU上使用CUDA进行优化实现。对于比较复杂的LayerNorm和Softmax算子,它们包含了不适合GPU上并行的规约操作,TurboTransformers为它们设计了创新并行算法,极大降低了这些算子的延迟。理论上Transformers推理延迟应该近似于矩阵乘法延迟。
>>>
2.
框架层优化
TurboTransformers采用了一个有效的内存管理方式。由于NLP的采用变长输入特性,每次运算中间结果的大小其实并不相同。为了避免每次都分配释放内存,我们通过Caching方式管理显存。
为了能够无缝支持pytorch/tensorflow训练好的序列化模型,我们提供了一些脚本可以将二者的预训练模型转化为npz格式,供TurboTransformers读入。特别的,考虑到pytorch huggingface/transformers是目前最流行的transformers训练方法,我们支持直接读入huggingface/transformers预训练模型。
>>>
3.
应用部署
我们提供了C++和Python调用接口。可以嵌入到C++多线程后台服务流程中,也可以加入到pytorch服务流程中。
我们建议TurboTransformers通过docker部署,一方面保证了编译的可移植性,另一方面也可以无缝应用于K8S等线上部署平台。
性能结果
下图是在Intel Xeon 6133 CPU的性能测试结果。
下图是在NVIDIA RTX 2060 GPU的性能测试结果
下图是在NVIDIA P40 GPU的性能测试结果
下图是在NVIDIA V100 GPU的性能测试结果
未来展望
TurboTransformers是一个的小而美的Transformer推理加速插件,由于自身业务限制,它的功能还相对有限,很多方面
有
待能和开源社区一起努力,共同完善。
TurboTransformers只支持了FP32的计算,对于GPU FP16支持将作为我们的未来工作。TurboTransformers目前重点支持了BERT模型,未来我们会增加TurboTransformers的自动化优化的能力。TurboTransformers解决了计算加速的问题,用户还需要自己搭建服务框架,未来我们会将服务流程开源,打通用户上线的最后一站。
微信ID:WeChatAI
登录查看更多
点赞并收藏
0
暂时没有读者
0
权益说明
本文档仅做收录索引使用,若发现您的权益受到侵害,请立即联系客服(微信: zhuanzhi02,邮箱:bd@zhuanzhi.ai),我们会尽快为您处理
相关内容
Transformer
关注
238
Transformer是谷歌发表的论文《Attention Is All You Need》提出一种完全基于Attention的翻译架构
知识荟萃
精品入门和进阶教程、论文和代码整理等
更多
查看相关VIP内容、论文、资讯等
面向大数据处理框架的JVM优化技术综述
专知会员服务
16+阅读 · 2021年11月27日
【KDD2021】TUTA: 通用表格预训练的树结构Transformer
专知会员服务
24+阅读 · 2021年8月22日
【ACL2021】为密集检索生成伪查询嵌入来改进文档表示
专知会员服务
6+阅读 · 2021年8月7日
【AAAI2021最佳论文】基于高效 Transformer 的长时间序列预测
专知会员服务
61+阅读 · 2021年2月6日
【EMNLP2020】高性能自然语言处理,274页ppt详述最新Transformer等技术进展
专知会员服务
60+阅读 · 2020年11月21日
【NeurIPS2020-华为】DynaBERT:具有自适应宽度和深度的动态BERT
专知会员服务
18+阅读 · 2020年10月21日
多模态摘要简述
专知会员服务
142+阅读 · 2020年9月6日
【伯克利】通过增大模型加速Transformer训练和推理
专知会员服务
44+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【清华大学】Bert 简介,Bidirectional Encoder Representations from Transformers,21页ppt
专知会员服务
78+阅读 · 2019年12月29日
Transformer性能优化:运算和显存
PaperWeekly
1+阅读 · 2022年3月29日
人大金琴团队:基于Transformer的「视频-语言」预训练综述
CVer
0+阅读 · 2022年3月5日
实践教程 | 轻松入门模型转换和可视化
极市平台
0+阅读 · 2022年3月5日
四大榜单第一名、首个中文预训练表格模型开源,达摩院TableQA技术让表格说话
机器之心
2+阅读 · 2022年1月23日
Recsys2021 | 基于Transformer的会话推荐
机器学习与推荐算法
2+阅读 · 2021年11月8日
我用Transformer修复代码bug
夕小瑶的卖萌屋
1+阅读 · 2021年9月9日
支持Transformer全流程训练加速,最高加速3倍!字节跳动LightSeq上新
机器之心
0+阅读 · 2021年6月24日
训练速度远超3D CNN,提速3倍!Facebook首发「时空版」Transformer
新智元
1+阅读 · 2021年3月18日
GPU BERT上线性能不合格,看看微信AI的PPoPP论文
微信AI
0+阅读 · 2020年12月7日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
基于异构体系结构的稀疏矩阵分解算法并行化研究
国家自然科学基金
1+阅读 · 2015年12月31日
全局分片线性优化方法与应用
国家自然科学基金
0+阅读 · 2014年12月31日
基于CPU/GPU异构协同的并行离散事件仿真关键技术研究
国家自然科学基金
0+阅读 · 2014年12月31日
面向人脸检测的大规模异构并行Adaboost机器学习算法研究
国家自然科学基金
3+阅读 · 2013年12月31日
GPU程序访存行为分析和优化关键技术研究
国家自然科学基金
1+阅读 · 2013年12月31日
面向逆时偏移算法的FPGA加速技术研究
国家自然科学基金
2+阅读 · 2013年12月31日
面向非平行文本的说话人个性特征转换的关键技术及应用研究
国家自然科学基金
0+阅读 · 2013年12月31日
众核体系架构并行计算模型与算法自适应调优框架研究
国家自然科学基金
1+阅读 · 2012年12月31日
CPU/GPU异构平台下并行保结构算法的研究
国家自然科学基金
2+阅读 · 2012年12月31日
可伸缩视频流的最优化决策及适配化传输
国家自然科学基金
0+阅读 · 2008年12月31日
CPU- and GPU-based Distributed Sampling in Dirichlet Process Mixtures for Large-scale Analysis
Arxiv
0+阅读 · 2022年4月19日
Fourier Image Transformer
Arxiv
2+阅读 · 2022年4月19日
Multimodal Token Fusion for Vision Transformers
Arxiv
3+阅读 · 2022年4月19日
Faster-Than-Native Alternatives for x86 VP2INTERSECT Instructions
Arxiv
0+阅读 · 2022年4月16日
Unsupervised Attention-based Sentence-Level Meta-Embeddings from Contextualised Language Models
Arxiv
0+阅读 · 2022年4月16日
ERGO: Event Relational Graph Transformer for Document-level Event Causality Identification
Arxiv
0+阅读 · 2022年4月15日
MVSTER: Epipolar Transformer for Efficient Multi-View Stereo
Arxiv
0+阅读 · 2022年4月15日
Transformer Tracking
Arxiv
17+阅读 · 2021年3月29日
UP-DETR: Unsupervised Pre-training for Object Detection with Transformers
Arxiv
19+阅读 · 2020年11月18日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
Transformer
NLP
BERT
GPU
中央处理器 (CPU)
PyTorch
相关VIP内容
面向大数据处理框架的JVM优化技术综述
专知会员服务
16+阅读 · 2021年11月27日
【KDD2021】TUTA: 通用表格预训练的树结构Transformer
专知会员服务
24+阅读 · 2021年8月22日
【ACL2021】为密集检索生成伪查询嵌入来改进文档表示
专知会员服务
6+阅读 · 2021年8月7日
【AAAI2021最佳论文】基于高效 Transformer 的长时间序列预测
专知会员服务
61+阅读 · 2021年2月6日
【EMNLP2020】高性能自然语言处理,274页ppt详述最新Transformer等技术进展
专知会员服务
60+阅读 · 2020年11月21日
【NeurIPS2020-华为】DynaBERT:具有自适应宽度和深度的动态BERT
专知会员服务
18+阅读 · 2020年10月21日
多模态摘要简述
专知会员服务
142+阅读 · 2020年9月6日
【伯克利】通过增大模型加速Transformer训练和推理
专知会员服务
44+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【清华大学】Bert 简介,Bidirectional Encoder Representations from Transformers,21页ppt
专知会员服务
78+阅读 · 2019年12月29日
热门VIP内容
开通专知VIP会员 享更多权益服务
《优化联合作战准备:日本视角》最新21页
《基于嵌入式导弹系统的自主防空系统以挫败巡航威胁的定量论证》90页
乌克兰首次完全依靠UGV 和 FPV 无人机全自动攻击俄罗斯部队
《中高度长航时遥控无人机自动定位和跟踪》190页
相关资讯
Transformer性能优化:运算和显存
PaperWeekly
1+阅读 · 2022年3月29日
人大金琴团队:基于Transformer的「视频-语言」预训练综述
CVer
0+阅读 · 2022年3月5日
实践教程 | 轻松入门模型转换和可视化
极市平台
0+阅读 · 2022年3月5日
四大榜单第一名、首个中文预训练表格模型开源,达摩院TableQA技术让表格说话
机器之心
2+阅读 · 2022年1月23日
Recsys2021 | 基于Transformer的会话推荐
机器学习与推荐算法
2+阅读 · 2021年11月8日
我用Transformer修复代码bug
夕小瑶的卖萌屋
1+阅读 · 2021年9月9日
支持Transformer全流程训练加速,最高加速3倍!字节跳动LightSeq上新
机器之心
0+阅读 · 2021年6月24日
训练速度远超3D CNN,提速3倍!Facebook首发「时空版」Transformer
新智元
1+阅读 · 2021年3月18日
GPU BERT上线性能不合格,看看微信AI的PPoPP论文
微信AI
0+阅读 · 2020年12月7日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
相关基金
基于异构体系结构的稀疏矩阵分解算法并行化研究
国家自然科学基金
1+阅读 · 2015年12月31日
全局分片线性优化方法与应用
国家自然科学基金
0+阅读 · 2014年12月31日
基于CPU/GPU异构协同的并行离散事件仿真关键技术研究
国家自然科学基金
0+阅读 · 2014年12月31日
面向人脸检测的大规模异构并行Adaboost机器学习算法研究
国家自然科学基金
3+阅读 · 2013年12月31日
GPU程序访存行为分析和优化关键技术研究
国家自然科学基金
1+阅读 · 2013年12月31日
面向逆时偏移算法的FPGA加速技术研究
国家自然科学基金
2+阅读 · 2013年12月31日
面向非平行文本的说话人个性特征转换的关键技术及应用研究
国家自然科学基金
0+阅读 · 2013年12月31日
众核体系架构并行计算模型与算法自适应调优框架研究
国家自然科学基金
1+阅读 · 2012年12月31日
CPU/GPU异构平台下并行保结构算法的研究
国家自然科学基金
2+阅读 · 2012年12月31日
可伸缩视频流的最优化决策及适配化传输
国家自然科学基金
0+阅读 · 2008年12月31日
相关论文
CPU- and GPU-based Distributed Sampling in Dirichlet Process Mixtures for Large-scale Analysis
Arxiv
0+阅读 · 2022年4月19日
Fourier Image Transformer
Arxiv
2+阅读 · 2022年4月19日
Multimodal Token Fusion for Vision Transformers
Arxiv
3+阅读 · 2022年4月19日
Faster-Than-Native Alternatives for x86 VP2INTERSECT Instructions
Arxiv
0+阅读 · 2022年4月16日
Unsupervised Attention-based Sentence-Level Meta-Embeddings from Contextualised Language Models
Arxiv
0+阅读 · 2022年4月16日
ERGO: Event Relational Graph Transformer for Document-level Event Causality Identification
Arxiv
0+阅读 · 2022年4月15日
MVSTER: Epipolar Transformer for Efficient Multi-View Stereo
Arxiv
0+阅读 · 2022年4月15日
Transformer Tracking
Arxiv
17+阅读 · 2021年3月29日
UP-DETR: Unsupervised Pre-training for Object Detection with Transformers
Arxiv
19+阅读 · 2020年11月18日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
大家都在搜
palantir
洛克菲勒
大型语言模型
CMU博士论文
技术报告
无人艇
自主可控
国家地理图册
张贤达
出海产品从 0 到 1 该怎么做
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top