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

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

相关推荐
qq_369224339 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波9 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse9 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子9 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt9 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal9 天前
Windows:flutter环境搭建
windows·flutter
未若君雅裁9 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang9 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农9 天前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design9 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis