首页 > 生活 >

通过在该方法上施加一个小trick将Transformer的推理速度提高4.5倍!

发布时间:2022-01-04 11:46   来源:TechWeb   阅读量:11153   

最近,NLP明星公司Hugging Face发布了一个叫做Infinity的产品,可以以1ms延时完成Transformer的推理,性能相当高了。

通过在该方法上施加一个小trick将Transformer的推理速度提高4.5倍!

但是,厉害归厉害,还是有点贵mdash,mdash,1年至少要十几万块。

那有没有什么平替的方法呢。

有的!还是开源的,不费吹灰之力就可以达到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和Nvidia TensorRT。

如果想在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量化。不过,和其他很多Transformer变体的论文一样,这篇论文的标题也引发了一些吐槽:。

据我所知,目前任何OOS云服务都还没用到过这个方法。

不过执行GPU量化需要修改模型源代码,既容易出错,又很无聊,并且还需自己维护修改后的代码。

后来,他们又发现似乎只需修补模型模块的抽象语法树也可以自动完成。

在用户端,在GPU上执行模型的基本量化类似这样:

最终,该方法在Roberta—base模型和MNLI数据集上实现了4.53倍的推理速度。

当然这也牺牲了0.4个点的精度,如果一点不牺牲的话,也可以加速3.2倍左右。

最终他们用Albert,Bert,Distilbert,Roberta,Electra测试了该trick。

结果是对于任何可以导出为ONNX格式的Transformer模型,都可以开箱即用。

(责编:顾晓芸)

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。

版权声明:凡注明“来源:“生活消费网”的所有作品,版权归生活消费网 | 专注于国内外今日生活资讯网站所有。任何媒体转载、摘编、引用,须注明来源生活消费网 | 专注于国内外今日生活资讯网站和署著作者名,否则将追究相关法律责任。