参考文档:Open-Qwen2VL 速查表

Open-Qwen2VL 论文核心概念、数据、配置与性能快速参考

关键数字

术语表

MLLM
Multimodal Large Language Model — 多模态大语言模型,通常由视觉编码器、投影层、语言模型骨干组成。
SigLIP
使用 Sigmoid Loss 的 CLIP 改进版视觉-语言模型,Open-Qwen2VL 选用 SigLIP-SO-400M。
Projector
连接视觉编码器与 LLM 的对齐层,Open-Qwen2VL 使用 Adaptive Average-Pooling + 两层 MLP。
Adaptive Average-Pooling
自适应平均池化,可将任意空间尺寸的特征图压缩到指定尺寸,实现动态 visual token 数。
Continual Pre-training
持续预训练 — 在已训练好的 LLM 基础上继续训练,使其获得新能力(如视觉理解)。
DFN
Data Filtering Network — 基于 CLIP 的大规模数据过滤器,DataComp 排行榜 top 方法。
MLM-Filter
使用轻量 MLLM 作为数据裁判,从 ITM/ODF/CTQ/SU 四个维度评估图文质量。
SU
Semantic Understanding — MLM-Filter 中语义理解度指标,Open-Qwen2VL 采用阈值 85/100。
Sequence Packing
序列打包 — 把多个短样本拼接成接近最大上下文长度的序列,减少 padding 浪费。
FSDP
Fully Sharded Data Parallel — PyTorch 原生模型分片并行,Open-Qwen2VL 报告比 DeepSpeed ZeRO3 快 17%。
MMBench / SEEDBench / MMStar / MathVista
常见多模态评测基准,分别测综合能力、图像理解、世界知识推理、视觉数学推理。

模型架构组件

组件预训练阶段SFT 阶段
Vision EncoderSigLIP-so400m-384px(冻结)SigLIP-so400m-384px(冻结/可训练)
ProjectorAdaptive Avg-Pooling + 2-layer MLPMLP(pool 目标为 27×27)
LLM BackboneQwen2.5-1.5B-InstructQwen2.5-1.5B-Instruct
Visual Tokens / 图144729
Context Length40964096

预训练数据混合

数据集过滤方法规模作用
CCS-CLIPCLIPScore8.5M高质量基础标题数据
DataComp-DFNDFN top-15%15M大规模 CLIP 过滤数据
LAION-CLIPCLIPScore 0.3 阈值15M对照组,与 DataComp-DFN 分布相似
DataComp-MLM-Filter & DFNDFN + SU≥8519.9M引入 MLLM 视角的高质量数据,提升多样性

最终采用组合:1 + 4 = CCS-CLIP + DataComp-MLM-Filter & DFN,共 28.4M 图文对。

训练配置

配置项预训练SFT
PrecisionBF16BF16
Global Batch Size256128
Training Epochs11
Peak LR5e-52e-5
Warmup Steps3%3%
LR Schedulerlinear-warmup + cosine-decaylinear-warmup + cosine-decay
Weight Decay0.010.1
Sequence PackingYes(FFD 算法)No

主要性能对比

模型预训练 TokenMMBenchSEEDBenchMMStarMathVista
Qwen2-VL-2B-Instruct1.4T68.872.046.348.0
InternVL2.5-2B-MPO277B72.573.254.355.3
DeepSeekVL-2-Tiny8.1T68.372.549.954.5
Open-Qwen2VL5B80.972.549.753.1

核心公式与伪代码

视觉 token 压缩比:729 → 144,压缩比为 5.06×

相对训练量:5B / 1.4T ≈ 0.36%

序列打包目标:把多个样本拼接至接近 context length 4096

# Projector 伪代码
nn.Sequential(
    nn.AdaptiveAvgPool2d((12, 12)),
    nn.Flatten(start_dim=2),
    nn.Linear(vision_dim, llm_dim),
    nn.GELU(),
    nn.Linear(llm_dim, llm_dim)
)

经验法则