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 捕获降低端到端时延。
三、整体课程框架与学习目标
本课程围绕“能部署、能跑快、能跑稳”三个目标展开,共 30 章,分为五个阶段:
| 阶段 | 核心内容 | 产出能力 |
|---|---|---|
| 基础认知 | 部署全景、TensorRT 定位、环境搭建 | 理解推理栈与工具链 |
| 模型转换 | ONNX 导出、动态 shape、算子兼容 | 把模型正确送入 TensorRT |
| 性能优化 | FP16/INT8 量化、层融合、CUDA Graph | 把时延压进实时预算 |
| 车端集成 | 多流并行、内存复用、ROS/中间件对接 | 完成量产级集成 |
| 调优与复盘 | Profiling、精度回归、故障排查 | 定位并解决性能瓶颈 |
学习完本课程后,你应当能够独立完成一个 BEV 感知模型从 PyTorch 到 Orin 平台的部署,读懂 TensorRT 日志,使用 Nsight Systems 定位瓶颈,并在精度损失可控的前提下选择合适的量化策略。
四、常见误区与学习建议
初学者最容易陷入三个误区。第一,把 TensorRT 当成“一键加速”,忽略算子兼容性与动态 shape 配置,导致引擎构建失败或性能不达预期。第二,只关注单层耗时,忽略端到端流水线,实际上前后处理、内存拷贝、同步等待往往占据大量时间。第三,量化后不做精度回归,仅看 mAP 均值,忽略小目标、远距离目标与夜间场景的召回下降。
下面这张图概括了从传感器输入到车端执行的推理部署全景,以及 TensorRT 在其中的位置。后续章节将沿着这条链路逐层展开。
这张图把“传感器—预处理—TensorRT 引擎—后处理—下游模块”的主链路与车载硬件平台放在同一视图中。可以看到,TensorRT 并不是孤立工具,而是连接模型与硬件的编译层。理解它的边界与能力,是后续所有优化工作的前提。