sskj-h3/vbench-base/VBENCH_SCORING_ADAPTATIONS.md

2.7 KiB
Raw Blame History

VBench 评分环境与兼容适配

目标

将视频生成和评分解耦:保留已生成的 944 个 MP4只建立独立评分环境并重复执行 VBench 评分。旧 sglangdeployvbench 环境不修改。

独立环境

  • Conda prefix/root/.miniconda3/envs/vbench-score
  • Python3.12.13
  • PyTorch2.11.0+cu130
  • Transformers4.36.2
  • Tokenizers0.15.2
  • NumPy1.26.4
  • timm==0.9.12
  • CUDA capabilitySM 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 显存均已释放。