Browse this library

Chinese source article

02 · DeepSeek-VL2: 动态切图与稀疏语言模型怎样协同

DeepSeek-VL2 用动态切图处理高分辨率输入, 再以 pixel shuffle 压缩视觉 token, 由采用 MLA 与 MoE 的语言模型完成多模态理解.

View original Markdown ↗

DeepSeek-AI 于 2024 年 12 月发布 DeepSeek-VL2 技术报告. 系列包含 Tiny, Small 与标准版三个变体, 语言模型总参数分别为 3B, 16B 与 27B, 每个 token 实际激活约 0.57B, 2.4B 与 4.1B 参数; 三者共同使用约 0.4B 参数的 SigLIP-SO400M-384 视觉编码器. 模型沿用 LLaVA 式 decoder-only 路径, 但把上一代固定双分辨率视觉编码改成动态切图, 同时把语言侧升级为 DeepSeekMoE 与 MLA.

这种组合针对两个不同成本. 动态切图让高分辨率和极端长宽比图像不必整体压到固定方形画布; MoE 降低每个语言 token 的激活参数, MLA 压缩推理时的 KV cache. 视觉 token 仍会随 tile 数增长, 因此 VL adaptor 还要把每个 tile 的 27×2727\times27 特征压到 14×1414\times14. DeepSeek-VL2 的效率来自三处压缩叠加, 不能只归给 MoE.

1. 动态切图怎样形成视觉序列

动态切图先选择候选网格, 再把局部 tile 与整图缩略图共同送入视觉编码器.

1.1. 候选分辨率与 tile 选择

SigLIP 的原生输入是 384×384. DeepSeek-VL2 定义候选集合

CR={(384m,384n)∣m,n∈N, 1≤m,n, mn≤9}.C_R=\{(384m,384n)\mid m,n\in\mathbb{N},\ 1\leq m,n,\ mn\leq9\}.

对高为 HH, 宽为 WW 的输入, 系统先保持长宽比缩放, 再计算补到每个候选分辨率所需的 padding 面积, 选择空白面积最小的 (384mi,384ni)(384m_i,384n_i). 缩放后的图像被切成 mi×nim_i\times n_i 个 384×384 局部 tile, 另生成一个全局缩略图. 因而单图最多有 9 个局部 tile 加 1 个全局 tile.

上一代 DeepSeek-VL 同时使用 384×384 的 SigLIP 与 1024×1024 的 SAM-B, 两条固定分辨率路径分别提供粗粒度和细粒度特征. 固定 1024×1024 对超长网页, 高密度文档和极端长宽比图像不够灵活. VL2 只保留一个共享 SigLIP, 通过 tile 数改变覆盖范围, 避免整幅大图压缩后小字不可读.

动态切图的代价是视觉序列长度随面积离散增长. 候选集合还会使相近尺寸的图像落到不同网格, 产生 tile 数跳变. 报告为多图输入设置边界: 当输入图片超过 2 张时关闭动态切图. 这项限制表明单图高分辨率能力与多图上下文容量共用同一序列预算.

1.2. 全局视图与局部视图各自保留什么

局部 tile 保留字符, 小物体与细节, 但每块只观察图像的一部分. 全局缩略图保留页面结构与远距离关系, 分辨率却不足以读取细小内容. 两类视图由同一个 SigLIP 编码器处理, 后续通过特殊 token 拼成一个视觉序列. 语言模型可以同时利用整体布局和局部纹理, 但必须从序列位置判断局部 tile 在整图中的位置.

该设计没有让 tile 之间在视觉编码器内部直接做全局注意力. 跨 tile 关系要到语言模型层面通过自注意力建立. 这降低视觉编码成本, 却把一部分空间整合压力转给语言模型. 如果任务依赖跨越多个 tile 的细线, 表格行列或网页组件, 局部边界与二维排列编码都会影响结果.

全局缩略图也承担去重作用. 相邻局部 tile 可能分别包含同一大对象的不同部分, 语言模型若只看局部序列, 容易把它们当成多个对象. 全局视图提供整体数量和布局参照. 反过来, 全局图中的小字可能不可读, 必须回到局部 tile. 两类视图的互补需要语言模型在注意力层中学会匹配同一对象的不同尺度表示.

候选分辨率以 padding 面积最小为选择准则, 没有直接使用任务内容. 同样长宽比的低密度照片与密集网页会选择相同网格, 尽管所需细节不同. 内容自适应切图可能进一步节省 token, 但会引入区域选择器和漏检风险. VL2 选择几何规则, 优点是确定, 易复现且不依赖额外模型.

报告的定性样例覆盖自然图像, 文档, 网页 UI, meme 与 anime, 说明同一切图策略可以支持多类输入. 但报告没有按 tile 数给出准确率和延迟曲线, 也没有比较相同视觉 token 预算下的固定分辨率与动态切图. 因而可以确认动态策略提升了高分辨率适应性, 不能仅凭最终总分量化每个局部视图的独立贡献.

