VLMEvalKit icon indicating copy to clipboard operation
VLMEvalKit copied to clipboard

在测试Internvl-76B的时候,报错RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0!

Open starevelyn opened this issue 1 year ago • 5 comments

在测试Internvl-76B的时候,代码如下: `from vlmeval.config import supported_VLM model = supported_VLM'InternVL2-76B-sft'

ret = model.generate(['assets/apple.jpg', 'What is in this image?']) #前向单张图片 print(ret) # 这张图片上有一个带叶子的红苹果

ret = model.generate(['assets/apple.jpg', 'assets/apple.jpg', 'How many apples are there in the provided images? ']) # 前向多张图片 print(ret) # 提供的图片中有两个苹果`

报的错误是: image image

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument mat2 in method wrapper_CUDA_bmm)

请问一下这个如何解决?

starevelyn avatar Jan 15 '25 01:01 starevelyn

image 代码改成这样就跑通了。。

starevelyn avatar Jan 15 '25 10:01 starevelyn

image image 跑到20%多又报错。。

starevelyn avatar Jan 15 '25 10:01 starevelyn

你好,一般情况下我们默认推理Internvl-76B需要四张卡以防止out of memory。具体的切分方法在split_model函数中。

PhoenixZ810 avatar Jan 16 '25 03:01 PhoenixZ810

你好,一般情况下我们默认推理Internvl-76B需要四张卡以防止out of memory。具体的切分方法在split_model函数中。

我有8张卡在跑,显存应该是够的,但是就是会报错同时用了cpu和cuda,感觉是代码的问题。。按理来说应该只用cuda的,不知道cpu为啥用到

starevelyn avatar Jan 17 '25 05:01 starevelyn

可以print split_model()函数的结果device_mapvisible_devices看一下,是否能和本地的环境对齐

PhoenixZ810 avatar Jan 20 '25 04:01 PhoenixZ810