qwenvl 以及qwenvl 2 模型架构理解
qwenvl 模型理解:
-
参考资料:
https://qwenlm.github.io/zh/blog/qwen2-vl/
https://github.com/QwenLM/Qwen2-VL?tab=readme-ov-file
https://qwenlm.github.io/zh/blog/qwen2-vl/ -
论文:
qwenvl https://arxiv.org/abs/2308.12966
Qwen2-VL https://arxiv.org/pdf/2409.12191
最近正好在做qwenvl 总结记录一下qwenvl 以及qwenvl2模型的架构,本文主要聚焦模型架构和训练技术,其他内容后面有涉及再补
注意:要了解qwenvl 2需要先理解qwenvl ,因为qwenvl 2文章明确提到qwenvl 2的架构是和qwenvl保持一致的
由于我主要关注模型架构,因此读论文的时候读完摘要直接看model architecture
qwenvl
架构图
qwenvl架构很简单,就是三个部分:
-
QwenLM: 作为Qwen-VL模型的基础组件,这个部分采用了一个大型语言模型,其初始权重来自于预训练的Qwen-7B模型。
如果大家看一下代码的话,这个模型的结构和经典的llamma等大模型没什么区别 -
ViT: 在训练和推理过程中,输入图像被调整到特定的分辨率。视觉编码器通过将图像分成14步的小块来处理图像,生成一组图像特征。
-
Position-aware Vision-Language Adapter:
为了缓解长图像特征序列带来的效率问题,Qwen-VL引入了一个压缩图像特征的视觉语言适配器。该适配器包括一个随机初始化的单层交叉注意模块。该模块使用一组可训练向量(Embeddings)作为query向量,并使用视觉编码器的图像特征作为交叉注意操作的关键。该机制将视觉特征序列压缩为256的固定长度。
qwenvl 2
文章作者明确了基础架构和qwenvl一样,主要有三个地方不同:
-
朴素动态分辨率:
引入 Naive Dynamic Resolution 机制,用 2D - RoPE 替代绝对位置嵌入,可处理任意分辨率图像并转换为不同数量视觉标记,减少高分辨率图像信息损失,推理时控制序列长度和视觉标记数量。
Qwen2-VL 在架构上的一个关键改进是引入了朴素动态分辨率支持(Dehghani 等人,2024)。与 Qwen-VL 不同,Qwen2-VL 现在能够处理任意分辨率的图像,并将其动态转换为数量可变的视觉标记。为支持这一特性,我们对 ViT 进行了修改,移除了原来的绝对位置嵌入,并引入了 2D - RoPE来捕捉图像的二维位置信息。在推理阶段,不同分辨率的图像被打包成一个单一序列,通过控制打包长度来限制 GPU 内存使用。此外,为减少每个图像的视觉标记数量,在 ViT 之后使用一个简单的 MLP 层将相邻的 2×2 个标记压缩为一个标记,并在压缩后的视觉标记的开头和结尾放置特殊的 <|vision_start|> 和 <|vision_end|> 标记。因此,一张分辨率为 224×224、使用 patch_size = 14 的 ViT 编码的图像,在进入 LLM 之前会被压缩到 66 个标记。(224*224 / 14 / 14 / 2 / 2 =64, 64 + 2=66) -
M - RoPE(Multimodal Rotary Position Embedding,多模态旋转位置嵌入)
将旋转嵌入分解为时间、高度和宽度分量,有效编码多模态输入位置信息,提升模型对长序列的处理能力。
这是 Qwen2 - VL 模型中的一项重要创新技术,主要用于有效编码多模态输入的位置信息,在提升模型性能方面发挥关键作用。
结构与原理:与传统大语言模型(LLMs)中仅能编码一维位置信息的 1D - RoPE 不同,**M - RoPE 将原始旋转嵌入分解为三个分量,即时间、高度和宽度。**在处理文本输入时,其各分量利用相同的位置 ID,此时功能上等同于 1D - RoPE。而处理图像时,每个视觉标记的时间 ID 保持恒定,高度和宽度分量则依据标记在图像中的位置分配不同 ID。对于视频(视为帧序列),时间 ID 会随每一帧递增,高度和宽度分量的 ID 分配模式与图像相同。当模型输入包含多种模态时,每个模态的位置编号通过在前一模态的最大位置 ID 上加 1 进行初始化。
优势与作用:在性能表现上,通过实验验证,在多个下游任务中,如与 1D - RoPE 对比,M - RoPE 能取得更优结果,尤其在视频基准测试中优势明显。它能够更精准地捕捉多模态数据中不同元素的位置关系,使模型对图像和视频内容的理解更为准确。在视频理解任务中,能更好地识别视频中物体的运动轨迹、相对位置等信息。在模型的长序列处理能力方面,M - RoPE 有助于降低图像和视频的位置 ID 值,从而使模型在推理过程中能够更好地外推到更长的序列,有效提升了模型对复杂多模态数据的处理能力和泛化能力,进一步增强了 Qwen2 - VL 模型在多模态任务中的竞争力。
下面是M - RoPE的结构图
-
统一的图像和视频理解:Qwen2-VL 采用了包含图像和视频数据的混合训练方案,确保在图像理解和视频理解方面的熟练程度。为了尽可能完整地保留视频信息,我们以每秒两帧的频率对每个视频进行采样。此外,我们集成了深度为 2 的 3D 卷积(Carreira 和 Zisserman,2017)来处理视频输入,使模型能够处理 3D 管而不是 2D 块,从而使其能够在不增加序列长度的情况下处理更多的视频帧。为保持一致性,将每幅图像视为两个相同的帧。为了在长视频处理的计算需求和整体训练效率之间取得平衡,我们动态调整每个视频帧的分辨率,将每个视频的标记总数限制为 16384。这种训练方法在模型理解长视频的能力和训练效率之间达成了平衡。