![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多模态大模型源码阅读
FlowerLoveJava
我是一个小菜鸟,想要学好java语言,skr~
展开
-
[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - trainer篇
我们传入的model参数实际上是一个以Qwen为语言模型,SIGLIP/CLIP-VIT为视觉模型的多模态模型参数,所有这里的model.LLM大概率是语言模型,saved_params_llm获取语言模型微调后的adapter状态字典,并将其存储到输出路径下的adapter_model.bin文件中。其余的参数在后续都将应用权重衰减。如果设置了投影层的学习率,我们获取opt_model中所有名字里带有‘feature_proj’的参数,这些参数都是投影层参数,代表我们的模型是多模态模型,具有投影层。原创 2024-08-22 15:59:30 · 412 阅读 · 0 评论 -
[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 语言模型篇(4)
本节中将接着看MQwen.py中的剩余源码,即MQwenLMHeadModel和main函数源码,MQwen.py重构了Qwen大模型中QwenModel的前向传播代码和QwenLMHeadModel的部分代码,以适配视觉编码器CLIP-VIT-L和语言模型Qwen的多模态架构,QwenModel类作为基座模型,QwenLMHeadModel 是基于 QwenModel 的一个扩展,加入了针对特定下游任务的头,在后续我们主要使用重写后的MQwenLMHeadModel作为多模态架构中的语言模型。原创 2024-08-21 14:57:04 · 541 阅读 · 0 评论 -
CLIP-VIT-L + Qwen 多模态源码阅读 - 语言模型篇(3)
如果batch_size合法,我们重塑attention_mask的第一个维度为batch_size。其他情况,我们初始化一个空的ntk_alpha_list,如果存在attention_mask且kv_seq_len大于继承的成员变量self.seq_len,我们用attenrion_mask计算序列的实际长度,这里去除掉四维张量attenrion_mask的中间两个维度,计算seq_len维度中指为0的元素数量(由于之前翻转了attention_mask,所以值为0代表我们需要关注的元素)。原创 2024-08-20 22:23:05 · 1070 阅读 · 0 评论 -
[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 语言模型篇(2)
我们确保token_type_id和position_id的最后一个维度都是seq_len + image_context_len,以便于后续的处理。最后对position_id进行重新塑性,position_ids原本的size为(seq_len + image_context_len,),我们添加一个为1的维度(用unsqueeze(0)),并且将position_ids最后一个维度重塑为(seq_len + image_context_len),这里可能有点多此一举,但是为了代码的健壮性也无妨。原创 2024-08-19 23:02:56 · 646 阅读 · 0 评论 -
[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 语言模型篇(1)
想要做一个以Qwen-7B-Insturct为language decoder, 以CLIP-VIT-14为vision encoder的image captioning模型,找了很多文章和库的源码,但是无奈都不怎么看得懂,刚开始打算直接给language decoder加上cross attention层对接vison encoder的图片编码结果,无奈不会写TAT,看了Qwen的源码半天都没搞懂这么多类是干什么的,心累。input_ids:输入序列的索引,将token映射为唯一的整数数字索引。原创 2024-08-17 23:37:14 · 428 阅读 · 0 评论 -
[CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
定义一个继承CLIPModel成员变量和成员方法的visualModel类,在python3.5之后,可以对传递参数的类型进行注解,这里的CLIPModel是一个特定的自定义参数类型,用于指定传入的config参数是CLIPConfig类型,并使用传递的一般配置参数初始化父类。本节中将阅读视觉模型部分,即重构后的visual-encoder的源码,位于文件夹visual下的CLIP_VIT.py文件,模型选择的是clip-vit-large-patch14。利用传入的通用配置模型参数初始化父类。原创 2024-08-21 22:49:06 · 756 阅读 · 0 评论