【LLM多模态】Qwen-VL模型架构和训练流程

note

  • 观点:现有很多多模态大模型是基于预训练(和SFT对齐)的语言模型,将视觉特征token化并对齐到语言空间中,利用语言模型得到多模态LLM的输出。如何设计更好的图像tokenizer以及定位语言模型在多模态LLM中的作用很重要。
  • Qwen-VL:以Qwen-7B的预训练模型作为语言模型的初始化,并以Openclip ViT-bigG作为视觉编码器的初始化,中间加入单层随机初始化的cross-attention,经过约1.5B的图文数据训练得到,最终图像输入分辨率为448。
  • Qwen-VL-Chat: 在Qwen-VL的基础上进行微调,形成Qwen-VL-Chat,支持多图、多轮问答、创作等能力。
  • Qwen-VL特点:在stage2和stage3训练过程中,不止使用VL数据,还是用纯文本的训练数据,避免“灾难性遗忘”。相比InstructBLIP,Qwen-VL模型视觉和LLM的Adapter模块简化很多,仅仅是一个浅层的Attention Pooling模块。

文章目录

一、Qwen-VL模型

链接:https://arxiv.org/pdf/2308.12966.pdf
项目:https://github.com/QwenLM/Qwen-VL/tree/master
demo:https://modelscope.cn/studios/qwen/Qwen-VL-Chat-Demo/summary

《Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond》 https://arxiv.org/abs/2308.12966

Qwen-VL-Chat Tutorial:https://github.com/QwenLM/Qwen-VL/blob/master/TUTORIAL.md
在这里插入图片描述

1. 整体架构

三大模块的参数量:
在这里插入图片描述

Qwen-VL模型的整体网络架构包括以下三个组件:

大型语言模型(Large Language Model):

  • 作用:作为Qwen-VL模型的基础组件,这个部分采用了一个大型语言模型,其初始权重来自于预训练的Qwen-7B模型。
  • 来源:Qwen-VL的大型语言模型使用了来自Qwen-7B模型的预训练权重。

视觉编码器(Visual Encoder):

  • 作用:视觉编码器采用了Vision Transformer(ViT)架构,用于处理输入图像并生成一组图像特征。在训练和推理过程中,将输入图像调整到特定的分辨率,然后通过将图像分割成大小为14的图块来处理它们,生成图像特征。
  • 来源:视觉编码器的架构和预训练权重来自于Openclip的ViT-bigG模型。

位置感知的视觉-语言适配器(Position-aware Vision-Language Adapter):

  • 作用:为了缓解由于长图像特征序列而产生的效率问题,Qwen-VL引入了一个视觉-语言适配器,用于压缩图像特征。适配器包括一个单层的交叉注意力模块,随机初始化。

    • 此模块使用一组可训练的向量(嵌入)作为查询向量,使用来自视觉编码器的图像特征作为交叉注意力操作的键
    • 这个机制将视觉特征序列压缩到固定长度的256。
  • 来源:适配器的初始化是随机的。

这三个组件共同构成了Qwen-VL模型的整体网络架构,实现了对图像和文本的综合理解与处理。

2. Position-aware Vision-Language Adapter作用

Qwen-VL中的“Position-aware Vision-Language Adapter”是一个组件,其作用是为了解决长序列的图像特征在效率上的问题。具体来说,它的工作方式如下:

(1)压缩图像特征序列:

  • 该适配器由一个单层交叉注意力模块组成,它的初始化是随机的。
  • 模块使用一组可训练的向量(嵌入)作为查询向量,使用来自视觉编码器的图像特征作为键进行交叉注意力操作。
  • 这个机制将图像特征序列压缩成了固定长度的256。

(2)考虑位置信息:

该组件的作用在于使得长序列的图像特征变得更加紧凑,从而提高了处理效率。同时,考虑到位置信息可以帮助模型更准确地理解图像细节,因此在压缩过程中保留了这方面的信息。

