您当前的位置:首页 > 手机百科 > 微信

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

时间:2020-04-26 16:34:05  来源:  作者:

 

 

 

腾讯宣布开源 Transformer 推理加速工具 TurboTransformers。该工具面向自然语言处理领域中 Transformers 相关模型丰富的线上预测场景,据介绍,其在微信、腾讯云、QQ 看点等产品的线上服务中已经广泛应用,这也是腾讯对外开源的第 100 个项目。

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

在自然语言处理领域中,以 BERT 为代表的 Transformers 相关神经网络模型是近年来最重要的模型创新,可以为阅读理解、文章摘要、语义分类、同义改写等 NLP 任务提供显著的效果提升。但提高模型精度的同时,Transformes 相关模型也带来了更多的计算量。

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

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

在这种背景下,腾讯微信团队研发了 TurboTransformers 加速器。它来自于深度学习自然语言处理基础平台 TencentNLP Oteam,旨在搭建统一的深度学习 NLP (Natural Language Processing,自然语言处理)基础平台、提升研发效能。特性主要有三点:

  • 优异的 CPU/GPU 性能表现。面向 Intel 多核 CPU 和 NVIDIA GPU 硬件平台,通过核心融合和并行算法优化,TurboTransformers 充发挥硬件的各层级并行计算的能力。在多种 CPU 和 GPU 硬件上获得了超过 PyTorch/TensorFlow 和目前主流优化引擎(如 onnxruntime-mkldnn/onnxruntime-gpu、torch JIT、NVIDIA faster transformers)的性能表现。
  • 为 NLP 推理任务特点量身定制。TurboTransformers 可以支持变长输入序列处理,无需序列补零、截断或者分桶带来的无用计算,也无需任何针对计算图在推理前进行预调优的过程。
  • 简单的使用方式。TurboTransformers 支持 Python 和 C++ 接口进行调用。TurboTransformers 支持 TensorFlow 和 PyTorch 预训练模型的载入。它可以作为 huggingface/transformers 的推理加速插件,通过加入几行 Python 代码获得对 BERT 模型的端对端加速效果。

相比其它同类项目:

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

腾讯介绍,TurboTransformers 让微信内部众多 NLP 线上应用能够充分榨取底层硬件的计算能力,让算法更好地服务用户。具体来说 TurboTransformers 在算子优化、框架优化和接口部署方式简化三个方面做了工作。

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

TurboTransformers 架构

算子层优化

如下图所示,Transformer 架构中的 Transformer Cell 计算包含了 8 个 GEMM(通用矩阵乘法,General Matrix Multiplication)运算。其中,(a) 中灰色方框内的结构为一个 Transformer Cell,BERT encoder 堆叠了 Nx 个这样的 Transformer Cell;(b) 将一个 Cell 的细节加以展开,每一个矩形都是一个独立的计算核心。

TurboTransformers 通过调优 Intel MKL 和 cuBLAS 的 GEMM 调用方式获得最佳 GEMM 性能。通过调整了预训练矩阵存储方式,并且在硬件允许条件下,在 GPU 上使用 tensor core 方式进行 GEMM 运算。

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

类似 NVIDIA FasterTransformers 方案,TurboTransformers 将 Transformer 中的所有 GEMM(通用矩阵乘法,General Matrix Multiplication) 运算之间的计算融合成一个调用核心。融合会带来两个好处,一是减少了内存访问开销,二是减少多线程启动开销。对于这些核心,在 CPU 上采用 openmp 进行并行,在 GPU 上使用 CUDA 进行优化实现。对于比较复杂的 LayerNorm 和 Softmax 算子,它们包含了不适合 GPU 上并行的规约操作,TurboTransformers 为它们设计了创新并行算法,极大降低了这些算子的延迟。理论上 Transformers 推理延迟应该近似于矩阵乘法延迟。

框架层优化

由于 NLP 的采用变长输入特性,每次运算中间结果的大小其实并不相同,为了避免每次都分配释放内存,TurboTransformers 通过 Caching 方式管理显存。

为了能够无缝支持 PyTorch/TensorFlow 训练好的序列化模型,项目中提供了一些脚本可以将二者的预训练模型转化为 npz 格式,供 TurboTransformers 读入。特别考虑到 PyTorch huggingface/transformers 是目前最流行的 Transformers 训练方法,TurboTransformers 支持直接读入 huggingface/transformers 预训练模型。

