Repository: open-compass/VLMEvalKit
Issue: 评测mmbench_video会报错
Root cause: Validation Gap

你好，我在评测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


您好 @helloworld01001 ，我看到我们并不支持llavaonevision-qwen这个模型，想问一下您具体使用的是下列的哪个模型呢～
![image](https://github.com/user-attachments/assets/23c06eec-2d02-416d-9ddb-f5257b93b9b4)
以及这种问题的出现，可能是因为传入的line为index，尚未在dataframe里取出对应的数据，可以通过下列这个方式取出。
![image](https://github.com/user-attachments/assets/3fc10a4c-9660-4a7f-abe4-a422de005213)


你好，我用的是llavaonevision-qwen2系列的，应该不是模型的问题，其他模型也有这个问题。下面这段代码就是原代码里面的

![image](https://github.com/user-attachments/assets/b806b8f9-9fa0-4579-b623-b381ff71cfc7)


我这边用最新的主分支代码跑下列指令，是没有这个报错的
`python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose`
![image](https://github.com/user-attachments/assets/09184788-582f-4813-9399-d363bf5e2d69)
想问一下您报错的时候，build_prompt_nopack这个函数传入的line是什么参数类型呢

> 我这边用最新的主分支代码跑下列指令，是没有这个报错的 `python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose` ![image](https://private-user-images.githubusercontent.com/81462011/378269217-09184788-582f-4813-9399-d363bf5e2d69.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjk0OTMxMTcsIm5iZiI6MTcyOTQ5MjgxNywicGF0aCI6Ii84MTQ2MjAxMS8zNzgyNjkyMTctMDkxODQ3ODgtNTgyZi00ODEzLTkzOTktZDM2M2JmNWUyZDY5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDIxVDA2NDAxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwNjBkNDcwNGU1MTJiYzMwM2I3YWYzYzdkNTEzMTAxOWM2MmIyNGUwYWFkMDA5MWUyMjE3ODhkM2RmOTA2N2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.74faH--2aR6279J-hqhOsMLKwJVIgwW7pLfUL0M6Xyo) 想问一下您报错的时候，build_prompt_nopack这个函数传入的line是什么参数类型呢

您好我想问问，怎么修改数据集和下载的vlm模型本地路径呢？就是改成自己本地的，不重新下载了

数据集的话可以在此处修改
![image](https://github.com/user-attachments/assets/13ba29d1-b04a-4db3-9ab9-49d9bfdf515f)
把80行的cache路径改成您存储数据集的根路径即可
vlm的话则可以修改config.py的model_path
![image](https://github.com/user-attachments/assets/a0d78110-d761-4c35-8095-a8dac384a917)
但需注意传入类后，提取出的model_name与原先一致（保证文件名和模型名称一致，如llava-onevision-qwen2-7b-si）。

> 数据集的话可以在此处修改 ![image](https://private-user-images.githubusercontent.com/81462011/378303141-13ba29d1-b04a-4db3-9ab9-49d9bfdf515f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjk0OTQyOTEsIm5iZiI6MTcyOTQ5Mzk5MSwicGF0aCI6Ii84MTQ2MjAxMS8zNzgzMDMxNDEtMTNiYTI5ZDEtYjA0YS00ZGIzLTlhYjktNDlkOWJmZGY1MTVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDIxVDA2NTk1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdmNzRiODNjYzVkMTIxYWU3NTkyODA5NmU4ODY5OTQ0OWI2NjVlMzk4MDdkODdlMDU1YjJlNmUzMTAzOWFiZjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1QJoNnAKws_dDa4YZCo2SjvOuIPyzPamNoGNE9r0HX4) 把80行的cache路径改成您存储数据集的根路径即可 vlm的话则可以修改config.py的model_path ![image](https://private-user-images.githubusercontent.com/81462011/378305203-a0d78110-d761-4c35-8095-a8dac384a917.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjk0OTQyOTEsIm5iZiI6MTcyOTQ5Mzk5MSwicGF0aCI6Ii84MTQ2MjAxMS8zNzgzMDUyMDMtYTBkNzgxMTAtZDc2MS00YzM1LTgwOTUtYThkYWMzODRhOTE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDIxVDA2NTk1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNiYWM2OTcwOWU5N2ExY2RjM2JjY2E1MjJmYWRhYThmZmQxMDBjYjBiOTFiMjNlYTA1NGY5NjU4YTI0MDdhZDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.eg02Zk7kAlns4-EDNdhKu_0ManE2OfvS0XhMRYQsyKk) 但需注意传入类后，提取出的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，为什么还会报错呀

llava-onevision属于llava-next series的延伸，建议您使用最新版本的transformers进行测试(或参照官方配置，选择4.40.0.dev0版本）
![image](https://github.com/user-attachments/assets/168dbfa7-0f3a-43e4-a850-db4f7db403b1)
![image](https://github.com/user-attachments/assets/0dac6283-63c4-4824-a2f3-7c02c9b60cf9)



> Collaborator
> ###
> ** [FangXinyu-0913](/FangXinyu-0913)**

您好我用的是qwen2vl跑的videomme，能不能单独开帖子问您

> 我这边用最新的主分支代码跑下列指令，是没有这个报错的 `python run.py --model llava_onevision_qwen2_7b_ov --data MMBench-Video --verbose` ![image](https://private-user-images.githubusercontent.com/81462011/378269217-09184788-582f-4813-9399-d363bf5e2d69.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjk1MDM3NTYsIm5iZiI6MTcyOTUwMzQ1NiwicGF0aCI6Ii84MTQ2MjAxMS8zNzgyNjkyMTctMDkxODQ3ODgtNTgyZi00ODEzLTkzOTktZDM2M2JmNWUyZDY5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDIxVDA5MzczNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFjODRkYzA5YmMzYzEyYTA3ZmQ2NDVhMWU5MWMxYmNmNTMxZTI0Y2Q4NmI4YTE3NTkwNmFhZTE3ZjBiZTdkMDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7R2zlX8H5PFfaS0S4Ts4QXp62_0HvAU6jfRQHNQEdco) 想问一下您报错的时候，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可以正常评测，请问该怎么解决



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

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

> 想问一下您报错的时候，build_prompt_nopack这个函数传入的line是什么参数类型呢

还有就是评测InternVL2-2B的时候是不是没有调用build_prompt_nopack函数，因为没有打印我调试的代码

> > 想问一下您报错的时候，build_prompt_nopack这个函数传入的line是什么参数类型呢
> 
> 还有就是评测InternVL2-2B的时候是不是没有调用build_prompt_nopack函数，因为没有打印我调试的代码

是的，InternVL2-2B是走的模型自身的build_custom_prompt这个函数

> 是字符串类型的，build_prompt_nopack中 line 的类型是: <class 'str'>，可是InternVL2-2B和MiniCPM-V-2可以正常评测

有line的具体信息吗（是怎么样一个字符串），因为之前确实没有遇到过这种情况