1.3. pixel shuffle 与序列排布

SigLIP 为每个 tile 输出 27×27=72927\times27=729 个 1152 维视觉 embedding. VL adaptor 使用 2×22\times2 pixel shuffle, 把空间网格压到 14×14=19614\times14=196 个 token. pixel shuffle 把邻近位置的特征重排并合并到通道维, 随后的两层 MLP 再投影到语言模型 embedding 空间. 这一步把单 tile 的语言侧序列长度缩短约 3.72 倍.

全局缩略图的 14 行各追加一个 <tile_newline>, 因而占 14×15=21014\times15=210 个 token. 局部 tile 按二维网格重排为 (14mi,14ni)(14m_i,14n_i), 每行末尾也加换行 token, 共 14mi(14ni+1)14m_i(14n_i+1) 个 token. 全局视图与局部视图之间再插入一个 <view_separator>. 完整视觉序列长度为

Lv=210+1+14mi(14ni+1).L_v=210+1+14m_i(14n_i+1).

当 mi=ni=1m_i=n_i=1 时, 视觉序列为 421 个 token; 当 mini=9m_in_i=9 且采用 3×3 网格时, 长度为 201? 这里直接代入可得 210+1+42×43=2017210+1+42\times43=2017. 也就是说, 动态切图虽然限制在 9 个局部 tile, 视觉前缀仍可超过两千 token. 特殊换行和分隔 token 没有携带图像 patch 特征, 但为语言模型提供二维行边界和视图边界.

pixel shuffle 并未把 729 恰好除以 4 得到整数. 原始网格是 27×27, 实现需要处理奇数边界后形成 14×14 输出. 报告直接给出最终 token 数, 没有逐项说明边界 padding. 因而复现时应以仓库 adaptor 实现为准, 不能只按理想 2×22\times2 网格重排推测 shape.

视觉序列的换行 token 让一维自回归模型获得二维行结构, 但没有显式列分隔 token. 同一行内的位置由序列顺序与位置编码表达, tile 网格边界则依赖拼接规则. 如果下游实现改变局部 tile 排列顺序, 即使每块图像特征相同, 语言模型接收到的空间关系也会变化.

2. 语言侧的稀疏计算与缓存压缩

共享专家承担公共模式, 路由专家提供条件容量; 视觉 token 与文本 token 共用这套稀疏计算.

2.1. 三个 MoE 变体的共同路由

Tiny 使用 12 层, 64 个路由专家与 2 个共享专家, 每个 token 选择 6 个路由专家; Small 使用 27 层, 64 个路由专家; 标准版使用 30 层, 72 个路由专家. 三者都保留 2 个共享专家与 top-6 路由. 共享专家持续处理所有 token, 用于容纳跨领域的共同模式; 路由专家只处理被选中的 token, 将额外参数容量分配给不同输入分布.

Tiny 的语言模型总参数为 3B, 激活约 0.57B; Small 为 16B 与 2.4B; 标准版为 27B 与 4.1B. 视觉编码器约 0.4B 参数也在推理中运行, 因而系列最终激活规模约为 1.0B, 2.8B 与 4.5B. Figure 1 以这个合计值比较开源模型, 不是用语言模型总参数比较.

Tiny 与 Small 的路由函数为 softmax, 标准版改用 sigmoid 并加入专家校正 bias. sigmoid 路由允许各专家分数独立变化, 校正 bias 用于负载均衡. 报告没有给路由分布, 专家利用率和去掉 bias 的消融, 所以无法从表格判断标准版增量中有多少来自新路由方式.

2.2. MLA 解决 Decode 阶段的 KV cache

Small 与标准版采用 MLA, rank 为 512; Tiny 仍使用标准 MHA. MLA 把各注意力头的 Key 与 Value 表示压到共享低维潜变量, 推理时缓存潜变量而非每层每头的完整 KV. 详细推导应参见 MLA 相关章节, DeepSeek-VL2 报告主要说明它在多模态模型中的工程用途.

视觉前缀会在 Prefill 阶段一次进入语言模型, 随后生成回答. 动态切图让视觉前缀可能超过两千 token, 如果继续使用完整 KV cache, 每层缓存会随视觉 token 数, 头数和维度增长. MLA 不减少视觉前缀自身的 Prefill 计算, 但会降低这些视觉 token 在后续 Decode 阶段占据的缓存空间和读取带宽.

这一区分解释了动态切图与 MLA 的互补关系. tile 增加改善细节感知, 同时拉长视觉序列; MLA 缓解长前缀造成的推理缓存压力. MoE 又降低每个 token 的前馈计算. 三者分别作用于视觉输入分辨率, 注意力状态和参数激活, 不能互相替代.

2.3. 多模态 token 的路由边界

视觉 embedding 经 MLP 投影后与文本 token 进入同一个语言模型. MoE 路由器因而会同时看到视觉位置, 特殊 tile token, 用户 prompt 与回答 token. 论文没有规定视觉 token 固定进入特定专家, 也没有报告专家是否按模态分化. 从公开结构看, 路由由每个位置的隐藏状态动态决定.

