加入收藏 | 设为首页 | 会员中心 | 我要投稿 555手机网 (https://www.555shouji.com/)- 热门手机、手机评测、云手机、手游、5G!
当前位置: 首页 > 智能家居 > 正文

开源加速Transformer推理的工具!腾讯的第100个开源项目

发布时间:2020-04-27 06:11:21 所属栏目:智能家居 来源:网络整理
导读:以开源撬动未来技术创新之门。
副标题[/!--empirenews.page--] 开源加速Transformer推理的工具!腾讯的第100个开源项目

智东西(公众号:zhidxcom)
文 | 心缘

智东西4月25日消息,昨日,腾讯宣布开源推理加速工具TurboTransformers。

就像增压器(Turbo)能给汽车发动机引擎带来更强劲的功率,TurboTransformers能为众多自然语言处理(NLP)线上应用更充分地挖掘底层硬件的算力,带给Transformer推理引擎更强的性能表现。

该工具面向Transformer相关模型丰富的线上预测场景,在微信、腾讯云、QQ看点等产品的线上服务中已经广泛应用,这也是腾讯通过Github对外开源的100个项目

一、NLP线上推理极致的性能

以BERT为代表的Transformer神经网络是近年来自然语言处理(NLP)领域最重要的模型创新,阅读理解、文章摘要、语义分类、同义改写等NLP任务,都通过采用BERT获得显著的效果提升。

但在提高模型精度的同时,Transformer相关模型也带来了更多的计算量。

开源加速Transformer推理的工具!腾讯的第100个开源项目

由于深度学习的训练和推理任务存在差异,训练框架直接应用于线上推理并不能得到极致的性能。许多算法工程师都遇到了训练的模型效果很好,但因为响应延迟不满足要求,导致模型无法上线的问题。

一些工作尝试根据输入尺寸预先对计算图进行预处理和优化,以获得更好的推理时性能。但不同于输入常常没有变化的图像处理任务,NLP任务输入尺寸多个维度存在变化。实际推理时通过补零或截断成整理成固定的输入尺寸,这样引入了额外补零计算开销,预处理优化的方案对NLP任务并不适用。

随着BERT在互联网公司逐渐得到广泛应用,需要一个能充分发挥CPU/GPU硬件计算能力的Transformer推理方法。在这一背景下,腾讯微信开源了名为TurboTransformers的Transformer推理加速工具。

TurboTransformers的诞生源于腾讯内部对开源协同的推动。

2019年初,腾讯技术委员会成立,下设开源协同、自研上云两个项目组和对外开源管理办公室,以此来促进内部代码的开放共享和协同共建。

TurboTransformers来自于深度学习自然语言处理基础平台TencentNLP Oteam,作为基础性技术版块,率先进行了开源协同的实践,旨在搭建统一的深度学习NLP基础平台、提升研发效能。在内部对技术反复打磨的基础上,该项目进一步对外开源。

二、性能超过主流优化引擎

TurboTransformers能让Transformer推理引擎性能更强劲,具体而言,有高速、实用、简单三个特点。

1CPU/GPU性能表现优异:面向Intel多核CPU和NVIDIA GPU硬件平台,通过核心融合和并行算法优化,充发挥硬件的各层级并行计算的能力,在多种CPU和GPU硬件上获得了超过PyTorch/TensorFlow和目前主流优化引擎(如onnxruntime-mkldnn/onnxruntime-gpu, torch JIT, NVIDIA faster transformers)的性能表现。

2、为NLP推理任务特点量身定制:可支持变长输入序列处理,无需序列补零、截断或者分桶带来的无用计算,也无需任何针对计算图在推理前的预处理过程。

3、使用方式简单:支持python和C++接口进行调用。支持TensorFlow和PyTorch预训练模型的载入,可作为huggingface/transformers的推理加速插件,通过加入几行python代码获得的BERT模型的端对端加速效果。

此前TurboTransformers已应用在腾讯内部多个线上BERT服务服务场景。其中微信常用问题回复服务获得1.88x加速,公有云情感分析服务获得2.11x加速,QQ看点推荐服务获得13.6x加速。

和其他相关工具对比,TurboTransformers在性能、使用方式上都具备优势。

开源加速Transformer推理的工具!腾讯的第100个开源项目

三、技术创新的三个方向

为了让NLP相关算法更好地服务于用户,TurboTransformers在算子优化、框架优化和接口部署方式简化三个方面做了工作。

开源加速Transformer推理的工具!腾讯的第100个开源项目

▲TurboTransformers的软件架构

1、算子层优化

如下图所示,图(a)展示了论文Transformer结构示意图,这里称灰色方框内的结构为“一个Transformer Cell”,BERT encoder堆叠了Nx个这样的Cell。图(b)将一个Cell的细节加以展开,每一个矩形都是一个独立的计算核心。

开源加速Transformer推理的工具!腾讯的第100个开源项目

Transformer Cell计算包含了8个通用矩阵乘法(GEMM)运算,通过调优Intel MKL和cuBLAS的GEMM调用方式来获得最佳GEMM性能。调整了预训练矩阵存储方式,并在硬件允许条件下,在GPU上使用tensor core方式进行GEMM运算。

类似NVIDIA FasterTransformers方案,将所有GEMM运算之间的计算融合成一个调用核心。融合有两个好处,一是减少了内存访问开销,二是减少多线程启动开销。

对于这些核心,在CPU上采用openmp进行并行,在GPU上使用CUDA进行优化实现。

对于比较复杂的LayerNorm和Softmax算子,它们包含了不适合GPU上并行的规约操作,TurboTransformers为它们设计了创新并行算法,极大降低了这些算子的延迟。理论上Transformers推理延迟应该近似于矩阵乘法延迟。

2、框架层优化

(编辑:555手机网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读