3. 车载AI推理硬件基础

高通Snapdragon Ride平台上的AI推理并不是“把模型丢给某个加速器”这么简单。一个典型的车载感知模型(如BEVFormer、YOLO系列、Occupancy Network)在运行时,会被拆解成数百个算子,分别落到Hexagon DSP、Adreno GPU、Kryo CPU以及专用NPU上执行。理解这四类计算单元的异构分工,以及它们共享的内存层级与带宽约束,是判断“模型能不能跑、跑多快、延迟稳不稳”的基础。

四类计算单元的角色定位

Kryo CPU是控制中枢。它不擅长大规模矩阵乘,但负责算子调度、图切分、内存分配、后处理(NMS、坐标变换、轨迹拟合)以及那些控制流复杂、分支多的算子。CPU的强项是低延迟的标量/分支逻辑,弱项是吞吐。在推理链路中,CPU通常承担“前后处理+调度”,而不是主干卷积。

Adreno GPU拥有大量并行ALU,适合规则、密集、可向量化的计算。在Snapdragon平台上,GPU常用于浮点卷积、图像预处理(resize、归一化、色彩空间转换)、以及部分Transformer中的注意力计算。GPU的短板是功耗较高、对不规则算子和动态shape支持一般,且与DSP/NPU共享内存带宽时容易成为带宽竞争者。

Hexagon DSP是低功耗、高能效的向量处理器,配备HVX(Hexagon Vector eXtensions)和HMX(Hexagon Matrix eXtensions)。HVX擅长8位/16位定点向量运算,HMX则专门加速矩阵乘,是INT8/INT16量化推理的主力。DSP通常承担卷积、深度卷积、全连接、量化/反量化等主干算子,功耗远低于GPU,是车载持续推理的首选。

NPU(在部分Snapdragon型号中与DSP/HMX融合呈现)提供更高密度的矩阵运算阵列,面向INT8/INT4的大吞吐推理。它的调度粒度更粗,适合大batch或大通道的规则算子,但对小算子、动态控制流不友好。实际部署中,NPU与DSP往往协同:NPU跑主干大算子,DSP处理量化边界和辅助算子。

Snapdragon车载AI推理:异构计算单元与内存层级 Kryo CPU 调度 / 图切分 / 后处理 NMS / 坐标变换 / 控制流 低延迟 · 低吞吐 Adreno GPU 浮点卷积 / 图像预处理 注意力 / 归一化 高吞吐 · 高功耗 Hexagon DSP HVX向量 / HMX矩阵 INT8/INT16主干算子 高能效 · 低功耗 NPU 大吞吐矩阵阵列 INT8/INT4规则算子 粗粒度 · 高密度 内存层级(自上而下:容量增大、带宽降低、延迟升高) 寄存器 / 片上SRAM L2 Cache(共享) LPDDR5 / LPDDR5X UFS / 外部存储(模型权重) ~TB/s级 ~数百GB/s ~50-100GB/s ~GB/s级 带宽约束对推理的影响 算子间数据搬运 特征图读写占用LPDDR带宽 切分不当→带宽瓶颈 多单元竞争 CPU/GPU/DSP/NPU共享总线 并发推理→带宽争抢 量化与融合 INT8减少数据量 算子融合减少中间写回 带宽压力传导

内存层级:决定推理速度的隐形天花板

四类计算单元共享同一套内存层级:片上寄存器/SRAM → L2 Cache → LPDDR5/LPDDR5X → UFS。越靠近计算单元,带宽越高、延迟越低、容量越小。车载推理的瓶颈往往不在算力,而在“数据搬不动”。

以LPDDR5为例,其理论带宽约50~100 GB/s,但实际可用带宽受刷新、仲裁、多核竞争影响,通常只能达到理论值的60%~75%。一个INT8量化模型,若每层特征图都需要写回LPDDR再读入下一层,带宽消耗会迅速累积。例如,某层输出特征图为1×256×64×64(INT8),约1 MB;若网络有200层,仅特征图读写就产生约400 MB的搬运量。按70 GB/s有效带宽估算,仅数据搬运就需约5.7 ms,这还不含权重读取和计算时间。

因此,算子融合(Conv+BN+ReLU合并)、量化(FP32→INT8使数据量降为1/4)、以及将中间结果保留在片上SRAM或L2,是降低带宽压力的三个核心手段。Hexagon DSP的HMX和NPU之所以能效高,很大程度上是因为它们支持较大的片上缓存和算子融合,减少了往返LPDDR的次数。

异构分工的实际切分策略

在Snapdragon平台上,模型通常通过Qualcomm AI Engine Direct(QNN)或SNPE进行图切分。切分不是随意的,而是依据算子类型、数据精度、张量形状和依赖关系。一个可参考的切分原则如下:

  • CPU:负责输入预处理(图像解码、resize、归一化)、后处理(NMS、解码、跟踪)、以及动态shape和不规则控制流算子。
  • GPU:负责FP16/FP32的卷积、注意力、以及需要高精度或动态范围的算子;也常用于图像预处理中的色彩空间转换。
  • DSP/HMX:负责INT8/INT16的卷积、深度卷积、全连接、池化等主干算子,是量化模型的主力。
  • NPU:负责大通道、大batch的规则矩阵乘,适合Transformer的FFN和QKV投影等大算子。

切分后,各单元之间通过共享内存或零拷贝缓冲区交换张量。若切分边界处需要格式转换(如NCHW↔NHWC)或精度转换(INT8↔FP16),就会引入额外开销。因此,切分应尽量让同一精度的连续算子落在同一单元上,减少边界转换。

带宽约束下的工程判断

在实际项目中,判断一个模型是否适合当前平台,不能只看TOPS。更实用的方法是估算“带宽需求”与“有效带宽”的比值。若某模型的每帧数据搬运量超过有效带宽的70%,即使算力充足,延迟也会被带宽拖垮。

一个简化的估算示例:假设模型有150层,平均每层特征图读写量为0.5 MB,权重总量为20 MB(INT8),输入输出各1 MB。则每帧总搬运量约为150×0.5×2 + 20 + 2 = 172 MB。若有效带宽为70 GB/s,则纯搬运时间约2.46 ms。若目标帧率为30 FPS(每帧33.3 ms),搬运占比约7.4%,属于健康范围;若模型层数增至400层,搬运时间升至约6.5 ms,占比接近20%,就需要通过算子融合或缓存优化来压缩。

在QNN中,可以通过 qnn-context-binary-utility 查看图切分结果和各单元的算子分布;通过 qnn-profile-viewer 查看每层的执行时间和带宽占用。若发现某单元等待时间过长,优先检查该单元前后的数据格式转换和内存拷贝。

精度与能效的权衡

FP32→FP16→INT8的精度下降会带来能效提升,但并非所有算子都能安全量化。LayerNorm、Softmax、以及部分注意力算子对精度敏感,通常保留FP16在GPU上执行;卷积、全连接、池化则适合INT8在DSP/NPU上执行。混合精度切分时,量化边界处的反量化/量化会引入额外计算和带宽开销,需要权衡。

从能效角度看,DSP的每瓦性能通常是GPU的2~4倍,NPU更高。因此,在满足精度要求的前提下,应尽量将主干算子下沉到DSP/NPU,GPU只处理必须的浮点部分,CPU只做调度和后处理。这样既能控制功耗,也能为多路摄像头并发推理留出带宽余量。

总结来说,Snapdragon车载AI推理的性能由“算力、内存带宽、切分策略、精度选择”共同决定。理解Hexagon DSP、Adreno GPU、Kryo CPU和NPU各自擅长什么、共享什么、竞争什么,才能在模型部署时做出正确的工程判断,而不是盲目追求峰值TOPS。