TensorRT 是什么:定位、解决什么问题与核心术语
TensorRT 是什么:定位、解决什么问题与核心术语
TensorRT 是 NVIDIA 官方推出的 GPU 推理优化 SDK。它接收训练好的模型(通常先导出成 ONNX),经过图优化与精度校准之后,编译成与目标 GPU 架构绑定的 engine,序列化到磁盘上就是常说的 plan 文件。TensorRT 不参与训练,它只负责把推理这一步做得更快、更省显存。
训练框架的算子是细粒度的:一次卷积在 PyTorch 里可能拆成多个 kernel,每次 kernel launch 都有固定开销,中间张量还要反复写回显存。这些开销在训练时无所谓,在推理时就变成了延迟的大头。TensorRT 主要从四个方向解决它:一是层融合,把 Conv + Bias + ReLU 这类组合合成一个 kernel,减少访存次数与启动次数;二是精度量化,用 FP16 或 INT8 代替 FP32,在精度可接受的前提下提升吞吐;三是 kernel 自动选型,builder 会在候选 tactic(同一算子的不同 kernel 实现)里实测耗时,挑最快的一个;四是显存规划,为张量安排可复用的显存块,压低峰值占用。
与相邻方案的区别要分清:PyTorch eager 适合调试,不适合抠极限延迟;torch.compile 走的是通用编译路线,跨后端,部署形态更灵活;ONNX Runtime 是跨厂商运行时,支持把 TensorRT 作为其中一个 execution provider,方便做兼容性兜底;OpenVINO 面向 Intel 硬件;TVM 是通用深度学习编译器。简单说,如果目标硬件确定是 NVIDIA GPU、延迟与吞吐又是硬指标,TensorRT 通常就是最终落地的那一层。
几个必须记住的术语:
- ONNX Parser:把 ONNX 图翻译成 TensorRT 网络定义,不支持或语义不符的算子会在这里直接报错。
- Builder / BuilderConfig:负责优化与编译,workspace 上限、精度标志、tactic 来源都在这里配置。
- Engine:编译产物,与 GPU 架构(SM 版本)以及 TensorRT 大版本绑定,不能随手搬到别的卡上。
- Context:执行上下文,持有推理时的中间激活显存,一个 engine 可以创建多个 context 做并发。
- Tactic:某个层的具体 kernel 实现,builder 会实测挑选,也可以用 tactic source 限制来源。
- Optimization Profile:动态 shape 场景下的输入形状声明,含 min / opt / max 三档。
- Calibrator:INT8 量化时用代表性数据统计激活值分布,生成 scale 因子与校准缓存。
- Plugin:TensorRT 原生不支持的算子,用自定义 kernel 补齐。