这种统一路由允许视觉与语言知识共享专家容量, 也带来负载波动. 高分辨率单图会集中产生大量视觉 token, 纯文本 batch 则完全没有视觉 token. 标准版使用全局专家 bias 调节负载; 训练系统还必须在数据并行 rank 之间平衡 tile 数. 路由层与系统调度共同决定实际吞吐.

MoE 的「激活参数较少」也不等于权重显存只需保存激活部分. 部署仍要存储全部路由专家, 并在设备间安排专家并行通信. Figure 1 的横轴适合比较每 token 计算规模, 不代表总模型存储或跨卡通信成本.

视觉任务还会改变专家负载的时间分布. Prefill 时连续处理大量视觉 token, Decode 时每步只增加一个文本 token. 如果视觉与文本隐藏状态偏向不同专家, 两个阶段的通信热点可能不同. 报告只给全局负载均衡机制, 没有分别报告 Prefill 与 Decode 的专家命中率和吞吐.

Tiny 保留 MHA, 因此 KV cache 不享受 MLA 压缩, 但层数和 hidden size 更小. Small 与标准版使用 MLA 后, cache 优势会随序列和生成长度增长. 对短问答, 视觉编码与 Prefill 可能主导延迟; 对长回答和并发服务, cache 带宽与容量更重要. 报告没有给分阶段 latency, 不能用激活参数直接预测所有请求形态.

3. 三阶段数据与训练管线

3.1. 从对齐到全参数预训练

Stage 1 使用约 1.2M 条 ShareGPT4V caption 与对话样本, 训练视觉编码器和 VL adaptor, 冻结语言模型. 与常见固定视觉编码器的对齐阶段不同, VL2 还要让 SigLIP 适应动态高分辨率 tile, 因而视觉编码器并未冻结. 三个变体在该阶段都训练约 2.0B token, batch size 为 256, sequence length 为 4096.

Stage 2 解冻视觉编码器, adaptor 与语言模型全部参数, 使用约 796.5B–808.9B token 做视觉语言预训练. VL 数据约占 70%, 纯文本约占 30%. 纯文本数据用于维持基础语言能力, 视觉语言数据覆盖交错图文, caption, OCR, VQA, 图表文档, web-to-code, visual prompt, grounding 与 grounded conversation.

三个模型 Stage 2 token 数接近, 并没有随参数规模成比例增加. Tiny, Small 和标准版分别约为 798.5B, 808.9B 与 796.5B token. 因而系列比较更接近固定数据规模下扩大模型容量, 而非同时扩大数据. batch size 对 Tiny 与 Small 为 2304, 标准版为 3360; sequence length 都是 4096 并开启 sequence packing.

视觉编码器学习率是主学习率的 0.1 倍, 说明联合训练时仍限制预训练视觉权重的更新幅度. Stage 2 使用 step 调度, Stage 3 改为 constant. 报告没有公布 warmup step, step 衰减节点和各数据源采样温度, 完整训练日程不能仅凭 Table 2 复原.

next-token prediction loss 只在文本 token 上计算. 视觉 token 作为条件输入, 梯度通过语言损失回传到 adaptor 与视觉编码器. 这意味着视觉表示的学习目标由文本生成任务间接定义, 并没有额外的图像重建损失. 任务分布和回答质量会直接决定视觉编码器保留哪些信息.

3.2. 数据清洗比简单扩量更关键

caption 数据来源质量差异较大, 包括过短描述, 图文错配和幻觉. 团队把 OCR hint, 地点和相机等元信息, 以及原 caption 一起交给内部 captioner 重写, 再用 DeepSeek Chat 按写作质量评分过滤. 该流程提高文本质量, 但评分器是否验证视觉忠实度没有单独说明; 写得流畅的错误 caption 仍可能通过纯文本质量评分.

重写流程还会改变数据风格. 多个来源经同一 captioner 生成后, 语句结构和关注点可能趋同, 原数据的人类表达差异被削弱. 团队使用多种指令引导 caption 生成来减少重复, 又以写作质量过滤明显模板化结果. 报告没有公开过滤阈值和保留率, 无法判断质量提升与多样性损失的取舍.

文本数据占预训练的 30%, SFT 也加入 DeepSeek-V2 纯文本对话, 用于减轻多模态训练造成的语言能力退化. 视觉 batch 与纯文本 batch 的计算路径不同, 训练系统因此准备两种流水线策略并按需切换. 报告没有给出加入纯文本数据前后的语言榜单消融, 这部分作用无法从现有结果中单独量化.

OCR 数据包含 LaTeX OCR, 12M RenderedText 和内部中英文文档数据. 图表与文档理解加入 PubTabNet, FinTabNet 和 Docmatix; web-to-code 使用 Websight, 部分样本由 DeepSeek V2.5 重建; visual prompt 数据在图像上叠加箭头, 框, 圆和涂画. 不同来源被统一成自回归回答格式, 使模型在同一输出空间学习识别, 定位和代码生成.

