FlashHead Benchmark¶
这份文档记录 soulx-flashhead-1.3b 在 OmniRT subprocess 包装路径下的首轮真机 benchmark。它和外部 SoulX-FlashHead 适配文档的 resident 数据口径不同:这里测的是 OmniRT 调用 generate_video.py 的冷启动端到端链路。
测试环境¶
- 日期:
2026-04-28 - 机器:
内部 Ascend 验证主机 - 加速器:
Ascend 910B2 - 运行入口:
omnirt generate+subprocess+torchrun - 模型:
soulx-flashhead-1.3bSoulX-FlashHead-1_3Bwav2vec2-base-960h - 外部仓库:
/path/to/SoulX-FlashHead - OmniRT 测试目录:
/path/to/omnirt
基准配置¶
这次对齐的是质量优先的 910B 配置:
model_type=proaudio_encode_mode=streamFLASHHEAD_SAMPLE_STEPS=2FLASHHEAD_VAE_2D_SPLIT=1FLASHHEAD_LATENT_CARRY=0FLASHHEAD_NPU_FUSION_ATTENTION=1- 输入:
examples/girl.pngbench_results/bench_10s.wav - 输出:
512x51225 FPS10.0s250 frames
设备可见性
真机运行时需要在启动 OmniRT 父进程前设置 ASCEND_RT_VISIBLE_DEVICES,不能只传 --visible-devices。资源预算检查发生在外部 torchrun 启动前,如果父进程仍看到被占用的默认 NPU,会错误地按默认卡计算可用显存。
命令模板¶
2 卡:
set +u
source /usr/local/Ascend/ascend-toolkit/set_env.sh
set -u
ASCEND_RT_VISIBLE_DEVICES=2,3 \
PYTHONPATH=/path/to/omnirt/src \
/path/to/flashhead-venv/bin/python -m omnirt generate \
--task audio2video \
--model soulx-flashhead-1.3b \
--backend ascend \
--image /path/to/SoulX-FlashHead/examples/girl.png \
--audio /path/to/SoulX-FlashHead/bench_results/bench_10s.wav \
--repo-path /path/to/SoulX-FlashHead \
--ckpt-dir models/SoulX-FlashHead-1_3B \
--wav2vec-dir models/wav2vec2-base-960h \
--python-executable /path/to/flashhead-venv/bin/python \
--ascend-env-script /usr/local/Ascend/ascend-toolkit/set_env.sh \
--launcher torchrun \
--nproc-per-node 2 \
--visible-devices 2,3 \
--sample-steps 2 \
--vae-2d-split \
--npu-fusion-attention \
--output-dir outputs/flashhead_bench_2npu \
--json
4 卡只需把 ASCEND_RT_VISIBLE_DEVICES、--visible-devices 改成 2,3,4,5,并将 --nproc-per-node 改成 4。
结果摘要¶
| 配置 | wall time | denoise_loop_ms |
export_ms |
输出 |
|---|---|---|---|---|
| 2 卡冷启动 | 82.96s |
69,501.215 ms |
264.686 ms |
512x512 / 10s / 250 frames |
| 4 卡冷启动 | 84.08s |
69,963.908 ms |
237.519 ms |
512x512 / 10s / 250 frames |
这组数据说明:
- 当前 OmniRT
subprocess包装链路已经能在 910B 上完成真实audio2video生成。 - 冷启动口径下,4 卡没有优于 2 卡;分布式初始化、模型加载、数据准备和首轮算子预热会抵消多卡收益。
- 要衡量多卡稳态收益,应继续做
persistent_worker/ resident 路径,而不是只看单次脚本冷启动。
产物校验¶
| 配置 | RunReport run_id |
远端输出目录 | 校验 |
|---|---|---|---|
| 2 卡 | 8361015e-f1d6-4ad7-8c3c-6f3680354fa1 |
outputs/flashhead_bench_20260428_180909 |
ffprobe: 512x512 / 25 FPS / 10.0s / 250 frames; blackdetect / freezedetect 未输出告警 |
| 4 卡 | 79ebe868-609a-4f5f-a571-6366d984aeb2 |
outputs/flashhead_bench_20260428_181056 |
ffprobe: 512x512 / 25 FPS / 10.0s / 250 frames; blackdetect / freezedetect 未输出告警 |
已知注意点¶
- 远端运行 OmniRT CLI 需要
protobuf和grpcio;本次在/path/to/flashhead-venv中通过清华源补装。 - 当前文档记录的是 OmniRT
subprocess冷启动链路,不代表服务化热态时延。 latent_carry=false是默认质量档;latent_carry=true虽可减少部分 VAE encode 开销,但参考适配记录里存在风格漂移,不作为默认展示配置。