前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorRT

TensorRT

作者头像
GPUS Lady
发布2018-04-02 15:33:41
2.4K0
发布2018-04-02 15:33:41
举报
文章被收录于专栏:GPUS开发者

作为Inference(推理)端的SDK的工具,TensorRT是可编程的处理加速器,主要是用来部署神经网络到Inference端之前,对于网络进行优化加速,来提高程序的吞吐量以及降低延迟。TensorRT理论上可以支持所有主流的深度学习框架,目前最新的版本是3.0版,可以支持Caffe 模型的直接导入,还有就是TensorFlow模型转换为UFF格式后的导入。对于其他的framework,需要用户手动的去调用一些API进行模型和参数的导入,而且在TensorRT 3.0里面还加入了对Python接口的支持,原来我们是只支持C++的,目前加入了Python,这样使得导入网络模型可以变得更加容易一些。

TensorRT 能够帮助我们做哪些网络模型优化呢?

大家可以看到上边这个图里面有五大优化方面,这里面着重介绍两个,第一个叫做权重系数和激活值的精度校准,我们知道在Training端,一般计算精度是FP32单精度的。但是在做Inference部署的时候,在整个网络精度变化不大的情况下,我们更关心延迟和吞吐。实际上这也是降低计算精度的一个很常用的方法。比如我们可以将FP32的精度降为FP16或者INT8,由于量化范围缩小,我们只需要在量化过程中做一些动态的校准,TensorRT 就可以自动帮助我们完成校准过程,并且精度损失缩到最小化。

第二个叫做网络层的合并,在网络模型里,通常一个layer(网络层)就需要发射一次Kernel,而在layer比较小的情况下,这种发射的效率是比较低的,因为每次Kernel发射是需要耗时的,并且对GPU的利用率也不会很高。这时TensorRT 就可以自动地去检测一些可以合并的来源,把它们合并成一个比较大的Kernel发射,减少Kernel发射并且提升GPU的利用率。关于其他的一些优化方法,大家可以再参考TensorRT 用户手册进行详细的了解。

TensorRT的部署流程可以分成两部分。

首先是向TensorRT 导入训练好的网络模型、参数,输入一组测试集数据,这个数据集不用太大。在TensorRT 启动之后,会根据我们刚才所说的几大优化方式依次对网络模型进行优化,对于规模不大的网络,这个过程可能需要耗费几分钟的时间。在执行完成之后,它会输出一个优化策略,如上图所示的Plan。这时我们可以选择将这个优化策略以序列化的方式导出到磁盘文件进行存储,这样,这个策略文件就可以被复制以及移植到不同的设备端来使用。

接下来我们就可以拿着这个优化策略文件连通TensorRT 的引擎,一起部署到线上服务端。

我们在上面这幅图里给出了两组TensorRT 3.0 Performance的benchmark,左侧的benchmark是对一个CNN网络ResNet-50的测试结果,大家可以先看第二和第四个柱状图,这里面是比较了使用V100 加TensorFlow,也就是不用TensorRT做优化 ,然后直接做Inference,此时的吞吐量是305,在使用TensorRT 加速以后,吞吐量提升到5707,大概是20倍的性能提升。另外,大家再看第三和第四个柱状图,可以看到同样使用FP16的计算精度,Tesla V100比Tesla P100提升了大概3倍多的性能,这主要得益于Tensor Core的加速。

右边的benchmark是对一个RNN网络OpenNMT的测试结果。大家可以先来看二和四这两个柱状图,使用Tesla V100+Torch直接做Inference,这时候吞吐量是26.16,我们用TensorRT 加速以后,吞吐量直接提升到了541,加速比可以达到20倍以上。我们再来看第三和第四,比较一下Tesla P100和Tesla V100的加速,可以看出Tesla V100大概比Tesla P100加速比在1.5倍左右,这主要是因为我们在该网络模型里使用FP32进行Inference,无法使用Tensor Core进行加速,实际上TensorRT 目前对RNN网络只能支持FP32的精度,还不能支持到FP16。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档