grounding 坐标归一化到 0–999, 用 <ref> 与 <det> 特殊 token 包裹对象描述和 bounding box. 训练集还加入目标不存在的负样本, 避免模型无论提问什么都输出一个框. 这种离散坐标格式便于文本解码, 精度上限受 1000 个坐标 bin 与图像缩放影响.

3.3. SFT 的回答长度与模型容量

Stage 3 使用约 19.5B–20.0B token 做 SFT, 所有参数继续训练, 但只监督回答和特殊 token, mask 掉 system 与用户 prompt. 数据混合多模态指令与 DeepSeek-V2 的纯文本对话, 覆盖通用 VQA, OCR, 文档, 图表, visual-to-code, 推理, grounding 和语言理解.

公开数据常见三个问题是回答过短, OCR 质量差与幻觉. 团队结合原问题, 图像和 OCR 信息重写回答. Tiny 早期版本还会在中文回答中错误插入英文词, 报告把原因指向模型容量有限与视觉语言预训练阶段中英文失衡, 因而额外构建中文图像描述和单轮, 多轮对话数据.

报告还观察到详细推理回答对 Tiny 效果较差, 简洁回答反而更合适. 这说明同一 SFT 目标不能不加区分地用于三个容量档位. 标准化长推理过程可能超过小模型稳定表示和生成的能力, 也会挤占 4096 token 序列中的图像与问题空间. 论文没有给回答长度的定量消融, 但明确记录了容量相关的数据选择.

4. 训练系统与评测口径

4.1. 学习率与并行配置

三个阶段都使用 AdamW, β1=0.9\beta_1=0.9, β2=0.95\beta_2=0.95, weight decay 0.1, gradient clip 1.0. 视觉编码器学习率乘数固定为 0.1. Stage 1 和 Stage 2 的主学习率按模型不同约为 4.2×10−44.2\times10^{-4} 到 5.4×10−45.4\times10^{-4}, Stage 3 降到 1.4×10−51.4\times10^{-5} 到 3.0×10−53.0\times10^{-5}. 调度器分别为 cosine, step 与 constant.

视觉编码器位于流水线首段, 计算形态与均匀堆叠的 LLM block 不同. 动态切图还使每条样本 tile 数不同, 如果直接分配到数据并行 rank, 某些 rank 会等待 tile 更多的样本. HAI-LLM 对视觉编码器做细粒度层切分, 并在 forward 与 backward 中跨数据并行 rank 平衡 image tile 数, 以减少 pipeline bubble.

训练同时使用流水线并行, tensor parallel 与 expert parallel. Tiny, Small 和标准版分别用 16, 33 与 42 个节点, 每节点 8 张 A100, 用时约 7, 10 与 14 天. 报告给出节点和时间, 没有给实际 GPU 利用率与故障重启成本, 因而只能得到名义卡时, 不能复原有效训练 FLOPs.

4.2. 文档与 OCR 结果怎样读取

在文档评测表中, Tiny 的 DocVQA 为 88.9, ChartQA 81.0, InfoVQA 66.1, TextVQA 80.7, OCRBench 809. Small 分别为 92.3, 84.5, 75.8, 83.4, 834. 标准版为 93.3, 86.0, 78.1, 84.2, 811. 模型变大时大多数项目提高, OCRBench 却由 Small 的 834 降到标准版的 811.

这个反例说明综合能力与单一 OCR 榜单不必单调一致. 标准版改变了语言模型层数, 路由专家数, 路由函数与训练系统, 不能把 OCRBench 回落归因于某一个部件. MiniCPM-V2.6 的 OCRBench 852 标注使用 CoT, 评测协议也与普通直接生成可能不同.

Figure 1 平均 MMBench v1.1, MMStar, MMMU, MathVista, AI2D 与 OCRBench, 其中 OCRBench 除以 10 映射到 0–100. 简单平均默认六项同等重要, 也会掩盖单项回退. 它适合展示激活参数与综合分数的整体位置, 不能替代逐任务表格.

参数比较还要区分视觉编码器与语言模型. DeepSeek-VL2-Tiny 的语言侧激活 0.57B, 加上 0.4B 视觉编码器后按约 1.0B 标示; 其他基线有的只报告语言参数, 有的报告总激活参数. 表格脚注用匕首标明 MoE 激活值, 但闭源模型没有可比参数. Figure 1 主要用于开源模型内部的效率位置, 不能据此比较闭源服务的真实计算量.

标准版 DocVQA 93.3 低于 Claude 3.5 Sonnet 的 95.2 与 Qwen2-VL-7B 的 94.5, ChartQA 86.0 低于 Claude 的 90.8, InfoVQA 78.1 接近但低于 Gemini-1.5-Pro 的 80.1. 报告用 competitive 或 state-of-the-art 描述不同任务, 具体读取仍应逐列比较, 不能把平均图理解为每个项目都领先.

