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

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

相关推荐
阿汤猫6668 小时前
基于OpenCode的Harness架构实战验收指南v3.0 (windows系统)
windows·prompt
阿汤猫66610 小时前
基于OpenCode的Harness架构实战v2.2(windows系统)
windows·prompt
xiaoshuaishuai811 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
思麟呀12 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
爱讲故事的12 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
韩曙亮16 小时前
【错误记录】flutter pub get 执行报错 ( 打开 Windows 开发者模式 )
windows·flutter
一个人旅程~17 小时前
如何让bootcamp-win10中的触摸板像macbook中一样丝滑原生效果?
windows·经验分享·macos·电脑
zyl8372118 小时前
Python 四大核心数据结构:列表、字典、元组、集合
数据结构·windows·python
霸道流氓气质18 小时前
Spring AI Alibaba + Ollama Function Calling 项目完整指南
人工智能·windows·spring
Zhibang Yue19 小时前
Windows下安装FreeSurfer(2026最新)
windows·wsl2·freesurfer