一句话定义
TensorRT 是英伟达(NVIDIA)提供的一套推理加速工具包(SDK),作用是把已经训练好的模型“编译”成在 NVIDIA GPU 上运行更快的推理引擎(engine)。
它到底做了什么
训练框架(如 PyTorch、TensorFlow)输出的是通用计算图,图里往往有大量可以合并、可以省略的操作。TensorRT 接手后会做几件事:
- 算子融合:把卷积、批归一化、激活函数这些相邻计算合成一个核函数(kernel),少读写几次显存。
- 内核挑选:同一个卷积有很多种实现,它针对你的 GPU 型号、输入尺寸、批次大小,挑一个实测更快的。
- 精度压缩:用 FP16 或 INT8 做量化推理,吞吐能明显上去,代价是要校准、可能掉精度。
- 显存与调度优化:提前规划显存、去掉推理用不到的分支。
打个比方:模型像一份“现点现做”的菜谱,每次上菜才切菜、配料、下锅;TensorRT 是把菜谱改成中央厨房的流水线作业单——该并行的并行,该预处理的预处理,最后端出的是半成品,出餐自然更快。
和 ONNX 的分工
这两个词经常一起出现,但负责的事完全不同。ONNX 是格式标准,管“能不能流通”;TensorRT 是加速后端,管“跑得快不快”。
| 概念 | 定位 | 解决什么问题 |
|---|---|---|
| ONNX | 开放的模型交换格式(中间表示) | 让不同框架、不同运行时之间能互相读模型 |
| ONNX Runtime | 跨平台推理运行时 | 一套代码在 CPU/GPU 等多种硬件上跑 |
| TensorRT | NVIDIA GPU 专用推理编译器 + 运行时 | 在 NVIDIA GPU 上把延迟压低、吞吐拉高 |
常见链路是:PyTorch 训练 → 导出 ONNX → 交给 TensorRT 编译成引擎。也就是说 ONNX 是“中转站”,TensorRT 是“终点加速器”,两者是接力关系,不是竞品。
对从业者的实际意义
部署阶段,TensorRT 是压延迟、提吞吐的常用手段,尤其适合视频分析、推荐系统、语音识别、自动驾驶感知这类要大量推理的场景。但它有代价:编译要花时间;换 GPU 架构、换输入尺寸或批次,可能要重新编译或准备多份引擎;INT8 需要校准数据,精度要验证;可移植性差,绑定 NVIDIA 硬件。版本、支持矩阵和接口细节请以官方文档为准。
对普通人来说,它藏在你用的语音助手、相机人像模式、视频审核背后——你感受到的“快”,有一部分就来自这类编译优化。记住一句话:TensorRT 不训练模型,它只负责让训练好的模型在 NVIDIA GPU 上跑得更快。
