加载qwen2.5vl出现mismatch问题

解决qwen2.5vl加载mismatch问题

在用VLMEvalKit框架进行MLLM评测的时候,发现加载我的qwen2.5-vl-7b模型报错:

        size mismatch for bias: copying a param with shape torch.Size([3584]) from checkpoint, the shape in current model is torch.Size([1280]).

网上搜了一圈没找到类似的错,后面查看log发现有一个warning信息:

You are using a model of type qwen2_5_vl to instantiate a model of type qwen2_vl. This is not supported for all configurations of models and
 can yield errors.  

这个应该就是问题来源,也就是说我加载的模型里model_type为qwen2.5vl,但是模型加载代码里的model类型是qwen2vl,没匹配上模型结构。

问题找到了,怎么改呢?

首先找到warning信息输出源,我全局搜索的,发现在

vlmeval/vlm/hawk_vl/hawk/model/vision_encoder/qwen_vit/configuration_qwen_vit.py

有类似代码:

修改这里面的代码无效,说明其实没调用这里的代码,只是逻辑上有重合的模块,看了一下这个是QwenVisionConfig实,际上继承了PretrainedConfig类,后者在transformers库,也就是比如在这样的路径:

{conda环境目录}/lib/python3.10/site-packages/transformers 下

其中找到configuration_utils.py里的PretrainedConfig类,有一样的代码,修改后发现确实调用这里的warning,在这里进行debug就行。

为什么这里是qwen2_vl呢,我就追溯这个cls实例的来源,后面发现是在

VLMEvalKit/vlmeval/vlm/qwen2_vl/model.py


在vlmevalkit框架里被定义,简单来说就是我的框架里的config.py里定义了

partial(

Qwen2VLChat,

# model_path="xxx"


min_pixels=1280 * 28 * 28,

max_pixels=16384 * 28 * 28,

use_custom_prompt=False,

),

这里用了Qwen2VLChat(因为qwen2.5vl在vlmevalkit里也是这样用的,没有对2.5vl单独有个实例)

然后框架里会根据路径里是否有2.5来判断是不是qwen2.5vl,没有的话就默认是qwen2vl。。。。

要改的话也很简单,路径里加个2.5,但是不得不说这样的设计有点草台班子。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值