2026 年 9 月 18 日,vLLM 官方博客宣布,vLLM 已正式支持 NVIDIA GPU 内置的硬件视频解码能力。借助这一集成,此前受限于 CPU 的视频描述(video captioning)与打标任务,得以在数据中心级多 GPU 节点上实现吞吐扩展,最高可支持 8 块 GPU。
破解 CPU 瓶颈:视频描述场景的长期困局
视频描述是多个行业中的常见任务,用于描述视频中正在发生的内容。在自动驾驶领域,它支撑训练系统对危险场景进行描述与分类、生成人类可读且可检索的元数据,并服务于其他多种用途。
然而在此前,vLLM 处理这类数据集时,视频只能通过基于 CPU 的 OpenCV+FFMPEG 后端解码。当视觉语言模型(VLM)运行在多 GPU 节点上(每块 GPU 对应一个 vLLM 服务实例)CPU 必须在任何 VLM 推理开始之前完成视频帧解码,压力显著放大。
这一问题在视频描述任务中尤为突出:由于模型输出相对较短,通常只有 100 至 200 个 token,视频解码所耗时间的相对占比被进一步放大。实际结果是,即便只运行 2 至 4 块 GPU,CPU 核心也很快被跑满,成为整个流水线的瓶颈。
硬件解码接管负载,8 卡扩展性显著改善
通过集成 PyNvVideoCodec,一个面向 NVIDIA 硬件视频解码器(亦称 NVDEC)的 Python 接口,vLLM 将视频解码工作负载从 CPU 迁移至 GPU,消除了上述瓶颈。
NVIDIA 方面表示:”我们很高兴地宣布,vLLM 已内置支持 NVIDIA GPU 的硬件视频解码能力,让此前受 CPU 瓶颈制约的视频描述与打标任务,能够在数据中心级多 GPU 节点上扩展吞吐。”


根据官方公布的基准数据(图 1、图 2),在 8 块 H100、8 个 vLLM 副本(每副本单卡)的配置下,基于 GPU 的视频解码吞吐量达到基于 CPU 解码器的两倍以上;而以往最多使用 8 块 GPU 的大规模负载,在不到 4 块 GPU 时就会受制于 CPU 利用率,如今该瓶颈已被消除。上述数据采集于基准测试的稳态阶段。
面向超大规模视频描述负载
该能力已在真实业务场景中得到验证。NVIDIA 自动驾驶相关团队使用这类系统为数十万小时量级的视频片段生成描述,累计涉及数亿次视频描述请求。此类任务通常只需相对轻量的模型(例如 Qwen/Qwen3-VL-8B-Instruct),输入提示词指定所需描述的类型,输出规模在 100 至 200 个 token 量级——正是对解码效率最为敏感的负载形态。
部署与可用性
该功能已随标准 CUDA 版 vLLM 发行包一同提供。使用自行安装版本的用户,只需在项目 PyPI 依赖中包含 PyNvVideoCodec==2.0.4 即可。
启动 vLLM 时PyNvVideoCodec启用视频解码器:
# First launch CUDA MPS Daemon
nvidia-cuda-mps-control -d
# Launch vLLM with pynvvideocodec video backend
vllm serve Qwen/Qwen3-VL-8B-Instruct \
--dtype bfloat16 \
--max-model-len 32768 \
--max-num-seqs 1024 \
--max-num-batched-tokens 32768 \
--api-server-count 4 \
--renderer-num-workers 4 \
--async-scheduling \
--mm-ipc-gpu-memory-gb 2 \
--media-io-kwargs \ '{"video":{"backend":"pynvvideocodec","min_frames":16,"max_frames":16,"hw_decoders":2}}' \
--mm-processor-kwargs \
'{"size":{"shortest_edge":65536,"longest_edge":9437184}}'
启用方式上,官方建议在 vllm serve 之前先启动 CUDA MPS 守护进程——对于批量 VLM 推理这类多进程高并发负载,CUDA MPS 对性能表现至关重要。同时,可通过 --mm-ipc-gpu-memory-gb 为视频解码预留显存,建议在不同取值下测试吞吐,仅预留不影响吞吐的最小显存量。
多 GPU 扩展方面,官方推荐每个 vLLM 服务副本运行一个容器并只暴露单块 GPU,也可通过 CUDA_VISIBLE_DEVICES 实现同等隔离,并使用反向代理在多个副本之间分发请求。
注意事项
官方提示,视频解码确实需要预留部分显存:若用例已将全部显存用于 KV cache,可能会看到一定影响。不过在实际测试中,尚未出现使用 PyNvVideoCodec 导致性能下降的情况。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/zixun/72053.html