TensorRT
TensorRT 是 NVIDIA 的 SDK,可将训练好的神经网络编译为针对单个 GPU 快速推理优化的引擎。了解它如何优化模型,并查看代码。
TensorRT 是 NVIDIA 提供的 SDK,用于在 NVIDIA GPU 上进行高性能深度学习推理。它接收一个已训练的网络(通常是 ONNX 文件),并在构建阶段将其编译成引擎,也称为计划文件:一种针对特定 GPU 的程序,可融合层、使用较低精度运行,并采用在目标 GPU 上测得速度最快的内核。在运行阶段,应用程序加载并执行该引擎,通常比原始框架具有更低的推理延迟和更高的吞吐量。TensorRT 提供 C++ 和 Python 库,以及 trtexec 命令行工具;截至 2026 年 10 月,其当前主要版本为 TensorRT 11,最新发布版本为 11.4。
TensorRT 如何优化模型#
构建器会对网络图应用多种优化:
- 层与张量融合: 卷积、偏置和激活会合并成一个内核;不再使用其输出的层则会被移除,因此中间结果会保留在芯片上,而不必在 GPU 内存中反复读写。
- 较低精度: 与 FP32 相比,FP16 和 BF16 可将内存流量减半;INT8 和 FP8 又能将流量减半;近期 GPU 上的 INT4(仅用于权重)和 FP4 还能进一步降低流量,这属于模型量化的一种形式。TensorRT 11 移除了 FP16 和 INT8 构建器标志,以及 TensorRT 10 中的隐式 INT8 校准,并改为要求使用强类型网络,由转换节点和量化-反量化对声明每一层的精度。NVIDIA 的 Model Optimizer 可以将这些节点插入 ONNX 文件。
- 内核自动调优: 对于每一层,构建器都会在实际 GPU 上测试候选实现(称为 tactic)的运行时间,并保留最快的实现。
- 内存规划: 生命周期不重叠的层会复用激活缓冲区,从而缩小引擎的内存占用。
- 动态形状: 优化配置文件可设置最小、最优和最大形状,让单个引擎接受不同的批次大小或图像分辨率,并针对最优形状进行调优。
构建引擎可能需要几分钟,而且构建结果取决于硬件。默认情况下,引擎只能在构建它的 GPU 类型和相同 TensorRT 版本上运行;兼容不同硬件和版本的引擎会牺牲部分速度以换取可移植性。因此,部署时会保留 ONNX 文件,并在实际运行环境中构建引擎:
将模型导出为 TensorRT#
Ultralytics YOLO26模型可通过 model.export(format="engine")导出到 TensorRT:该流程会先写出 ONNX 文件,再在本地 GPU 上构建引擎;可以使用 quantize=16 导出为 FP16,或使用 quantize=8 导出为 INT8,并通过 data 数据集中的图像进行校准。在 TensorRT 11 上,由于强类型 API 的要求,导出流程会通过 Model Optimizer 应用这些精度:
from ultralytics import YOLO
# 在本地 NVIDIA GPU 上构建 FP16 TensorRT 引擎(写入 yolo26n.engine)
model = YOLO("yolo26n.pt")
model.export(format="engine", quantize=16)
# 加载引擎,并通过同一 API 运行推理
trt_model = YOLO("yolo26n.engine")
results = trt_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_tensorrt.jpg")保存的图像展示了FP16 引擎在公交车照片上生成的检测结果,使用的接口与 PyTorch 模型的 YOLO 接口相同。
TensorRT 与相关工具的比较#
- ONNX: TensorRT 最常使用的可移植模型格式。一个 ONNX 文件可以编译成分别适用于数据中心 GPU 和嵌入式模块的引擎。
- 搭配 TensorRT 执行提供程序的 ONNX Runtime: 它会将 TensorRT 支持的子图作为 TensorRT 引擎运行,其余部分则回退到 CUDA 或 CPU 内核,同时保留 ONNX Runtime API。
- PyTorch: 大多数模型都在这个框架中训练。Torch-TensorRT可以直接使用 TensorRT 编译 PyTorch 模型,无需单独经过 ONNX 步骤。
- 其他推理引擎: 面向 Intel 硬件的 OpenVINO、面向 Apple 设备的 Core ML,以及面向 Android 和嵌入式设备的 LiteRT,都能在其他芯片上发挥相同作用。
- TensorRT-LLM: NVIDIA 的开源库,用于大型语言模型推理,目前基于 PyTorch 架构,并提供经过优化的注意力内核、量化、推测解码和多 GPU 并行功能。










