让Transformer的推理速度提高4.5倍,这个小trick还能给你省十几万
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
丰色 发自 凹非寺
量子位 报道 | 公众号 QbitAI
最近,NLP明星公司Hugging Face发布了一个叫做Infinity的产品,可以以1ms延时完成Transformer的推理,性能相当高了。
但是,厉害归厉害,还是有点贵——1年至少要十几万块 (2万美元)。
那有没有什么平替的方法呢?
有的!还是开源的、“不费吹灰之力”就可以达到Infinity一些公共基准的那种。
并且现在,通过在该方法上施加一个小trick,将Transformer的推理速度提高4.5倍!
△ 帖子发布不到一天就收获了250+热度
那么,一个“平替”到底为什么能达到“付费”的效果呢?
一个trick让Transformer推理速度提高4.5倍
先来认识一下这个方法:Transformer-deploy。
它可以用一行命令优化和部署Hugging Face上的Transformer模型,并支持大多数基于Transformer编码器的模型,比如Bert、Roberta、miniLM、Camembert、Albert、XLM-R、Distilbert等。
Transformer-deploy推理服务器用的是Nvidia Triton。
推理引擎为Microsoft ONNX Runtime(用于CPU和GPU推理)和Nvidia TensorRT(仅限 GPU)。
如果想在GPU上获得一流的性能,Nvidia Triton+Nvidia TensorRT这样的组合无疑是最佳选择。
虽然TensorRT用起来有点难,但它确实能比用Pytorch快5~10倍。
在实际性能测试中,Transformer-deploy在batch size为1、token分别为16和128的输入序列中的推理速度,都比付费的Hugging Face Infinity要快:
Transformer-deploy在token为16时要1.52ms,Infinity则需要1.7ms;token为128时需要1.99ms,Infinity则需要2.5ms。
那前面说的能让Transformer的推理性能进一步提高的小trick是什么呢?
GPU量化(quantization)。
作者表示:
据我所知,目前任何OOS云服务都还没用到过这个方法。
不过执行GPU量化需要修改模型源代码(需在矩阵乘法等代价高昂的操作上添加一些叫做QDQ的特定节点),既容易出错,又很无聊,并且还需自己维护修改后的代码。
因此作者已经为多个基于Transformer的模型手动完成了这项工作。
后来,他们又发现似乎只需修补模型模块的抽象语法树 (AST)也可以自动完成。
在用户端,在GPU上执行模型的基本量化类似这样:
最终,该方法在Roberta-base模型和MNLI数据集(分类任务)上实现了4.53倍的推理速度。
当然这也牺牲了0.4个点的精度;如果一点不牺牲的话,也可以加速3.2倍左右。
作者表示,与Transformer-deploy原来的版本相比,这已经是一个很大的改进了,毕竟原版本的加速成本需要超过1个点的精确度。
最终他们用Albert、Bert(包括miniLM)、Distilbert、Roberta(包括 Camembert、XLM-R、DistilRoberta等)、Electra测试了该trick。
结果是对于任何可以导出为ONNX格式的Transformer模型,都可以“开箱即用”。
参考链接:
https://www.reddit.com/r/MachineLearning/comments/rr17f9/p_45_times_faster_hugging_face_transformer/
— 完 —
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
点个在看 paper不断!
让Transformer的推理速度提高4.5倍,这个小trick还能给你省十几万相关推荐
- 谷歌提出新型卷积网络EfficientNet: 推理速度升5.1倍参数减少88%,需要我们的验证
推理速度升5.1倍参数减少88%:谷歌提出新型卷积网络EfficientNet 谷歌提出了一项新型模型缩放方法:利用复合系数统一缩放模型的所有维度,该方法极大地提升了模型的准确率和效率.谷歌研究人员基 ...
- vue按需加载组件_微人事首页加载速度提高了 5 倍,我都做了什么?
「本文之前发过,但是比较零散,这里我把用到的方案都汇总一下,方便大家索引,有需要的小伙伴可以收藏下方便查找.里边提到的几种方案,大家都可以对照着视频试一下」 ElementUI 按需加载: 服务端开启 ...
- python append函数_让你python代码更快的3个小技巧!速度提高了一倍还多
大家好!今天呢,我们来聊一聊如何加速你的 python 代码. Python 语言的优点可以列举出许多,语法简单易懂.模块丰富.应用广泛等等.但是世界上没有有完美的东西,python 一个明显缺点就是 ...
- 淘系技术发布业界首个基于神经渲染的3D建模产品Object Drawer,推理速度均提升10000倍...
在China VR 2021大会上,阿里巴巴淘系技术发布了业界首个基于神经渲染的自研商品三维建模产品Object Drawer.目前,Object Drawer已经提供给部分天猫.淘宝商家使用,将在1 ...
- 三位女科学家联手,用AI算法将乳腺癌的筛查速度提高了100倍
最近美国癌症协会一份报告预计,美国今年约有40000名女性死于乳腺癌.造成该结果的原因之一,是诊断癌症肿瘤所需的时间太长--对此,研究人员们一直强调改进癌症的检测和预防,如果疾病在治愈率较高的早期阶段 ...
- FastFormers 论文解读:可以使Transformer 在CPU上的推理速度提高233倍
自Transformers诞生以来,紧随其后的是BERT,在几乎所有与语言相关的任务中,无论是问题回答,情感分析,文本分类还是文本生成,都占据着NLP的主导地位. 与RNN和LSTM消失的梯度问题(不 ...
- 需求调研 现有系统梳理_对速度的需求,访问现有数据的速度提高了1000倍
需求调研 现有系统梳理 了解如何通过使用标准Java 8流和Speedment的In-JVM-Memory加速器将分析数据库应用程序加速1000倍. Web和移动应用程序有时会很慢,因为后备数据库很慢 ...
- 对速度的需求,访问现有数据的速度提高了1000倍
了解如何通过使用标准Java 8流和Speedment的In-JVM-Memory加速器将分析数据库应用程序加速1000倍. Web和移动应用程序有时会很慢,因为后备数据库很慢和/或与数据库的连接施加 ...
- 谷歌提出新型卷积网络EfficientNet:推理速度提升5.1倍,参数减少88%(附论文代码)...
来源:机器之心 本文共1500字,建议阅读8分钟. 谷歌提出了一种新型CNN网络EfficientNet,该网络具备极高的参数效率和速度. [ 导读 ]谷歌提出了一项新型模型缩放方法:利用复合系数统一 ...
最新文章
- 浅谈分布式消息技术 Kafka--大数据技术栈05
- Rust基础笔记:Getting input from the console
- 2016年云巴产品更新合集
- 网站页面内链如何布局才更有利于SEO?
- python3解析json数据_Python3高级教程
- [usaco2004][bzoj3379] 交作业
- 云小课|VMware备份上云学习专列来了,快加入吧~
- php底部加载更多,关于vue底部加载更多的代码
- WebSocket传输图片
- tidyverse —— readr包
- Uploading SSH public key ... failed!
- svnadmin的使用
- 解决“配置系统未能初始化”异常
- Gallery3d 学习笔记(6)
- Android如何实现实时音视频会议的背景分割
- 从零开始写一个Jison解析器(7/10):解析器生成器 `parser generator` 的迭代式开发流程
- ElasticSearch倒排索引原理 数据的写入与查询过程
- VR和AR只是入门,真正的元宇宙远不止于此
- 从达沃斯世界经济论坛,看区块链和数字货币的三大发展趋势
- 千行代码率和代码行数总量
热门文章
- c中结构体的4种定义
- 【转】CPU位数、核数、个数
- c#数据结构———二叉查找树
- Matlab数据的可视化 -- 柱形立体图
- 【MATLAB】find 函数 总结
- mac webpack 版本_晓前端周刊 第48期:EMP面向未来微前端方案正式开源了!玩转 webpack,使你的打包速度提升 90%;...
- 整理了 70 个 Python 面向对象编程案例,怎能不收藏?
- 苹果新算法已混进 iOS 14.3!CSAM 检测技术再遭网友争议
- 从程序媛到启明星辰集团云安全总经理,郭春梅博士揭秘云时代安全攻防之道...
- 完全免费,简化版Plotly推出,秒绘各类可视化图表