4.3. 已公开结果不能回答什么

动态切图, pixel shuffle, MLA, MoE 与数据扩充在同一版本同时出现, 报告没有完整组件消融. 因而 VL2 相对 VL 的提升不能被拆成「多少来自切图, 多少来自语言架构, 多少来自数据」. 三个变体也不是只改变规模: Tiny 使用 MHA 和 softmax 路由, Small 使用 MLA, 标准版进一步改为 sigmoid 路由与校正 bias.

多图超过两张时关闭动态切图, 是实际能力边界. 28 页报告中的定性样例以单图为主, 没有系统测量多图数量, tile 数和回答长度共同增长时的效果. 4096 token 训练长度也限制视觉前缀, prompt 和回答的总预算, 不能由动态高分辨率推导出任意长视觉上下文.

视觉序列在最大 3×3 tile 下约占 2017 token, 已接近 4096 训练长度的一半. 再加 prompt 与回答后, 长文档转写或多轮对话会很快触及预算. 超过两图时关闭切图能控制长度, 代价是每张图只能使用较低细节. 论文没有给超出训练长度的外推测试.

grounding 坐标被离散到 0–999, 在高分辨率原图上一个 bin 对应多个像素. 视觉 tile 可以保留更细局部信息, 输出协议却限制坐标精度. 同时, bounding box 生成是自回归文本任务, 数字 token 的局部错误会造成框位置突变. 报告展示定性定位样例, 没有按物体尺寸分析误差.

数据构建大量使用内部 captioner, DeepSeek Chat 和 DeepSeek V2.5 重写或筛选, 但没有公开内部数据规模的完整分项, 人工抽检率与污染检查. 第三方可以复现架构和部分公开数据, 无法严格复现训练集. DeepSeek-VL2 的公开价值主要在架构, 训练配比和结果边界, 不是一份完全可复现的数据配方.

对部署者而言, 三个变体的选择应同时考虑图像 tile 数, 回答长度, 并发量与总权重存储. Tiny 的 cache 路径较传统, Small 在较低激活参数下获得 MLA, 标准版提供更强综合能力但 OCRBench 并未最高. 应用侧需要按自身文档, 网页和自然图像分布复测, 不能只按平均分选择最大模型.

4.4. 动态分辨率的工程边界

动态切图并不等于可以无成本提高输入分辨率. 候选网格以 384×384 为步长, 图像只要跨过候选边界, 局部 tile 数和视觉 token 数就可能阶跃增加; 即使原图像素只增加少量, prefill 延迟与显存占用也可能明显变化. 工程侧因此不能只按原图文件大小分桶, 还应按实际选中的 (mi,ni)(m_i,n_i) 网格统计请求成本. 对版式相近的文档先统一缩放或裁边, 也可能减少无信息 padding 和不必要的 tile.

报告只在单图动态切片时允许最多 9 个局部 tile, 多于两张图时直接关闭该策略, 没有给出服务端批处理的吞吐曲线. 不同请求的 tile 数不一还会造成 batch 内计算不齐, 训练阶段可以跨数据并行 rank 做负载均衡, 在线推理却需要调度器另行处理. 部署验收可以分别测量 1 tile、常见多 tile、9 tile 以及多图降级四类输入, 同时记录首 token 延迟、峰值显存和回答截断率。论文给出的序列构造与 4096 token 训练长度足以确定这些测试场景,具体性能仍需在目标服务环境中测量.

5. 从视觉对齐到多模态 MoE 的完整学习链

VL adaptor 要解决的不是简单维度匹配: SigLIP 视觉特征和语言模型 token embedding 来自不同训练目标. 前者擅长图文判别与语义聚合,后者位于自回归语言空间. adaptor 即使只是若干线性层与非线性层,也要把视觉局部变成 LLM 能在 next-token prediction 中使用的表示.

设视觉 encoder 输出 zi∈Rdvz_i\in\mathbb R^{d_v},语言 hidden size 为 dld_l,adaptor 给出

hi=W2σ(W1zi+b1)+b2.h_i=W_2\sigma(W_1z_i+b_1)+b_2.

维度从 dvd_v 变到 dld_l 只是表面要求. 更深的要求是 hih_i 与文本 token 的尺度、方向和统计分布兼容. 若范数远大于文本 embedding,视觉 token 会压过指令;若太小,LLM 几乎忽略图片. 第一阶段冻结语言模型,正是迫使视觉 encoder 与 adaptor 适应既有语言空间.

冻结也形成瓶颈. 语言模型原先没见过连续视觉前缀,adaptor 必须用有限容量把所有视觉关系翻译成它能理解的模式. 第二阶段全参数解冻后,语言侧可以共同适应,视觉表示不再单方面承担对齐. 这解释了三阶段顺序中的功能分工,但每阶段独立贡献仍需消融确认.

