Qwen 系列
Qwen
Qwen 2
Qwen 2.5
Qwen-VL
项目地址: https://github.com/QwenLM/Qwen-VL
论文: Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond
模型架构
大型语言模型(Large Language Model)
- 作用: 作为模型的基础组件,负责文本生成和理解
- 初始化: 使用预训练的 Qwen-7B 模型权重
视觉编码器(Visual Encoder)
- 作用: 处理输入图像并生成图像特征
- 架构: 基于 Vision Transformer (ViT),使用 OpenCLIP ViT-bigG 的预训练权重
- 输入处理: 将图像调整为 448x448 分辨率,分割为 14x14 的图块进行处理
位置感知的视觉 -语言适配器(Position-aware Vision-Language Adapter)
- 作用: 压缩图像特征序列,解决长序列带来的效率问题
- 结构: 单层交叉注意力模块,随机初始化
- 使用一组可训练的向量作为 query, vision encoder 的图像特征作为 key
- 将图像特征序列压缩为固定长度 256
- 位置编码: 引入 2D 绝对位置编码,保留图像细节的位置信息
训练过程
Stage 1: 预训练
- 目标: 对齐视觉模块和语言模型的特征
- 数据: 使用大规模图文对数据集(约1.4B 图文对)
- 训练目标: 最小化文本 token 的交叉熵损失
- 优化器: AdamW (, , )
- 学习率调度: 余弦学习率调度,最大学习率 2e-4,最小学习率 1e-6, linear warmup 500 步
- 训练规模: 50.000 步,消耗约 1.5B 图文样本和 500B 图文 token
Stage 2: 多任务预训练
- 目标: 提升模型在多任务上的表现
- 数据: 高质量、细粒度的视觉-语言标注数据,交错图像-文本数据
- 任务: 并行训练以下任务:
- 图像描述 (Captioning)
- 视觉问答 (VQA)
- 定位任务 (Grounding)
- 参考定位和定位描述 (Ref Grounding & Grounded Cap)
- 光学字符识别 (OCR)
- 文本生成 (Text Generation)
- 训练方式: 全参数训练,输入分辨率提升至 448x448。
Stage 3: 监督微调(SFT)
- 目标: 增强模型的交互和对话能力
- 数据: 通过大模型 Self-Instruction 生成的多模态指导数据,涵盖单图和多图对话
- 训练方式:
- 冻结 Vision Encoder,仅优化语言模型和 adapter 模块
- 使用 ChatML 格式构建对话数据,添加图像标识 (如 “Picture id:”) 以支持多图输入
- 训练参数:
- 全局批次大小:128
- 学习率调度:最大学习率 1e-5,最小学习率 1e-6, linear warmup 3000 步。
Qwen-2VL
项目地址: https://github.com/QwenLM/Qwen2-VL
论文: Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution
提出背景
现有问题
- 当前的大型视觉语言模型(LVLMs)通常受限于固定图像输入尺寸,例如将图像编码为固定分辨率 (如 224x224),导致高分辨率图像中的细节信息损失
- 大多数LVLM依赖于静态的、冻结的CLIP风格视觉编码器,限制了复杂推理任务中的表现
解决方案
- 引入动态分辨率训练,使用二维旋转位置嵌入(RoPE)增强模型对不同分辨率的适应性
- 开发多模态旋转位置嵌入 (M-RoPE),通过独立的组件表示时间和空间信息,提升对动态内容(如视频)的理解能力
模型架构
- 框架基础: 保留了 Qwen-VL 的框架,集成了视觉编码器和语言模型
- 视觉编码器: 采用 675M 参数的 ViT,支持图像和视频输入
- 语言模型: 选择了更强大的 Qwen2 系列语言模型
关键改进(相比Qwen-VL)
- Naive动态分辨率:
- 支持处理任意分辨率的图像,动态转换为可变数量的视觉token
- 引入 2D-RoPE 捕获图像的二维位置信息
- 在推理阶段,通过控制打包长度限制 GPU 内存使用
- 使用 MLP 层将相邻的 2x2 token 压缩为一个token,并在开头和结尾添加特殊token
(<|vision_ start|>
和<|vision_end|>
)
- 多模态旋转位置嵌入 (M-RoPE):
- 将旋转嵌入分解为三个组件:时间、高度和宽度
- 对于文本输入,组件使用相同的位置 ID;对于图像和视频,分别分配不同的 ID
- 支持多模态输入的位置信息建模,减少位置ID值,提升推理效率
训练方法
- 采用混合训练方案,结合图像和视频数据
- 以每秒两帧的速率采样视频,结合3D卷积处理视频输入
- 动态调整视频帧分辨率,将每个视频的token总数限制为 16384,平衡计算需求与训练效率
Qwen-2.5VL
论文: Qwen2.5- VL Technical Report
模型: https://huggingface.co/Qwen
代码: https://github.com/QwenLM/Qwen2.5-VL
模型架构
- 模态对齐方法: ViT 之后采用双层 MLP 实现模态对齐,Qwen-2VL 仅使用单层
- 视觉编码器:
- Qwen-2.5VL: ViT 中改用 Window-Attention,RMSNorm,SwiGLU,而
- Qwen-2VL: LayerNorm,GELU
- 位置嵌入: 将 MRoPE扩展到 3D 情况,更好地处理视频信息
- 文本输入: 三个组件使用相同的位置 功能等同于传统的 1D RoPE
- 图像输入: 时间 ID 保持不变,高度和宽度组件根据 token 在图像中的空间位置分配唯一 ID
- 视频输入: 视频被视为帧序列,时间 ID逐帧递增,高度和宽度组件遵循与图像相同的分配模式
训练方法
动态分辨率训练
动态分辨率:
- 支持处理任意分辨率的图像,动态转换为可变数量的视觉 token
- 引I入 2D-RoPE 捕获图像的二维位置信息
- 在推理阶段,通过控制打包长度限制 GPU 内存使用
- 使用 MLP 层将相邻的 2x2 token 压缩为一个 token,并在开头和结尾添加特殊 token (
<|vision_start|>
和<|vision_end|>
)
动态顿率训练:
- 通过动态 FPS 采样,将动态分辨率扩展到时间维度。
- 更新了时间维度上的 MRoPE,增加 ID 和绝对时间对齐,使模型能够学习时间顺序和速度,精确定位特定时刻
随机采样: 训练过程中,图像根据其原始宽高比随机采样,使模型能够有效泛化到不同分辨率的输入
- 优势:
- 提升模型的适应性
- 确保在不同尺寸视觉数据上的稳定和高效训练。
长文本预训练
Qwen-2.5VL 整体流程包含:视觉预训练、多任务预训练、长文本预训练,比 Qwen-2VL 多了长文本预训练
Qwen 系列
https://guokent.github.io/papernotes/qwen/