TensorRT 自定义插件示例

💡 原文英文,约5500词,阅读约需20分钟。
📝

内容提要

本文讨论了在TensorRT中实现和集成自定义插件的方法,并提供了一个具体示例。自定义插件用于加速在NVIDIA GPU上的深度学习推理,并允许用户为TensorRT不支持的神经网络层创建自定义插件。文章提供了创建自定义插件、实现插件类以及在TensorRT中注册插件的代码示例。还演示了如何使用自定义插件构建引擎并运行推理。

🎯

关键要点

  • TensorRT是一个高性能的深度学习推理SDK,支持用户为不支持的神经网络层创建自定义插件。
  • 本文提供了如何在TensorRT中实现和集成自定义插件的具体示例。
  • 创建了一个简单的身份ONNX模型,其中包含三个卷积节点,第二个节点被替换为自定义的IdentityConv节点。
  • 自定义插件类需要从nvinfer1::IPluginV2IOExt或nvinfer1::IPluginV2DynamicExt类派生。
  • IdentityConv插件的enqueue方法被重写,以实现输入张量到输出张量的简单复制。
  • 自定义插件创建者类需要从nvinfer1::IPluginCreator类派生,并实现createPlugin和deserializePlugin方法。
  • TensorRT允许静态和动态注册自定义插件,示例中使用动态注册方法。
  • 自定义插件库可以通过nvinfer1::IPluginRegistry::loadLibrary方法动态加载。
  • 自定义插件可以通过nvinfer1::IBuilderConfig::setPluginsToSerialize方法序列化到TensorRT引擎文件中。
  • 在推理时,可以直接从引擎文件反序列化引擎,而无需加载自定义插件库。
➡️

继续阅读