应用部署

TurboTransformers 提供了 C++ 和 Python 调用接口,可以嵌入到 C++ 多线程后台服务流中,也可以加入到 PyTorch 服务流中。官方建议通过 Docker 部署 TurboTransformers,一方面保证编译的可移植性,另一方面也可以无缝应用于 K8S 等线上部署平台。

性能方面,官方分别以 CPU 和 GPU 两方面进行测试:

CPU 测试效果

在 3 种 CPU 硬件平台测试了 TurboTransformers 的性能表现,选择 pytorch、pytorch-jit 和 onnxruntime-mkldnn 和 TensorRT 实现作为对比。性能测试结果为迭代 150 次的均值。为了避免多次测试时,上次迭代的数据在 cache 中缓存的现象,每次测试采用随机数据,并在计算后刷新的 cache 数据。

  • Intel Xeon 61xx
微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

  • Intel Xeon 6133

相比 61xx 型号,Intel Xeon 6133 向量化长度更长为 512 bit,并且它拥有一个 30 MB 核间共享 L3 cache。

微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

GPU 测试效果

在 4 种 GPU 硬件平台测试了 TurboTransformers 的性能表现,选择 pytorch、NVIDIA Faster Transformers、onnxruntime-gpuTensorRT 实现作为对比。性能测试结果为迭代 150 次的均值。

  • RTX 2060
微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

  • Tesla V100
微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

  • Tesla P40
微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

  • Tesla M40
微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 


微信开源加速工具 TurboTransformers,超越 PyTorch/TensorFlow

 

同时,腾讯也表示,TurboTransformers 目前只支持了 FP32 的计算,对于 GPU FP16 的支持将在后续提供。TurboTransformers 目前重点支持了 BERT 模型,未来也会增加 TurboTransformers 的自动化优化能力。另外,TurboTransformers 解决了计算加速的问题,用户还需要自己搭建服务框架,未来腾讯也会将服务流程开源,打通用户上线的最后一站。



