1. 课程导入

自动驾驶系统本质上是一台在移动中持续做决策的实时计算机。车辆通过摄像头、激光雷达、毫米波雷达、IMU 与 GNSS 获取环境信息,感知模型把原始传感器数据转换为目标框、车道线、可行驶区域、深度与占据栅格等结构化结果,预测模块推断其他交通参与者的未来轨迹,规划与控制模块再生成安全、平滑的行驶动作。整条链路中,感知模型的计算量最大、时延最敏感、对算力平台依赖最强,因此模型部署与推理优化成为自动驾驶工程落地的核心能力之一。

以典型的城市 NOA 场景为例:8 路摄像头以 30 FPS 输出图像,BEV 感知网络需要在约 33 ms 内完成多视角特征提取、时空融合与检测头解码;激光雷达点云以 10 Hz 输入,需要与视觉特征在统一 BEV 空间对齐。若单帧感知耗时超过 50 ms,规划控制就会拿到过期信息,车辆在高速场景下可能已经前进了 1.4 米以上,安全冗余被显著压缩。这正是推理优化要解决的问题:在有限功耗与算力约束下,把模型稳定地跑进实时预算。

一、从训练到车端的部署全景

一个感知模型从实验室走向量产车,通常经历如下阶段:数据采集与标注、模型训练与验证、模型导出、图优化与量化、推理引擎构建、车端集成、性能与精度回归测试。训练框架多为 PyTorch,导出格式常见 ONNX;但 ONNX 只是中间表示,真正决定车端性能的是推理引擎如何针对具体 GPU 架构做算子融合、精度选择和内存调度。

PyTorch 训练模型 (.pth)
   ↓ torch.onnx.export
ONNX 计算图 (.onnx)
   ↓ TensorRT Builder(解析 + 优化 + 量化)
TensorRT 引擎 (.plan / .engine)
   ↓ 车载推理运行时
CUDA / GPU 执行 + 后处理

这条链路中,任何一环的配置不当都会导致性能或精度损失。例如 ONNX 中动态 shape 设置过宽,会让 TensorRT 生成多个 kernel 并增加调度开销;量化校准集分布与真实路测数据不一致,会造成检测召回率下降。因此部署不是简单的“格式转换”,而是训练、编译、运行时三者协同的系统工程。

二、TensorRT 在车载计算平台中的定位

TensorRT 是 NVIDIA 提供的高性能深度学习推理 SDK,位于深度学习框架与 GPU 硬件之间。它不负责训练,而是专注于把已训练好的网络编译成针对特定 GPU 架构高度优化的推理引擎。在车载计算平台(如 NVIDIA Orin、Xavier、Thor)上,TensorRT 与 CUDA、cuDNN、CUDA Graph、NvMedia 等共同构成推理栈,向上承接感知、预测模型,向下调度 GPU 的 Tensor Core、CUDA Core 与显存带宽。

TensorRT 的核心价值体现在四个层面:

  • 图层优化:合并 Conv+BN+ReLU,消除无意义 transpose,减少 kernel 启动次数。
  • 精度优化:支持 FP32、FP16、INT8,甚至 FP8(新一代平台),在精度可接受前提下大幅提升吞吐。
  • 内核自动调优:针对每一层在目标 GPU 上搜索最优实现,而非使用通用 kernel。
  • 显存与流调度:通过 workspace 复用、多流并行、CUDA Graph 捕获降低端到端时延。
TensorRT 不是“加速开关”,而是编译器。同一模型在不同 GPU、不同 batch、不同精度策略下,生成的引擎完全不同,必须按目标平台分别构建与验证。

三、整体课程框架与学习目标

本课程围绕“能部署、能跑快、能跑稳”三个目标展开,共 30 章,分为五个阶段:

阶段核心内容产出能力
基础认知部署全景、TensorRT 定位、环境搭建理解推理栈与工具链
模型转换ONNX 导出、动态 shape、算子兼容把模型正确送入 TensorRT
性能优化FP16/INT8 量化、层融合、CUDA Graph把时延压进实时预算
车端集成多流并行、内存复用、ROS/中间件对接完成量产级集成
调优与复盘Profiling、精度回归、故障排查定位并解决性能瓶颈

学习完本课程后,你应当能够独立完成一个 BEV 感知模型从 PyTorch 到 Orin 平台的部署,读懂 TensorRT 日志,使用 Nsight Systems 定位瓶颈,并在精度损失可控的前提下选择合适的量化策略。

四、常见误区与学习建议

初学者最容易陷入三个误区。第一,把 TensorRT 当成“一键加速”,忽略算子兼容性与动态 shape 配置,导致引擎构建失败或性能不达预期。第二,只关注单层耗时,忽略端到端流水线,实际上前后处理、内存拷贝、同步等待往往占据大量时间。第三,量化后不做精度回归,仅看 mAP 均值,忽略小目标、远距离目标与夜间场景的召回下降。

建议每完成一次优化,都记录三组数据:端到端时延、GPU 利用率、精度指标。没有基线的优化等于盲调。

下面这张图概括了从传感器输入到车端执行的推理部署全景,以及 TensorRT 在其中的位置。后续章节将沿着这条链路逐层展开。

自动驾驶感知推理部署全景与 TensorRT 定位 传感器输入 摄像头 ×8 激光雷达 毫米波雷达 / IMU GNSS 预处理 Resize / Normalize 点云体素化 时间戳对齐 NvMedia / CUDA TensorRT 推理引擎 层融合 · 精度选择 Kernel 自动调优 显存复用 · 多流 CUDA Graph 捕获 FP16 / INT8 / FP8 后处理与输出 NMS / 解码 BEV 特征图 目标框 / 车道线 占据栅格 预测 · 规划 · 控制 轨迹预测 → 行为决策 → 横纵向控制 车载计算平台(NVIDIA Orin / Xavier / Thor) GPU Tensor Core CUDA / cuDNN TensorRT Runtime 显存 / 带宽 功耗约束 推理结果

这张图把“传感器—预处理—TensorRT 引擎—后处理—下游模块”的主链路与车载硬件平台放在同一视图中。可以看到,TensorRT 并不是孤立工具,而是连接模型与硬件的编译层。理解它的边界与能力,是后续所有优化工作的前提。

部署优化的第一原则是“先测量,再优化”。在没有 Profiling 数据之前,不要凭直觉修改量化精度或 batch 配置,否则很容易在精度和性能之间做出错误取舍。