4. NPU架构与编程模型

在自动驾驶异构计算平台中,NPU承担着感知模型推理的主要算力负载。与GPU的通用并行架构不同,NPU的设计哲学是“为矩阵乘加而生的专用数据通路”。理解NPU的架构特征与编程模型,是进行模型部署、算子映射和性能调优的前提。本章从计算阵列、数据流、数值表示和工具链四个维度展开。

一、脉动阵列:让数据“流动”起来的计算结构

脉动阵列(Systolic Array)是多数车规NPU的核心计算单元。其基本思想是:让权重和激活值以节拍方式在二维处理单元(PE)阵列中流动,每个PE只完成一次乘加并将结果传递给相邻PE,从而大幅减少对全局存储的访问。以典型的16×16阵列为例,权重从左侧逐列载入并驻留,激活值从上方逐行流入,每个PE在每个时钟周期完成一次乘累加,部分和沿对角线方向向下传递。

这种结构的优势在于:数据复用率高、控制逻辑简单、功耗效率优异。代价是灵活性受限——它天然适合规则的大矩阵运算,对非规则算子(如动态shape、稀疏索引)需要额外处理。因此,NPU编程模型通常要求将卷积、全连接等算子转换为矩阵乘形式,再映射到脉动阵列上执行。

关键参数:阵列规模(如16×16、32×32)、PE位宽(INT8/INT16/FP16)、片上缓存带宽、权重驻留方式(Weight Stationary / Output Stationary)。这些参数直接决定NPU的峰值算力和实际利用率。

二、数据流架构:从指令驱动到数据驱动

传统CPU/GPU采用指令驱动执行模型,而NPU常采用数据流(Dataflow)架构。在数据流模型中,计算节点的执行由输入数据的可用性触发,而非由程序计数器顺序驱动。典型的数据流调度包括:权重固定(Weight Stationary)、输出固定(Output Stationary)和行固定(Row Stationary)。不同调度策略影响片上缓存的访问次数和能耗。

以卷积层为例,若采用权重固定策略,卷积核权重被加载到PE阵列后保持不动,激活值不断流入,适合小批量推理;若采用输出固定策略,部分和驻留在PE中,适合大通道数场景。车规NPU通常支持多种数据流模式,由编译器根据算子形状自动选择。

NPU 脉动阵列与数据流架构示意 脉动阵列(16×16 PE) 激活值逐行流入 ↓ MAC MAC MAC MAC 权 重 → 部 分 和 数据流调度策略对比 Weight Stationary 权重驻留PE,激活值流动 适合:小批量、大卷积核 Output Stationary 部分和驻留PE,权重与激活流动 适合:大通道数、逐层累加 Row Stationary 行内复用权重与激活 适合:平衡带宽与能效

三、量化与稀疏加速:用数值换效率

车规NPU普遍支持INT8量化,部分高端芯片支持INT4甚至INT2。量化的本质是将浮点权重和激活值映射到低位宽整数域,从而减少存储占用、提升吞吐、降低功耗。典型流程包括:校准(Calibration)→ 确定缩放因子(Scale)和零点(Zero Point)→ 量化感知训练(QAT)或训练后量化(PTQ)→ 部署验证。

稀疏加速则利用模型中的结构化稀疏(如2:4稀疏)或非结构化稀疏,跳过零值计算。NVIDIA Ampere及后续架构、地平线征程系列、黑芝麻华山系列等均在不同程度上支持稀疏加速。需要注意的是,稀疏加速的实际收益取决于稀疏模式与硬件数据通路的匹配程度,非结构化稀疏往往需要专用索引解码单元。

# 典型INT8量化配置示例(伪代码)
quant_config = {
    "weight_bits": 8,
    "activation_bits": 8,
    "calibration": "entropy",      # 校准方法:entropy / minmax / percentile
    "per_channel": True,           # 逐通道量化
    "symmetric": True,             # 对称量化
    "sparsity": "2:4",             # 结构化稀疏模式
    "first_layer_fp16": True       # 首层保持FP16以保精度
}

四、典型车规NPU芯片与工具链

车规NPU需满足AEC-Q100可靠性、ISO 26262功能安全(ASIL-B/D)以及ISO 21434信息安全要求。主流方案包括:

芯片/平台 NPU架构特点 典型算力 工具链
NVIDIA Orin Ampere GPU + DLA,支持INT8/FP16 254 TOPS TensorRT、CUDA、DLA编译器
地平线征程5 BPU贝叶斯架构,脉动阵列+数据流 128 TOPS 天工开物、Horizon OpenExplorer
黑芝麻华山A1000 自研NPU,支持INT8/INT4稀疏 58 TOPS 山海工具链
Mobileye EyeQ6 专用加速器阵列,低功耗设计 约34 TOPS EyeQ SDK、专用编译器

工具链核心环节:模型导入(ONNX/Caffe)→ 图优化(算子融合、常量折叠)→ 量化校准 → 算子映射与调度 → 代码生成 → 板端部署与性能分析。其中“算子映射”是NPU部署中最容易出问题的环节,需重点关注算子支持列表和回退策略。

五、常见误区与复盘

  • 误区一:算力越高越好。实际推理性能受限于内存带宽、算子支持度和调度效率。峰值算力利用率往往只有30%~60%。
  • 误区二:量化一定掉精度。合理的校准和QAT可以将INT8精度损失控制在1%以内,但首层和检测头通常需要保留FP16。
  • 误区三:稀疏加速免费。非结构化稀疏需要专用硬件支持,否则编译器会直接回退到稠密计算,收益为零。
  • 复盘要点:部署前务必确认工具链版本、算子支持列表、量化校准集与实车数据分布的一致性。