open-compass / VLMEvalKit

Open-source evaluation toolkit of large vision-language models (LVLMs), support ~100 VLMs, 40+ benchmarks
https://huggingface.co/spaces/opencompass/open_vlm_leaderboard
Apache License 2.0
1.28k stars 183 forks source link

评测mmbench_video会报错 #530

Open helloworld01001 opened 2 weeks ago

helloworld01001 commented 2 weeks ago

你好,我在评测mmbench_video会报以下错误,请问该怎么解决?CUDA_VISIBLE_DEVICES=5 python /share/project/open-compass_1011/VLMEvalKit/run.py --data MMBench-Video --model llavaonevision-qwen --work-dir /share/project/open-compass_1011/VLMEvalKit/test-results/llava_onevision_qwen --nframe 16 --pack

0it [00:00, ?it/s] 2024-10-19 14:27:49,039 - RUN - ERROR - Model llavaonevision-qwen x Dataset MMBench-Video combination failed: string indices must be integers, skipping this combination. Traceback (most recent call last): File "/share/project/open-compass_1011/VLMEvalKit/run.py", line 121, in main model = infer_data_job_video( File "/share/project/open-compass_1011/VLMEvalKit/vlmeval/inference_video.py", line 143, in infer_data_job_video model = infer_data( File "/share/project/open-compass_1011/VLMEvalKit/vlmeval/inference_video.py", line 94, in infer_data struct = dataset.build_prompt( File "/share/project/open-compass_1011/VLMEvalKit/vlmeval/dataset/mmbench_video.py", line 139, in build_prompt return self.build_prompt_nopack(line, num_frames, video_llm) File "/share/project/open-compass_1011/VLMEvalKit/vlmeval/dataset/mmbench_video.py", line 120, in build_prompt_nopack question = line['question'] TypeError: string indices must be integers

FangXinyu-0913 commented 2 weeks ago

您好 @helloworld01001 ,我看到我们并不支持llavaonevision-qwen这个模型,想问一下您具体使用的是下列的哪个模型呢~ image 以及这种问题的出现,可能是因为传入的line为index,尚未在dataframe里取出对应的数据,可以通过下列这个方式取出。 image

helloworld01001 commented 2 weeks ago

你好,我用的是llavaonevision-qwen2系列的,应该不是模型的问题,其他模型也有这个问题。下面这段代码就是原代码里面的

image

FangXinyu-0913 commented 2 weeks ago

我这边用最新的主分支代码跑下列指令,是没有这个报错的 python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose image 想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

jun0yayay commented 2 weeks ago

我这边用最新的主分支代码跑下列指令,是没有这个报错的 python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose image 想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

您好我想问问,怎么修改数据集和下载的vlm模型本地路径呢?就是改成自己本地的,不重新下载了

FangXinyu-0913 commented 2 weeks ago

数据集的话可以在此处修改 image 把80行的cache路径改成您存储数据集的根路径即可 vlm的话则可以修改config.py的model_path image 但需注意传入类后,提取出的model_name与原先一致(保证文件名和模型名称一致,如llava-onevision-qwen2-7b-si)。

jun0yayay commented 2 weeks ago

数据集的话可以在此处修改 image 把80行的cache路径改成您存储数据集的根路径即可 vlm的话则可以修改config.py的model_path image 但需注意传入类后,提取出的model_name与原先一致(保证文件名和模型名称一致,如llava-onevision-qwen2-7b-si)。

你好,我还想问一个:from transformers import Qwen2VLForConditionalGeneration, Qwen2VLProcessor ImportError: cannot import name 'Qwen2VLForConditionalGeneration' from 'transformers' (/opt/conda/envs/vl-eval/lib/python3.11/site-packages/transformers/init.py)

版本是和你们说的那个4.33.0推荐的一致transformers,为什么还会报错呀

FangXinyu-0913 commented 2 weeks ago

llava-onevision属于llava-next series的延伸,建议您使用最新版本的transformers进行测试(或参照官方配置,选择4.40.0.dev0版本) image image

jun0yayay commented 2 weeks ago

Collaborator

FangXinyu-0913

您好我用的是qwen2vl跑的videomme,能不能单独开帖子问您

helloworld01001 commented 2 weeks ago

我这边用最新的主分支代码跑下列指令,是没有这个报错的 python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose image 想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

你好,我在评测qwen2vl的时候还是会遇到那个错误, File "/share/project/open-compass_date/open-compass_1021/VLMEvalKit/vlmeval/dataset/mmbench_video.py", line 118, in build_prompt_nopack question = line['question'] TypeError: string indices must be integers

但是InternVL2-2B和MiniCPM-V-2可以正常评测,请问该怎么解决

FangXinyu-0913 commented 2 weeks ago

想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

helloworld01001 commented 2 weeks ago

是字符串类型的,build_prompt_nopack中 line 的类型是: <class 'str'>,可是InternVL2-2B和MiniCPM-V-2可以正常评测

helloworld01001 commented 2 weeks ago

想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

还有就是评测InternVL2-2B的时候是不是没有调用build_prompt_nopack函数,因为没有打印我调试的代码

FangXinyu-0913 commented 1 week ago

想问一下您报错的时候,build_prompt_nopack这个函数传入的line是什么参数类型呢

还有就是评测InternVL2-2B的时候是不是没有调用build_prompt_nopack函数,因为没有打印我调试的代码

是的,InternVL2-2B是走的模型自身的build_custom_prompt这个函数

FangXinyu-0913 commented 1 week ago

是字符串类型的,build_prompt_nopack中 line 的类型是: <class 'str'>,可是InternVL2-2B和MiniCPM-V-2可以正常评测

有line的具体信息吗(是怎么样一个字符串),因为之前确实没有遇到过这种情况