1. 课程导入

自动驾驶系统本质上是一台“在高速移动中持续做感知、预测、规划与控制决策的实时计算机”。它与传统车载电子控制单元最大的不同在于:输入不再是少量标量信号,而是多路摄像头、激光雷达、毫米波雷达、超声波、IMU、GNSS 与高精地图等异构数据;输出也不再是单一执行指令,而是包含目标检测、语义分割、车道线、Occupancy、轨迹预测、行为决策与横纵向控制的复合结果。要让这些结果在几十毫秒内稳定产生,计算平台必须同时具备高吞吐、低时延、确定性与可扩展性。

一、自动驾驶计算需求的四个维度

理解推理调度工程,首先要看清需求从哪里来。自动驾驶计算需求可以拆成四个维度:算力规模、时延约束、数据吞吐与安全确定性。算力规模决定模型能否跑得动,时延约束决定车辆能否及时反应,数据吞吐决定传感器能否被完整消费,安全确定性决定系统在极端场景下是否仍然可控。

  • 算力规模:BEV、Transformer、Occupancy 与端到端模型使单帧推理从数十 GOPS 上升到数百 TOPS 量级,且多模型需并行常驻。
  • 时延约束:感知链路通常要求 30~100 ms 端到端闭环,控制周期甚至进入 10 ms 级,抖动比平均值更致命。
  • 数据吞吐:8 路 1080p 摄像头原始数据可达数 GB/s,激光雷达点云与多传感器时间同步进一步放大带宽压力。
  • 安全确定性:关键任务不能被非关键任务长期抢占,必须可预测、可隔离、可降级、可回滚。
核心判断:自动驾驶推理调度不是“把模型跑起来”,而是在有限异构算力上,让多个模型、多个任务、多个安全等级在时间与资源上同时满足约束。

二、异构算力挑战:为什么不能只用一种芯片

车载计算平台通常由 CPU、GPU、NPU、DSP、ISP、MCU 以及专用加速器组成。CPU 擅长逻辑控制、任务编排与不规则计算;GPU 擅长高并行浮点与矩阵运算;NPU 擅长定点/低比特神经网络推理;DSP 擅长信号处理与固定流水线;MCU 负责安全监控与实时控制。它们通过 PCIe、片上网络、共享内存与高速缓存互联,形成典型的异构计算拓扑。

异构带来三类挑战。第一是编程与调度碎片化:不同芯片有不同运行时、内存模型与同步机制,任务迁移成本高。第二是资源竞争与干扰:GPU 上的多个模型会争抢 SM、显存带宽与 L2,NPU 上的多任务会争抢片上缓存与 DMA 通道。第三是确定性与利用率矛盾:为了安全要预留资源,为了性能又要尽量填满流水线,调度策略必须在两者之间取得平衡。

自动驾驶异构算力推理调度总体关系 传感器输入 摄像头 / 激光雷达 毫米波 / IMU / GNSS 高精地图 / 车身信号 推理任务集合 BEV 感知 / 目标检测 轨迹预测 / 规划决策 Occupancy / 端到端模型 异构计算资源 CPU / GPU / NPU DSP / ISP / MCU 共享内存 / DMA / 互联 车辆控制输出 横向控制 / 纵向控制 安全降级 / 最小风险 执行器指令 推理调度工程核心层 任务编排 · 资源分配 · 时延控制 · 优先级与隔离 · 动态降级 批处理 · 流水线 · 内存复用 · 多模型并发 · 端到端可观测 调度目标与约束 低时延 端到端 < 100 ms 高吞吐 多模型并发常驻 确定性 抖动可控可预测 安全隔离 关键任务优先保障

三、推理调度工程的目标

推理调度工程的目标可以概括为一句话:在给定异构硬件与安全约束下,最大化有效算力利用率,同时保证关键任务的时延与确定性。具体可分解为五个可度量目标:

  1. 时延达标:关键链路 P99 时延满足设计预算,而非仅看平均值。
  2. 吞吐提升:通过批处理、流水线与内存复用,提高单位时间推理帧数。
  3. 资源高效:减少空闲等待、重复拷贝与显存碎片,提升 SM/NPU 利用率。
  4. 确定可控:关键任务具备优先级、隔离与超时保护,抖动可预测。
  5. 可观测可运维:能定位瓶颈、复现问题、动态调参与安全降级。
调度工程不是一次性配置,而是持续迭代的闭环:测量 → 建模 → 调度 → 观测 → 调优。没有可观测性,就没有可调度性。

四、典型场景:一次城市路口通行中的调度链路

假设车辆以 50 km/h 接近无保护左转路口。此时系统同时运行:8 路摄像头 BEV 感知、激光雷达点云检测、目标跟踪与轨迹预测、Occupancy 网络、规划决策、以及安全监控任务。若调度不当,可能出现以下问题:

  • BEV 模型占用 GPU 过久,导致预测模型排队,端到端时延从 60 ms 恶化到 140 ms。
  • 多个模型频繁申请释放显存,产生碎片,触发同步等待与重试。
  • 非关键日志与数据回传任务抢占 CPU,导致控制周期抖动。
  • NPU 上多任务共享 DMA,带宽争抢使单帧推理时间不稳定。

合理的调度策略会为安全关键任务预留资源,将非关键任务放入低优先级队列,并通过流水线让感知、预测、规划在不同硬件上重叠执行。下面是一段简化的调度配置示意:

task: bev_perception
  device: gpu0
  priority: 90
  deadline_ms: 40
  batch: 1
  memory: reserved 2.0 GB

task: trajectory_prediction
  device: gpu0
  priority: 80
  deadline_ms: 60
  depends_on: bev_perception

task: safety_monitor
  device: mcu0
  priority: 100
  period_ms: 10
  isolation: true

五、常见误区与复盘

误区 表现 正确做法
只看平均时延 平均值达标,P99 超标导致偶发急刹 以 P99/P999 与抖动作为核心指标
把所有任务等同对待 日志、回传与感知争抢资源 按安全等级划分优先级与隔离域
静态分配资源 场景变化后利用率骤降或排队 引入动态调度与反馈调优
忽视内存与数据搬运 算力未满,带宽先满 统一内存规划、零拷贝与流水线重叠
缺少可观测性 问题无法定位,只能反复试参 建立时延、利用率、队列深度等指标看板

六、整体课程框架

本课程围绕“需求—硬件—模型—调度—优化—落地”的主线展开,共 30 章。前段建立自动驾驶计算需求与异构算力认知;中段深入推理运行时、任务编排、内存管理、时延建模与多模型并发;后段覆盖性能剖析、确定性保障、安全降级、工具链与工程落地案例。你将逐步掌握从单模型推理到整车级异构调度系统的完整方法。

学习本课程后,你应能回答三个问题:给定硬件与模型,如何分配任务?给定时延与安全约束,如何设计调度策略?给定线上问题,如何定位并优化?