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 (β1=0.9\beta_1=0.9, β2=0.98\beta_2=0.98, ϵ=1e6\epsilon=1e-6)
  • 学习率调度: 余弦学习率调度,最大学习率 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)

  1. Naive动态分辨率:
    • 支持处理任意分辨率的图像,动态转换为可变数量的视觉token
    • 引入 2D-RoPE 捕获图像的二维位置信息
    • 在推理阶段,通过控制打包长度限制 GPU 内存使用
    • 使用 MLP 层将相邻的 2x2 token 压缩为一个token,并在开头和结尾添加特殊token
      (<|vision_ start|><|vision_end|>
  1. 多模态旋转位置嵌入 (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/
作者
Kent
发布于
2024年12月21日
许可协议