Tags:微信   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
近日,微信上线“仅传输文件”功能,用户无需登录就可以进行文件传输。目前,该更新仅有Windows版本。首先,用户需要先将电脑版微信更新至最高版本。更新之后,无需登录,下方会出现“...【详细内容】
2021-12-28  Tags: 微信  点击:(4)  评论:(0)  加入收藏
今天在登录PC版微信的时候,发现了一个新的功能,在界面上多了一个,仅文件传输,出于好奇,我点击了一下。于是发现了一个新的天地。登录页面点击后,出来了一个二维码,微信居然出网页版...【详细内容】
2021-12-27  Tags: 微信  点击:(6)  评论:(0)  加入收藏
现在大家都非常喜欢用微信进行社交。如果微信上有一些重要的聊天记录,我们可以将它保存成文档,这样后续查找也更方便,还能防止丢失。小编带来了具体的介绍,赶紧来看下吧。微信聊...【详细内容】
2021-12-24  Tags: 微信  点击:(15)  评论:(0)  加入收藏
微信开放平台:微信扫码登录功能官方文档: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html1. 授权流程说明微信OAuth2.0授权登...【详细内容】
2021-12-23  Tags: 微信  点击:(9)  评论:(0)  加入收藏
大家好,欢迎来到大雨静听的生活。你们还在用微信授权登录吗?一个方法关闭微信授权登录,让微信更加安全。有些时候安装不明软件,用微信授权登录可能会影响微信的安全,那么今天就分...【详细内容】
2021-12-23  Tags: 微信  点击:(8)  评论:(0)  加入收藏
华为手机怎样同时登录3个微信?相信很多人都有2、3个微信号,有家庭号、工作号、同学号等等,所以,我们经常会看到他们身上随身携带了2个或3个手机。如果你的手机是华为手机的话,就...【详细内容】
2021-12-21  Tags: 微信  点击:(8)  评论:(0)  加入收藏
不管你是社交牛X还是社交自闭,出来工作后,微信列表上的好友数量只会随着工作时间增加而增多。躺在列表里的好友有很多其实并不是“好友”,有的甚至没讲过一句话,不知不觉就加上...【详细内容】
2021-12-17  Tags: 微信  点击:(17)  评论:(0)  加入收藏
1.首先打开微信-支付页面 2.点击进入 城市服务 3.点击进入 热门服务——的社保综合 4.点击进入 山西城乡居民社保缴纳 5.点击进入 城乡居民医疗保险 6.输入缴费人...【详细内容】
2021-12-16  Tags: 微信  点击:(12)  评论:(0)  加入收藏
近日,微信虽然没有推出什么新版本,但是却悄悄上线了两项新功能,分别为“每日一看”和“查看名片”。目前,这项功能都属于灰度测试功能,因此只有拥有测试权限的用户可以使用。 至...【详细内容】
2021-12-16  Tags: 微信  点击:(8)  评论:(0)  加入收藏
微信小程序“无障碍急救平台”日前上线,解决听障人士120急救呼叫难题。听障人士在日常生活、工作中常有信息缺失、沟通不良的困难。如果自身或身边人突发急症,则需要依靠他人...【详细内容】
2021-12-15  Tags: 微信  点击:(10)  评论:(0)  加入收藏
▌简易百科推荐
近日,微信上线“仅传输文件”功能,用户无需登录就可以进行文件传输。目前,该更新仅有Windows版本。首先,用户需要先将电脑版微信更新至最高版本。更新之后,无需登录,下方会出现“...【详细内容】
2021-12-28  闽南网    Tags:微信   点击:(4)  评论:(0)  加入收藏
今天在登录PC版微信的时候,发现了一个新的功能,在界面上多了一个,仅文件传输,出于好奇,我点击了一下。于是发现了一个新的天地。登录页面点击后,出来了一个二维码,微信居然出网页版...【详细内容】
2021-12-27  程序员老王聊科技    Tags:微信网页版   点击:(6)  评论:(0)  加入收藏
现在大家都非常喜欢用微信进行社交。如果微信上有一些重要的聊天记录,我们可以将它保存成文档,这样后续查找也更方便,还能防止丢失。小编带来了具体的介绍,赶紧来看下吧。微信聊...【详细内容】
2021-12-24  IE浏览器中文网     Tags:聊天记录   点击:(15)  评论:(0)  加入收藏
微信开放平台:微信扫码登录功能官方文档: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html1. 授权流程说明微信OAuth2.0授权登...【详细内容】
2021-12-23  老炮说Java    Tags:微信扫码   点击:(9)  评论:(0)  加入收藏
大家好,欢迎来到大雨静听的生活。你们还在用微信授权登录吗?一个方法关闭微信授权登录,让微信更加安全。有些时候安装不明软件,用微信授权登录可能会影响微信的安全,那么今天就分...【详细内容】
2021-12-23  大雨静听生活    Tags:微信   点击:(8)  评论:(0)  加入收藏
华为手机怎样同时登录3个微信?相信很多人都有2、3个微信号,有家庭号、工作号、同学号等等,所以,我们经常会看到他们身上随身携带了2个或3个手机。如果你的手机是华为手机的话,就...【详细内容】
2021-12-21  码不亭蹄    Tags:微信   点击:(8)  评论:(0)  加入收藏
不管你是社交牛X还是社交自闭,出来工作后,微信列表上的好友数量只会随着工作时间增加而增多。躺在列表里的好友有很多其实并不是“好友”,有的甚至没讲过一句话,不知不觉就加上...【详细内容】
2021-12-17  雷科技    Tags:微信   点击:(17)  评论:(0)  加入收藏
1.首先打开微信-支付页面 2.点击进入 城市服务 3.点击进入 热门服务——的社保综合 4.点击进入 山西城乡居民社保缴纳 5.点击进入 城乡居民医疗保险 6.输入缴费人...【详细内容】
2021-12-16  坚持住    Tags:微信   点击:(12)  评论:(0)  加入收藏
近日,微信虽然没有推出什么新版本,但是却悄悄上线了两项新功能,分别为“每日一看”和“查看名片”。目前,这项功能都属于灰度测试功能,因此只有拥有测试权限的用户可以使用。 至...【详细内容】
2021-12-16  果粉之家    Tags:微信   点击:(8)  评论:(0)  加入收藏
微信设置铃声语音之后,无论是朋友给你开视频还是开语音,你都由之前的“叮叮,叮叮,叮叮叮”的声音变成自己设置的铃声。那我们该如何设置呢?前提条件:你的微信版本最低要8.0.8+,当然...【详细内容】
2021-12-14  蜜蜂攻城狮    Tags:微信语音铃声   点击:(14)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条