在处理大量的图像特征时,尤其是在序列非常长的情况下,直接传递可能会导致效率问题。通过引入这个“Position-aware Vision-Language Adapter”,可以有效地处理长序列,提高了模型的整体性能。

二、训练过程

在这里插入图片描述

• Stage1 为预训练,目标是使用大量的图文Pair对数据对齐视觉模块和LLM的特征,这个阶段冻结LLM模块的参数;

• Stage2 为多任务预训练,使用更高质量的图文多任务数据(主要来源自开源VL任务,部分自建数据集),更高的图片像素输入,全参数训练;

• Stage3 为指令微调阶段,这个阶段冻结视觉Encoder模块,使用的数据主要来自大模型Self-Instruction方式自动生成,目标是提升模型的指令遵循和多轮对话能力

Q2. 针对文本标记的训练目标是什么?使用了什么优化器和学习率调度?

(1)在Qwen-VL模型的第一个预训练阶段,针对文本标记的训练目标是最小化文本标记的交叉熵(cross-entropy)。具体来说,模型的任务是尽量减小文本标记的预测与真实标记之间的差距,以提高文本生成的准确性。

在这个阶段,作者使用了AdamW优化器,并设置了以下超参数:

  • β1 = 0.9

  • β2 = 0.98

  • ε(eps)= 1e−6

(2)对于学习率调度,作者采用了余弦学习率调度(cosine learning rate schedule)。最大学习率(maximum learning rate)被设置为2e−4,最小学习率(minimum learning rate)为1e−6,并使用了线性热身(linear warm-up)的方法,热身步数为500步。

(3)使用了权重衰减(weight decay)为5e−2和梯度剪切(gradient clipping)为1.0来优化模型的训练过程。

这些优化器和学习率调度的选择旨在帮助模型更好地学习图像与文本之间的关联关系,从而实现文本标记的准确性提高。

Q3. 这个阶段的训练过程持续了多少步骤?消耗了多少图像文本样本和图像文本标记?

在第一个预训练阶段,训练过程持续了50000步,消耗了大约15亿的图像文本样本和5000亿的图像文本tokens。
在这里插入图片描述
多任务预训练阶段(3.2)
We unlocked the large language model and trained the whole model. The training objective is the same as the pre-training stage.

Q4. 在第二个多任务预训练阶段,Qwen-VL模型是如何进行训练的?有哪些任务并行进行训练?

在第二个多任务预训练阶段:

  • Qwen-VL模型采用了高质量和细粒度的视觉-语言(VL)标注数据
  • 采用了更大的输入分辨率和交错的图像-文本数据。

具体来说,Qwen-VL模型在第二个预训练阶段同时进行了以下七个任务的训练:

  • 图像描述(Captioning)
  • 视觉问答(VQA)
  • 定位任务(Grounding)
  • 参考定位和定位描述的双重任务(Ref Grounding 和 Grounded Cap.)
  • 光学字符识别(OCR)
  • 文本生成(Text Generation)

在这个阶段,作者综合利用了不同的数据源和任务,使得模型能够在多方面进行训练,从而提升其对于图像与文本的综合理解能力。

Q8. 在监督微调阶段,Qwen-VL模型是如何通过指导微调来增强交互和对话能力的?

在监督微调阶段,Qwen-VL模型通过引入额外的指导微调数据来提升其交互和对话能力,从而生成了交互式的Qwen-VL-Chat模型。这些多模态的指导调整数据主要来自于图像描述或对话数据,这些数据可以通过LLM(Large Language Model)自我训练生成。然而,这些数据通常只涵盖了单一图像对话和推理,且仅限于对图像内容的理解。因此,作者们通过手动标注、模型生成和策略串联等方法构建了一组额外的对话数据,以将定位和多图像理解能力融入到Qwen-VL模型中。

