2.7 KiB
VBench 评分环境与兼容适配
目标
将视频生成和评分解耦:保留已生成的 944 个 MP4,只建立独立评分环境并重复执行 VBench 评分。旧 sglang、deploy 和 vbench 环境不修改。
独立环境
- Conda prefix:
/root/.miniconda3/envs/vbench-score - Python:3.12.13
- PyTorch:2.11.0+cu130
- Transformers:4.36.2
- Tokenizers:0.15.2
- NumPy:1.26.4
timm==0.9.12- CUDA capability:SM 12.0
环境由 scripts/rebuild_vbench_score_env.sh 重建;scripts/check_vbench_score_env.py 验证 16 个评分模块、CUDA matmul、缓存权重和 DINO 本地加载。最终快照位于 environment/vbench_score_setup_logs。
适配记录
1. Matplotlib 依赖闭包不完整
旧评分环境在导入 object_class 时经 Matplotlib 报缺少 pyparsing。独立环境补齐 Matplotlib、Detectron2/GRIT 和 VBench 所需依赖,并用 object_class 8 卡真实评分验证。
2. Transformers/Tokenizers 与 Python 3.12
Transformers 4.33.2 依赖的 Tokenizers 0.13.x 没有 Python 3.12 wheel,服务器也没有 Rust 编译器。改为仍包含 VBench 所需 API 且提供 cp312 wheel 的 Transformers 4.36.2 + Tokenizers 0.15.2。
3. UMT human_action 与 timm
继承环境中的 timm 1.0.16 会由工厂向 VBench UMT 模型注入 cache_dir,触发:
TypeError: VisionTransformer.__init__() got an unexpected keyword argument 'cache_dir'
VBench 自身约束为 timm>=0.9,<=1.0.12,最终锁定 timm==0.9.12。先做模型构造 RED/GREEN,再完成 human_action 单维度 8 卡真实评分,最后进入完整评分链。
4. 服务器缺少 zip 命令
16 维 JSON 已生成后,原脚本因系统没有 zip 命令而在收尾失败。编排脚本改用 Python 标准库 zipfile,不安装系统包、不重算任何维度,然后运行官方 scripts/cal_final_score.py。
只重跑评分
export HF_ENDPOINT=https://hf-mirror.com
export RUN_ID=h3-vbench-base-dense-tp2x4-20260826-run1
export ACTION=evaluate
export RUN_STATIC_FILTER=1
export VBENCH_REPO=/data/wxy/VBench
export VBENCH_PYTHON=/root/.miniconda3/envs/vbench-score/bin/python
bash scripts/run_h3_vbench_base_tp2x4.sh
完整评分先计算 15 个主维度,再用单 GPU 官方静态过滤,最后用 8 卡计算 temporal flickering 并合并成 16 维结果。日志里的 -2/-3/-4.mp4 缺失警告来自本次每 prompt 只生成一个样本,不是环境错误。
最终验收
- 944 个输入视频。
- 16/16 维存在且总分数值有限、位于
[0,1]。 - ZIP 只包含
vbench_16_dimensions.json,内容与磁盘 JSON 一致。 - 当前评分日志无 Traceback。
- 评分 tmux、Python 进程和 GPU 显存均已释放。