拓冰建站拓冰建站
首页 / 资讯中心 / 正文

6 TOPS边缘盒子到底能跑几路视频?算力估算与实测方法

“你这盒子标称 6 TOPS到底能跑多少路视频”这是我这几年被问得最多的问题没有之一。问的人从集成商到甲方爸爸都有每次我都要先纠正一个前提TOPS 这个数字只描述了算力硬件在“理论峰值”下的整数运算能力它既不等于你能跑几路视频也不等于你买到的设备就一定比标称 4 TOPS 的强。今天就把这事彻底掰扯清楚拿 6 TOPS 这个最常见的边缘档位开刀聊聊真实并发路数到底该怎么算、怎么测、怎么不被厂商参数表带偏。先说结论一台标称 6 TOPS 的边缘盒子如果做 1080P 视频流的人脸检测或简单结构化跑 4 到 8 路是比较合理的预期区间如果换成大规模目标检测加跟踪加属性识别能稳定跑 2 到 4 路就已经不错了。注意我说的是“合理预期”不是“理论值”因为这个数字受算法、分辨率、帧率、解码器、内存带宽的联合影响而 TOPS 参数表里一个都不会写给你。本文适合谁看凡是做边缘计算选型、算法集成、安防项目交付的工程师和项目经理只要你被“TOPS 越高越强”这种话术忽悠过或者正卡在“板子买回来跑不满”的困境里这篇文章都能帮你建立一套自己的判断框架。1. 为什么 TOPS 指标那么容易让人误读1.1 TOPS 到底是什么从 1 TOPS 开始理解TOPS 的全称是 Tera Operations Per Second即每秒万亿次操作。这个“操作”在大多数 AI 芯片的语境里特指 INT8 精度下的乘加运算MACMultiply-Accumulate。一次乘加在硬件看来其实是两次操作一次乘法、一次加法所以很多芯片厂商标 TOPS 的时候用的就是“每秒能完成的 MAC 数乘以 2”。举个例子一颗 NPU 有 512 个 MAC 单元每个时钟周期能完成 512 次乘加这时钟频率是 1GHz那它的理论算力就是 512 × 1G × 2 1024 GOPS也就是大约 1 TOPS。只要你拿到了 MAC 数组、频率和位宽这个算力是可以直接口算出来的它衡量的是硬件在“最理想状态”下理论上限能塞进去多少操作。那问题出在哪儿呢问题出在这个“最理想状态”在真实算法中根本不存在。TOPS 是硬件厂商在实验室里用特定指令序列压测出来的峰值不是你的模型跑出来的平均值。它就像汽车仪表盘上标出的最高时速 240 公里——确实能跑到但前提是路况完美、轮胎全新、司机胆子够大而你每天上下班通勤平均时速可能只有 30 公里。1.2 算力不等于处理能力三个典型误区第一个误区是“TOPS 高就一定跑得更快”。理论上确实如此但前提是同一个模型、同一套框架、同样的量化精度、同样的数据吞吐。现实中你拿两个标称 6 TOPS 的板子一个跑 TensorFlow Lite一个跑自定义 RKNN模型优化程度完全不一样实际帧率可能相差一倍以上。TOPS 描述的是“肚子有多大”不代表“吃进去的都能消化掉”。第二个误区是“TOPS 可以横向对比所有设备”。海思的 6 TOPS、瑞芯微的 6 TOPS、地平线的 6 TOPS还有英伟达 Jetson 的 6 TOPS底层架构完全不同算子支持度也不同。你的模型里如果有一个 NPU 不擅长或者不支持的算子比如某些动态形状的算子它就得分摊到 CPU 上跑这时候 CPU 反而成了瓶颈NPU 再高的 TOPS 也帮不上忙。人家在标称 TOPS 时默认用的是自家最顺手的网络你换一个模型上去跑出来的等效算力可能直接打三折。第三个误区是“只看算力不看系统配套”。AI 推理是一个全链条过程数据从摄像头进来先要经过 ISP 处理、视频解码然后做缩放、通道转换再送进 NPU算完之后结果还要交给 CPU 做后处理和业务逻辑。这个链条里任何一个环节卡住NPU 算力再高也得空转等待。如果板子只有一个千兆网口那 4 路 1080P 码流进来网络带宽就到极限了后续算力全是空谈。类似这种配套瓶颈下面展开细说。1.3 网上流传的“显卡算力 TOPS 对照表”为什么只能当参考最近总看到有人整理“显卡算力 TOPS 对照表”把各家 GPU、NPU 的 TOPS 数值排成一张大表旁边标注“理论可带 16 路”“理论可带 32 路”。这种表作为初步筛选工具是有价值的至少让你知道哪些设备处于同一算力梯度但它最大的问题在于省略了“理论”二字的约束条件。同一张 6 TOPS 的设备跑一个轻量级人脸检测模型比如 0.5 GMACs/帧理论帧率是 6T / 0.5G 12000 帧/秒级别的纯计算能力听着吓人吧但一帧 1080P 图像送入神经网络之前你得先完成解码、缩放、归一化这些操作的时间远远超过 NPU 本身的计算时间。对照表上写的“几路”通常是在某个指定模型往往是很轻量的模型、指定分辨率往往是 720P 甚至更低、指定帧率往往只有 15 帧甚至没有说下测出来的“最优值”而你的业务场景几乎不可能长在那个最优值上。所以我把这类对照表定位成“选型第一轮粗筛的漏斗”真正做项目的时候必须拿着你自己的算法模型到目标设备上进行实测验证用数据说话而不是看着表上的数字拍脑袋。2. 6TOPS 边缘设备真实场景能做什么、瓶颈在哪2.1 典型应用范围从人脸识别到视频结构化6 TOPS 这个算力段在边缘侧意味着什么用行业里最常见的场景来定位一下。第一种是安防场景的人脸检测与抓拍。这类需求通常用的是轻量级检测网络比如改进型的 SCRFD、RetinaFace-Mobile 或者各种蒸馏剪枝后的人脸检测模型。输入分辨率大多是 1080P但是检测前会先对全图做一次小模型粗检再对候选人脸区域做一次精检。这种算法链路在 6 TOPS 上做到 8 路 1080P、10~15 帧每秒的稳定输出是可行的前提是选用的模型在 NPU 上优化得足够好。第二种是视频结构化比如行人检测加属性识别。这一类的算法链条要长得多一帧画面进来先做目标检测把行人框出来再做跟踪ReID 或者 IoU 匹配然后对每个目标做属性分类性别、年龄、衣着颜色等。检测模型本身可能就吃掉 2~3 GMACs/帧属性识别如果同时跑两个模型每个目标还要额外消耗几十到上百 GMACs 不等的计算量。一旦图片里行人数量上来了算力消耗就不是按帧算而是按“帧 × 目标数”算了。6 TOPS 在这种场景下跑 2 到 4 路是常态。第三种是工业质检里的简单缺陷检测或者交通场景的车流量统计算法复杂度介于前两者之间。综合来看6 TOPS 边缘设备覆盖最多的是“中等复杂度算法、多路小码流”和“轻量算法、较多路数”两个象限真正重度的视频结构化分析这个算力档位并不合适。2.2 除了芯片本身这三项指标必须看算力参数表不会告诉你但实际项目里决定“能不能跑满 6 TOPS”的往往是下面这三样。内存带宽是第一道坎。NPU 算力再强权重和特征图的数据得从 DDR 里搬进搬出。大部分边缘 SoC 用的是 LPDDR4 或 LPDDR4x带宽大概在 10~30GB/s 的区间而 TOPS 越高的芯片对内存带宽的需求就越饥渴。如果芯片标称 6 TOPS但内存通道只有单通道 LPDDR4 1600MHz那理论带宽只有 12.8GB/s 左右。跑一个 MobileNet 级别的网络可能还勉强跑大一点的检测网络频繁的权重复用和数据搬运直接让 NPU 的 MAC 单元喂不饱实际利用率跌到 40% 以下都很正常。AI 算子的底层适配度是第二道坎。前面提过不同芯片对算子的支持差异很大。有些 NPU 对 3×3 卷积的优化非常好但对 1×1 卷积、Depthwise 卷积、上采样或者某些激活函数支持得很一般编译之后可能会转成 CPU 指令甚至直接报不支持。这就意味着同一个 ONNX 模型在不同厂家的 6 TOPS 设备上帧率差距可能超过一倍。所以做选型的时候一定要带着自己最核心的模型去跑一遍跑通了再谈算力。硬件编解码通道是第三道坎。跑视频分析就一定需要视频解码能力。很多边缘设备的 IPC 解码能力是 1080P30fps 左右如果一心想跑 8 路 1080P25fps光解码就占满了硬件通道此时 CPU 还要做图像缩放和前后处理整个系统就已经到了负载上限。你要么降低接入路数要么降低每路的帧率要么给服务器做转发让边缘只做抽帧分析。总之解码通道的规格不会写在 TOPS 旁边但它对“真实路数”的影响甚至超过 TOPS 本身。2.3 编解码通道与 NPU 的配合为什么 6 TOPS 也跑不满再说一个经常被忽略的现象很多边缘设备的数据流设计并不均衡。假如一台设备的 AI 算力有 6 TOPS但视频解码能力只有 2 路 1080P25fps那无论 NPU 多快这个设备能分析的视频路数上限就是 2 路除非你把视频流在进 NPU 之前降到很低的分辨率或帧率。另外多路接入时 CPU 的中断处理和内存拷贝也是个隐形杀手。每当一路视频数据到达内核要从网卡把数据搬到内存然后解码器又要从内存里取数据再经过帧缓冲最后才送到 NPU。这些搬运工作如果 CPU 调度没优化好在 4 路以上时 CPU 占用就会明显上升。很多号称“支持 16 路”的设备在只跑 2 路的测试环境里展示效果当然没问题但真正插满网口之后系统的 CPU 先饱和了NPU 利用率反而不高。要规避这个问题采购前就要仔细看三张表AI 算力、解码能力和网络接入能力。只要这三个数字没有明显短板这台设备的真实路数才可能接近理论值。任何一个环节成为瓶颈最终的“并发路数”都会被那个最短的板卡住。3. 从 TOPS 推算并发路数的实用方法3.1 先确认业务规格分辨率、帧率、算法模型既然 TOPS 不能直接给出答案那我们需要回到业务本身把影响因素一项项列出来然后做估算。我习惯的做法是先定义一组“业务规格”包括输入视频分辨率720P、1080P 还是 4K、分析帧率每秒处理几帧不是视频本身多少帧、算法链路单模型还是多模型串联、模型的计算量GMACs/帧和模型的内存占用。大多数边缘项目的接入帧率是 25fps 或 30fps但分析帧率不一定要跟上这个速度。人脸抓拍场景经常是 5 到 10 帧抽一帧做分析因为人的移动不频繁没必要每帧都算。交通卡口场景则相反车速快、目标小往往要求全帧率分析。所以当你说“跑几路”的时候首先要明确是“接入几路”还是“每路每秒分析几帧”这两个数字对应完全不同的算力需求。然后要拿到你的算法的真实计算量。如果模型是你自己训练的现在绝大多数框架都能导出 FLOPs 或 MACs 统计如果是买的算法那就直接问对方要这个数。以 YOLOv5s 为例输入 640×640 时计算量大约是 16 GMACs/帧也就是 32 GOPS/帧。一个 6 TOPS 的设备理论上每秒能处理 6000 GOPS如果算力利用率按 40% 估算那等效每秒能处理 6000 × 0.4 ÷ 32 ≈ 75 帧/秒。看起来不少对不对但这是单帧 640×640 小图的计算量你要分析的是整路 1080P 画面意味着你得把 1080P 缩小到 640 或者采取区域裁剪这里的图像缩放与预处理开销还没有算进去。3.2 算力消耗估算一个可以抄作业的计算示例我做项目的时候喜欢用一个简化的估算公式先给自己一个心理预期范围再用实测去修正单路分析算力需求GOPS/s 每帧模型计算量GMACs× 2 × 分析帧率fps÷ 预期 NPU 利用率预期 NPU 利用率这个系数很关键它和芯片架构、模型适配程度、是否多路并发有关。根据经验优化良好的单模型场景可以按 40%~60% 估算多模型串联或复杂预处理场景按 20%~35% 估算如果模型里有 NPU 不友好的算子最好往 10%~20% 估。举个真实案例某项目需要对 1080P25fps 的视频流做行人检测加简单跟踪选择的检测模型计算量约 25 GMACs/帧输入尺寸约 1280×736。每路每秒钟分析 10 帧而不是全帧率采用隔帧分析策略。那么单路的算力需求大约是25 × 2 × 10 ÷ 0.5 1000 GOPS/s 1 TOPS/s这是个什么概念6 TOPS 的设备的理论可用算力如果利用率按 50% 算等效就是 3 TOPS理论上能跑 3 路左右。再加上视频解码、缩放、跟踪算法的 CPU 占用以及内存带宽的争抢项目最终验收时是稳定跑了 2 路 1080P10fps 分析再加上一路 720P 做预览系统负载已经到 70% 左右了。这个结果和估算完全吻合。这里想强调的是公式里的任何一项变了结论就变。你把分析帧率从 10fps 降到 5fps路数就能翻到 4~5 路你换一个更轻量的模型比如 10 GMACs/帧的检测网络同样的 6 TOPS 能扛到 6~8 路。这就是为什么“这个 6 TOPS 盒子到底能跑几路”没有标准答案——你的业务规格决定答案。3.3 实测校准理论值要靠数据修正估算算完只是第一步没有任何一个负责任的工程师会拿着估算结果直接去投标。接下来要做的是拿真实模型、真实码流到设备上做一轮基准测试把算出来的理论帧率、实测帧率和最终可稳定运行的帧率三个数摆在一起看。我踩过最大的坑是低估了内存带宽对多路并发的损耗。单路测试时 NPU 利用率能跑到 70%一到 4 路并发内存带宽被多个视频流的数据搬运瓜分NPU 的利用率掉到 40% 以下单路帧率直接减半。这种问题如果不实测看再多的参数表也算不出来。所以每当有人问我“6 TOPS 能带几路”我一般先反问一句你的项目能接受一路的延迟是多少每路要保证多少帧的分析频率允许的最大丢帧率是多少把这些指标定下来实测才有评判标准。一般来说如果实测帧率能达到理论估算的 60%~70%说明这个方案基本靠谱如果能到 80% 以上说明模型和芯片的适配做得非常好如果只有 30%~40%先查算子和内存带宽很大概率是模型没优化好。4. 实测方法与验收流程别被“演示效果”忽悠4.1 搭建最小可复现环境既然要实测就不能随便找个视频循环放一下就下结论。我建议准备一套最小可复现环境保证测试过程和真实交付保持一致。需要准备的东西包括一台确认没有跑其它负载的待测设备、一路或多路真实的摄像头 RTSP 流或者和现场码流参数一致的视频文件、待交付的算法模型以及一套能记录帧率、CPU 占用、NPU 占用、内存占用的观测工具。特别强调不要用设备厂商自带的高压缩比演示视频来测。演示视频的场景简单、光线均匀、目标分布稀疏模型跑得当然快。真实场景往往有复杂的背景、大量目标叠在一起、光照不停变化检测框数量翻倍之后后处理和跟踪的 CPU 开销蹭蹭往上涨实测帧率立马打对折。所以我喜欢用两种测试源一种是现场录制的真实码流另一种是网上能找到的公开监控视频数据集至少保证里面有拥挤场景和低照度场景。观测工具方面大部分 SoC 厂商都提供了类似“使用率查询”的命令行工具瑞芯微平台能查 NPU 负载海思平台能查硬件进程占用英伟达 Jetson 系列可以用 tegrastats 直接看 GPU、CPU、内存、编解码单元的使用情况。这些工具在测试时一定要用起来因为它们能帮你定位瓶颈到底在芯片的哪一端。4.2 关键观测指标与验收阈值并发路数到底怎么定实测时我会把被测试设备接到 N 路视频源上从 1 路开始逐步往上加。每一档都稳定运行至少 10 到 15 分钟别只跑 1 分钟就开始记录然后采集以下几个关键指标。第一个指标是分析帧率即每路视频每秒实际完成多少次完整的算法链路分析。这是业务最关心的指标。第二个指标是端到端延迟从视频帧被解码到最终结果输出之间的耗时。如果大于 500 毫秒某些实时交互场景就接受不了。第三个指标是系统整体负载包括 CPU 的每个核心使用率、NPU 利用率和内存占用。我会把一个核心长期 100% 视为警告信号因为一旦场景中出现突发的大量目标CPU 没有余量处理丢帧就会瞬间增加。第四个指标是丢帧率或者掉帧情况即设备宣称在处理 25fps 码流但实际每秒只输出了 12 帧结果其余帧去哪了被丢弃了。那“稳定并发路数”到底怎么认定我自己的验收公式是在加入 2 路冗余、且所有单路指标均满足项目要求的情况下设备能连续运行 24 小时不出现内存持续增长、不出现分析中断并且系统负载保持在 70% 以下的路数才算可交付的稳定路数。注意这里有两个隐藏条件一是“所有单路指标均满足”而不是只看平均帧率二是“连续运行 24 小时不出现异常”因为很多内存泄漏问题是在长时间运行后才暴露的。如果系统跑到 20 个小时后内存占用翻倍了那这路数就得往下调到 60% 负载。4.3 压测流程中容易忽略的两件事第一件事是“多路视频的画面内容不能完全相同”。有些人图省事用一个视频文件复制成 8 路流做压力测试这样测出来的结果偏乐观。因为多路解码后如果画面完全相同NPU 的缓存命中率会异常高实际效果跟真实场景差别很大。正确做法是至少准备 4 个以上不同画面的视频源交叉循环播放尽量模拟真实环境的多样性。第二件事是“别忘了同时模拟目标数量的波动”。真实场景里路口的行人数量不是均匀的早晚高峰期检测框可能从几个飙升到几十个。检测框一多后处理和非极大值抑制的耗时就会暴增这部分开销通常是在 CPU 上跑的所以 CPU 的瞬间尖峰特别容易出现。压测时最好选择一段包含密集人群的视频跑一阵子看看在目标数量高峰时系统会不会因为 CPU 过载而出现大面积丢帧。如果会那说明该路数已经很勉强了需要往下调整。我发现很多项目前期选型都做得挺认真TOPS 表也对了模型也跑了个 demo最后交付时还是在“几路”上栽了跟头问题往往就出在只测了理想场景、没测极端场景上。5. 常见问题与排查经验5.1 现象一CPU 占用率很高但 NPU 利用率上不去这是边缘部署中最常遇到的问题。我的排查路径是先用性能分析工具看进程级 CPU 占用确认是哪个线程在消耗资源。如果是视频解码线程占用高说明输入的分辨率太高或者解码通道太多如果是预处理线程占用高检查 BGR 转换、缩放、归一化这些操作是否被优化过有些 SDK 提供了硬件加速的 resize 接口你如果还自己在 CPU 上逐像素处理八核 CPU 都不够用。如果 CPU 正常但 NPU 利用率还是低就要看数据喂送的链路了。NPU 利用率低通常意味着它在“空等”也就是数据没有及时送进来。检查是不是解码线程和分析线程之间的缓冲队列太短或者二值化、抠图等自定义预处理打断了流水线。一个通用经验是把预处理尽量合并成 NPU 的算子而不是每一步都在 CPU 上搬数据这样流水线才不断流。这类问题排查起来要很有耐心但定位到根因之后性能提升也最明显。5.2 现象二单路跑得很好多路并发性能陡降另一个高频问题就是前面提到的多路并发性能衰减。如果单路时能跑到 30fps4 路时每路掉到了 7~8fps那就不是算力不够而是资源争抢太严重。排查思路从四个方向入手第一个方向是内存带宽看系统是否同时在做大量的帧拷贝第二个方向是锁竞争很多 SDK 的多线程模型在并发时会因为共享锁导致线程频繁阻塞需要确认有没有开启硬件解码器的多实例模式第三个方向是 CPU 中断和网卡队列多路 RTSP 接入时网卡的中断处理可能集中在某一个 CPU 核心上需要确认是否开启了多队列或者把中断绑核分散开第四个方向是编解码通道总量确认一下设备最多能硬解几路你这种码率的视频流。我做过一次很典型的排查某 6 TOPS 设备单路能跑 25fps 分析4 路时直接崩到每路 4fps检查半天发现每帧视频在做一次从 GPU 内存到 CPU 内存的拷贝这个拷贝是同步操作而且没做内存复用4 路并发时同一块内存反复申请释放带宽全耗在拷贝上。改成内存池复用之后4 路跑到每路 18fps相当于系统总吞吐没变但把浪费掉的资源给省回来了。5.3 一些避坑技巧和选型建议最后分享几个经验和技巧不一定写在任何文档里但都用真金白银换回来的。第一个技巧是识别“演示级优化”和“交付级优化”的差别。有些厂商会在你测试时给一个专门优化过的模型量化、算力融合、算子替换都做得很足演示效果非常惊艳。但签完合同到了交付阶段换成客户自己的模型性能直接回到解放前。所以我建议在测试阶段就直接要求用最终要交付的模型别接受厂商提供的“专用演示版”否则后面扯皮的成本远大于现场那一点时间。第二个技巧是“千万别把 TOPS 当成线性扩缩的标尺”。同样是 6 TOPSA 设备可能是单核 NPU 高主频设计B 设备可能是多核 NPU 低主频设计。对单路大模型来说单核高主频往往更有优势对多路小模型来说多核低主频反而能更好并发。因此不要因为我们今天聊的是 6 TOPS就用同一个推荐路数套用所有 6 TOPS 产品一定要具体产品具体测。第三个技巧是关注软件栈的成熟度。芯片算力只是起点配套的编译器、工具链、文档、示例代码是否成熟直接决定你项目落地要花多少时间。很多小厂的 6 TOPS 芯片跑分很高但算子支持不全编译一个模型要手工处理各种兼容问题最后项目延期全耗在这里。算力只是切入角完整的软件工具链才是决定交付体验的关键。第四个技巧是给系统留足够的负载余量。我带项目的时候心里有一条红线——正式交付的路数负载不允许超过系统总负载的 70%。表面上看设备标称 6 TOPS理论上能跑到 6000 GOPS但你要是真把系统压到 90% 负载去交付现场环境一波动码流多一点光照变一下算法立刻就开始丢帧。边缘设备常年 7×24 小时运行散热条件不比机房负载余量就等于稳定性保障。评测流程规范化之后“6 TOPS 到底能跑几路”这个问题就会变得很具体不是问“能跑几路”而是问“在什么算法、什么分辨率、什么帧率、什么场景下能稳定跑几路”。把 TOPS 从迷信变成参考把实测数据当成唯一标准选型才不会翻车。我在实际项目里见过太多被参数表带偏的案例一台高 TOPS 的盒子买回来跑不动业务最后只能降级当预览转发服务器用成本白白浪费。如果你也正卡在选型或者调优这一步不妨把今天这套估算加实测的流程先走一遍省下来的时间和预算可能远远超出你的预期。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门