3、算能平台概览:算能边缘设备(如BM1684/BM1688)的硬件架构、算力特性及支持的视频处理能力
在构建边缘视频流接入系统时,算能(Sophgo)平台是国产化AI边缘计算的重要选择之一。BM1684与BM1688作为其主流边缘芯片,分别面向高性能推理与低功耗多路接入场景。理解这两款芯片的硬件架构、算力边界以及视频处理通路,是设计RTSP拉流、解码、抽帧与推理流水线的首要前提。本节将从芯片内部模块划分、编解码能力、算力指标以及实际工程中的选型约束四个维度展开,帮助你在项目启动前建立清晰的硬件认知。
上图展示了算能边缘设备在视频处理场景下的核心硬件模块与数据流向。从左侧的视频输入接口到中间的硬件解码单元,再到右侧的TPU算力核心,最终通过输出接口与外部系统交互。整个链路中,共享内存与任务调度模块是连接解码与推理的关键桥梁。下面我们将逐一深入分析每个模块的工程细节。
3.1 BM1684与BM1688硬件架构对比
BM1684是算能推出的第一代边缘推理芯片,采用28nm工艺,集成8核ARM Cortex-A53处理器,主频2.3GHz。其TPU部分包含16个NPU核心,每个核心配备独立的SRAM,支持INT8与FP32两种精度计算。BM1684的典型功耗为16W,在边缘设备中属于中等功耗水平,适合部署在需要较强算力的智能网关或边缘服务器中。
BM1688则是面向更高并发视频接入场景设计的升级版本,采用更先进的制程工艺,将CPU升级为8核ARM Cortex-A55,主频提升至2.0GHz(能效比更优)。BM1688的TPU架构进行了优化,虽然INT8算力标称16 TOPS略低于BM1684的17.6 TOPS,但其在视频编解码单元上做了大幅增强——支持32路1080P@30fps的硬件解码,是BM1684的两倍。此外,BM1688增加了对BF16格式的支持,这对于需要更高精度的深度学习模型(如某些检测头)非常实用。
| 对比维度 | BM1684 | BM1688 |
|---|---|---|
| CPU核心 | 8×Cortex-A53 @2.3GHz | 8×Cortex-A55 @2.0GHz |
| TPU算力 (INT8) | 17.6 TOPS | 16 TOPS |
| 视频解码能力 | 16路1080P@30fps | 32路1080P@30fps |
| 视频编码能力 | 2路1080P@30fps | 4路1080P@30fps |
| 内存配置 | 12GB DDR4 | 16GB LPDDR4X |
| 典型功耗 | 16W | 12W |
| AI加速支持 | FP32/FP16/INT8 | FP32/FP16/BF16/INT8 |
| 接口丰富度 | PCIe3.0, 2×GMAC, USB3.0 | PCIe3.0, 2×GMAC, USB3.0, MIPI-CSI |
从工程选型角度看,如果你的项目需要接入超过16路的视频流,或者对功耗有严格限制(如太阳能供电的户外设备),BM1688是更合适的选择。而如果模型推理复杂度高、需要更大算力支撑(例如运行YOLOv5s或更重的模型),BM1684的17.6 TOPS会更有优势。需要注意的是,BM1684的FP32算力约为2.2 TFLOPS,而BM1688的FP32算力约为1.8 TFLOPS,在需要高精度浮点运算的场景下,BM1684仍然占优。
3.2 视频处理能力深度解析
算能平台的视频处理能力由独立的VPU(Video Processing Unit)模块提供,该模块与TPU完全独立,可以并行工作。VPU支持H.264、H.265、VP9等多种主流编码格式的硬件解码,以及H.264/H.265的硬件编码。这意味着在RTSP拉流场景中,CPU完全不需要参与码流解析,大大降低了系统负载。
在实际流水线设计中,VPU输出的解码帧可以直接通过零拷贝机制传递给TPU。具体来说,VPU解码后的YUV数据存放在物理连续的内存区域,TPU可以通过地址映射直接读取这些数据作为模型输入,省去了传统方案中"解码→拷贝到CPU内存→再拷贝到NPU内存"的两次拷贝开销。这一特性对于高帧率、多路并发场景至关重要。
关键参数解读:BM1684支持的最大解码分辨率是3840×2160(4K),但4K解码会占用更多解码通道资源。例如,解码1路4K@30fps相当于占用4路1080P的解码能力。因此,在规划视频路数时,需要根据实际分辨率进行折算。BM1688同样支持4K解码,但其更强的解码能力允许在4K场景下同时处理更多路数。
除了解码,VPU还内置了图像缩放、格式转换(如YUV420转RGB)、CSC色彩空间转换等硬件加速模块。这些功能在抽帧和预处理阶段非常有用。例如,你可以将解码后的1080P帧直接缩放为640×640的模型输入尺寸,同时完成RGB转换,整个过程不需要CPU参与,也不占用TPU资源。
3.3 算力特性与模型部署约束
TPU的算力特性决定了模型部署的方式。BM1684和BM1688都支持通过算能自研的TPU-MLIR编译器将PyTorch、ONNX、Caffe等格式的模型转换为BModel格式。在转换过程中,你可以选择不同的量化策略:FP32、FP16、INT8。INT8量化可以将模型体积压缩4倍,推理速度提升2-3倍,但需要验证精度损失是否在可接受范围内。
# 模型转换示例(以YOLOv5s为例)
# 使用tpu-mlir工具链将ONNX模型转换为INT8 BModel
model_transform.py \
--model_name yolov5s \
--model_def yolov5s.onnx \
--input_shapes [[1,3,640,640]] \
--mean 0,0,0 \
--scale 0.0039216,0.0039216,0.0039216 \
--pixel_format rgb \
--output_names output
model_deploy.py \
--model_name yolov5s \
--mlir yolov5s.mlir \
--quantize INT8 \
--calibration_table table.txt \
--chip bm1684 \
--output yolov5s_int8.bmodel
在部署多路视频推理时,需要合理分配TPU资源。BM1684的16个NPU核心可以同时运行多个模型实例,但每个核心的SRAM有限(约2MB)。如果模型较大(如超过100MB),可能需要将模型切分为多个子图,或者使用模型并行策略。BM1688的NPU架构有所调整,每个核心的SRAM更大,对大模型的兼容性更好。
风险提示:INT8量化对激活值分布敏感。如果模型包含对精度要求极高的层(如小目标检测的head层),建议对这些层保持FP16精度,采用混合精度量化。否则可能出现检测率大幅下降的情况。在批量部署前,务必使用真实业务数据做完整的精度验证。
3.4 实战场景:16路视频接入的算力规划
假设你需要在BM1684平台上部署一个16路RTSP视频流的实时入侵检测系统,每路视频为1080P@25fps,使用YOLOv5s模型(输入640×640)。我们来分析算力是否充足。
第一步:解码资源评估。BM1684支持16路1080P解码,刚好满足需求,但已无余量。如果未来需要增加路数,必须升级到BM1688或降低分辨率。
第二步:TPU推理负载计算。YOLOv5s在BM1684上的INT8推理延迟约为15ms/帧(单batch)。16路视频每路25fps,总推理需求为16×25=400帧/秒。单核TPU每秒可处理约66帧(1000ms/15ms),因此需要约6个NPU核心同时工作。BM1684有16个核心,资源充足。
第三步:内存带宽验证。每帧640×640×3字节≈1.2MB,400帧/秒的数据量为480MB/s。BM1684的DDR4带宽约为25.6GB/s,远高于需求,不会成为瓶颈。
第四步:实际部署中的优化。为了降低延迟,可以采用batch推理策略:将4路视频的帧拼接为一个batch(4×3×640×640),一次推理处理4帧,这样可以将有效吞吐提升至约80帧/秒/核心,进一步降低核心占用。
经验总结:在算能平台上做视频推理,解码能力和TPU算力需要分别评估。很多项目只关注TOPS指标,忽略了解码路数限制,导致后期无法扩容。建议在项目初期就按照"解码路数×分辨率×帧率"和"模型推理延迟×总帧率"两个维度分别做资源预算,并预留20%的余量应对突发流量或模型升级。
此外,BM1688在相同场景下表现更优:32路解码能力使得单设备可以覆盖更多接入点,而16 TOPS的算力配合BF16支持,可以在精度和速度之间取得更好的平衡。对于需要长时间稳定运行的边缘设备,BM1688的12W功耗也意味着更低的散热要求和更高的可靠性。
最后需要强调的是,算能平台提供了完善的BMC(板级管理控制器)和SDK工具链,包括ffmpeg插件、OpenCV适配层以及Python推理框架。在实际开发中,建议优先使用官方提供的ffmpeg插件进行RTSP拉流和解码,这样可以自动利用硬件VPU,避免手动管理内存映射的复杂性。通过合理的硬件认知和资源规划,算能平台完全能够胜任中等规模(16-32路)的边缘视频分析任务。