NVIDIA 多路视频 AI 的资源预算与容量规划 ​

多路视频 AI 的容量,首先是计算与编解码资源如何分配的问题。NVDEC 能持续解码,不代表每帧都能运行模型;CV 平均计算量不高,也不代表 VLM 突发请求不会挤占推理时间。显存、数据搬运和 CPU 调度还会把这些原本不同的阶段连接起来。

因此,容量应按持续解码、抽帧计算、事件复判和必要的重新编码分别预算,再在混合负载下验证。原始选型材料中的具体设备路数属于规划估计,缺少目标设备完整压测,本文保留计算方法,不把估计写成实测容量。

一、先拆开硬件资源与流水线 ​

阶段主要资源需要统计的负载
接入、解复用、重连网卡、CPU、系统内存流数、码率、包率与重连峰值
硬件解码NVDEC、解码 surface 与显存带宽编码格式、分辨率、帧率、位深
缩放、颜色转换与组 batchCUDA 或平台预处理单元、内存与拷贝实际处理像素量与数据流向
CV 推理与后处理GPU 计算、workspace,部分 CPU模型任务率、batch、候选数
VLM 复判视觉编码、prefill/decode、KV cache请求率、图像规模、输出长度与并发
绘制、转码与输出GPU/CPU、NVENC、网络与存储实际重新编码的输出路数与规格

NVDEC 与 NVENC 是区别于 CUDA 核心的专用引擎,可以与模型计算并行推进,但仍会共享显存带宽、缓冲区与平台功耗资源。部分编码功能还会使用 CUDA,不能把“专用引擎”理解为对其他工作负载完全没有影响。

一个解码 session 对应一条视频的状态,并不意味着独占一个物理解码器。多路 session 可以共享硬件,多个引擎的调度由驱动管理;容量既受总吞吐和内存约束,也受具体编码能力约束,不能只按引擎数量换算路数。

编码预算只计真正重新编码的链路。原始 H.264/H.265 码流直接转发、封装或录像,通常不需要 NVENC;叠加结果到视频、改变分辨率或编码格式后重新输出,才需要相应编码预算。JPEG 抓图也应按实际图像编码实现单独统计,不能直接套用视频 NVENC 的容量。

二、把流数换成各阶段的任务率 ​

2.1 解码看源视频,模型看抽帧频率 ​

对于宽高为 Wi,Hi、帧率为 fi 的视频,可先用像素率粗估解码负载:

Pdec=∑iWiHifi

它适合做同类码流的一阶比较,不是通用解码成本模型。同样像素率下,codec、profile、位深、参考帧结构和视频时钟不同,吞吐可能不同。编码格式不受硬件支持而回退软件解码时,还会改变 CPU 预算。

100 路 1080p30 持续解码,对应 3000 帧/s,约 62.2 亿像素/s。即使每路只抽 1 帧/s 做检测,解码后的抽帧一般也不会把解码量降成原来的 1/30,因为后续帧可能依赖前面的参考帧。

如果需要降低解码压力,应评估低帧率或低分辨率子码流、源端配置,或解码器明确支持的跳帧策略,并确认对检测效果和时间采样的影响,不能简单在压缩包队列中任意丢帧。

设视频流数为 N、每路抽帧周期为 T 秒、一帧平均运行独立模型数为 M:

RCV=NMT

多个规则复用同一次模型输出时,M 仍为 1;不同权重的独立前向才增加扇出。模型耗时不同时还需按模型分别统计任务率,不能把一次轻量检测与一次重型分割当作等价任务。

算术示例对应负载
100 路、30 FPS,持续解码3000 解码帧/s
每路每秒一帧、共享一个检测模型100 次 CV 前向/s
每路两秒一帧、平均两个独立模型合计 100 次 CV 前向/s
其中 20 路需要叠加结果并以 15 FPS 输出300 编码帧/s

以上只是负载换算,不是任何 GPU 的承载承诺。

抽帧与转码如何改变实际输入和时间定位,见 视频转码、抽帧与时间定位的一致性。

2.2 复判按合并后的事件计数 ​

VLM 入口应从候选事件数计算,而不是机械地对每次模型前向各发一个请求。设候选事件到达率为 λcandidate,跟踪、冷却与合并后的保留比例为 d:

λVLM=λcandidated

单模型 100 次/s、候选比例 5%、合并后保留 20% 时,复判约为 1 请求/s。多模型命中同一事件时,先合并再统计,否则会高估有效任务数,也会产生不必要的重复计算。

候选合并前的持续确认、冷却和恢复条件,见 CV 视频场景策略的触发与恢复,应先固定这些规则再统计事件到达率。

三、共享 GPU 要同时限制计算与内存 ​

同卡运行 CV 与 VLM 时,至少分别限制 CV 任务率、在途 batch、VLM 活跃请求、视觉输入规模和生成长度。只设置一个显存比例,不能保证 CV 获得固定的计算时间;多个服务各自的内存配置也不会自动组成全卡统一预算。

显存按常驻与峰值拆分:

MGPU=Mweights+Mdecode+MCV+MVLM+Mqueues+Mreserve

其中解码包含参考帧与输出 surface,CV 包含上下文、激活与 workspace,VLM 包含视觉编码临时量、图捕获和 KV cache。只加模型权重体积,会漏掉并发升高时增长最快的部分。

以紧密排列的 8 bit NV12 为例,一帧 1080p 约为:

1920×1080×1.5≈3.11 MB

100 路每路额外保留 4 帧,约为 1.24 GB;若保留全部视频 5 秒的原始帧,则约为 46.7 GB。这里使用十进制单位,实际还有 stride、对齐和解码参考帧开销。缓冲区在哪里分配,就消耗哪一侧内存;事件录像可优先保留压缩码流,避免长期保存大量原始帧。

同一 GPU 上的缩放、推理与输出尽量直接传递设备侧缓冲区,减少 GPU→CPU→GPU 往返。引用同一个解码 surface 也不等于零成本:下游长期持有它,会阻止缓冲区复用,让解码等待或迫使系统增加内存。

资源分配可以从三个动作开始:

  • 共享模型实例与调度器,使用有限的执行上下文和在途 batch,避免每路重复加载权重。
  • 优先满足持续检测的延迟目标,为复判设置独立入口和并发上限;提高并发后重新测量 CV 尾延迟。
  • 混合负载无法满足目标时,再评估分卡部署;把解码与推理拆到不同 GPU 会新增帧传输,需要一并计入。

NUMA 绑定按实际 PCIe、网卡和内存拓扑决定,不硬性规定“一张 GPU 必须配一颗 CPU”。优先让同一组视频的接入、帧缓冲与执行靠近对应设备,扩卡后再验证本地内存和传输路径。

VLM 的 KV 容量、低位宽表示与实际 attention 路径见 NVIDIA KV Cache 量化中的 NVFP4 与 TurboQuant。缓存池扩大后,仍需重新测量混合负载下的服务率和尾延迟。

四、排队预算要与时效一起设置 ​

设稳定状态下的平均到达率为 λ、平均停留时间为 W,Little 定律给出:

L=λW

这里的 L 是平均在途量,W 包含排队与执行时间。它不能直接给出需要配置的活跃并发,更不能把 p95 时延代入后当作精确容量公式。

实际应测量并发数 c 下的混合服务率 μ(c) 与尾延迟。在持续到达率接近服务率时,突发和耗时波动会放大排队;增大并发又会改变每个请求的耗时和显存占用,不能假定并发翻倍就吞吐翻倍。

队列按任务性质分别处理:

队列容量与过期策略
解码前压缩数据限制缓存时长,保留重连与参考帧恢复所需逻辑
解码后实时检测帧有界缓存,过载时按规则保留较新的采样帧
复判事件合并重复事件,设置优先级和最大等待时间
编码与输出独立限流,避免慢网络或存储拖住整条流水线

100 路不应在同一毫秒同时抽帧,可按流打散采样时刻。实时检测更关注当前画面,积压旧帧通常比跳过过期采样更差;但跟踪和时序策略需要接收真实时间戳与丢帧信息,不能在丢帧后继续按连续帧数计算持续时间。

队列上限最终应由允许的等待时间和突发恢复能力决定。过期复判可以丢弃、延后或转交其他执行资源,但要保留降级状态,不能把“没有执行”写成模型判断为否。

五、用混合负载确认瓶颈 ​

先建立纯解码、CV、VLM 和编码的分项基线,再逐项叠加,最后模拟真实流接入、断流重连、事件突发与慢输出。编码测试保留目标 codec、分辨率、帧率、质量 preset 和输出配置,不用最快编码模式的成绩代替实际链路。

观测优先检查
解码输出跟不上源帧率,检测队列尚空NVDEC、CPU 解复用、码流支持与 surface 复用
解码正常,CV 队列持续增长预处理、模型计算、batch 等待与 CPU 后处理
开启 VLM 后 CV p95 明显上升共享计算、显存带宽与内存峰值
模型计算稳定,输出端积压NVENC、质量配置、网络和存储
GPU 指标不高但端到端变慢CPU 串行阶段、拷贝、锁等待、NUMA 与排队

在支持的独立 GPU 上,可以用以下查询区分计算、编解码与显存状态:

bash
nvidia-smi dmon -s u -d 1 -c 5
nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv

dmon 中的 sm、enc、dec 分别提供相应活动指标,mem 反映内存控制器活动,不是显存已分配比例;不同设备或驱动可能不提供某些指标。采样利用率也不能替代各阶段的吞吐和队列测量。

最终记录实际解码/编码 FPS、CV 吞吐、复判完成率、队列等待、端到端 p95/p99、丢帧/过期率及内存峰值。容量取队列不持续增长、时效仍满足目标的稳定区间,并保留重连与突发余量,而不是取纯引擎测试的最高 FPS。

六、一些反思 ​

视频容量不是一个 GPU 利用率数字。NVDEC、NVENC、计算和内存可以在不同位置先达到限制,而抽帧、事件合并与输出方式又决定每条路径实际承担多少工作。

资源规划最有价值的结果,是明确“接多少路、每路算多少、复判允许多少、过期后怎么办”。这些入口边界比无上限增加并发更容易维持稳定,也能让扩卡与降级有可验证的依据。

七、参考资料 ​