1. 课程导入

自动驾驶系统本质上是一台在移动中持续做决策的实时计算机。车顶的激光雷达、前视摄像头、环视鱼眼、毫米波雷达每秒产生数百 MB 的原始数据,感知模型要在几十毫秒内完成检测、分割、跟踪与预测,再把结果交给规划控制模块。这条链路中,推理部署是把训练好的神经网络真正变成车上可运行、可量产、可迭代的工程能力的关键环节。

从工程视角看,一个自动驾驶感知模型的生命周期大致分为四段:数据采集与标注、模型训练与验证、模型转换与量化、车端推理与监控。前两段属于算法团队的主战场,后两段则高度依赖部署工程师对硬件、编译器和数值精度的理解。很多在服务器上 mAP 表现优异的模型,一旦上车就出现延迟抖动、内存溢出或精度骤降,问题往往不在网络结构,而在部署链路。

自动驾驶感知推理部署全景链路 传感器输入 摄像头 8MP 激光雷达 128线 毫米波雷达 IMU / GNSS 预处理 去畸变 / 对齐 归一化 / 缩放 张量排布 NHWC 量化校准数据 模型转换 ONNX 导出 图优化 / 算子融合 INT8 量化 校准表生成 推理引擎 TensorRT / ORT CUDA / DLA 内存复用 多流并行 感知输出 3D 检测框 语义分割 目标跟踪 ID 轨迹预测 关键约束 延迟 ≤ 50 ms 功耗 ≤ 30 W 内存 ≤ 2 GB 精度损失 ≤ 1% mAP 功能安全 ASIL-B 低精度推理价值 FP32 → INT8:吞吐提升 2~4 倍,带宽降低 4 倍 量化部署挑战 激活值离群、算子不支持、校准偏差、精度回退

低精度推理与量化的价值

车端算力永远是稀缺资源。以主流 Orin-X 平台为例,单颗芯片的 INT8 峰值算力约 254 TOPS,但 FP32 只有约 1/4。如果感知模型全部以 FP32 运行,算力预算会迅速被吃满,留给规划控制和冗余备份的空间所剩无几。低精度推理的核心价值,就是把模型从高比特宽压到低比特宽,在可接受的精度损失内换取吞吐、延迟、功耗和内存的全面收益。

量化是最常用的低精度手段。它把 FP32 的权重和激活值映射到 INT8 整数域,用缩放因子和零点描述数值范围。典型收益包括:权重体积缩小 4 倍,激活带宽降低 4 倍,Tensor Core 的 INT8 吞吐通常是 FP32 的 2~4 倍。对于 BEV 感知、多相机融合这类计算密集模型,量化往往是能否满足 50 ms 延迟预算的决定性因素。

量化不是简单的“降精度”,而是一次数值表示的重建。校准集选择、逐层敏感度分析、混合精度策略,共同决定最终精度能否守住。

方法流程:从训练模型到车端引擎

一个可落地的量化部署流程通常包含以下步骤,每一步都有明确的输入输出和验收标准:

  1. 模型导出:将 PyTorch 模型导出为 ONNX,固定动态轴,清理自定义算子。
  2. 图优化:常量折叠、算子融合、消除冗余 transpose,减少推理节点数。
  3. 校准:用真实驾驶场景的校准集统计激活值分布,生成每层缩放因子。
  4. 量化:执行 PTQ 或 QAT,对敏感层保留 FP16,形成混合精度图。
  5. 引擎构建:用 TensorRT 或 ONNX Runtime 编译为车端可加载的 engine。
  6. 精度与性能验证:对比量化前后 mAP、延迟 P99、内存占用与功耗。
# 典型 TensorRT INT8 校准配置片段
calibrator:
  type: EntropyCalibrator2
  batch_size: 8
  cache_file: calib.cache
  calibration_dataset: /data/calib_1000_frames
quantization:
  precision: INT8
  fallback_layers:
    - detection_head.cls_logits
    - detection_head.bbox_pred
  per_channel: true

案例场景:BEV 感知模型的量化落地

某量产项目使用多相机 BEV 检测模型,输入 6 路 1920×1080 图像,主干为 ResNet-50 加 BEV 编码器。FP32 版本在 Orin 上单帧延迟 92 ms,无法满足 50 ms 预算。团队按以下路径优化:先将主干与 BEV 编码器做 INT8 量化,检测头保留 FP16;再对图像预处理做 CUDA 加速;最后启用 DLA 卸载部分卷积。最终单帧延迟降到 41 ms,mAP 从 0.612 降到 0.607,精度损失仅 0.5 个百分点,功耗下降约 35%。

这个案例说明,量化收益并非来自单一技术,而是量化策略、算子融合、硬件卸载和预处理优化共同作用的结果。部署工程师需要同时理解模型结构和硬件特性,才能找到最优组合。

常见误区与复盘

  • 误区一:量化一定掉点严重。实际上,经过良好校准的 INT8 量化,在检测和分割任务上通常只损失 0.5%~1.5% mAP。
  • 误区二:校准集随便抽几帧就行。校准集必须覆盖夜间、雨天、逆光、拥堵等真实分布,否则激活范围估计偏差会直接放大误差。
  • 误区三:只看平均延迟。车端更关注 P99 延迟和抖动,平均值达标不代表最坏情况安全。
  • 误区四:忽略算子支持。某些自定义算子无法量化,会回退到 FP32,形成性能瓶颈,需要提前做算子映射检查。
阶段 核心任务 关键指标 常见风险
模型导出 ONNX 固化与算子检查 导出成功率、算子覆盖率 动态轴未固定、自定义算子缺失
图优化 融合与常量折叠 节点数下降比例 融合后数值偏差累积
量化校准 激活分布统计 校准集覆盖率、KL 散度 校准集分布偏移
引擎构建 编译与内存规划 构建时间、显存占用 层回退、显存碎片
验证上线 精度与性能回归 mAP、P99 延迟、功耗 精度回退超阈值、抖动超标
建议在项目早期就建立“精度-延迟-功耗”三维基线,每次量化改动都对照基线评估,避免后期返工。

课程学习目标与整体框架

本课程围绕“低精度推理与量化部署”这条主线展开,目标是让学习者具备独立完成车端感知模型量化部署的能力。具体包括:理解量化数学原理与误差来源;掌握 PTQ 与 QAT 的工程流程;熟悉 TensorRT、ONNX Runtime 等主流工具链;能够分析精度回退并制定混合精度策略;最终能在真实或仿真车端平台上完成端到端部署与调优。

课程整体分为五个模块:基础原理、量化方法、工具链实操、性能优化、量产落地。每个模块都配有可运行的代码示例和真实场景案例,帮助你把知识转化为工程能力。

量化部署没有“一招通吃”的方案。不同模型结构、不同硬件平台、不同精度要求,都需要针对性调优。请务必以实测数据为准,不要盲目套用他人配置。