好久不见各位!想我不?
经历了五一还有点后遗症,感觉还没有休息够,时间过得太快了啊啊啊。
希望大家也能及时调整工作状态,搞起来搞起来!
为了更方便地搞起来,早点进入状态。老潘为大家准备了TensorRT入门指北,一起来看看吧!保你看得爽!
搞起搞起大名鼎鼎的TensorRT有多牛逼就不多说了,因为确实很好用。
作为在英伟达自家GPU上的推理库,这些年来一直被大力推广,更新也非常频繁,issue反馈也挺及时,社区的负责人员也很积极,简直不要太NICE。
只是TensorRT的入门门槛略微高一点点,劝退了一部分玩家。一部分原因是官方文档也不够详细(其实也挺细了,只不过看起来有些杂乱)、资料不够;另一部分可能是因为TensorRT比较底层,需要一点点C++和硬件方面的知识,相较学习Python难度更大一点。
不过吐槽归吐槽,TensorRT官方文档依旧是最权威最实用的查阅手册,另外TensorRT也是全面支持Python的,不习惯用C++的小伙伴,用Python调用TensorRT是没有任何问题的。
你懂得一直也想写TensorRT的系列教程,也顺便整理一下自己之前做的笔记。拖了好久的TensorRT入门指北终于写完了。
本教程基于目前(-4-26)最新版TensorRT-7.2.3.4,TensorRT更新频繁,TensorRT-8可能不久也会发布,不过TensorRT对于向下兼容的API做的还是比较好的,不必担心太多的迁移问题。
今天简单一刷(-5-5),TensorRT终于发布8版本了,仍然是尝鲜的EarlyAccess(EA),官方release[1]。不过TensorRT8-EA版一些功能不是很稳定,我们先不着急使用。尝鲜的小伙伴们可以先试试,生产环境版本建议先不要动。
之前老潘也写过一些关于TensorRT文章,其中的部分内容也会整合到这一系列中,方便查阅:
利用TensorRT对深度学习进行加速利用TensorRT实现神经网络提速(读取ONNX模型并运行)实现TensorRT自定义插件(plugin)自由!(抛砖引玉)TensorRT的FP16精度问题?怎么办?在线支招!不废话了,直接开始吧~
附上TensorRT官方文档[2]链接。
什么是TensorRTTensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个C++推理框架。我们利用Pytorch、TF或者其他框架训练好的模型,可以转化为TensorRT的格式,然后利用TensorRT推理引擎去运行我们这个模型,从而提升这个模型在英伟达GPU上运行的速度。速度提升的比例是比较可观的。
借官方的话来说:
ThecoreofNVIDIA?TensorRT?isaC++librarythatfacilitateshigh-performanceinferenceonNVIDIAgraphicsprocessingunits(GPUs).TensorRTtakesatrainednetwork,whichconsistsofanetworkdefinitionandasetoftrainedparameters,andproducesahighlyoptimizedruntimeenginethatperformsinferenceforthatnetwork.TensorRTprovidesAPIsviaC++andPythonthathelptoexpressdeeplearningmodelsviatheNetworkDefinitionAPIorloadapre-definedmodelviatheparsersthatallowTensorRTtooptimizeandrunthemonanNVIDIAGPU.TensorRTappliesgraphoptimizations,layerfusion,amongotheroptimizations,whilealsofindingthefastestimplementationofthatmodelleveragingadiversecollectionofhighlyoptimizedkernels.TensorRTalsosuppliesaruntimethatyoucanusetoexecutethisnetworkonallofNVIDIA’sGPU’sfromtheKeplergenerationonwards.TensorRTalsoincludesoptionalhighspeedmixedprecisioncapabilitiesintroducedintheTegra?X1,andextendedwiththePascal?,Volta?,Turing?,andNVIDIA?AmpereGPUarchitectures.
TensorRT支持的平台如下:
TensorRT支持的硬件平台支持计算能力在5.0及以上的显卡(当然,这里的显卡可以是桌面级显卡也可以是嵌入版式显卡),我们常见的RTX30系列计算能力是8.6、RTX20系列是7.5、RTX10系列是6.1,如果我们想要使用TensorRT,首先要确认下我们的显卡是否支持。
至于什么是计算能力(ComputeCapability),咋说嘞,计算能力并不是描述GPU设备计算能力强弱的绝对指标,准确的说,这是一个架构的版本号。一般来说越新的架构版本号更高,计算能力的第一个数值也就最高(例如计算能力8.6),而后面的6代表在该架构前提下的一些优化特性,具体代表什么特性可以看这里: