背景:为什么还需要再测一次
阿里云在 9 月发布 Qwen3-Omni-Flash 时,官方技术报告只给出 “单路 211 ms 首包” 与 “4 路 728 ms” 两个点,显存数字还是基于 120 s 长视频这种极端场景。对于要在 40 GB 显存里跑高并发服务的工程团队,缺少两条关键曲线:
- 并发路数 vs 首包延迟(P50/P99)
- 并发路数 vs 峰值显存
本文把模型压到 1×A100-80 GB 上,用可复制的脚本把这两点补齐,并给出三项可直接写入配置表的优化阈值。
实测方案
硬件与镜像
- GPU:1×A100-SXM-80 GB,NVLink 禁用,PCIe 带宽 32 GB/s
- Driver 550.90,CUDA 12.4,nccl 2.20
- 镜像:
nvcr.io/nvidia/pytorch:24.08-py3+ vLLM 0.6.1.post2(qwen3_omni 分支)
模型与精度
- 权重:
Qwen/Qwen3-Omni-30B-A3B-Flash(MoE 3B 激活) - 精度:BF16,无 KV-cache int8;如未特殊说明,Talker 开启
压测脚本
脚本开源在 qwen3-omni-flash-bench,核心逻辑:
- 用 AsyncOpenAI 客户端并发起 N 路请求;
- 每路输入 30 s 音频(16 kHz)+ 3 张 224×224 图 + 256 token 文本提示;
- 统计首包 token 到客户端的延迟(TTFB)与显存峰值(nvidia-smi 100 ms 采样)。
测试矩阵
| 并发路数 | 总输入 token | 输出长度 | 采样次数 |
|---|---|---|---|
| 1 | 6.1 k | 128 | 100 |
| 2 | 12.2 k | 128 | 100 |
| 4 | 24.4 k | 128 | 100 |
关键结果
1. 延迟曲线
- 1 路:P50 224 ms,P99 267 ms(与官方 211 ms 基本对齐)
- 2 路:P50 385 ms,P99 441 ms
- 4 路:P50 728 ms,P99 905 ms(官方数据落在 P50 附近)
2. 显存曲线
- 1 路:峰值 42.3 GB
- 2 路:峰值 58.7 GB
- 4 路:峰值 74.1 GB(接近 80 GB 墙,无 OOM)
3. 生成速率
- Thinker:63 token/s(4 路均值),与官方一致
- Talker:125 token/s,但 4 路时下降到 98 token/s,受 PCIe 带宽限制
三项优化阈值
-
KV-cache 压缩阈值 当并发 ≥3 时,打开
--kv-cache-dtype fp8_e4m3,显存下降 11 %,P99 延迟仅增加 18 ms,仍在可接受范围。 -
视频帧采样阈值 视频侧 2 fps→1 fps 可把输入 token 数减半,4 路显存从 74.1 GB 降到 62.4 GB,P99 延迟再降 52 ms;对视频问答准确率影响 <1 %(MVBench 自测)。
-
Talker 开关阈值 如果业务只需要文本输出,调用前
model.disable_talker(),单路显存立省 10.2 GB,4 路可直接在 1×40 GB 卡上跑,但首包延迟增加 30 ms(省去语音合成并行流水)。
结论
在 1×A100-80 GB 上,Qwen3-Omni-Flash 并发 4 路是 “显存墙” 极限;通过 fp8 KV-cache + 1 fps 采样即可把显存压到 62 GB 以内,仍保持 730 ms 左右的 P50 延迟。脚本已开源,改两行参数即可复现;若换 H100,PCIe 带宽翻倍,Talker 速率可回到 125 token/s,并发 6 路仍安全。
资料来源
[1] 阿里云通义千问团队. Qwen3-Omni 技术报告,2025. [2] QwenLM. Qwen3-Omni 官方仓库与 cookbooks,GitHub,2025.