QwenLM / Qwen2-VL

Qwen2-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.
Apache License 2.0
2.63k stars 149 forks source link

qwen2vl-72b 多卡推理 #295

Open ChinChyi opened 2 weeks ago

ChinChyi commented 2 weeks ago

需要测试一个非常长的问题,在单张卡上72b肯定爆显存,有没有将token分发到多张卡上的推理方式,类似于intervl的no_split_module_classes

kq-chen commented 2 weeks ago

应该是有的,是这个modeling_qwen2_vl.py#L1039?正常来说,直接在多卡机器上跑会把模型切开到不同gpu上的,是跑的时候遇到什么报错了么?

ChinChyi commented 2 weeks ago

@kq-chen 报错out of memory,我们是做了一个benchmark,想在qwen上进行测试,使用accelerate多机训练,发现就算是batch=1也总是报显存溢出的错。

yhy-2000 commented 2 weeks ago

是不是没开bf16 flashattn

kq-chen commented 2 weeks ago

用多张卡跑会遇到什么问题呢?使用device_map="auto"正常会将模型切到多张卡上:

model = Qwen2VLForConditionalGeneration.from_pretrained(
    "Qwen/Qwen2-VL-72B-Instruct",
    torch_dtype=torch.bfloat16,
    attn_implementation="flash_attention_2",
    device_map="auto",
)

或者也可以试试用vllm,可以参考:https://github.com/QwenLM/Qwen2-VL/issues/260#issuecomment-2370832309

Leon1207 commented 19 minutes ago

作者您好,在多卡推理时我遇到的问题是,假设使用device_map="auto",在有限资源的情况下,当视频帧数增加时,其中一张卡的显存会急剧增长(大于其他卡的增长,也就是出现显存分配不均匀,导致爆显存),这应该是跟device_map的切分策略有关系?这是不是不可避免的呢?