让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

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

 [[443226]]

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

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

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

但是,厉害归厉害,还是有点贵——1年至少要十几万块 (2万美元)。

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

有的!还是开源的、“不费吹灰之力”就可以达到Infinity一些公共基准的那种。

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

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

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

△ 帖子发布不到一天就收获了250+热度

那么,一个“平替”到底为什么能达到“付费”的效果呢?

一个trick让Transformer推理速度提高4.5倍

先来认识一下这个方法:Transformer-deploy

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

它可以用一行命令优化和部署Hugging Face上的Transformer模型,并支持大多数基于Transformer编码器的模型,比如Bert、Roberta、miniLM、Camembert、Albert、XLM-R、Distilbert等。

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

Transformer-deploy推理服务器用的是Nvidia Triton。

推理引擎为Microsoft ONNX Runtime(用于CPU和GPU推理)和Nvidia TensorRT(仅限 GPU)。

如果想在GPU上获得一流的性能,Nvidia Triton+Nvidia TensorRT这样的组合无疑是最佳选择。

虽然TensorRT用起来有点难,但它确实能比用Pytorch快5~10倍。

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

在实际性能测试中,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的推理速度提高4.5倍,这个trick还能给你省十几万

那前面说的能让Transformer的推理性能进一步提高的小trick是什么呢?

GPU量化(quantization)。

作者表示:

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

不过执行GPU量化需要修改模型源代码(需在矩阵乘法等代价高昂的操作上添加一些叫做QDQ的特定节点),既容易出错,又很无聊,并且还需自己维护修改后的代码。

因此作者已经为多个基于Transformer的模型手动完成了这项工作。

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

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

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

最终,该方法在Roberta-base模型和MNLI数据集(分类任务)上实现了4.53倍的推理速度。

让Transformer的推理速度提高4.5倍,这个trick还能给你省十几万

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

作者表示,与Transformer-deploy原来的版本相比,这已经是一个很大的改进了,毕竟原版本的加速成本需要超过1个点的精确度。

最终他们用Albert、Bert(包括miniLM)、Distilbert、Roberta(包括 Camembert、XLM-R、DistilRoberta等)、Electra测试了该trick。

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

 

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2019-02-25 10:28:53

滴滴员工互联网

2021-03-11 23:38:23

程序员副业兼职

2022-04-27 09:24:22

前端代码速度

2021-12-31 09:34:22

PyTorchtransformer模型

2023-01-08 13:22:03

模型

2024-08-12 12:27:03

2018-09-19 15:46:51

编程语言Python编译器

2020-07-03 15:02:59

芯片半导体技术

2023-07-18 14:19:00

模型AI

2023-12-05 13:25:00

数据训练

2018-10-07 05:27:03

Python代码机器学习

2009-03-30 14:12:38

LinuxUnladenSwallow

2021-11-08 09:50:47

AI 模型人工智能

2021-05-12 11:19:08

DevTools堆栈追踪

2021-03-18 15:29:10

人工智能机器学习技术

2021-07-21 17:03:35

Chrome网络钓鱼浏览器

2023-05-04 07:34:37

Rust代码CPU

2023-03-22 13:53:26

芯片英伟达

2022-04-06 11:10:00

模型训练项目

2024-07-19 09:59:31

点赞
收藏

51CTO技术栈公众号