📘 TensorRT 自定义插件
从入门到精通
🎯 30章 · 完整目录
01
TensorRT与自定义插件概述
什么是TensorRT、为什么需要自定义插件、插件开发的应用场景。
02
开发环境搭建
CUDA与cuDNN安装、TensorRT安装、CMake与编译工具链配置、VS Code开发环境配置。
03
TensorRT核心概念
Builder、Network、Config、Engine、Context、Buffer与Tensor的概念解析。
04
ONNX与模型解析
ONNX基础、使用onnxruntime验证模型、TensorRT解析ONNX的流程与限制。
05
插件接口IPluginV2详解
IPluginV2接口方法、生命周期、序列化与反序列化。
06
插件接口IPluginV2DynamicExt
动态形状支持、getOutputDimensions、supportsFormatCombination。
07
插件接口IPluginV2IOExt
混合精度支持、configurePlugin、attachToContext。
08
编写第一个插件(上)
项目结构、头文件编写、类声明与成员变量。
09
编写第一个插件(下)
实现核心方法、enqueue内核函数、编译与测试。
10
插件注册机制
REGISTER_TENSORRT_PLUGIN宏、插件工厂、命名空间管理。
11
CUDA基础回顾(上)
线程层次、内存模型、Grid与Block配置。
12
CUDA基础回顾(下)
共享内存、同步机制、原子操作与性能优化。
13
插件中的CUDA内核编写
从CPU参考实现到CUDA内核、数据搬运与并行计算。
14
插件调试技巧
使用NVIDIA Nsight进行性能分析、断点调试插件、日志输出。
15
插件性能优化
内存池复用、内核融合、减少显存带宽占用。
16
支持动态形状的插件开发
动态输入处理、输出形状推导、运行时形状适配。
17
支持混合精度的插件开发
FP16/INT8支持、量化感知训练与校准、精度调试。
18
多输入多输出插件
多输入处理、多输出分配、数据流管理。
19
插件中的自定义属性
PluginField与PluginFieldCollection、属性序列化。
20
插件与TensorRT版本兼容性
不同版本API差异、迁移指南、常见兼容性问题。
21
实战案例1:LeakyReLU插件
从需求分析到部署,自定义LeakyReLU插件全流程。
22
实战案例2:RoIAlign插件
目标检测中的经典算子,自定义RoIAlign实现。
23
实战案例3:LayerNorm插件
Transformer模型中的关键算子,自定义LayerNorm。
24
实战案例4:GELU插件
激活函数的精度与性能平衡,自定义GELU。
25
实战案例5:TopK插件
高效实现排序与选择,自定义TopK算子。
26
插件单元测试
使用Google Test编写测试、模拟TensorRT环境、自动化测试流程。
27
插件集成到推理管线
从ONNX导出到插件替换、使用onnx_graphsurgeon修改模型。
28
插件部署与打包
动态库编译、跨平台部署、Docker镜像制作。
29
常见问题与避坑指南
内存泄漏、形状推导错误、精度损失、性能瓶颈排查。
30
总结与进阶方向
自定义插件生态、社区资源、TRT 10新特性展望。