VSI-Bench 环境配置与评估

VSI-Bench 环境配置与评估完整指南

环境要求

  • GPU:支持 CUDA 的 NVIDIA 显卡(本文使用 RTX 5090 32GB)
  • CPU 内存:建议 32GB 以上
  • CUDA:13.x
  • Python:3.10

一、创建 conda 环境

bash 复制代码
conda create --name vsibench python=3.10
conda activate vsibench

二、克隆代码

bash 复制代码
git clone git@github.com:vision-x-nyu/thinking-in-space.git
cd thinking-in-space
git submodule update --init --recursive

三、安装依赖

bash 复制代码
cd transformers && pip install -e . && cd ..
pip install -e .
pip install s2wrapper@git+https://github.com/bfshi/scaling_on_scales
pip install deepspeed

四、编译安装 flash-attn

flash-attn 需要从源码本地编译,不能直接用预编译包(CUDA 版本不匹配)。

bash 复制代码
export CUDA_HOME=/usr/local/cuda-13.1   # 根据实际路径修改
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export FLASH_ATTENTION_FORCE_BUILD=TRUE
export OMP_NUM_THREADS=4
pip install flash-attn --no-build-isolation --no-cache-dir

编译时间约 15-30 分钟,CPU 会跑满属于正常现象。


五、配置 HuggingFace Token

VSI-Bench 数据集需要 HuggingFace 账号 token 才能访问。

  1. 注册 HuggingFace 账号:https://huggingface.co
  2. 生成 token:https://huggingface.co/settings/tokens,权限选 Read
  3. 保存 token 到本地:
bash 复制代码
mkdir -p ~/.cache/huggingface
echo "你的hf_开头的token" > ~/.cache/huggingface/token

国内服务器无法直连 huggingface.co,用写文件的方式绕过网络验证,配合镜像站使用。


六、配置 accelerate

bash 复制代码
accelerate config default

七、运行评估

每次运行前设置以下环境变量,防止内存溢出:

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com        # 国内镜像
export HUGGING_FACE_HUB_TOKEN=$(cat ~/.cache/huggingface/token)
export CUDA_VISIBLE_DEVICES=0                    # 指定使用的 GPU 编号
export OMP_NUM_THREADS=4                         # 限制 CPU 线程数
export TOKENIZERS_PARALLELISM=false              # 关闭 tokenizer 多线程
export HF_DATASETS_IN_MEMORY_MAX_SIZE=0          # 数据集走磁盘不缓存到内存
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512  # 防止显存碎片化

运行单个模型评估:

bash 复制代码
cd thinking-in-space
bash evaluate_all_in_one.sh \
  --model internvl2_2b_8f \
  --num_processes 1 \
  --benchmark vsibench

支持的模型列表:

复制代码
llava_one_vision_qwen2_0p5b_ov_32f
llava_one_vision_qwen2_7b_ov_32f
llava_next_video_7b_qwen2_32f
llama3_vila1p5_8b_32f
llama3_longvila_8b_128frames_32f
longva_7b_32f
internvl2_2b_8f
internvl2_8b_8f

八、内存注意事项(干爆服务器一次,老实了,按实际情况来)

必须严格遵守以下限制,否则服务器内存会被打爆:

参数 要求 原因
--num_processes 必须为 1 每个进程独立加载完整模型,4进程=4倍内存
--batch_size 必须为 1 减少中间激活值内存占用

以 7B 模型为例:

num_processes CPU 内存占用
1 ~20GB
4 ~80GB
8 ~160GB

九、查看结果

结果保存在 logs/ 目录下:

复制代码
logs/
└── 20260326/
    └── vsibench/
        └── xxxx_internvl2_2b_8f_xxx/
            ├── results.json   # 完整评估配置和分数
            └── vsibench.json  # 每条样本的输入输出

results.json 包含完整复现信息,包括模型参数、随机种子、代码 git hash。


十、InternVL2-2B 参考结果

任务 分数
Overall 27.56
物体计数 22.83
绝对距离估计 25.40
物体大小估计 21.93
房间大小估计 33.54
相对距离 33.38
相对方向 44.30
路线规划 31.96
出现顺序 7.12

与论文原始结果吻合,说明环境配置正确。

相关推荐
代码小书生10 分钟前
Windows X-Lite Win11 26H1 v3 游戏优化系统!集Win11、Win10、Win7三代优点,兼顾游戏办公生产算力,系统精简纯净!
windows·win10·电脑系统·windows10·26h1·windows x-lite·操作系统操作系统
贵沫末2 小时前
python——打包自己的库并安装
开发语言·windows·python
小眼哥3 小时前
SpringBoot整合Vue代码生成exe运行程序以及windows安装包
vue.js·windows·spring boot
xiaoshuaishuai84 小时前
C# GPU算力与管理
开发语言·windows·c#
꯭爿꯭巎꯭6 小时前
千鹿PR助手邀请码
windows
张赐荣8 小时前
跨平台无障碍版随机数生成器
windows
胖少年8 小时前
从零开始:在 Windows 上用 llama.cpp 跑本地大模型
windows·llama
小狄同学呀8 小时前
同样的global,不同的audioLibPath——记一次诡异的内存错位
c++·windows