5.1. 第一阶段 2B token 学到的是基础对齐

论文三种规模的第一阶段都使用约 2B token,冻结 language model,训练视觉 encoder 和 adaptor. 数据主要让模型把图片区域与词语、短描述或已有语言概念对齐. 这一阶段若一开始就更新 LLM,随机初始化的 adaptor 会向语言层传入不稳定信号,可能破坏已有文本能力.

冻结语言侧时,损失对视觉参数的梯度仍经过 LLM 反传:

∇θvL=∂L∂h∂h∂z∂z∂θv,\nabla_{\theta_v}L= \frac{\partial L}{\partial h} \frac{\partial h}{\partial z} \frac{\partial z}{\partial\theta_v},

只是 θl\theta_l 不执行更新. 因此 LLM 相当于固定的语义判别空间,并非完全不参与训练. 视觉 encoder 学习哪些特征能让固定语言模型更容易预测目标文本.

2B token 不能直接换算成图像数,因为 caption 长度、packing 与图像 token 是否计入统计都会影响口径. 论文表格报告的是训练 token 量,没有为每类 alignment 数据给完整样本数. 可靠描述应停留在公开量级和阶段目标,不补造图像数量.

第二阶段近 800B token 才是能力主体: Tiny、Small 和 VL2 在第二阶段分别使用约 798.5B、808.9B、796.5B token,解冻全模型进行多模态预训练. 这一数量远大于第一与第三阶段,决定模型能否在自然图、OCR、文档、图表、grounding 和纯文本之间建立共同能力.

第二阶段仍包含语言数据很重要. 如果所有 batch 都带图,LLM 的文本推理和知识可能遗忘;保留纯文本任务能维持底座能力,也让 MoE 专家继续接触足够多的语言分布. 视觉数据与文本数据的精确比例会影响专家分工,论文描述了数据构建类别,没有发布全部混合权重.

全参数训练时视觉 encoder 学习率乘 0.1. 假设主学习率为 η\eta,视觉更新使用 0.1η0.1\eta. SigLIP 已有成熟视觉表示,较小步幅防止它被噪声 caption 快速改坏;adaptor 与 LLM 需要更大适应. 同一个 multiplier 用于三阶段,说明团队持续控制视觉侧漂移.

规模不同的主学习率并不一致:Tiny 约 5.4×10−45.4\times10^{-4},Small 约 4.2×10−44.2\times10^{-4},VL2 约 4.5×10−44.5\times10^{-4};第三阶段再明显降低. 这些数值与 batch、优化器和 scheduler 配套,不能抽出一个学习率直接迁移到不同规模模型.

第三阶段 SFT 把能力变成可调用行为: 第三阶段约 19.5B—20B token,序列仍为 4096,采用 constant learning rate,全模型可训练. SFT 数据把预训练中隐含的视觉知识组织成问答、多轮对话、坐标输出、文档转写和指令遵循. 它的 token 量远小于第二阶段,但对输出格式和用户体验影响很大.

视觉 grounding 是典型例子. 预训练模型可能知道“红色汽车在哪里”,却不会按指定格式输出坐标. SFT 同时教目标识别、坐标量化方式、特殊 token 与答案模板. 如果格式变了,底层视觉能力仍在,评测 parser 却可能判零分.

SFT 也可能让回答更长或更短. 长描述数据提高细节覆盖,却容易在简单 VQA 上啰嗦;短答案数据有利于 exact match,可能损伤开放描述. 三个模型容量不同,同一数据模板会产生不同吸收效果. 论文给最终结果,没有展示回答长度与任务比例的系统消融.

数据清洗为何比增加弱 caption 更有效: 图文训练的监督来自文本. caption 若漏掉关键对象,模型会把“没有描述”误当成“不重要”;caption 若幻觉出不存在物体,模型会被训练去相信语言先验. OCR 数据中一个字符错误会直接污染精确识别,grounding 数据中 box 偏移则教错坐标.

可以把观测标签 y\tilde y​ 看成真实标签 yy 经噪声过程 Q(y∣y,x)Q(\tilde y\mid y,x)​∣y,x) 产生. 数据量增加降低采样方差,却不会自动消除系统偏差. 如果某类网页截图总把导航栏漏标,模型会稳定忽略导航栏. 清洗和重标的作用是改变噪声矩阵,不只是删掉低质量图片.

多模态数据还会重复. 同一网络图片配上多个近似 caption,会让 benchmark 图像或其变体进入训练. 去重应同时考虑图像感知哈希、文本相似度和来源. 论文描述了改进的数据构建流程,但没有公开全量数据,外部无法完全审计 benchmark contamination.

5.2. MoE 路由在视觉 token 上会形成什么分工

VL2 的语言底座使用 DeepSeekMoE. 对每个 token hidden state hth_t,router 选择少数专家:

yt=Es(ht)+∑i∈Stαt,iEi(ht).y_t=E_s(h_t)+\sum_{i\in S_t}\alpha_{t,i}E_i(h_t).

