本系列为新TensorRT的第一篇,为什么叫新,因为之前已经写了两篇关于TensorRT的文章,是关于TensorRT-5.0版本的。好久没写关于TensorRT的文章了,所幸就以新来开头吧。
接下来将要讲解的TensorRT,将会是基于7.0版本。
7版本开头的TensorRT变化还是挺大的,增加了很多新特性,但是TensorRT的核心运作方式还是没有什么变化的,关于TensorRT的介绍可以看之前写的这两篇:
利用TensorRT对深度学习进行加速利用TensorRT实现神经网络提速(读取ONNX模型并运行)本文的内容呢,主要是讲解:
TensorRT自定义插件的使用方式如何添加自己的自定义算子看完本篇可以让你少踩巨多坑。
前言随着tensorRT的不断发展(v5-v6-v7),TensorRT的插件的使用方式也在不断更新。插件接口也在不断地变化,由v5版本的IPluginV2Ext,到v6版本的IPluginV2IOExt和IPluginV2DynamicExt。未来不知道会不会出来新的API,不过这也不是咱要考虑的问题,因为TensorRT的后兼容性做的很好,根本不用担心你写的旧版本插件在新版本上无法运行。
目前的plugin-API:
TensorRT插件TensorRT插件的存在目的,主要是为了让我们实现TensorRT目前还不支持的算子,毕竟众口难调嘛,我们在转换过程中肯定会有op不支持的情况。这个时候就需要使用TensorRT的plugin去实现我们的自己的op。此时我们需要通过TensorRT提供的接口去实现自己的op,因此这个plugin的生命周期也需要遵循TensorRT的规则。
一个简单的了解那么plugin到底长啥样,可以先看看TensorRT的官方plugin库长啥样,截止写这篇文章时,master分支是7.2版本的plugin: