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

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

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

在这种背景下,腾讯微信团队研发了 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 让微信内部众多 NLP 线上应用能够充分榨取底层硬件的计算能力,让算法更好地服务用户。具体来说 TurboTransformers 在算子优化、框架优化和接口部署方式简化三个方面做了工作。

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 运算。

类似 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

  • Intel Xeon 6133

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

GPU 测试效果

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

  • RTX 2060

  • Tesla V100

  • Tesla P40

  • Tesla M40

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

微信开源推理加速工具 TurboTransformers,性能超越 PyTorch/TensorFlow 与主流优化引擎相关推荐

  1. 腾讯第100个开源项目:微信开源推理加速工具TurboTransformers

    出品 | AI科技大本营(ID:rgznai100) 4月24日,腾讯正式宣布开源Transformer推理加速工具TurboTransformers.该工具面向自然语言处理领域中Transforme ...

  2. 苹果回应iPhone邮件漏洞;GitHub连续3天爆严重宕机情况;腾讯开源Transformer推理加速工具| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦 ...

  3. 腾讯开源 TurboTransformers:自然语言处理推理加速工具

    4 月 24 日,腾讯正式宣布开源 Transformer 推理加速工具 TurboTransformers.该工具面向自然语言处理领域中 Transformers 相关模型丰富的线上预测场景,在微信 ...

  4. 清华自研深度学习框架「计图」开源!多项任务性能超过PyTorch

    2020-03-20 11:42:07 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI框架,又来重磅中国玩家. 刚刚,清华自研的深度学习框架,正式对外开源."贵系&quo ...

  5. web版本 开源压测工具_siege--Web性能压测工具

    -V, --version    VERSION, prints the version number. -h, --help    HELP, prints this section. -C, -- ...

  6. 微信开源「派大星」:4000元游戏电脑能带动7亿参数GPT!

    来源:量子位 一听到训练大模型,是不是第一感觉就是贵.烧钱.玩不起? 但我说,一台4000多块钱的游戏电脑,谁都能训练上亿参数的大模型呢? 别不信,这是真的. 而这就归功于微信AI团队,最近推出的一款 ...

  7. NLP 训练及推理一体化工具(TurboNLPExp)

    作者:TurboNLP,腾讯 TEG 后台工程师 导语 NLP 任务(序列标注.分类.句子关系判断.生成式)训练时,通常使用机器学习框架 Pytorch 或 Tensorflow,在其之上定义模型以及 ...

  8. MKLDNN推理加速技术简介

    深度学习在进行推理时,很多应用场景在对硬件有一定限制的情况下,对推理速度还有比较高的要求,如移动端的人脸识别与语音语义识别.安防领域的烟雾报警等.在这些领域中,推理速度的快慢不但直接影响着软件效果与体 ...

  9. PP-YOLOv2开源,你的目标检测器又该升级了!性能超越YOLOv5且推理耗时保持不变

    PP-YOLOv2开源,你的目标检测器又该升级了!性能超越YOLOv5且推理耗时保持不变 本文是百度的研究员对PP-YOLO的一次升级,从PP-YOLO出发,通过增量消融方式逐步添加有助于性能提升且不 ...

最新文章

  1. java 负数变正数 +
  2. HDU 6170-正则表达式
  3. 图像处理【代码合集】
  4. 进程调度 操作系统第二章知识点归纳总结
  5. echarts3 graph java_echarts 3.0 使用自定义图标
  6. html div自动撑起来,解决子级用css float浮动 而父级div没高度不能自适应高度
  7. java native 方法和修饰符
  8. DotNetBar 使用教程
  9. smartsvn 破解
  10. 华为HCIP-DATACOM(821)411-440
  11. 【学习笔记】投资理财,基金基础知识科普入门学习,凭运气赚回来的钱,会凭实力亏掉_20210115
  12. Objective-C 【对象-多文件开发简介】
  13. 机器学习-生成对抗网络实战(二-2)
  14. 发送邮箱验证码进行注册验证
  15. 5G及后5G时代:万物互联到万物智能的黄金时代
  16. 第四部分、JEECG-BOOT 微服部署文档
  17. Mac上php环境配置
  18. 磁偏角测试仪TY3300永磁材料磁偏角测量
  19. ES6 generator函数的详解
  20. 古装大剧《倾世妖颜》9月27日首播 ,苏虐一体承包国庆假期

热门文章

  1. mysql免安装_腾讯云Ubuntu18.04部置Django2系列(二):Ubuntu18.04 安装Mysql
  2. 制度化规范化标准化精细化_制度化、标准化、流程化,走向精细化管理的蜕变...
  3. easyui crud java_Easyui 创建 CRUD 应用_EasyUI 插件
  4. 小程序获取openid保存缓存吗_小程序获取openid踩坑
  5. ul c语言,IMX6UL裸机实现C语言蜂鸣器实验
  6. cxfreeze打包pyqt5程序_基于PyQt5的简单RMSE计算小工具研究
  7. 适合海报设计的最佳字体
  8. 正版python怎么下载_怎么下载官网python并安装
  9. 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交
  10. CentOS RPM源镜像源(国内+国外)