
真实世界的推理场景从不按固定尺寸排版:手机相册里一张 1280×720 的自拍、车载摄像头捕获的 4K 环视流、医疗 CT 重建中跨度达 512×512×300 的三维体素序列——它们拒绝被裁剪、拒绝被填充、拒绝被降采样为统一的"标准答案"。本章所探讨的三项高级特性,正是 TensorRT 从"面向 Benchmark 的推理优化"迈向"面向真实物理世界的 AI 工程化"的分水岭:动态形状让引擎摆脱静态模具的桎梏,自定义插件让引擎接纳任何未知算子,多流与多上下文让引擎在并发洪峰中保持低延迟高吞吐。三者并非孤立技巧,而是共同构成一张"可重构铸模":动态形状定义输入空间的弹性边界,插件定义计算语义的扩展通道,多流上下文定义执行资源的调度骨架。
| 小节 | 主题 | 核心交付物 |
|---|---|---|
| 5.1 动态形状(Dynamic Shapes)处理 | 形状从编译期常量升格为运行时变量 | OptimizationProfile 配置与内存模型 |
| 5.2 自定义算子插件(Plugins)开发 | 以接口契约扩展原生算子边界 | IPluginV2 接口族与序列化协议 |
| 5.3 多流并行与多上下文 | 用流与上下文编织并发执行骨架 | 并发范式选型与内存三律 |
三节内容形成一条递进线索:5.1 解决"模型输入形状不固定怎么办",5.2 解决"标准算子不够用怎么办",5.3 解决"请求并发上来了怎么调度"。在实际工程中三者往往同时出现——一个支持动态 batch 的检测服务,通常同时部署自定义 NMS 插件,并以多 Context 多 Stream 支撑在线请求。建议以 5.1 为起点建立契约思维,再依次掌握插件接口与并发范式;若为现有静态服务做改造,可直接从 5.3 的调度方案入手获得即时吞吐收益,再逐步引入动态形状与自定义算子。