视觉 token 经 adaptor 后也进入这一网络,因此它们同样参与路由. 视觉 token、问题 token 与回答 token 的分布不同,可能形成不同专家偏好. 某些专家更常处理 OCR 特征,另一些专家更常处理自然语言,但论文没有给专家语义标签,不能把这种可能性写成已证事实.

可以统计条件路由概率 P(i∣c)P(i\mid c),cc 表示视觉、中文、英文、坐标或公式 token. 用互信息

I(E;C)=∑e,cP(e,c)log⁡P(e,c)P(e)P(c)I(E;C)=\sum_{e,c}P(e,c)\log\frac{P(e,c)}{P(e)P(c)}

衡量专家与 token 类型的关联. II 高说明路由专门化明显,仍不证明某专家具有人类可命名功能;干预时屏蔽专家并观察特定任务下降,证据才更接近因果.

视觉序列长且局部 token 相似,可能集中路由到少数专家,造成负载不均. 论文训练表报告 auxiliary loss weight,最大模型还使用 expert bias correction. 这些机制帮助设备负载稳定,其目标是计算均衡,不保证专家语义均衡.

三个模型的“激活参数”存在两种口径: 论文摘要给 Tiny、Small、VL2 的整体 activated parameters 为 1.0B、2.8B、4.5B;训练表中语言模型 activated parameters 为 0.57B、2.4B、4.1B. 两者相差约 0.4B,对应共同使用的 SigLIP-SO400M 视觉 encoder 及 adaptor 量级. 因而引用数字时要说明是 LLM 还是整个多模态系统.

总 LLM 参数分别为 3B、16B、27B,开源 README 的近似数字可能因统计范围或舍入出现 3.37B、16.1B、27.5B 等表达. “总参数”决定模型文件与显存,“激活参数”近似单 token FFN 计算,视觉 encoder 又是每张图都要运行的 dense 模块. 只拿 4.5B activated 与一个 4B dense 语言模型比较,仍要核对视觉成本与总权重驻留.

性能—参数图把 OCRBench 除以 10 后与其他百分制指标取平均. 这个平均能展示总体趋势,却隐含每项 benchmark 等权. 若模型在 OCRBench 特别强,缩放方式会影响图中位置;不同应用的真实权重也不同. 散点图适合概览,不能替代逐任务表.

MLA 的收益主要落在自回归解码: MLA 把每个 token 的 key/value 压缩成低维潜向量,减少生成阶段的 KV cache. 对含大量视觉 token 的提示,每生成一个答案 token 都要读取视觉前缀缓存,所以压缩很有价值. 动态切图增加视觉 token,MLA 在语言侧抵消一部分内存压力.

设普通 MHA 每层每 token 缓存 2hd2hd 个元素,MLA 缓存 latent dimension rr 加位置相关部分 drd_r,压缩比近似

κ≈2hdr+dr.\kappa\approx\frac{2hd}{r+d_r}.

精确比值取决于实现和 dtype. MLA 不会降低 SigLIP 编码图片的成本,也不会消除前缀 attention;它主要减小 cache 和相关带宽. 因此高分辨率图的首 token 延迟可能仍然很高,后续长回答吞吐改善更明显.

Tiny、Small、VL2 使用的语言底座规模不同,MLA 配置也需从各自公开 config 核对. 把 DeepSeek-V2 大模型的 93.3% KV 降幅直接套到 VL2 不严谨,因为层数、head 维度和潜空间不同. 本文只沿机制解释,具体内存应按模型配置计算.

序列长度限制了多模态能力的组合: 论文所有训练阶段 sequence length 都是 4096. 单图视觉 token、问题和答案必须共享这一窗口. 当九个局部 tile 加全局图占据大量位置时,开放式长回答、文档全文转写和多轮对话容易触顶. 模型能看清局部,不代表能把整份超长文档无损输出.

设每 tile 压缩后为 vv 个 token,局部数量为 KK,全局为 gg,文本输入输出合计为 tt,需要满足

Kv+g+t≤4096.Kv+g+t\le4096.

增加 KK 会线性压缩文本预算. 若答案被截断,benchmark 可能把后半段缺失记为 OCR 错误,实际瓶颈是序列长度. 对表格与文档任务,报告页级准确率时应同时统计截断比例.

仓库后来提供 incremental prefilling 以节省显存,它把长前缀分块送入模型,并没有扩大训练窗口或改变 token 总数. chunk size 影响峰值显存与速度,不会让模型突然支持更长语义上下文. README 对这点给的是推理用法,不能误写成训练方法.

5.3. Grounding 坐标是一种离散语言

视觉 grounding 将二维连续坐标转为可生成 token. 若坐标归一化到 [0,M][0,M],真实位置 x/Wx/W 量化为

qx=round⁡(MxW).q_x=\operatorname{round}\left(M\frac{x}{W}\right).

