TensorRT 安装与运行维护科普 · Dylan AI Agent Nexus

TensorRT · Graph Optimization · Quantization · Deployment

什么是 TensorRT

TensorRT 是 NVIDIA 面向推理场景的高性能引擎,提供图级优化、算子融合、内存复用与低精度(FP16/INT8)量化等能力,用于显著降低时延、提升吞吐与显存效率。

  • 与驱动/CUDA/cuDNN:TensorRT 依赖 GPU 驱动与 CUDA 运行时,底层复用 cuDNN/自研内核。
  • 与框架:通常从 PyTorch/TF 导出 ONNX,再由 TensorRT 构建引擎(engine)用于上线。

版本匹配与获取(原则)

  • 版本矩阵:确保 驱动 ↔ CUDA ↔ cuDNN ↔ TensorRT ↔ 框架/ONNX 的兼容关系;优先参考官方发布矩阵。
  • 获取渠道:从 NVIDIA 官方获取与当前 CUDA 对应的 TensorRT;容器环境推荐使用官方镜像。
  • 升级策略:新版本先在灰度环境进行性能/精度回归,确认无回归后再推广。

本页不提供安装教程,聚焦“它做什么、如何用与注意什么”。

引擎构建与部署流程(概念)

  • 模型导出:从训练框架导出 ONNX(或直接使用 FX/Torch-TensorRT 流程)。
  • Builder 与优化:使用 TensorRT Builder 解析图、选择内核、融合算子、规划内存。
  • 低精度:FP16 无需标定即可提速;INT8 需校准(校准集要代表真实分布)。
  • 动态形状:为可变尺寸输入设置 optimization profiles,避免形状不匹配。
  • 部署:将生成的 .engine 与 Runtime 集成到服务中,按需加载到指定 GPU。

性能与精度(权衡与实践)

  • FP16/INT8:FP16 常见于通用加速;INT8 可进一步提速与省显存,但需校准数据与量化感知。
  • 批处理与并发:合理设置 batch 与并发请求,配合多流/多实例提升吞吐。
  • 插件算子:遇到不支持的算子可用插件实现;注意跨版本 ABI 与维护成本。
  • 内存规划:避免显存碎片;评估多引擎共存下的峰值显存与上下文开销。

运行时要点

  • Engine 兼容性:引擎与 TensorRT/CUDA/驱动版本相关,跨机/跨版本可能需要重新构建。
  • 多 GPU 部署:绑定设备可见性(CUDA_VISIBLE_DEVICES),并监控每卡利用率与温度。
  • 可观察性:记录引擎构建日志、时延/吞吐分位数与失败率,便于容量评估与排障。

常见问题与排错

  • 解析/构建失败:排查 ONNX 导出是否包含不支持算子或动态形状未配置;必要时使用简化器或插件。
  • 精度下降:INT8 校准集不代表真实分布;尝试更大/更真实的校准数据或保留关键层为 FP16/FP32。
  • 时延抖动:检查温度降频、PCIe 带宽、批量/并发设置与显存碎片;评估多实例策略。
  • 跨版本不兼容:统一到已验证的 驱动/CUDA/cuDNN/TensorRT 组合;必要时重构引擎。

经验法则:先通再快——先保证正确性与稳定,再逐步引入低精度与并发优化。

维护与合规

  • 版本留痕:记录引擎构建所用的 TensorRT/CUDA/驱动版本、导出参数与校准集信息,便于复现。
  • 最小权限:限制生产环境对引擎与 DLL/SO 的修改;灰度发布与回滚预案必不可少。
  • 资产管理:为引擎与校准数据建立仓库与签名机制,确保可追踪与完整性。
已模拟提交:数据已缓存到本地(等待后端 API 接入)