这样做的目的是确保模型可以有效地将这些能力传递到更广泛的语言和问题类型中,从而提升了模型在交互和对话方面的性能。在这个阶段,作者们将模型的视觉编码器冻结,仅优化语言模型和适配器模块,以保证模型的训练稳定和有效。

训练Qwen-VL-Chat模型的微调参数设定:

  • 全局批次大小为128的训练方式
  • 使用了具有最大学习率1e-5、最小学习率1e-6和线性预热3000步的学习率调度。

Q9. 文章提到了如何适应多图像对话和多图像输入,可以解释一下这个过程吗?

在Qwen-VL模型的训练过程中,为了适应多图像对话和多图像输入,作者采取了一些措施:

  • 添加图像标识:在对话中,为了区分不同的图像输入,作者在每个图像前添加了一个形如"Picture id:"的字符串,其中id对应了图像输入的顺序。
  • 对话格式设计:作者使用了ChatML格式来构建指导微调的数据集。在这个格式中,每个对话交互的陈述都被标记了两个特殊的token((<|im_start|> and <|im_end|>),用于便于对话的终止。

以下是一个示例:
在这里插入图片描述

通过这样的设计,模型可以更好地理解多图像对话,并能够根据用户提供的不同图像进行交互。这种方式有助于模型适应处理多个图像输入的场景。

在训练过程中,只对答案和特殊标记(上例中为蓝色)进行监督,而不监督角色名称或问题提示。在这个阶段,视觉编码器被冻结,只优化语言模型和适配器模块。具体来说,Qwen-VL-Chat模型以全局批次大小为128进行训练,采用学习率调度,最大学习率为1e−5,最小学习率为1e−6,线性预热3000步。

三、数据相关

Q1. Qwen-VL模型的第一个预训练阶段使用了怎样的数据集?这个数据集经过了哪些处理?

在这里插入图片描述

Qwen-VL模型的第一个预训练阶段使用了一个大规模、弱标记的、通过网络爬取得到的图像文本对数据集。这个预训练数据集包括了来自公开资源和部分内部数据的图像文本对。为了保证数据质量,研究人员对数据集进行了清理,去除了其中的某些模式。在清理后,原始数据集中包含了50亿对图像文本对,而剩余的数据经过处理后仍然有14亿对,其中77.3%为英文文本,22.7%为中文文本

Q5. 为了增强模型对细节的理解和定位能力,Qwen-VL的训练过程中涵盖了哪些数据形式?这些数据形式与传统的图像-文本任务有何不同?

为了增强模型对细节的理解和定位能力,Qwen-VL的训练过程涵盖了数据形式,包括了区域描述、问题和检测。与传统的图像-文本任务不同,这些数据形式要求模型准确理解和生成符合指定格式的区域描述。

具体来说,Qwen-VL的训练数据包括了以下内容:

  • 区域描述(Region Descriptions):这是描述图像中特定区域的文本,通常包括了区域的位置、特征或属性等信息。
  • 问题(Questions):与区域描述相关的问题,模型需要理解问题并生成相应的回答。
  • 检测(Detections):这些是图像中的检测结果,通常与区域描述和问题相关联。检测结果可以包括了图像中不同区域的边界框信息。

与传统的图像-文本任务不同之处在于,Qwen-VL的训练数据要求模型不仅能够处理图像和文本的匹配,还需要理解和生成符合指定格式的区域描述,这要求模型具备更强的细节理解和定位能力。传统的图像-文本任务可能更侧重于图像标注或问题回答,而不一定需要生成特定格式的区域描述

Q6. 用于视觉问答(VQA)任务的数据集包括哪些?

用于视觉问答(VQA)任务的数据集包括了以下几个:

GQA (Hudson and Manning, 2019)
VGQA (Krishna et al., 2017)
VQAv2 (Goyal et al., 2017)
DVQA (Kafle et al., 2018)
OCRVQA (Mishra et al., 2019)
DocVQA (Mathew et al., 2021)

Q7. 如何改善与文本相关的任务?从哪里获取了额外的数据?

在文章中,为了改善与文本相关的任务,作者采取了以下措施:

  • 收集pdf和HTML格式的数据:从Common Crawl获取了pdf和HTML格式的数据,这些数据包含了自然风光背景下的英文和中文语言的合成OCR数据。
  • 生成合成OCR数据:通过Kim等人(2022)的方法,生成了英文和中文语言的合成OCR数据,这有助于改善文本相关的任务。

监督微调阶段SFT(3.3)

In this stage, we freeze the visual encoder and optimize the language model and adapter module.

Q9. SFT数据的规模是多少?

350k

四、关键问题

Q3. 对于Qwen-VL模型的输入,图像是如何处理的?它们经过视觉编码器和适配器后得到了怎样的特征序列?

Qwen-VL模型的输入中,图像经过了以下处理:

  • 视觉编码器:Qwen-VL使用了Vision Transformer (ViT)架构的视觉编码器。在训练和推理过程中,输入的图像会被调整到特定的分辨率。视觉编码器通过将图像分割成大小为14的图块进行处理,生成一组图像特征。
  • 适配器:为了解决由于长图像特征序列而产生的效率问题,Qwen-VL引入了一个称为“Position-aware Vision-Language Adapter”的适配器,用于压缩图像特征。该适配器包含一个单层的交叉注意力模块,它的初始化是随机的。该模块使用一组可训练的向量(嵌入)作为查询向量,将视觉编码器生成的图像特征作为交叉注意力操作的关键。这个机制将视觉特征序列压缩成了固定长度的256。另外,考虑到位置信息对于细节图像理解的重要性,2D绝对位置编码被引入到交叉注意力机制的查询-关键对中,以减轻在压缩过程中位置细节的潜在丢失。压缩后的图像特征序列长度为256,随后被输入到大型语言模型中。

因此,经过视觉编码器和适配器处理后,图像会生成一个包含256维特征的固定长度序列,以供后续模型处理和理解。

Q4. 为了区分图像特征输入和文本特征输入,作者引入了哪两个特殊的标记?这两个标记分别代表了什么意义?

为了区分图像特征输入和文本特征输入,作者引入了两个特殊的标记:和。其中:

  • <img>标记代表着图像特征的开始,标志着图像内容的起始点。
  • </img>标记代表着图像特征的结束,标志着图像内容的结束点。

这两个特殊标记的引入使得模型可以清晰地识别并区分图像特征和文本特征,从而正确处理输入数据。

Q6. 作者提到了如何处理边界框输入和输出,这个处理过程包括哪些具体步骤?

在处理边界框输入和输出时,作者采取了以下具体步骤:

边界框输入:

  • 针对给定的边界框,首先进行了一个归一化处理,将其范围限定在[0, 1000)之间。
  • 然后,将归一化后的边界框转化成了一个特定的字符串格式:“(Xtopleft,Ytopleft),(Xbottomright,Ybottomright)”。
  • 这个字符串被看作文本进行处理,无需额外的位置词汇。

特殊标记:

  • 为了区分检测字符串和普通文本字符串,作者在边界框字符串的开始和结束处添加了两个特殊的标记,分别是"“和”"。

关联描述词或句子:

  • 为了正确地将边界框与相应的描述词或句子关联起来,作者引入了另一组特殊标记,分别是"“和”"。

  • 这两组标记用于标示被边界框引用的内容。

通过这些处理步骤,Qwen-VL模型能够有效地处理边界框的输入,从而增强了模型对细节的理解和定位能力。

Reference

[1] 苏神-Transformer升级之路:17、多模态编码位置的简单思考
[2] Qwen-VL:突破视觉与语言融合的多模态模型,GPT4V的国产化替代
[3] 模型方法-Qwen-VL中文的多模态模型

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山顶夕景

小哥哥给我买个零食可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值