反量化误差最多约为 W/(2M)W/(2M). MM 越大,位置精度越高,坐标词表和生成难度也可能增加. 最终 IoU 还会受四个边界共同误差影响,小物体对同样像素偏差更敏感.

动态 tile 让局部物体拥有更多像素,有利于识别和边界定位;输出坐标必须回到原图尺度. 若预处理包含 resize 与 padding,逆变换要扣除 padding 并按缩放比恢复. 一个坐标 parser 的 off-by-one 或宽高顺序错误,会让模型看似 grounding 很差,实际上是部署后处理错误.

测试可用人工几何图:在固定画布上放置已知矩形,覆盖四角、边缘、tile 交界和极小目标. 先验证 processor 与反量化,再评模型语义. 这比直接在自然图上猜错误来源更高效.

OCR、图表与普通 VQA 的错误链不同: OCR 错误从像素采样、patch 编码、shuffle 压缩、语言识别一路传播. 图表理解还增加图形元素绑定与数值比较;普通 VQA 常依赖对象识别和常识. 一个平均多模态分数无法说明模型在哪一层进步.

对 OCR 可将字符按尺寸、对比度、旋转和语言分桶. 对图表可分成读取单点、比较两点、聚合多点和解释趋势. 对 VQA 可区分答案直接可见、需要关系推理、依赖外部知识. 动态 tiling 应主要改善小字与高分辨率细节;MoE 容量和数据则可能改善推理与知识. 若所有提升都归给切图,就忽略了同时发生的语言底座和数据变化.

一个交叉消融矩阵应包含旧视觉方案加新 LLM、新视觉方案加旧 LLM、新视觉加新 LLM,并尽量固定训练数据. 论文比较最终系统与前代,没有提供完整二维矩阵. 所以可以确认 VL2 整体显著增强,两项结构各自贡献的精确比例仍未知.

Benchmark 平均数如何掩盖任务差异: 论文覆盖 MMBench、MMStar、MMMU、MathVista、AI2D、OCRBench、DocVQA、ChartQA、TextVQA、grounding 等多类测试. 它们的指标不同:有 exact match、模型判分、ANLS、IoU 或任务自定义分数. 把它们归一到一张平均图方便比较激活参数,却不能进行严格的跨指标加减.

例如 OCRBench 原始上限 1000,图中除以 10 映射到 0—100. 这等价于给 OCRBench 与其他六项之一相同权重,不等于给每道题相同权重. 一个模型 OCR 提升 100 原始分,平均图上约贡献 100/10/6100/10/6 或相应分母的变化. 应用若主要处理票据,真正权重会完全不同.

还要看评测分辨率是否允许动态切图. 若框架在送入 processor 前已缩小图片,模型无法发挥高分辨率策略;若不同模型使用各自原生 processor,输入像素和 token 预算又不相同. 公平比较要同时报告原图处理、最大 tile 和视觉 token 数.

定性样例能展示能力,不能估计失败率: 论文展示 grounding、多图、GUI、OCR 和复杂图像对话样例,能确认接口支持这些输出形态,也帮助理解模型如何组织答案. 但展示样例经过选择,没有分母,不能用来估计随机页面的成功率. 一张漂亮的长图识别不代表所有长宽比都稳定.

定性分析仍有独特价值. 自动指标可能把语义等价表达判错,也可能忽略答案中额外幻觉;看样例能发现重复、语言混杂、坐标格式和不确定性表达. 最好的做法是先按预定义规则随机抽样,再标注错误类型,避免只挑最成功或最失败的页面.

反例库应该包含遮挡、低对比、小目标、跨 tile 文字、密集表格、相似物体、多图指代和页面旋转. 每次改 processor 或推理框架都跑同一批,比只追榜单总分更能防止工程回归.

视觉幻觉来自语言先验与证据不足的竞争: 给定视觉表示 VV 与问题 QQ,模型预测 p(y∣V,Q)p(y\mid V,Q). 当图片模糊或关键区域在压缩中丢失,VV 提供的信息减少,语言先验 p(y∣Q)p(y\mid Q) 占比上升. 模型会生成场景中常见但图里没有的对象,或根据表格标题猜数值.

可以用遮挡差分检查视觉依赖. 将关键区域 RR 遮掉,比较答案 token 的对数概率:

Δ=log⁡p(y∣V,Q)−log⁡p(y∣V∖R,Q).\Delta=\log p(y\mid V,Q)-\log p(y\mid V_{\setminus R},Q).

若答案声称读取了该区域,Δ\Delta 却接近零,输出很可能主要依靠语言先验. 再把局部 tile 分辨率提高,观察 Δ\Delta 是否增加,能检查动态切图是否真正提供证据.

拒答与不确定性也是能力. 图片无法辨认时,编造一个流畅答案在普通语言指标上可能不受重罚,实际 OCR 场景风险很高. VL2 的训练目标以生成正确答案为主,论文没有建立完整的视觉置信度校准体系. 高风险应用仍需字符级置信、规则校验或人工复核.