3. 硬件平台概览
视觉推理适配的第一步不是改模型,而是认清目标硬件的“性格”。同一段卷积或注意力计算,在不同硬件上的执行路径、数据搬运方式和瓶颈位置可能完全不同。本节从架构特点、并行粒度、内存层次和典型能力边界四个角度,梳理六类常见推理载体,并给出可操作的判断依据。
一、六类硬件的架构定位
CPU 是通用标量/向量处理器,核心数量少但单核能力强,拥有大容量缓存和复杂分支预测。它适合处理控制逻辑、前后处理、非规则算子和小批量推理。其瓶颈在于算力密度低:以典型服务器 CPU 为例,FP32 峰值约 1~3 TFLOPS,而一块中端 GPU 可达数十 TFLOPS。因此 CPU 通常不作为大模型主算力,而是承担调度、解码后处理和 fallback 算子。
GPU 拥有数千个流处理器,采用 SIMT 执行模型,擅长高吞吐的规则并行计算。其内存层次为“寄存器—共享内存/L1—L2—显存”,显存带宽可达数百 GB/s 至数 TB/s。GPU 的强项是矩阵乘、卷积等密集算子;弱项是频繁的小规模 kernel 启动和分支发散。视觉推理中,GPU 常作为训练和服务器端批量推理的主力。
NPU 是面向神经网络的专用加速器,通常内置 MAC 阵列、片上缓存和量化单元,支持 INT8/INT4 甚至更低精度。它的优势是能效比高、时延稳定,适合固定算子图的端侧推理。边界在于算子覆盖有限:自定义算子、动态 shape、复杂控制流往往需要回退到 CPU,回退比例过高会抵消加速收益。
DSP 采用 VLIW 或 SIMD 架构,擅长定点信号处理和滤波类运算,常见于摄像头、音频和雷达前端。它的编程模型偏底层,需要手工管理内存和流水,适合把预处理(如去噪、色彩转换、缩放)与轻量推理融合在一起。
FPGA 提供可重构逻辑资源,可以按算子定制数据通路,实现极低时延和确定性吞吐。代价是开发周期长、频率较低、片上资源有限。它适合协议解析、多路视频拼接、超低时延触发等场景,而不是通用大模型推理。
边缘加速器(如 Jetson、昇腾 Atlas、瑞芯微 RKNN、Google Coral)通常是 SoC 内集成 CPU+GPU/NPU+DSP 的异构组合,通过统一内存或共享总线协作。其能力边界由最弱环节决定:如果内存带宽不足,NPU 算力再高也无法跑满。
二、判断某硬件能否承载目标模型
不要只看 TOPS 数字。一个可操作的判断顺序是:先看算子覆盖,再看内存带宽,最后看精度支持。
算子覆盖:把模型导出为 ONNX 或框架中间表示,统计算子种类。若 NPU 的算子库不支持某类算子(如可变形卷积、复杂激活、动态索引),该算子会被切到 CPU,形成“NPU—CPU—NPU”的往返。每次往返都伴随数据拷贝和同步,实测中可能让端到端时延增加 30%~200%。判断标准是:回退算子数量占比低于 5%,且回退算子不在关键路径上。
内存带宽:视觉模型的特征图往往比权重更大。以 1080p 输入、ResNet-50 为例,中间激活约数十 MB,若每层都读写外部内存,带宽需求会迅速超过边缘 SoC 的 10~30 GB/s。此时即使 NPU 标称 4 TOPS,实际利用率也可能低于 30%。可用“算术强度 = 计算量 / 访存量”估算:算术强度低于硬件拐点的算子,属于带宽受限。
精度支持:NPU 通常只高效支持 INT8,部分支持 INT4/FP16。若模型必须保持 FP32 精度,NPU 可能退化为 FP16 甚至 CPU 执行。量化前应做逐层敏感度分析,把首尾层和检测头保留为 FP16,中间主干量化到 INT8,通常能在精度损失小于 1% 的前提下获得 2~4 倍加速。
三、异构协同的典型分工
在边缘视觉推理中,合理的分工不是“全部塞给 NPU”,而是按数据流切分:
- CPU:图像解码、ROI 裁剪、NMS、结果组装、业务逻辑。
- DSP/GPU:去噪、白平衡、缩放、色彩空间转换等预处理。
- NPU:主干网络和检测头的量化推理。
- FPGA:多路视频同步、触发采集、超低时延预处理。
以 4 路 1080p@30fps 的智能相机为例,若把解码和缩放放在 CPU,CPU 占用可能超过 70%,导致 NPU 等待输入。把缩放迁移到 DSP 或 GPU 后,CPU 占用可降到 30% 以下,NPU 利用率从 45% 提升到 80% 以上。这个例子说明:瓶颈往往不在推理本身,而在数据供给链。
四、能力边界的量化参照
| 硬件 | 典型算力 | 内存带宽 | 适合的推理形态 | 主要边界 |
|---|---|---|---|---|
| 服务器 CPU | 1~3 TFLOPS FP32 | 100~300 GB/s | 小批量、控制密集、前后处理 | 算力密度低 |
| 数据中心 GPU | 50~1000 TFLOPS | 1~3 TB/s | 批量推理、大模型、训练 | 功耗高、成本高 |
| 端侧 NPU | 1~50 TOPS INT8 | 10~100 GB/s | 固定图、量化模型、单路实时 | 算子覆盖、动态 shape |
| DSP | 0.1~2 TOPS 定点 | 片上 SRAM 高带宽 | 预处理、滤波、轻量网络 | 编程复杂、通用性差 |
| FPGA | 取决于逻辑资源 | BRAM + DDR | 超低时延、确定性流水 | 开发周期、频率、资源 |
| 边缘 SoC | 1~30 TOPS 异构合计 | 10~50 GB/s 共享 | 多路视频、端侧实时 | 最弱环节制约 |
表中数值为公开资料的典型区间,用于建立量级感,不代表某一具体型号的实测值。实际选型时,应以目标板卡的 datasheet、算子支持列表和实测 profiling 为准。
五、适配前的检查清单
在把模型部署到某类硬件之前,建议按以下顺序确认,避免后期返工:
- 导出模型并统计算子清单,与目标硬件的算子支持表逐项比对,标记回退算子。
- 估算峰值内存占用:权重 + 激活 + 输入输出,确认不超过设备可用内存的 70%。
- 计算关键层的算术强度,识别带宽受限层,判断是否需要算子融合或分块。
- 确定量化策略:逐层敏感度分析,决定哪些层保留 FP16、哪些层用 INT8。
- 规划数据通路:解码、预处理、推理、后处理分别落在哪个单元,避免频繁跨单元拷贝。
- 准备 profiling 方案:记录各阶段耗时、NPU 利用率、回退次数和内存峰值。