From 9f5673213da2c2802135390bc711d5fe83a96600 Mon Sep 17 00:00:00 2001 From: wuyang <5700876+banisherwy@user.noreply.gitee.com> Date: Wed, 29 Jul 2026 07:51:42 +0800 Subject: [PATCH] feat: publish native multimodal chapter --- PROGRESS.md | 21 +- README.md | 4 +- ROADMAP.md | 8 + package.json | 3 +- research/MULTIMODAL_GROK_LEADS.md | 218 +++ research/MULTIMODAL_RESEARCH.md | 1362 ++++++++++++++++++ research/sources/README.md | 11 + scripts/check-agents-browser.mjs | 6 +- scripts/check-alignment-browser.mjs | 6 +- scripts/check-data-browser.mjs | 8 +- scripts/check-moe-browser.mjs | 2 +- scripts/check-multimodal-browser.mjs | 262 ++++ scripts/check-numerics-browser.mjs | 8 +- scripts/check-reasoning-browser.mjs | 2 +- scripts/check-scaling-browser.mjs | 6 +- scripts/check-training-systems-browser.mjs | 2 +- scripts/check-transformer-browser.mjs | 6 +- src/components/MultimodalLab.astro | 1110 +++++++++++++++ src/components/SiteHeader.astro | 1 + src/data/chapters.ts | 10 +- src/data/papers.ts | 335 +++++ src/pages/index.astro | 20 +- src/pages/multimodal/index.astro | 1480 ++++++++++++++++++++ src/pages/progress/index.astro | 17 +- 24 files changed, 4867 insertions(+), 41 deletions(-) create mode 100644 research/MULTIMODAL_GROK_LEADS.md create mode 100644 research/MULTIMODAL_RESEARCH.md create mode 100644 scripts/check-multimodal-browser.mjs create mode 100644 src/components/MultimodalLab.astro create mode 100644 src/pages/multimodal/index.astro diff --git a/PROGRESS.md b/PROGRESS.md index be01c9f..3977a54 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -17,6 +17,7 @@ | 指令微调与人类偏好 | 完成首版 | 75% | 真实偏好分歧、RM 长度偏置与 PPO/DPO 小模型复现 | | 推理与测试时扩展 | 完成首版 | 76% | 真实模型采样曲线、PRM 案例与逐篇图表精读 | | 工具使用与长程 Agent | 完成首版 | 74% | 真实环境 traces、cross-harness 对照、Agent RL 曲线与安全案例 | +| 原生多模态 | 完成首版 | 76% | 真实视觉 Token traces、跨分辨率消融、OCR 失败案例与视觉 Agent 安全轨迹 | | 稀疏计算与 MoE | 完成首版 | 74% | 真实负载 traces 与专家特化案例 | | 长上下文专题 | 完成首版 | 72% | 真实模型配置、内核细节与失败案例 | | 大规模训练系统 | 完成首版 | 71% | 真实集群 traces、故障案例与精确 topology 配置 | @@ -34,10 +35,10 @@ - [x] 提炼参考网站的编辑设计语言。 - [x] 确认 `git.k1412.top` 为 Gitea/Forgejo 兼容服务且本机 HTTPS 凭据可用于既有仓库。 - [x] 使用 Grok CLI 检索并形成约 95 篇一手论文的补充路线,主代理已回查关键来源。 -- [x] 完成 314 篇关键论文索引,覆盖 14 个标签专题与 Kimi/DeepSeek 聚光主线。 +- [x] 完成 355 篇关键论文索引,覆盖 14 个标签专题与 Kimi/DeepSeek 聚光主线。 - [x] 完成可检索、可按专题筛选的论文库页面。 -- [x] 完成 K3、语言模型前史、Transformer 基础、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、Agent、训练系统与数值优化十三篇首版长文。 -- [x] 完成 K3 三轴架构、语言模型前史四联实验、Transformer 四联实验、DeepSeek 谱系、长上下文、MoE 路由、推理三页签,以及训练系统、Scaling、数据工程、数值、Alignment 与 Agent 专题各四页签等三十九个原创交互视图。 +- [x] 完成 K3、语言模型前史、Transformer 基础、DeepSeek 谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、Agent、原生多模态、训练系统与数值优化十四篇首版长文。 +- [x] 完成 K3 三轴架构、语言模型前史四联实验、Transformer 四联实验、DeepSeek 谱系、长上下文、MoE 路由、推理三页签,以及训练系统、Scaling、数据工程、数值、Alignment、Agent 与原生多模态专题各四页签等四十三个原创交互视图。 - [x] 完成长上下文首版:五张成本账、26 篇一手论文、10+ 机制图与 8 策略交互实验室。 - [x] 核验 FlashAttention、DeepSeek-V2/V3.2/V4、Kimi Linear/K3 等六份论文原文,并建立长上下文研究账本。 - [x] 核验 Switch、ST-MoE、DeepSeekMoE、Loss-Free、V3、LatentMoE 与 K3 原文,并建立 MoE 研究账本。 @@ -108,9 +109,17 @@ - [x] Agent 真实 Chrome 断言通过:Direct/schema 故障传播、final-state verifier、pass@k / pass^k、非幂等副作用、wait-all 长尾、键盘 tabs 与 390px 移动端均正确响应。 - [x] Astro 类型检查、生产构建、17 个页面、792 个站内引用和 18 个跨页锚点通过;Agent 与既有九套专题本地 Chrome 全量回归无异常。 - [x] Agent 首版以源提交 `25982cb`、不可变镜像 `20260728T225618Z-25982cb` 发布;NAS、VPS/Tailscale、NPM、DNS、HTTPS、证书、门户、公开 Forgejo 与十套生产 Chrome 回归全链路通过。 +- [x] 启动原生多模态专题:用十六张问题账拆开视觉语义空间、connector、Token 预算、OCR、视频、统一理解生成、RL、幻觉、评测、Agent 与系统。 +- [x] 使用 Grok Headless 扩展七波、55+ 候选主线;218 行候选账与 1362 行正式一手证据账永久分离。 +- [x] 本地完整校验 13 份多模态论文 PDF,并通过官方 arXiv HTML、作者仓库与既有 K2.5/K3 报告核验其余核心节点。 +- [x] 完成原生多模态首版:30 个正文目录、DeepSeek-VL/VL2—Janus—OCR 三分支、Kimi 三代 MoonViT 与四联交互实验。 +- [x] 论文库新增 ResNet、ALIGN、NaViT、DeepSeek-VL2、Janus、DeepSeek-OCR、Vision-R1 等 41 个节点,从 314 篇扩充至 355 篇。 +- [x] 原生多模态真实 Chrome 断言通过:视觉 Token 超预算、K3 五维原生训练、OCR 报告 / 插值 / 证据外边界、vision-in-the-loop、键盘 tabs 与 390px 移动端均正确响应。 +- [x] Astro 类型检查、生产构建、18 个页面、875 个站内引用和 17 个跨页锚点通过;多模态页面桌面 / 移动端无文档级横向溢出。 ## 正在进行 +- [ ] 原生多模态二轮:真实视觉 Token traces、跨分辨率 / connector 消融、OCR 与视觉 Agent 安全失败案例。 - [ ] Agent 二轮:真实环境 traces、cross-harness ablation、Agent RL 训练曲线与提示注入案例。 - [ ] Transformer 二轮:多头电路逐图、Pre/Post-LN 真实 traces、Flash/KV kernel 与模型配置对照。 - [ ] 语言模型前史二轮:Kneser–Ney / LSTM / Bahdanau 逐图精读、真实小语料复现与 tokenizer 公平性案例。 @@ -186,6 +195,12 @@ | 2026-07-29 | Grok Agent 线索与正式证据永久分离 | 候选只负责查漏;公式、数字和系统结论必须回到一手论文、正式会议版本或官方报告 | | 2026-07-29 | 论文库扩充到 314 篇 | 新增 34 个环境、工具、Web/SWE/桌面 Agent、可靠性、安全与 Agent RL 节点 | | 2026-07-29 | Agent 首版用不可变镜像 `20260728T225618Z-25982cb` 发布 | OCI digest `sha256:a781ad92…ba52`;复用 `12010→8080`、NPM host 31 / cert 41、门户 order 180 与公开 Forgejo | +| 2026-07-29 | 原生多模态按五层管道与十六张账组织 | 像素、视觉塔、压缩 / connector、主干与输出 / 工具闭环分开定位;“原生”再拆成数据、目标、优化、输入输出与 Agent 五维 | +| 2026-07-29 | Grok 多模态召回与正式证据永久分离 | 218 行候选账只做查漏;1362 行正式账本只接受一手论文、官方报告与可计算公式 | +| 2026-07-29 | DeepSeek 多模态永久保留三分支 | VL/VL2 的理解、Janus 的统一生成、OCR 的光学上下文压缩不画成错误单向代际谱系 | +| 2026-07-29 | Kimi 三代 MoonViT 按训练制度重建 | Kimi-VL 的 SigLIP + caption / 对齐,K2.5 的共享图像视频 / zero-vision SFT,K3 的从头共同 NTP 分开说明 | +| 2026-07-29 | 光学压缩实验显式分三级证据 | DeepSeek-OCR 报告锚点、中间教学插值与超过已核范围的“不外推”在交互中使用不同状态 | +| 2026-07-29 | 论文库扩充到 355 篇 | 新增 41 个视觉表示、连接器、分辨率、OCR、视频、统一生成、评测与视觉 RL 节点 | ## 未决问题 diff --git a/README.md b/README.md index 29e5de1..c5ce915 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,9 @@ - 持续进度:[PROGRESS.md](./PROGRESS.md) - 证据与写作规范:[research/METHODOLOGY.md](./research/METHODOLOGY.md) -当前里程碑包含 16 专题学习地图、314 篇关键论文索引、Kimi K3 完整导读, +当前里程碑包含 16 专题学习地图、355 篇关键论文索引、Kimi K3 完整导读, 语言模型前史、Transformer 基础、DeepSeek 技术谱系、Scaling Laws、数据工程、长上下文、MoE、指令微调与人类偏好、推理、工具使用与长程 Agent、训练系统与数值优化深度专题, -以及 39 个覆盖核心机制的原创交互视图。 +以及 43 个覆盖核心机制的原创交互视图。 其余专题按进度账本持续扩建。 ## 本地开发 diff --git a/ROADMAP.md b/ROADMAP.md index ae939d9..3e891e5 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -108,6 +108,14 @@ Kimi K2→K2.5→K3 的 white-box harness、AET、AgentENV 和百万 Token Agent ViT/CLIP → Flamingo/BLIP-2/LLaVA → 原生多模态与视频;Kimi-VL、MoonViT-V2 和“视觉进入同一主干”的意义。 +首版已完成:以语义空间、连接器、视觉 Token、OCR / 文档、视频、融合、理解 / 生成、SFT、RL、 +Agent、幻觉、安全、评测、系统、MoE 与产品谱系十六张账,串起 2012–2026 的 55 个一手节点。 +正文把像素、视觉塔、压缩 / projector、主干与输出 / 工具拆成五层;重点讲解 DeepSeek-VL/VL2、 +Janus、DeepSeek-OCR 三条不同分支,以及 Kimi-VL → K2.5 → K3 从 SigLIP 初始化和独立对齐, +走到 MoonViT-V2 从头共同 next-token prediction 的训练制度变化。配套视觉 Token、connector / +native、光学上下文压缩与 vision-in-the-loop 四个独立实验,所有作者报告、教学插值和证据外区域 +明确分级。 + ### 14. 推理服务与低成本部署 KV Cache、PagedAttention/vLLM、连续批处理、推测解码、Prefill/Decode 解耦、前缀缓存、集群调度;Mooncake 与 K3 KDA-aware serving。 diff --git a/package.json b/package.json index 7bece25..603270b 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "check:language-model-history-browser": "node scripts/check-language-model-history-browser.mjs", "check:transformer-browser": "node scripts/check-transformer-browser.mjs", "check:alignment-browser": "node scripts/check-alignment-browser.mjs", - "check:agents-browser": "node scripts/check-agents-browser.mjs" + "check:agents-browser": "node scripts/check-agents-browser.mjs", + "check:multimodal-browser": "node scripts/check-multimodal-browser.mjs" }, "dependencies": { "@astrojs/sitemap": "3.7.3", diff --git a/research/MULTIMODAL_GROK_LEADS.md b/research/MULTIMODAL_GROK_LEADS.md new file mode 100644 index 0000000..6170544 --- /dev/null +++ b/research/MULTIMODAL_GROK_LEADS.md @@ -0,0 +1,218 @@ +# 原生多模态专题 · Grok 候选召回 + +> 生成方式:Grok CLI Headless(`--no-subagents --no-memory`) +> 日期:2026-07-29 +> 角色:只负责扩大候选池、暴露易混边界和提供可视化灵感,不作为事实来源。进入正式课程的技术主张、数字和历史定位,必须回到论文、技术报告或官方代码仓库核验。 + +## 1. Grok 建议的十六张问题账 + +| 编号 | 问题账 | 核心问题 | +|---|---|---| +| Q1 | Visual semantic space | 图像怎样获得可与语言比较的语义表示? | +| Q2 | Connector | 视觉特征怎样接进语言模型,谁负责跨模态翻译? | +| Q3 | Resolution & token budget | 高分辨率细节为何会迅速吃光上下文与算力? | +| Q4 | OCR & documents | 场景文字、文档、表格与公式为何比自然图像更难? | +| Q5 | Video | 时间维度怎样进入模型,帧数与视觉 Token 怎样压缩? | +| Q6 | Fusion timing | early fusion、cross-attention、late fusion 分别交换了什么? | +| Q7 | Understanding vs generation | 图像理解与图像生成能否共用表示和主干? | +| Q8 | Multimodal SFT | 指令数据怎样把视觉表征变成可对话能力? | +| Q9 | Multimodal RL | 奖励怎样越过文字输出,回到视觉观察与动作? | +| Q10 | Agent & tools | 模型怎样主动裁剪、放大、写代码、截图并继续观察? | +| Q11 | Hallucination | 模型为何会相信语言先验而忽略像素证据? | +| Q12 | Safety | 图像中的提示注入、隐私与工具副作用怎样进入威胁模型? | +| Q13 | Evaluation | 感知、OCR、知识、推理、视频和 Agent 应怎样分开测? | +| Q14 | Training systems | 图像尺寸、动态 Token 与数据混合怎样改变并行和吞吐? | +| Q15 | Sparse MoE + vision | 视觉 Token 会怎样影响路由负载、专家专化与稳定性? | +| Q16 | DeepSeek vs Kimi | 两条产品线分别把什么问题当成了主矛盾? | + +这些问题不会直接变成十六段论文罗列。正式章节会先建立一条统一的数据流,再让每张问题账回答“瓶颈为什么出现、哪篇论文改变了设计空间、代价是什么”。 + +## 2. Grok 召回的七个历史波次 + +| 波次 | 时间 | 候选主题 | 进入主线前要核验的边界 | +|---|---|---|---| +| W1 | 2012–2017 | AlexNet、ResNet、检测与区域特征 | 这是视觉表示前史,不应伪装成 LLM | +| W2 | 2021–2023 | CLIP、ALIGN、LiT、SigLIP | 对齐表征不等于能开放式对话 | +| W3 | 2021–2023 | Frozen、Flamingo、BLIP-2、LLaVA | “冻结”了谁、训练了谁必须逐篇说明 | +| W4 | 2023–2025 | NaViT、动态切图、OCR、文档、视频 | 更高分辨率的真实代价是视觉 Token 与系统方差 | +| W5 | 2023–2025 | Chameleon、Transfusion、SOLO、统一自回归 | 统一主干、统一序列、统一目标是三个不同命题 | +| W6 | 2024–2025 | DeepSeek-VL/VL2、Janus、Qwen、InternVL、Kimi-VL | 产品线之间不能只用总参数或榜单横比 | +| W7 | 2025–2026 | 视觉推理 RL、视觉工具、GUI Agent、K2.5、K3 | 结果必须记录工具、harness、步数与验证器 | + +## 3. Grok 召回的候选论文池 + +### 视觉表示与语言监督 + +- AlexNet +- ResNet +- Vision Transformer +- CLIP +- ALIGN +- LiT +- SigLIP +- NaViT + +### 连接器与冻结式 VLM + +- Frozen +- Flamingo +- BLIP +- BLIP-2 +- MiniGPT-4 +- LLaVA +- LLaVA-1.5 +- InstructBLIP +- Kosmos-2 + +### 高分辨率、OCR、文档与视频 + +- Qwen-VL / Qwen2-VL / Qwen2.5-VL +- InternVL / InternVL 1.5 / InternVL 2.5 +- LLaVA-NeXT / LLaVA-OneVision +- Video-LLaVA +- LLaMA-VID +- DeepSeek-VL +- DeepSeek-VL2 +- DeepSeek-OCR +- DeepSeek-OCR2 +- Kimi-VL + +### 统一理解与生成 + +- Chameleon +- Transfusion +- SOLO +- Janus +- JanusFlow +- Janus-Pro + +### 多模态推理、工具与 Agent + +- Visual Sketchpad +- Vision-R1 +- VTool-R1 +- ToolsRL +- OSWorld +- VisualWebArena +- Kimi K2.5 +- Kimi K3 + +### 评测、幻觉与诊断 + +- MMBench +- MMMU +- MathVista +- OCRBench +- POPE +- HallusionBench +- Video-MME + +## 4. DeepSeek 候选分支:不要画成一条直线 + +Grok 提醒应把 DeepSeek 多模态工作拆成三条问题导向不同的分支: + +1. **理解分支:DeepSeek-VL → DeepSeek-VL2** + - 关注真实世界高分辨率输入、动态切图、视觉—语言竞争和稀疏语言骨干; + - 核验重点:两代视觉编码器、切图策略、像素重排、激活参数量。 +2. **统一生成分支:Janus → JanusFlow → Janus-Pro** + - 关注理解和生成是否应该共享视觉编码路径; + - 核验重点:解耦的是编码器还是主干,生成目标是离散自回归还是 rectified flow。 +3. **光学压缩分支:DeepSeek-OCR → DeepSeek-OCR2** + - 关注把长文本上下文先压到图像,再以较少视觉 Token 解码; + - 核验重点:DeepEncoder 结构、压缩率定义、官方报告的准确率边界、OCR2 的 token 重排。 + +正式课程不会用“DeepSeek 一路演进到 OCR”这种线性叙事,因为三条分支优化的是不同目标。 + +## 5. Kimi 候选分支:MoonViT 的三次训练制度变化 + +Grok 给出的候选主线: + +```text +Kimi-VL + SigLIP 初始化 + + 对比学习 / caption 视觉预训练 + + MoonViT / NaViT 动态分辨率 + ↓ +Kimi K2.5 + MoonViT-3D + + 图像 / 视频共享参数 + + caption NTP,不再使用对比损失 + + text-only SFT 激活视觉工具 + ↓ +Kimi K3 + MoonViT-V2 从头训练 + + 与语言主干共同做 NTP + + 无事后视觉对齐阶段 + + vision-in-the-loop Agent +``` + +这一主线已被选为正式章节的锚点,但每个框中的初始化、损失和训练阶段仍以 Kimi-VL、K2.5、K3 三份官方报告逐项核验。 + +## 6. 候选可视化 + +1. 像素 → patch → 视觉 Token → 压缩 → 上下文占比的水流图; +2. 224²、1024²、3584² 在不同 patch size 下的 Token 爆炸对比; +3. CLIP batch 内成对矩阵与 SigLIP 独立 sigmoid 对比; +4. Frozen / Flamingo / BLIP-2 / LLaVA 连接器横截面; +5. 固定缩放、动态切图、NaViT packing 的分辨率策略对比; +6. image / video 的空间注意力与时间注意力分解; +7. 理解、生成、工具行动三种“输出空间”; +8. Janus 的双视觉编码路径与共享自回归主干; +9. DeepSeek-VL → VL2 的高分辨率路线; +10. DeepSeek-OCR 的“文字 Token → 页面图像 → 视觉 Token”压缩漏斗; +11. DeepSeek-OCR2 的语义 token 重排; +12. Kimi 三代 MoonViT 训练制度时间线; +13. K3 原生多模态的数据—训练—Agent 闭环; +14. 多模态幻觉的“语言先验压过视觉证据”跷跷板; +15. 感知、OCR、推理、视频、Agent 五类评测矩阵。 + +## 7. 候选交互实验 + +### Lab A · 视觉 Token 预算 + +调节分辨率、patch size、帧数、时间池化、2×2 pixel shuffle 与上下文长度,观察原始 patch 数、压缩后 Token 数和上下文占比。 + +### Lab B · 连接器与训练阶段 + +切换 Flamingo、BLIP-2、LLaVA、Kimi-VL、K2.5、K3,观察哪些模块冻结、哪些目标生效、训练制度怎样变化。 + +### Lab C · 光学上下文压缩 + +把文档文本 Token 数、页面数和视觉 Token 数转成压缩率。DeepSeek-OCR 的曲线只以“论文报告值”显示;插值区域必须明确标成教学近似。 + +### Lab D · Vision-in-the-loop + +比较直接 VQA、文字思维链和工具闭环:裁剪、放大、OCR、Python 图像处理、截图和最终验证分别改变什么观察。 + +## 8. Grok 暴露的二十个易错点 + +1. 视觉编码器不等于多模态模型; +2. CLIP 的共享语义空间不等于生成式语言能力; +3. projector 小不代表视觉信息传输没有瓶颈; +4. “冻结 LLM”与“冻结视觉塔”不是同一个训练制度; +5. cross-attention 与把视觉 Token 直接塞进序列不是同一种融合; +6. native resolution 不等于没有 resize 或 patch 化; +7. 动态切图会引入重复区域与 tile 顺序问题; +8. 更高像素不必然产生更多有效信息; +9. 视频不是“很多独立图片”的简单堆叠; +10. 时间池化会省 Token,也会损失短暂事件; +11. 统一主干不等于理解与生成共用同一个视觉编码器; +12. 统一序列不等于统一损失; +13. “原生多模态”没有唯一行业定义; +14. K3 原生训练仍然保留 MoonViT-V2 与投影层; +15. DeepSeek-VL2 的总参数不能与激活参数混用; +16. DeepSeek-OCR 的压缩率和准确率是论文设定下的报告值; +17. 多模态 RL 的提升不能自动归因于视觉推理; +18. 工具调用提升可能来自 harness,而非裸模型; +19. benchmark 总分会掩盖感知、OCR、知识与推理瓶颈; +20. 图像中的间接提示注入会把视觉输入变成安全边界。 + +## 9. 正式筛选规则 + +- 核心论文必须改变一种表示、接口、训练目标、系统策略或评测方法; +- 每个数字绑定模型版本、输入设置、训练或评测条件; +- 官方报告数字写成“作者报告”,不写成本站复测; +- 多模态 Agent 结果同时记录视觉观察、工具、harness、步数和 verifier; +- 章节主线控制在约 50–60 个节点,外围候选进入论文图谱; +- DeepSeek 与 Kimi 获得独立聚光灯,但不牺牲从 CLIP、连接器、高分辨率到原生训练的完整历史; +- “原生”必须拆成原生数据混合、原生训练目标、原生主干优化、原生输入输出和原生 Agent 闭环五个可核验维度。 diff --git a/research/MULTIMODAL_RESEARCH.md b/research/MULTIMODAL_RESEARCH.md new file mode 100644 index 0000000..a6aa812 --- /dev/null +++ b/research/MULTIMODAL_RESEARCH.md @@ -0,0 +1,1362 @@ +# 原生多模态 · 正式研究账本 + +> 状态:核心一手来源已完成首轮核验,进入网页写作与交互实现 +> 研究截止:2026-07-29 +> 锚点:Kimi K3 Technical Report §2.2、§4.1、§4.2、§5.4 +> 证据原则:论文或技术报告的实验数字一律标成“作者报告”;没有独立复现时不写成客观常数。Grok 只做候选召回,不进入本账本的事实依据。 + +--- + +## 0. 本章要回答什么 + +“让语言模型看图”听起来像一个问题,实际上至少包含五层: + +```text +像素 / 帧 / 页面 + ↓ +视觉编码器:把局部像素变成特征 + ↓ +压缩与连接器:控制视觉 Token 数,并映射到语言空间 + ↓ +语言 / 多模态主干:融合证据、知识与推理 + ↓ +文字、图像、代码、工具动作或环境状态变化 +``` + +每一层都可能成为瓶颈: + +- 分辨率不够,文字和细节在进入模型前就消失; +- 视觉 Token 太多,长文档和长视频挤满上下文; +- 连接器过窄,视觉塔看见的东西没能传给语言主干; +- 语言先验太强,模型“猜到了一个常见答案”却没有看图; +- 训练只教会问答,没有教会模型主动裁剪、放大、执行代码和验证; +- 评测只给总分,无法区分感知、OCR、知识、推理和工具使用。 + +本章的最终目标不是记住模型名字,而是获得一套可以拆解任何多模态系统的共同语言。 + +--- + +## 1. 最小数学:一张图为什么会吃掉成千上万个 Token + +设输入图像高宽为 `H × W`,视觉 Transformer 的 patch 边长为 `P`,则最粗略的 patch 数为: + +```text +N_patch = ceil(H / P) × ceil(W / P) +``` + +若在送入 LLM 前使用 `s × s` pixel shuffle,把每 `s²` 个相邻视觉特征合并,则: + +```text +N_visual ≈ N_patch / s² +``` + +视频若有 `F` 帧,并以每 `t` 帧做一次时间池化,则近似为: + +```text +N_video ≈ F / t × N_visual_per_frame +``` + +这只是教学近似。真实系统还可能加入: + +- class token; +- 全局缩略图; +- 多个局部 tile; +- tile 边界或分隔 Token; +- 非整除 padding; +- NaViT packing; +- temporal chunk; +- 输入侧或特征侧裁剪。 + +### 1.1 直觉例子 + +使用 14×14 patch: + +| 分辨率 | 原始 patch 数 | 再做 2×2 pixel shuffle 后 | +|---:|---:|---:| +| 224² | 256 | 64 | +| 1024² | 5,476 左右 | 1,369 左右 | +| 3584² | 65,536 | 16,384 | + +因此,“支持 3584²”不是一句免费的能力声明。即使做 4 倍空间压缩,一张极大图仍可能消耗上万视觉 Token。是否真的用满分辨率,要看图像内容、上下文预算和系统的动态分辨率策略。 + +### 1.2 三种压缩损失 + +1. **空间损失**:小字、细线、符号和局部关系被合并; +2. **时间损失**:短暂动作被时间池化抹掉; +3. **顺序损失**:切图或重排后,阅读顺序和二维邻接被破坏。 + +所有视觉压缩都在交换: + +```text +细节保真度 ↔ 上下文长度 ↔ 训练 / 推理算力 +``` + +--- + +## 2. 视觉表示前史:从分类器到可迁移视觉 Token + +### 2.1 AlexNet(2012) + +**变化:** 大规模卷积网络、GPU 训练和 ImageNet 监督证明了深视觉表征的可扩展性。 + +**对多模态的意义:** 后来的 VLM 不必从原始像素直接学习所有局部模式,可以复用成熟视觉骨干。 + +**边界:** 分类器的类别空间是封闭的;它不会自动获得开放词汇、句子级语义或生成能力。 + +### 2.2 ResNet(2015) + +**变化:** 残差连接让更深视觉网络更容易优化。 + +**对多模态的意义:** 在 ViT 成为主流前,区域特征、检测器和卷积骨干长期承担 VQA、caption 与跨模态检索的视觉入口。 + +**一手来源:** [Deep Residual Learning for Image Recognition](https://arxiv.org/abs/1512.03385) + +### 2.3 Vision Transformer(2020) + +**变化:** 把图像切成 patch,将线性投影后的 patch 序列送入标准 Transformer。 + +**关键接口:** + +```text +image → fixed-size patches → linear projection + position → Transformer +``` + +**为什么是转折点:** + +- 视觉与语言都可以表示成序列; +- 注意力、位置编码、并行和缩放方法可以共享; +- 后续模型更容易把视觉特征映射成“像 Token 一样”的接口。 + +**边界:** ViT 原论文的固定分辨率与固定 patch 网格,会给任意长宽比和高分辨率文档带来失真或浪费。 + +**一手来源:** [An Image is Worth 16x16 Words](https://arxiv.org/abs/2010.11929) + +--- + +## 3. 语言监督改变视觉空间:CLIP、ALIGN、LiT、SigLIP + +### 3.1 CLIP(2021):把图像和文字放到可比较的空间 + +CLIP 分别编码一批图像和文本,构成 `N × N` 相似度矩阵。正确图文对位于对角线,训练目标让正确配对相似、错误配对远离。 + +```text +image_i ─▶ vision encoder ─▶ v_i + cosine(v_i, t_j) +text_j ─▶ text encoder ─▶ t_j +``` + +**改变了什么:** + +- 使用自然语言作为开放词汇监督; +- 零样本分类可以把类别名称写成提示; +- 视觉编码器开始携带可与自然语言比较的语义。 + +**没有解决什么:** + +- 它不是自回归语言模型; +- 它不直接生成长答案; +- 全局图文配对不保证精细 OCR、计数、空间关系或复杂推理。 + +**一手来源:** [Learning Transferable Visual Models From Natural Language Supervision](https://arxiv.org/abs/2103.00020) + +### 3.2 ALIGN(2021):扩大噪声图文对 + +ALIGN 使用大规模、带噪声的图文对训练双编码器,强调规模可以部分抵消手工清洗不足。 + +**历史意义:** 证明语言监督视觉表示不仅是小规模精制数据路线,也可以进入超大规模 web 数据路线。 + +**边界:** 数据规模不消除版权、偏见、重复、错误配对和低质量 alt text。 + +**一手来源:** [Scaling Up Visual and Vision-Language Representation Learning With Noisy Text Supervision](https://arxiv.org/abs/2102.05918) + +### 3.3 LiT(2021):锁住图像塔,只调文本塔 + +LiT 的核心消融是 locked-image tuning:保留预训练图像模型,训练文本侧去匹配已有视觉空间。 + +**教学价值:** “图文对齐”不必总是两边共同更新。冻结谁、更新谁,本身就是表示保真、训练成本和跨模态适配之间的选择。 + +**一手来源:** [LiT: Zero-Shot Transfer with Locked-image Text Tuning](https://arxiv.org/abs/2111.07991) + +### 3.4 SigLIP(2023):从 batch softmax 改成独立 sigmoid + +CLIP 式损失依赖 batch 内全局归一化;SigLIP 对每一对图文做二元 sigmoid 分类,不要求把整个 batch 的相似度放进同一个 softmax。 + +**改变了什么:** + +- 目标更局部; +- 通信与 batch size 行为不同; +- SigLIP-SO400M 后来成为许多高分辨率 VLM 的视觉初始化。 + +**边界:** 损失改动不自动解决分辨率、连接器、OCR 和语言生成。 + +**一手来源:** [Sigmoid Loss for Language Image Pre-Training](https://arxiv.org/abs/2303.15343) + +--- + +## 4. 连接器时代:怎样把视觉塔接给语言模型 + +### 4.1 Frozen(2021):冻结语言模型,把图像变成前缀 + +Frozen 用视觉编码器产生连续视觉前缀,送入冻结语言模型,使模型能用少量样例完成多模态 in-context learning。 + +**关键思想:** 不改语言模型权重,也可以寻找一个视觉入口。 + +**边界:** 连续前缀承担很重的跨模态翻译负担;语言模型自身没有经过大规模视觉共同训练。 + +**一手来源:** [Multimodal Few-Shot Learning with Frozen Language Models](https://arxiv.org/abs/2106.13884) + +### 4.2 Flamingo(2022):Perceiver Resampler + gated cross-attention + +Flamingo: + +1. 用视觉编码器处理图像或视频; +2. Perceiver Resampler 把可变数量视觉特征压成固定数量潜变量; +3. 在冻结语言模型层间插入 gated cross-attention; +4. 支持图文交错和 few-shot 示例。 + +**关键取舍:** 视觉信息不必直接占据语言自注意力序列中的所有位置,而是通过跨注意力读取。 + +**边界:** 架构复杂度、专用插层与视觉潜变量的压缩损失成为新成本。 + +**一手来源:** [Flamingo: a Visual Language Model for Few-Shot Learning](https://arxiv.org/abs/2204.14198) + +### 4.3 BLIP(2022):先修数据,再谈模型 + +BLIP 同时服务理解与生成,并使用 captioner 生成描述、filter 清理噪声图文对。 + +**历史意义:** 多模态能力不仅由连接器决定,图文数据的生成、过滤和目标混合也是核心变量。 + +**一手来源:** [BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation](https://arxiv.org/abs/2201.12086) + +### 4.4 BLIP-2(2023):Q-Former 作为信息瓶颈 + +BLIP-2 冻结图像编码器与语言模型,用轻量 Q-Former 通过有限 query 从视觉特征中取信息,再连接到 LLM。 + +```text +frozen image encoder → Q-Former queries → projection → frozen LLM +``` + +**优势:** 训练参数和成本较小。 + +**瓶颈:** 固定 query 数既是压缩器,也是信息上限;细粒度文档和密集场景可能要求更多视觉容量。 + +**一手来源:** [BLIP-2](https://arxiv.org/abs/2301.12597) + +### 4.5 LLaVA(2023):视觉指令调优把路线变简单 + +LLaVA 使用预训练视觉编码器、线性投影与语言模型,并用生成式多模态指令数据做视觉 instruction tuning。 + +**改变了什么:** + +- 把“视觉编码器 + 简单 projector + LLM + 指令数据”变成高可复现基线; +- 证明数据与指令格式可以弥补部分架构复杂度; +- 推动开放式视觉对话快速普及。 + +**边界:** 简单 connector 不代表没有信息瓶颈;固定或较低分辨率会直接限制 OCR 与细节。 + +**一手来源:** [Visual Instruction Tuning](https://arxiv.org/abs/2304.08485) + +### 4.6 LLaVA-1.5(2023):基线工程化 + +LLaVA-1.5 用两层 MLP projector、更多学术任务数据和更明确训练配方改进原版。 + +**教学意义:** 多模态进步经常来自数据混合、训练配方和评测覆盖,而不只是发明新模块。 + +**一手来源:** [Improved Baselines with Visual Instruction Tuning](https://arxiv.org/abs/2310.03744) + +--- + +## 5. 分辨率路线:固定缩放、切图与 NaViT packing + +### 5.1 固定正方形 + +```text +任意图片 → resize / crop → 固定 H×W → 固定 Token 数 +``` + +**优点:** batch 规则、系统简单、吞吐稳定。 + +**缺点:** + +- 长图被压扁; +- 小字消失; +- crop 可能丢失边缘信息; +- 空白区域浪费 patch。 + +### 5.2 动态切图 + +```text +原图 → 选择 m×n tile 网格 → 全局缩略图 + 局部 tile → 依次送入模型 +``` + +**优点:** 复用固定尺寸视觉塔,同时保留局部细节。 + +**缺点:** + +- 相邻 tile 重复; +- 全局与局部信息需要重新绑定; +- tile 顺序可能扰乱二维关系; +- 图越大,Token 和预填充成本越高。 + +### 5.3 NaViT(2023):Patch n’ Pack + +NaViT 不要求先把所有图像缩成同一尺寸,而是把不同分辨率和长宽比的 patch 序列打包进同一序列,并用注意力掩码隔离不同图像。 + +**关键思想:** + +```text +固定图像形状的 batch + ↓ +固定 Token 预算内打包多个可变形状图像 +``` + +**影响:** Kimi-VL、K2.5、K3 的 MoonViT 路线都吸收了 native-resolution packing 思想。 + +**边界:** “native resolution”是避免统一强制缩放,不是无限分辨率,也不是零 padding / 零预处理。 + +**一手来源:** [Patch n’ Pack: NaViT](https://arxiv.org/abs/2307.06304) + +--- + +## 6. DeepSeek 聚光灯 I:理解路线 VL → VL2 + +### 6.1 DeepSeek-VL(2024) + +DeepSeek-VL 针对真实场景覆盖网页截图、PDF、OCR、图表与知识内容。 + +**架构主张:** + +- 混合视觉编码器; +- 支持 1024×1024 输入; +- 在视觉—语言预训练一开始就混入语言训练; +- 主动管理视觉与语言的竞争,避免视觉训练破坏语言能力。 + +**为什么重要:** 它把“语言能力是否被视觉训练遗忘”摆到架构和数据配比同等重要的位置。 + +**边界:** “从一开始混入语言训练”仍不等于 K3 所说的视觉塔与 MoE 主干从头联合训练;两者的初始化和训练制度不同。 + +**一手来源:** [DeepSeek-VL](https://arxiv.org/abs/2403.05525) + +### 6.2 DeepSeek-VL2(2024) + +DeepSeek-VL2 从上一代固定混合编码器转向动态切图: + +1. 根据原图比例,在 `m × n` 且 `m·n ≤ 9` 的候选网格中选切法; +2. 生成一个全局缩略图和若干局部 tile; +3. 每个 tile 经 SigLIP-SO400M-384 编码; +4. 每 tile 得到 729 个视觉 embedding; +5. 2×2 pixel shuffle 后压到 196 个 Token; +6. 两层 MLP adaptor 送入 DeepSeekMoE 语言骨干。 + +论文给出三个版本的激活参数量约为 1.0B、2.8B、4.5B。 + +**关键变化:** + +- 高分辨率从“双编码器固定输入”改成“单编码器动态 tile”; +- 视觉细节和 Token 成本变成显式可调; +- 语言骨干同时结合 DeepSeekMoE 与 MLA。 + +**边界:** + +- 激活参数不是总参数; +- tile 上限与全局缩略图意味着仍有固定预算; +- 196 是 pixel shuffle 后的 tile token 数,不能与原始 patch 数混写。 + +**一手来源:** [DeepSeek-VL2](https://arxiv.org/abs/2412.10302) · [官方代码](https://github.com/deepseek-ai/DeepSeek-VL2) + +--- + +## 7. DeepSeek 聚光灯 II:Janus 的理解—生成分叉 + +### 7.1 为什么理解和生成会打架 + +图像理解希望表征: + +- 对语义稳定; +- 对局部扰动鲁棒; +- 便于与文字对齐。 + +图像生成希望表征: + +- 保留纹理、颜色和空间细节; +- 可以被解码回像素; +- 适合逐 Token 或连续流生成。 + +强迫两种任务共用完全相同的视觉编码器,可能产生表征冲突。 + +### 7.2 Janus(2024) + +Janus 的核心不是“两个完整模型”,而是: + +```text +理解图像 → semantic encoder ─┐ + ├→ 统一自回归 Transformer +生成图像 ← generation decoder ← generation encoder / tokenizer ─┘ +``` + +**关键思想:** 解耦视觉编码路径,同时保留一个统一自回归主干。 + +**边界:** “统一模型”不等于所有模态共享同一个输入编码器。 + +**一手来源:** [Janus](https://arxiv.org/abs/2410.13848) + +### 7.3 JanusFlow(2024) + +JanusFlow 让语言自回归目标与图像 rectified flow 在同一框架中训练,并继续使用解耦的理解 / 生成编码器,还对两侧表示做对齐。 + +**关键区别:** + +- Janus 的图像生成走离散视觉 Token 自回归; +- JanusFlow 把连续图像生成交给 rectified flow; +- 共享的是核心语言框架,不是强迫所有输出都变成离散 Token。 + +**一手来源:** [JanusFlow](https://arxiv.org/abs/2411.07975) + +### 7.4 Janus-Pro(2025) + +Janus-Pro 延续解耦路径,主要改进训练策略、数据规模和模型规模。 + +**教学意义:** 同一基本架构仍可以通过训练阶段和数据工程获得显著变化;不能把每代进步都解释成“新模块”。 + +**一手来源:** [Janus-Pro](https://arxiv.org/abs/2501.17811) · [官方代码](https://github.com/deepseek-ai/Janus) + +--- + +## 8. DeepSeek 聚光灯 III:OCR 作为光学上下文压缩 + +### 8.1 传统问题 + +一份长文档已经是数字文字,为什么还要渲染成图片再读回来? + +DeepSeek-OCR 的研究问题是: + +```text +大量文本 Token + ↓ 渲染成高密度页面 +较少视觉 Token + ↓ OCR 解码 +恢复文字 +``` + +这里的目标不只是 OCR,而是探索“视觉是否能成为长上下文压缩介质”。 + +### 8.2 DeepSeek-OCR(2025) + +DeepEncoder 约 380M 参数,由约 80M 的 SAM-base 与约 300M 的 CLIP-large 串联。官方报告对 1024² 输入可做 16× 下采样,将 4096 个局部视觉位置压到 256 Token。 + +论文报告: + +- 光学压缩比低于 10× 时,解码精度约 97%; +- 20× 压缩时约 60%; +- 在 OmniDocBench 的特定设置中,100 个视觉 Token 可优于 GOT-OCR2.0; +- 生产设置下单张 A100-40G 每天可生成超过 20 万页训练数据。 + +这些数字都只作为论文报告值,不外推到所有字体、语言、版式、图像质量和硬件栈。 + +**核心边界:** + +- “压缩率”取决于文本 tokenizer、页面渲染、视觉 Token 定义和解码目标; +- OCR 准确率会随语言、公式、图表和阅读顺序变化; +- 渲染—解码会引入不可逆信息损失; +- 不应把论文曲线插值成物理定律。 + +**一手来源:** [DeepSeek-OCR](https://arxiv.org/abs/2510.18234) · [官方代码](https://github.com/deepseek-ai/DeepSeek-OCR) + +### 8.3 DeepSeek-OCR2(2026) + +DeepSeek-OCR2 的 DeepEncoder V2 不再把视觉 Token 只按规则扫描顺序交给解码器,而是根据图像语义动态重排。 + +论文把任务描述为两个串联的一维因果结构: + +1. 视觉侧生成语义相关的 Token 顺序; +2. 语言侧沿该顺序生成文字。 + +**直觉:** 人读复杂页面并不总是机械地从左到右逐格扫描;标题、栏、表格和图例会改变阅读顺序。 + +**边界:** 动态重排改善的是视觉序列组织,不意味着二维结构已被完全解决,也不保证所有版式都获益。 + +**一手来源:** [DeepSeek-OCR2](https://arxiv.org/abs/2601.20552) · [官方代码](https://github.com/deepseek-ai/DeepSeek-OCR-2) + +--- + +## 9. 图像与视频:共享空间不等于共享时间 + +### 9.1 把视频当图片列表 + +最简单方法是均匀采帧,把每帧独立编码后串联。 + +**优点:** 复用图像模型。 + +**缺点:** + +- Token 数随帧数线性增长; +- 运动方向、先后顺序和短暂事件不容易表示; +- 相邻帧大量冗余。 + +### 9.2 时间建模的四种位置 + +| 位置 | 典型做法 | 取舍 | +|---|---|---| +| 输入前 | 采帧、镜头切分 | 最便宜,但可能漏掉事件 | +| 视觉编码器内 | 时空注意力、3D patch | 表征强,训练和显存贵 | +| 连接器 | temporal pooling / resampler | 控制 Token,可能损失短事件 | +| LLM 内 | 把帧 Token 按时间排列 | 通用,但上下文成本高 | + +### 9.3 Video-LLaVA 与 LLaMA-VID + +Video-LLaVA 探索图像和视频在共同视觉—语言空间中的表示;LLaMA-VID 进一步用内容 Token 与上下文 Token 压缩长视频。 + +**历史定位:** 这类工作把“每帧都塞进 LLM”的问题显式化,为后续统一图像 / 视频编码器和时间池化提供过渡。 + +**一手来源:** + +- [Video-LLaVA](https://arxiv.org/abs/2311.10122) +- [LLaMA-VID](https://arxiv.org/abs/2311.17043) + +### 9.4 Video-MME(2024) + +Video-MME 覆盖短、中、长视频,论文数据包括 900 段视频、总计 254 小时、2700 个问答,并把字幕和音频纳入评测条件。 + +**评测提醒:** + +- 帧采样策略必须记录; +- 是否输入字幕和音频必须记录; +- 上下文长度和最大帧数必须记录; +- 同名模型的不同输入预算不能直接横比。 + +**一手来源:** [Video-MME](https://arxiv.org/abs/2405.21075) + +--- + +## 10. Kimi 聚光灯 I:Kimi-VL 的 MoonViT + +### 10.1 架构 + +Kimi-VL 由三部分组成: + +```text +MoonViT native-resolution encoder + ↓ +2×2 pixel shuffle + two-layer MLP projector + ↓ +Moonlight 16B MoE(约 2.8B 激活) +``` + +MoonViT: + +- 使用 NaViT packing 处理不同分辨率与长宽比; +- 从 SigLIP-SO-400M 初始化; +- 保留并插值固定绝对位置嵌入,同时加入 2D RoPE; +- 约 400M 参数。 + +### 10.2 视觉预训练目标 + +Kimi-VL 的独立 ViT 阶段同时使用: + +```text +L = L_siglip + 2 × L_caption +``` + +即 SigLIP 式对比损失与图像条件 caption 交叉熵。 + +### 10.3 训练阶段 + +语言主干从已经看过 5.2T 纯文本 Token 的 Moonlight 中间 checkpoint 初始化。随后多模态路线共使用约 4.4T Token: + +| 阶段 | Token | 主要更新 | +|---|---:|---| +| ViT 训练 + 对齐 | 2.0T + 0.1T | MoonViT / projector | +| 联合预训练 | 1.4T | 视觉与语言共同训练 | +| cooldown | 0.6T | 高质量分布 | +| 长上下文 | 0.3T | 8K → 128K | + +### 10.4 历史定位 + +Kimi-VL 的核心贡献不是“第一个看任意尺寸图片”,而是把: + +- NaViT 式原生分辨率; +- SigLIP 语义初始化; +- 视觉 caption 目标; +- 稀疏 MoE 语言骨干; +- 128K 长图文 / 视频 / 文档上下文 + +整合进一套开放 VLM。 + +**边界:** 这一代仍有独立 ViT 训练和显式 alignment;因此它不是 K3 意义上的“无事后对齐原生多模态”。 + +**一手来源:** [Kimi-VL](https://arxiv.org/abs/2504.07491) · [官方代码](https://github.com/MoonshotAI/Kimi-VL) + +--- + +## 11. Kimi 聚光灯 II:K2.5 的 MoonViT-3D 与 zero-vision SFT + +### 11.1 统一图像与视频 + +MoonViT-3D: + +- 继续从 SigLIP-SO-400M 初始化; +- 图像和视频共享参数; +- 把最多连续四帧作为时空体; +- 分解为空间注意力和时间注意力; +- projector 前按时间聚合 patch,得到 4× 时间压缩。 + +### 11.2 视觉目标从对比学习转向 caption NTP + +与 Kimi-VL 不同,K2.5 的 ViT continual pre-training 不再使用对比损失,只使用图像 / 视频条件 caption 的交叉熵。 + +独立 ViT 阶段约 1T Token,随后联合图文预训练约 15T Token。长上下文阶段数据从约 500B 递减到 200B,长度从 32K 扩至 262K。 + +### 11.3 zero-vision SFT + +K2.5 报告了一个反直觉配方: + +- SFT 阶段只使用文本数据; +- 通过 IPython 中的程序化操作激活视觉工具使用; +- 作者称预实验中直接 text-vision SFT 表现更差; +- 随后的 outcome-based visual RL 覆盖 grounding / counting、图表 / 文档、视觉 STEM。 + +**正确理解:** + +- “zero-vision”只修饰 SFT 阶段; +- 预训练已经有约 15T 图文 Token; +- RL 阶段重新使用视觉任务; +- 因此不能写成“K2.5 不用视觉数据也学会了视觉”。 + +### 11.4 跨模态 RL + +作者报告视觉 RL 后,部分文本基准也提升,并把原因与计数、OCR 等跨模态校准联系起来。 + +**证据边界:** 这是 K2.5 配方中的作者观察,不是“视觉 RL 必然提升文字能力”的普遍规律。 + +**一手来源:** [Kimi K2.5 Technical Report](https://arxiv.org/abs/2602.02276) + +--- + +## 12. Kimi 聚光灯 III:K3 的 native multimodality + +### 12.1 K3 对“原生”的具体定义 + +K3 报告的关键句不是“有视觉能力”,而是: + +- 语言与视觉从训练开始共同优化; +- 没有把视觉塔事后嫁接到预训练语言模型的 modality-alignment 阶段; +- 视觉输入、生成代码、渲染结果和工具观察进入同一长程闭环。 + +因此,本课程把原生多模态拆成五个维度: + +| 维度 | 核验问题 | +|---|---| +| 数据原生 | 视觉数据是否从预训练早期进入配方? | +| 目标原生 | 视觉塔是否与主干共享生成目标? | +| 优化原生 | 视觉塔与语言主干是否联合更新,而非事后对齐? | +| 输入输出原生 | 图文、视频、代码与渲染物是否能在同一轨迹交错? | +| Agent 原生 | 模型是否能在行动后重新看结果并继续推理? | + +“满足其中一项”不应自动等同于完整原生多模态。 + +### 12.2 为什么 MoonViT-V2 从头训练 + +K3 报告称: + +- 用 SigLIP 初始化的 MoonViT-3D 与 2.8T MoE 主干联合优化时,视觉塔梯度范数持续较高并频繁出现尖峰; +- 从头训练的 MoonViT-V2 梯度更低、尖峰更少; +- 在其视觉评测中,两者最终能力相当; +- 因此对比预训练初始化并非大规模联合 NTP 的必要条件。 + +**证据边界:** 这是 K3 训练消融与作者结论,不能外推为“所有 VLM 都应该放弃预训练视觉塔”。 + +### 12.3 MoonViT-V2 架构 + +- 27 层; +- 约 0.4B 参数; +- RMSNorm; +- 去除 bias; +- 图像与视频完全共享参数; +- 空间与时间注意力分解; +- 时间池化; +- 2×2 pixel shuffle,使空间视觉 Token 减少 4 倍; +- 报告支持最高约 3584×3584 输入,并置于 1M Token 上下文预算内。 + +MoonViT-V2 后仍有轻量 MLP projector。 + +**最重要的纠错:** + +```text +原生多模态 ≠ 没有视觉编码器 +原生多模态 ≠ 没有 projector +原生多模态 = 数据、目标、优化和行为闭环更早且更深地统一 +``` + +### 12.4 程序化多模态数据 + +K3 大幅增加程序化视觉数据,让代码与可渲染结果绑定,包括: + +- SVG; +- 3D; +- Web 页面; +- 游戏; +- CAD; +- 动效与视频编辑。 + +这把视觉从“回答一张现成图片”扩展成: + +```text +读需求 → 写代码 / 参数 → 渲染 → 重新观察 → 修改 → 验证 +``` + +### 12.5 vision-in-the-loop + +K3 的视觉工具闭环可包含: + +1. 观察原图或界面; +2. 用 Python 裁剪、绘图、转换或分析; +3. 读取新的图像观察; +4. 继续推理或操作; +5. 以最终视觉 / 环境状态验证。 + +这与“先 OCR 一次,再只做文字推理”不同:视觉观察会在轨迹中多次进入。 + +### 12.6 训练系统 + +K3 报告还把动态视觉计算与训练系统结合: + +- 利用图像 / 视频 Token 数变化产生的计算差异; +- 将 ViT 工作调度到 pipeline bubble; +- 作者报告可隐藏部分视觉计算开销。 + +**边界:** bubble 隐藏比例依赖 pipeline 拓扑、micro-batch、图像分布和硬件,不应写成固定加速倍数。 + +**一手来源:** [Kimi K3 Technical Report](https://arxiv.org/abs/2607.24653) + +--- + +## 13. Kimi 三代对照:不是“分辨率越来越高” + +| 维度 | Kimi-VL | Kimi K2.5 | Kimi K3 | +|---|---|---|---| +| 视觉塔 | MoonViT | MoonViT-3D | MoonViT-V2 | +| 初始化 | SigLIP-SO400M | SigLIP-SO400M continual | 从头训练 | +| 视觉独立目标 | SigLIP + caption | caption NTP | 与主干共同 NTP | +| 图像 / 视频 | 原生分辨率图像,支持视频输入 | 参数共享、空间 / 时间分解 | 参数共享、空间 / 时间分解 | +| 压缩 | 2×2 pixel shuffle | 2×2 + 时间 4× | 2×2 + 时间池化 | +| 语言主干起点 | 5.2T 文本 checkpoint | K2 near-end checkpoint | 原生联合 MoE 训练 | +| 对齐阶段 | 有 0.1T alignment | 有 ViT / projector bridge | 无 post-hoc alignment | +| SFT 特点 | 多模态长思维 | zero-vision SFT | 原生多模态与 Agent 数据 | +| 行为重点 | 长图文理解 | 视觉推理 RL、工具与 swarm | vision-in-the-loop 长程 Agent | + +真正的主线是: + +```text +对齐一个强视觉塔 + → 用生成目标统一图像 / 视频 + → 从头共同优化视觉塔与超大 MoE 主干 +``` + +--- + +## 14. 统一多模态有至少四种含义 + +### U1 · 统一输入序列 + +图像 Token 和文字 Token 可以交错进入同一上下文。 + +### U2 · 统一主干 + +不同模态共享大部分 Transformer 层。 + +### U3 · 统一目标 + +文字与离散视觉 Token 都做 next-token prediction,或在同一训练框架混合 NTP 与 diffusion / flow。 + +### U4 · 统一行为闭环 + +模型不仅理解图像,还能生成代码 / 图像、调用工具、重新观察结果。 + +一个系统可以满足 U1/U2,却不满足 U3;也可以同时理解和生成,却使用两个视觉编码路径。讨论“统一”时必须指出是哪一层。 + +### 14.1 Chameleon(2024) + +Chameleon 把文字、图像和代码表示成交错离散 Token,用 early-fusion 自回归模型统一建模。 + +**贡献:** 展示大规模统一离散序列路线。 + +**代价:** 图像 tokenizer 的离散化质量、长视觉序列与训练稳定性成为瓶颈。 + +**一手来源:** [Chameleon](https://arxiv.org/abs/2405.09818) + +### 14.2 Transfusion(2024) + +Transfusion 在同一 Transformer 上: + +- 对离散文字做 next-token prediction; +- 对连续图像表示做 diffusion; +- 通过模态专用编码 / 解码层连接。 + +**贡献:** 统一主干不要求把图像强行离散化,也不要求所有模态使用同一个损失。 + +**一手来源:** [Transfusion](https://arxiv.org/abs/2408.11039) + +### 14.3 SOLO(2024) + +SOLO 探索单一 Transformer 视觉—语言模型,试图减少“视觉编码器 + connector + LLM”异构架构的缩放和系统复杂性。 + +**边界:** 单主干路线仍需要可靠的视觉训练配方、位置组织和模态平衡;架构更统一不等于更容易训练。 + +**一手来源:** [SOLO](https://arxiv.org/abs/2407.06438) + +--- + +## 15. 多模态指令数据:能力不只来自架构 + +### 15.1 数据的六个层级 + +| 层级 | 例子 | 学到什么 | +|---|---|---| +| 图文配对 | alt text、caption | 粗语义对齐 | +| 密集描述 | 区域、关系、详细 caption | 细粒度感知 | +| OCR / 文档 | 页面、表格、公式 | 文字与结构 | +| 视觉问答 | 开放问答、多选题 | 指令接口 | +| 推理轨迹 | 数学图、图表、科学题 | 多步整合 | +| 行动轨迹 | GUI、代码、截图、工具结果 | 闭环行为 | + +### 15.2 合成数据的双刃剑 + +生成式模型可以快速创建: + +- 对话; +- 详细 caption; +- 问答; +- 图表 / SVG / 页面; +- 程序与渲染结果; +- 工具轨迹。 + +但会同时放大: + +- 教师模型幻觉; +- 风格单一; +- 答案模板泄漏; +- 图像与文字不一致; +- 训练—评测污染。 + +因此数据账本至少记录: + +```text +来源 → 生成器 → 过滤器 → 去重 → 难度 → 授权 → 污染检查 +``` + +--- + +## 16. 多模态推理与强化学习 + +### 16.1 文字 CoT 不等于视觉推理 + +如果模型在第一步就误读图像,后续再长的文字思维链只会在错误事实上推理得更完整。 + +真正的视觉推理至少可能包含: + +- 重新定位证据; +- 裁剪或放大; +- OCR; +- 测量; +- 画辅助线; +- 用 Python 计算; +- 回看生成结果; +- 用 verifier 检查最终状态。 + +### 16.2 Vision-R1(2025) + +Vision-R1 探索把大规模强化学习用于多模态推理,并强调无需大规模视觉 SFT 也可以通过 RL 激活推理。 + +**边界:** “无需大规模视觉 SFT”不等于无需视觉预训练,也不等于任何 reward 都能产生可泛化视觉推理。 + +**一手来源:** [Vision-R1](https://arxiv.org/abs/2503.06749) + +### 16.3 VTool-R1(2025) + +VTool-R1 关注模型自主调用视觉工具,通过可验证结果训练工具选择与视觉问题求解。 + +**教学定位:** 它把“看不清”从模型内部失败,转成可以采取动作获取新观察的问题。 + +**一手来源:** [VTool-R1](https://arxiv.org/abs/2505.19255) + +### 16.4 ToolsRL(2026) + +ToolsRL 继续探索视觉工具使用的强化学习。 + +**评估边界:** + +- 必须记录有哪些工具; +- 工具是否带答案泄漏; +- 每次调用的观察分辨率; +- 最大调用次数; +- reward 是过程、结果还是混合; +- 模型与 harness 的贡献不能混写。 + +**一手来源:** [ToolsRL](https://arxiv.org/abs/2604.19945) + +--- + +## 17. 幻觉:语言先验为何会压过像素证据 + +### 17.1 三类来源 + +1. **输入损失**:小目标或文字在 resize / 压缩时消失; +2. **接口损失**:视觉塔保留了信息,但 connector 没传过去; +3. **生成偏置**:语言模型更偏好训练语料中的常见共现。 + +示意: + +```text +视觉证据很弱 + “厨房里常有微波炉”的语言先验很强 + ↓ +模型描述出图中不存在的微波炉 +``` + +### 17.2 POPE(2023) + +POPE 用轮询式问题诊断对象幻觉,并发现高频或常共现对象更容易被幻觉出来。 + +**贡献:** 把开放描述中的模糊幻觉问题,转成更稳定的对象存在性查询。 + +**边界:** yes/no 轮询不能覆盖属性、关系、OCR、逻辑与长回答中的所有幻觉。 + +**一手来源:** [Evaluating Object Hallucination in Large Vision-Language Models](https://arxiv.org/abs/2305.10355) + +### 17.3 HallusionBench(2023) + +HallusionBench 用控制组问题区分语言幻觉、视觉错觉、回答倾向与逻辑一致性。 + +**贡献:** 不是只问“答对多少”,而是检查同一视觉事实在变换问题后是否保持一致。 + +**一手来源:** [HallusionBench](https://arxiv.org/abs/2310.14566) + +### 17.4 缓解不是一招 + +- 更高或自适应分辨率; +- 更密集、负例更强的图文数据; +- 在回答中绑定可定位证据; +- 允许拒答和不确定性; +- 多次裁剪 / 放大; +- OCR、检测器、代码等外部工具; +- 对最终状态做独立验证。 + +任何单一方法都只能覆盖部分失真链路。 + +--- + +## 18. 评测地图:总分为什么会误导 + +### 18.1 五类不同能力 + +| 类别 | 代表评测 | 主要测量 | 常见混淆 | +|---|---|---|---| +| 综合感知 | MMBench | 多能力、多选、双语 | 选项映射与 prompt 敏感 | +| 专业推理 | MMMU | 多学科、大学级图像题 | 知识与视觉瓶颈混合 | +| 视觉数学 | MathVista | 图表、几何、函数与数学推理 | OCR 错误会伪装成推理错误 | +| 文档 OCR | OCRBench | 识别、DocVQA、KIE、公式 | 分辨率和解码格式影响很大 | +| 视频 | Video-MME | 多时长、多领域、字幕 / 音频 | 采帧和输入预算决定可见证据 | + +### 18.2 一手来源与数据规模 + +- **MMBench**:双语多选与 CircularEval。 + [论文](https://arxiv.org/abs/2307.06281) +- **MMMU**:11.5K 问题、6 大学科、30 个学科、183 个子领域、30 种图像类型。 + [论文](https://arxiv.org/abs/2311.16502) +- **MathVista**:6141 个视觉数学样本,来自 28 个已有数据集与 3 个新数据集。 + [论文](https://arxiv.org/abs/2310.02255) +- **OCRBench**:覆盖 29 个数据集,包含识别、场景文字 VQA、文档 VQA、KIE 与手写公式。 + [论文](https://arxiv.org/abs/2305.07895) +- **Video-MME**:900 视频、254 小时、2700 问答,区分短中长视频。 + [论文](https://arxiv.org/abs/2405.21075) + +### 18.3 正确的评测记录 + +```text +model checkpoint ++ image preprocessing / tile policy ++ max pixels / max frames ++ prompt and decoding ++ context length ++ tool availability ++ benchmark version ++ evaluator ++ score +``` + +只写“模型 X 在多模态上 80 分”几乎没有解释力。 + +--- + +## 19. 多模态 Agent:从回答图片到改变世界 + +### 19.1 三种系统 + +| 类型 | 观察 | 动作 | 验证 | +|---|---|---|---| +| 单次 VQA | 一张图 | 生成文字 | 与参考答案比 | +| 视觉工具推理 | 图 + 工具结果 | crop / OCR / Python | 最终答案或可验证计算 | +| GUI / 环境 Agent | 连续截图与状态 | 鼠标、键盘、代码、API | 最终环境状态 | + +### 19.2 VisualWebArena 与 OSWorld + +VisualWebArena 把视觉网页任务引入可执行网站环境;OSWorld 使用真实桌面应用、截图和执行式验证。 + +**核心边界:** + +```text +VLM 看懂截图 + ≠ 鼠标坐标落对 + ≠ 跨应用状态正确 + ≠ 最终任务完成 +``` + +模型、harness、grounding、工具接口、环境与 verifier 必须分开记录。 + +**一手来源:** + +- [VisualWebArena](https://arxiv.org/abs/2401.13649) +- [OSWorld](https://arxiv.org/abs/2404.07972) + +### 19.3 视觉提示注入 + +网页、文档或截图里的文字可能伪装成系统指令。多模态 Agent 需要区分: + +- 用户目标; +- 开发者 / 系统策略; +- 环境内容; +- 不可信第三方文字; +- 工具返回值。 + +能读更多视觉文字,会扩大能力,也会扩大攻击面。 + +--- + +## 20. 训练系统:动态视觉 Token 怎样改变并行 + +### 20.1 变长带来的四个问题 + +1. batch 内样本计算量差异大; +2. 长图 / 长视频产生 straggler; +3. packing 复杂,padding 浪费; +4. ViT 与 LLM 的阶段耗时不同,pipeline 更难平衡。 + +### 20.2 系统常用解法 + +- 按视觉 Token 数分桶; +- patch packing; +- sequence packing; +- 动态 batch; +- context / sequence parallel; +- 视觉塔与语言主干异步或重叠调度; +- 限制单样本最大像素和帧数; +- 让视觉计算进入 pipeline bubble。 + +### 20.3 报告数字的正确读法 + +吞吐提升必须同时说明: + +```text +硬件 + 精度 + batch + 分辨率分布 + 序列长度 ++ 并行拓扑 + 激活检查点 + kernel + 比较基线 +``` + +Kimi-VL 和 K3 的吞吐 / bubble 结论只能写成各自配置下的作者报告。 + +--- + +## 21. 稀疏 MoE 与视觉 Token + +视觉 Token 进入 MoE 主干会带来新问题: + +- 它们是否与文字 Token 路由到相同专家? +- 某类文档或视觉模式会不会压垮少数专家? +- 视觉 Token 数大时,负载均衡损失是否主导训练? +- 图像 patch 的局部冗余是否造成路由重复? +- 视觉塔稳定性与 MoE 路由波动会否相互放大? + +Kimi-VL、K2.5、K3 和 DeepSeek-VL2 说明稀疏语言骨干可以承接大规模视觉输入,但公开报告对“视觉专家专化”仍缺少足够细的可解释证据。 + +**课程处理:** 把它列为开放问题,不凭路由可视化猜测语义专家。 + +--- + +## 22. 二十个必须纠正的误解 + +1. **“多模态模型就是 LLM 前面加一个 CLIP。”** + 连接器、分辨率、训练数据、共同优化和工具闭环同样重要。 +2. **“CLIP 会看图,所以它会回答问题。”** + CLIP 学的是图文匹配空间,不是开放式长文本生成。 +3. **“projector 只有两层,所以不重要。”** + 它是视觉信息进入 LLM 的狭窄接口。 +4. **“冻结式模型完全不用训练。”** + connector、cross-attention、Q-Former 或视觉前缀仍需训练。 +5. **“native resolution 就是原图一像素不动。”** + 仍会 patch 化、打包、限制预算和压缩。 +6. **“分辨率翻倍,Token 只翻倍。”** + 高宽都翻倍时 patch 数约变四倍。 +7. **“pixel shuffle 是无损压缩。”** + 它在通道维合并空间邻域,后续映射仍有容量和学习瓶颈。 +8. **“动态图块没有代价。”** + 会重复区域、打乱邻接并增加视觉 Token。 +9. **“视频就是更多图片。”** + 时间顺序、运动和瞬时事件需要额外表示。 +10. **“时间池化只省计算,不丢信息。”** + 短暂动作可能被平均掉。 +11. **“统一模型就是一个视觉编码器。”** + Janus 统一主干却解耦理解和生成编码路径。 +12. **“统一主干必须统一损失。”** + Transfusion 同一主干混合 NTP 与 diffusion。 +13. **“原生多模态有统一行业定义。”** + 必须拆成数据、目标、优化、输入输出和 Agent 闭环。 +14. **“K3 没有视觉塔或 projector。”** + K3 明确保留 MoonViT-V2 和轻量 MLP。 +15. **“K2.5 zero-vision 表示训练不用图像。”** + 只指 SFT;预训练和 RL 都包含视觉。 +16. **“DeepSeek-OCR 证明图像永远比文本省 Token。”** + 压缩率和准确率依赖完整实验设置。 +17. **“多模态 RL 的文字分数提升是必然规律。”** + 当前只是特定训练配方中的报告观察。 +18. **“视觉 CoT 越长越可靠。”** + 首步看错后,长 CoT 可能强化错误。 +19. **“benchmark 总分就是通用视觉能力。”** + 不同分数混合了 OCR、知识、推理、采样和评测协议。 +20. **“GUI Agent 成功就是模型看懂了。”** + harness、坐标 grounding、环境、预算和 verifier 都影响结果。 + +--- + +## 23. 一条可教学的完整历史线 + +```text +2012–2020 +视觉骨干可扩展 +AlexNet → ResNet → ViT + ↓ +2021–2023 +自然语言成为视觉监督 +CLIP / ALIGN / LiT / SigLIP + ↓ +2021–2023 +寻找语言模型的视觉入口 +Frozen → Flamingo → BLIP-2 → LLaVA + ↓ +2023–2025 +分辨率、文档与视频成为主矛盾 +NaViT / dynamic tiling / OCR / temporal compression + ↓ +2024–2025 +理解与生成的统一方式分叉 +Chameleon / Transfusion / SOLO / Janus + ↓ +2024–2026 +开放产品线形成不同答案 +DeepSeek-VL/VL2、OCR、Janus +Kimi-VL → K2.5 → K3 + ↓ +2025–2026 +视觉进入推理、RL 与 Agent 闭环 +Vision-R1 / VTool-R1 / ToolsRL / vision-in-the-loop +``` + +--- + +## 24. 正文必须包含的视觉合同 + +### V1 · 五层数据流总图 + +从像素到环境动作;点击每层显示输入、输出、瓶颈和代表论文。 + +### V2 · Token 预算瀑布 + +以 224²、1024²、3584² 和多帧视频展示 patch、pixel shuffle、时间池化后的数量。 + +### V3 · CLIP 与 SigLIP 损失对比 + +只画目标结构,不把公式推导塞满首屏。 + +### V4 · 四种连接器 + +Frozen prefix、Flamingo cross-attention、BLIP-2 Q-Former、LLaVA MLP 并排。 + +### V5 · 三种分辨率策略 + +固定缩放、动态 tile、NaViT packing。 + +### V6 · DeepSeek 三分支 + +理解、统一生成、光学压缩三列,避免错误直线谱系。 + +### V7 · Kimi 三代 MoonViT + +初始化、目标、图像 / 视频、对齐阶段、Agent 行为五行对照。 + +### V8 · 幻觉跷跷板 + +视觉证据、连接器带宽、语言先验和拒答阈值。 + +### V9 · 评测雷达不是总分 + +感知、OCR、知识、推理、视频、Agent 六维矩阵。 + +--- + +## 25. 交互实验合同 + +### Lab 1 · 视觉 Token 预算 + +输入: + +- 分辨率; +- patch size; +- 图片 / 视频帧数; +- 2×2 pixel shuffle; +- 时间池化; +- 上下文长度。 + +输出: + +- 原始 patch; +- 压缩后视觉 Token; +- 上下文占比; +- 细节损失提醒。 + +所有数值明确标成教学近似。 + +### Lab 2 · 连接器与训练制度 + +预设: + +- Frozen; +- Flamingo; +- BLIP-2; +- LLaVA; +- Kimi-VL; +- K2.5; +- K3。 + +输出: + +- 视觉塔 / connector / LLM 是否更新; +- 主要目标; +- 是否有单独 alignment; +- “原生”五维命中情况。 + +### Lab 3 · 光学上下文压缩 + +输入: + +- 文本 Token 数; +- 页面数; +- 每页视觉 Token; +- OCR 模式。 + +输出: + +- 光学压缩比; +- 视觉预算; +- DeepSeek-OCR 官方报告锚点; +- 对未报告区间明确显示“教学插值,不代表论文结果”。 + +### Lab 4 · Vision-in-the-loop + +三条路径: + +1. 直接回答; +2. 只做文字 CoT; +3. crop → OCR / Python → 新观察 → verifier。 + +用户逐步推进,观察证据质量、工具成本和最终置信状态变化。 + +--- + +## 26. 正文核心论文清单 + +| 年份 | 节点 | 一手来源 | 正文作用 | +|---:|---|---|---| +| 2015 | ResNet | https://arxiv.org/abs/1512.03385 | 深视觉骨干 | +| 2020 | ViT | https://arxiv.org/abs/2010.11929 | 图像序列化 | +| 2021 | ALIGN | https://arxiv.org/abs/2102.05918 | 噪声图文规模 | +| 2021 | CLIP | https://arxiv.org/abs/2103.00020 | 开放语义对齐 | +| 2021 | Frozen | https://arxiv.org/abs/2106.13884 | 视觉前缀 | +| 2021 | LiT | https://arxiv.org/abs/2111.07991 | 锁定图像塔 | +| 2022 | BLIP | https://arxiv.org/abs/2201.12086 | 数据生成与过滤 | +| 2022 | Flamingo | https://arxiv.org/abs/2204.14198 | resampler + cross-attention | +| 2023 | BLIP-2 | https://arxiv.org/abs/2301.12597 | Q-Former | +| 2023 | LLaVA | https://arxiv.org/abs/2304.08485 | 视觉指令调优 | +| 2023 | OCRBench | https://arxiv.org/abs/2305.07895 | OCR 评测 | +| 2023 | POPE | https://arxiv.org/abs/2305.10355 | 对象幻觉 | +| 2023 | SigLIP | https://arxiv.org/abs/2303.15343 | sigmoid 对齐 | +| 2023 | NaViT | https://arxiv.org/abs/2307.06304 | 任意尺寸 packing | +| 2023 | MMBench | https://arxiv.org/abs/2307.06281 | 综合评测 | +| 2023 | MathVista | https://arxiv.org/abs/2310.02255 | 视觉数学 | +| 2023 | HallusionBench | https://arxiv.org/abs/2310.14566 | 幻觉 / 错觉诊断 | +| 2023 | MMMU | https://arxiv.org/abs/2311.16502 | 专业推理 | +| 2023 | Video-LLaVA | https://arxiv.org/abs/2311.10122 | 图像 / 视频共同空间 | +| 2023 | LLaMA-VID | https://arxiv.org/abs/2311.17043 | 长视频压缩 | +| 2024 | DeepSeek-VL | https://arxiv.org/abs/2403.05525 | 高分辨率理解 | +| 2024 | DeepSeek-VL2 | https://arxiv.org/abs/2412.10302 | 动态 tile + MoE | +| 2024 | Chameleon | https://arxiv.org/abs/2405.09818 | 离散 early fusion | +| 2024 | Video-MME | https://arxiv.org/abs/2405.21075 | 视频评测 | +| 2024 | SOLO | https://arxiv.org/abs/2407.06438 | 单 Transformer | +| 2024 | Transfusion | https://arxiv.org/abs/2408.11039 | NTP + diffusion | +| 2024 | Janus | https://arxiv.org/abs/2410.13848 | 解耦视觉编码 | +| 2024 | JanusFlow | https://arxiv.org/abs/2411.07975 | AR + rectified flow | +| 2025 | Janus-Pro | https://arxiv.org/abs/2501.17811 | 配方与规模 | +| 2025 | Vision-R1 | https://arxiv.org/abs/2503.06749 | 视觉推理 RL | +| 2025 | Kimi-VL | https://arxiv.org/abs/2504.07491 | MoonViT | +| 2025 | VTool-R1 | https://arxiv.org/abs/2505.19255 | 视觉工具 RL | +| 2025 | DeepSeek-OCR | https://arxiv.org/abs/2510.18234 | 光学压缩 | +| 2026 | DeepSeek-OCR2 | https://arxiv.org/abs/2601.20552 | 语义重排 | +| 2026 | Kimi K2.5 | https://arxiv.org/abs/2602.02276 | 图像 / 视频与视觉 RL | +| 2026 | ToolsRL | https://arxiv.org/abs/2604.19945 | 工具强化学习 | +| 2026 | Kimi K3 | https://arxiv.org/abs/2607.24653 | 原生联合训练与视觉闭环 | + +--- + +## 27. 证据分级与写作约束 + +### A 级:可直接陈述 + +- 论文明确写出的架构、损失、数据阶段与实验设置; +- 官方代码仓库明确公开的模块与配置; +- 可从公式直接计算的 Token 数,且标明假设。 + +### B 级:必须写“作者报告” + +- benchmark 分数; +- 吞吐与成本; +- 压缩率—准确率曲线; +- 训练稳定性与跨模态迁移观察; +- RL 后文本能力变化。 + +### C 级:只能写成教学解释 + +- 为什么某个梯度尖峰发生; +- 某专家是否形成视觉专化; +- 多模态能力提升的单一因果归因; +- 未报告分辨率或压缩率的插值。 + +### 不进入正文 + +- 二手媒体转述; +- 没有原始设置的榜单截图; +- Grok 生成的未核实参数; +- 把不同版本、不同 tile / frame 预算合并的模型比较; +- 把官方演示当成代表性统计结果。 + +--- + +## 28. 当前仍开放的问题 + +1. 从头训练视觉塔的稳定性结论能否跨架构、规模和数据配方复现? +2. 视觉 Token 在稀疏 MoE 中是否形成稳定、可迁移的专家专化? +3. 在固定训练 FLOPs 下,更多像素与更多样本哪个更重要? +4. 光学上下文压缩何时优于文本 tokenizer + KV / memory 压缩? +5. 动态视觉 token 重排怎样保留二维可解释性? +6. 视觉 RL 对文本任务的正迁移来自共享算法、数据难度还是 reward 结构? +7. vision-in-the-loop 的收益中,模型、工具、harness 和 verifier 各占多少? +8. 多模态长上下文中,位置编码、注意力稀释和视觉重复怎样共同影响检索? +9. 统一理解与生成是否必须接受专用编码 / 解码路径? +10. 原生多模态模型如何对视觉提示注入建立默认安全边界? + +这些问题在网页中会明确显示为“尚无定论”,不使用未来感叙述掩盖证据缺口。 diff --git a/research/sources/README.md b/research/sources/README.md index 1cd353d..71a34e6 100644 --- a/research/sources/README.md +++ b/research/sources/README.md @@ -43,3 +43,14 @@ Agent 首轮缓存位于 `agents/`(不提交 PDF/TXT): 复用其他专题缓存。十四张问题账、52 节点论文链、四个交互实验合同与证据边界见 `../AGENTS_RESEARCH.md`;Grok Headless 只负责扩展召回,未核验候选永久隔离在 `../AGENTS_GROK_LEADS.md`。 + +原生多模态首轮缓存位于 `multimodal/`(不提交 PDF/TXT): + +- ResNet、ViT、ALIGN、CLIP、LiT、BLIP、SigLIP 与 NaViT; +- DeepSeek-VL2、Janus-Pro、DeepSeek-OCR、DeepSeek-OCR2 与 Kimi-VL; +- Kimi K2.5 与 K3 复用 `reasoning/`、`kimi-k3/` 中的官方技术报告缓存。 + +本轮本地完整校验 13 份 PDF,并通过官方 arXiv HTML、作者仓库和既有 K2.5/K3 报告核验其余核心节点。 +DeepSeek-VL/VL2、Janus、OCR 三分支,Kimi 三代 MoonViT、十六张问题账、55 节点正文链与四实验合同见 +`../MULTIMODAL_RESEARCH.md`;Grok Headless 候选召回只保存在 +`../MULTIMODAL_GROK_LEADS.md`,不得作为正式事实来源。 diff --git a/scripts/check-agents-browser.mjs b/scripts/check-agents-browser.mjs index e7a0574..806dec3 100644 --- a/scripts/check-agents-browser.mjs +++ b/scripts/check-agents-browser.mjs @@ -217,7 +217,7 @@ if (!overview.title.includes("可靠行动")) failures.push("章节标题异常" if (overview.sections !== 28 || overview.tocLinks !== 28) failures.push("章节/目录数量异常"); if (overview.paperLinks !== 52) failures.push("正式论文链不是 52 个节点"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 16 || home.navLinks !== 16 || mobile.mobileLinks !== 16) failures.push("全站导航未同步 Agent 专题"); +if (overview.navLinks !== 17 || home.navLinks !== 17 || mobile.mobileLinks !== 17) failures.push("全站导航未同步 Agent 专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (loop.initial.finalState !== "UNVERIFIED" || loop.directSchema.finalState !== "FAILED") failures.push("控制循环终局状态异常"); if (!loop.directSchema.observation.includes("ERROR schema") || loop.directSchema.recovery !== "FRAGILE") failures.push("Direct/schema 故障传播异常"); @@ -228,8 +228,8 @@ if (numeric(reliability.initial.passAt) <= numeric(reliability.k2.passAt) || num if (reliability.nonIdempotent.sideRisk === "LOW") failures.push("非幂等写操作风险没有提升"); if (numeric(rl.wait.utilization) >= numeric(rl.full.utilization) || numeric(rl.wait.lostWork) <= numeric(rl.full.lostWork)) failures.push("wait-all 长尾/重算方向异常"); if (!rl.wait.takeaway.includes("wait-all") || rl.keyboardSelected !== "rl" || rl.keyboardVisible !== "rl") failures.push("长程 RL 解释或键盘导航异常"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") failures.push("首页 Agent 首发入口异常"); -if (home.paperCount !== "314" || papers.total !== 314 || !papers.hasAgentFilter || papers.agentVisible < 52) failures.push("论文库 Agent 标签或论文总数异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") failures.push("首页 Agent 首发入口异常"); +if (home.paperCount !== "355" || papers.total !== 355 || !papers.hasAgentFilter || papers.agentVisible < 52) failures.push("论文库 Agent 标签或论文总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-alignment-browser.mjs b/scripts/check-alignment-browser.mjs index 7f4ca6b..d583b23 100644 --- a/scripts/check-alignment-browser.mjs +++ b/scripts/check-alignment-browser.mjs @@ -216,7 +216,7 @@ if (!overview.title.includes("真正与人协作")) failures.push("章节标题 if (overview.sections !== 22 || overview.tocLinks !== 22) failures.push("章节/目录数量异常"); if (overview.paperLinks !== 44) failures.push("正式论文链不是 44 个节点"); if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); -if (overview.navLinks !== 16 || home.navLinks !== 16 || mobile.mobileLinks !== 16) failures.push("全站导航未同步后训练专题"); +if (overview.navLinks !== 17 || home.navLinks !== 17 || mobile.mobileLinks !== 17) failures.push("全站导航未同步后训练专题"); if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); if (sft.initial.active !== "6 / 10" || !sft.initial.lossStates.slice(0, 4).every((value) => value === "MASKED")) failures.push("SFT response-only mask 异常"); if (sft.unsafeAll.active !== "10 / 10" || numeric(sft.unsafeAll.nll) <= numeric(sft.initial.nll) || !sft.unsafeAll.reading.includes("错误")) failures.push("SFT 全序列/坏示范交互异常"); @@ -226,8 +226,8 @@ if (!update.steps[0].includes("Fixed preference")) failures.push("DPO 更新流 if (!recipe.family.includes("Multi-effort") || !recipe.regime.includes("9 RL experts") || !recipe.constraints.includes("verbosity")) failures.push("K3 配方合同异常"); if (!recipe.path.some((step) => step.includes("3 domains × 3 efforts")) || !recipe.path.some((step) => step.includes("MOPD"))) failures.push("K3 配方路径异常"); if (recipe.keyboardSelected !== "recipe" || recipe.keyboardVisible !== "recipe") failures.push("实验 tab 键盘导航异常"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") failures.push("首页 Alignment 首发入口异常"); -if (home.paperCount !== "314" || papers.total !== 314 || !papers.hasAlignmentFilter || papers.alignmentVisible < 35) failures.push("论文库后训练标签或论文总数异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") failures.push("首页 Alignment 首发入口异常"); +if (home.paperCount !== "355" || papers.total !== 355 || !papers.hasAlignmentFilter || papers.alignmentVisible < 35) failures.push("论文库后训练标签或论文总数异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/scripts/check-data-browser.mjs b/scripts/check-data-browser.mjs index b07514b..a1fd73d 100644 --- a/scripts/check-data-browser.mjs +++ b/scripts/check-data-browser.mjs @@ -230,15 +230,15 @@ if (transform.keyboard.selected !== "transform" || transform.keyboard.visible != if (layout.articleSections !== 18 || layout.paperLinks !== 31 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 16 || mobile.mobileLinks !== 16 || home.navLinks !== 16) failures.push("全站导航未同步数值专题"); +if (layout.navLinks !== 17 || mobile.mobileLinks !== 17 || home.navLinks !== 17) failures.push("全站导航未同步数值专题"); if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") { +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "314") failures.push(`首页论文总数异常:${home.paperCount}`); -if (!papers.hasDataFilter || papers.total !== 314 || papers.visible < 25) failures.push("论文库数据标签或论文总数异常"); +if (home.paperCount !== "355") failures.push(`首页论文总数异常:${home.paperCount}`); +if (!papers.hasDataFilter || papers.total !== 355 || papers.visible < 25) failures.push("论文库数据标签或论文总数异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-moe-browser.mjs b/scripts/check-moe-browser.mjs index d424ceb..29da270 100644 --- a/scripts/check-moe-browser.mjs +++ b/scripts/check-moe-browser.mjs @@ -177,7 +177,7 @@ if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentO } if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible) failures.push("移动端菜单按钮未显示"); -if (home.releaseCards !== 11) failures.push(`首页新章卡数量异常:${home.releaseCards}`); +if (home.releaseCards !== 12) failures.push(`首页新章卡数量异常:${home.releaseCards}`); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-multimodal-browser.mjs b/scripts/check-multimodal-browser.mjs new file mode 100644 index 0000000..dec92e4 --- /dev/null +++ b/scripts/check-multimodal-browser.mjs @@ -0,0 +1,262 @@ +import { writeFileSync } from "node:fs"; + +const cdpPort = process.env.CDP_PORT ?? "9225"; +const baseUrl = process.env.SITE_URL ?? "http://127.0.0.1:4323"; +const pages = await fetch(`http://127.0.0.1:${cdpPort}/json/list`).then((response) => response.json()); +const page = pages.find((entry) => entry.type === "page"); +if (!page) throw new Error(`CDP ${cdpPort} 没有可用页面`); + +const socket = new WebSocket(page.webSocketDebuggerUrl); +await new Promise((resolve, reject) => { + socket.addEventListener("open", resolve, { once: true }); + socket.addEventListener("error", reject, { once: true }); +}); + +let nextId = 0; +const pending = new Map(); +const exceptions = []; +socket.addEventListener("message", (event) => { + const message = JSON.parse(event.data); + if (message.id && pending.has(message.id)) { + const { resolve, reject } = pending.get(message.id); + pending.delete(message.id); + if (message.error) reject(new Error(message.error.message)); + else resolve(message.result); + } + if (message.method === "Runtime.exceptionThrown") { + exceptions.push(message.params.exceptionDetails.exception?.description ?? message.params.exceptionDetails.text); + } +}); + +const command = (method, params = {}) => new Promise((resolve, reject) => { + const id = ++nextId; + pending.set(id, { resolve, reject }); + socket.send(JSON.stringify({ id, method, params })); +}); +const pause = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)); +const evaluate = async (expression) => { + const result = await command("Runtime.evaluate", { expression, returnByValue: true, awaitPromise: true }); + if (result.exceptionDetails) throw new Error(result.exceptionDetails.exception?.description ?? result.exceptionDetails.text); + return result.result.value; +}; +const navigate = async (path) => { + await command("Page.navigate", { url: `${baseUrl}${path}` }); + for (let attempt = 0; attempt < 70; attempt += 1) { + await pause(100); + if (await evaluate("document.readyState === 'complete'")) return; + } + throw new Error(`${path} 加载超时`); +}; +const screenshot = async (path) => { + const result = await command("Page.captureScreenshot", { + format: "png", + captureBeyondViewport: false, + }); + writeFileSync(path, Buffer.from(result.data, "base64")); +}; + +await command("Page.enable"); +await command("Runtime.enable"); +await command("Emulation.setDeviceMetricsOverride", { + width: 1440, + height: 1100, + deviceScaleFactor: 1, + mobile: false, +}); +await navigate("/multimodal/"); +await screenshot("/tmp/llm-atlas-multimodal-desktop.png"); + +const overview = await evaluate(`(() => ({ + title: document.querySelector("h1")?.textContent.trim(), + sections: document.querySelectorAll(".article-section").length, + tocLinks: document.querySelectorAll(".side-rail a").length, + paperLinks: document.querySelectorAll(".paper-chain a").length, + labTabs: document.querySelectorAll("[data-mm-tab]").length, + labPanels: document.querySelectorAll("[data-mm-panel]").length, + navLinks: document.querySelectorAll(".top-nav a").length, + documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, +}))()`); + +const tokens = await evaluate(`(() => { + const root = document.querySelector("[data-mm-lab]"); + const read = () => ({ + patches: root.querySelector("[data-token-patches]").textContent.trim(), + visual: root.querySelector("[data-token-visual]").textContent.trim(), + share: root.querySelector("[data-token-share]").textContent.trim(), + status: root.querySelector("[data-token-status]").textContent.trim(), + visiblePanel: root.querySelector("[data-mm-panel]:not([hidden])").dataset.mmPanel, + }); + const initial = read(); + const resolution = root.querySelector("[data-token-resolution]"); + const frames = root.querySelector("[data-token-frames]"); + const context = root.querySelector("[data-token-context]"); + resolution.value = "7"; + resolution.dispatchEvent(new Event("input", { bubbles: true })); + frames.value = "32"; + frames.dispatchEvent(new Event("input", { bubbles: true })); + context.value = "8192"; + context.dispatchEvent(new Event("input", { bubbles: true })); + root.querySelector('[data-spatial="1"]').click(); + const overloaded = read(); + return { initial, overloaded }; +})()`); + +const connector = await evaluate(`(() => { + const root = document.querySelector("[data-mm-lab]"); + root.querySelector('[data-mm-tab="connector"]').click(); + const read = () => ({ + visual: root.querySelector("[data-connector-visual]").textContent.trim(), + alignment: root.querySelector("[data-connector-alignment]").textContent.trim(), + score: root.querySelector("[data-native-score]").textContent.trim(), + activeNative: root.querySelectorAll("[data-native-item].active").length, + visiblePanel: root.querySelector("[data-mm-panel]:not([hidden])").dataset.mmPanel, + }); + root.querySelector('[data-connector="k3"]').click(); + const k3 = read(); + root.querySelector('[data-connector="kimivl"]').click(); + const kimiVl = read(); + return { k3, kimiVl }; +})()`); + +const ocr = await evaluate(`(() => { + const root = document.querySelector("[data-mm-lab]"); + root.querySelector('[data-mm-tab="ocr"]').click(); + const curve = root.querySelector("[data-ocr-curve]"); + const read = () => ({ + ratio: root.querySelector("[data-ocr-ratio]").textContent.trim(), + accuracy: root.querySelector("[data-ocr-accuracy]").textContent.trim(), + evidence: root.querySelector("[data-ocr-evidence]").textContent.trim(), + status: root.querySelector("[data-ocr-status]").textContent.trim(), + }); + const boundary = read(); + curve.value = "15"; + curve.dispatchEvent(new Event("input", { bubbles: true })); + const interpolated = read(); + curve.value = "23"; + curve.dispatchEvent(new Event("input", { bubbles: true })); + const unreported = read(); + return { boundary, interpolated, unreported }; +})()`); + +const loop = await evaluate(`(() => { + const root = document.querySelector("[data-mm-lab]"); + root.querySelector('[data-mm-tab="loop"]').click(); + const read = () => ({ + evidence: root.querySelector("[data-loop-evidence]").textContent.trim(), + tools: root.querySelector("[data-loop-tools]").textContent.trim(), + state: root.querySelector("[data-loop-state]").textContent.trim(), + type: root.querySelector("[data-loop-type]").textContent.trim(), + takeaway: root.querySelector("[data-loop-takeaway]").textContent.trim(), + }); + const toolsStart = read(); + const next = root.querySelector("[data-loop-next]"); + for (let index = 0; index < 4; index += 1) next.click(); + const toolsEnd = read(); + root.querySelector('[data-loop-mode="cot"]').click(); + next.click(); + next.click(); + const cotEnd = read(); + const firstTab = root.querySelector('[data-mm-tab="tokens"]'); + firstTab.focus(); + firstTab.dispatchEvent(new KeyboardEvent("keydown", { key: "ArrowRight", bubbles: true })); + return { + toolsStart, + toolsEnd, + cotEnd, + keyboardSelected: root.querySelector('[data-mm-tab][aria-selected="true"]').dataset.mmTab, + keyboardVisible: root.querySelector("[data-mm-panel]:not([hidden])").dataset.mmPanel, + }; +})()`); + +await evaluate(`document.querySelector("[data-mm-lab]").scrollIntoView({ block: "start", behavior: "instant" })`); +await pause(180); +await screenshot("/tmp/llm-atlas-multimodal-lab-desktop.png"); + +await navigate("/"); +const home = await evaluate(`(() => ({ + releaseCards: document.querySelectorAll(".release-card").length, + firstRelease: document.querySelector(".release-card h2").textContent.trim(), + firstHref: document.querySelector(".release-card").getAttribute("href"), + paperCount: document.querySelector(".hero-stats div:nth-child(3) b").textContent.trim(), + navLinks: document.querySelectorAll(".top-nav a").length, +}))()`); + +await navigate("/papers/"); +const papers = await evaluate(`(() => { + const button = [...document.querySelectorAll("[data-filter]")].find((node) => node.textContent.trim() === "多模态"); + button?.click(); + return { + total: document.querySelectorAll("[data-paper]").length, + multimodalVisible: document.querySelectorAll("[data-paper]:not([hidden])").length, + hasFilter: Boolean(button), + }; +})()`); + +await command("Emulation.setDeviceMetricsOverride", { + width: 390, + height: 844, + deviceScaleFactor: 1, + mobile: true, +}); +await navigate("/multimodal/"); +const mobile = await evaluate(`(() => { + const root = document.querySelector("[data-mm-lab]"); + root.scrollIntoView({ block: "start", behavior: "instant" }); + const toggle = document.querySelector("#menu-toggle"); + toggle?.click(); + return { + documentOverflow: document.documentElement.scrollWidth - document.documentElement.clientWidth, + menuVisible: getComputedStyle(toggle).display !== "none", + menuOpen: toggle.getAttribute("aria-expanded"), + mobileLinks: document.querySelectorAll("#mobile-nav a").length, + tabs: root.querySelectorAll("[data-mm-tab]").length, + offenders: [...document.querySelectorAll("body *")] + .filter((node) => !node.closest(".eval-matrix")) + .filter((node) => node.getBoundingClientRect().right > document.documentElement.clientWidth + 1) + .slice(0, 12) + .map((node) => ({ + tag: node.tagName, + className: typeof node.className === "string" ? node.className : "", + right: Math.round(node.getBoundingClientRect().right), + width: Math.round(node.getBoundingClientRect().width), + })), + }; +})()`); +await pause(180); +await screenshot("/tmp/llm-atlas-multimodal-mobile.png"); + +const report = { overview, tokens, connector, ocr, loop, home, papers, mobile, exceptions }; +console.log(JSON.stringify(report, null, 2)); + +const numeric = (value) => Number.parseFloat(value.replaceAll(",", "")); +const failures = []; +if (!overview.title.includes("第一类输入")) failures.push("章节标题异常"); +if (overview.sections !== 30 || overview.tocLinks !== 30) failures.push("章节/目录数量异常"); +if (overview.paperLinks !== 55) failures.push("正式论文链不是 55 个节点"); +if (overview.labTabs !== 4 || overview.labPanels !== 4) failures.push("四联实验结构异常"); +if (overview.navLinks !== 17 || home.navLinks !== 17 || mobile.mobileLinks !== 17) failures.push("全站导航未同步多模态专题"); +if (overview.documentOverflow > 1 || mobile.documentOverflow > 1) failures.push("桌面或移动端存在横向溢出"); +if (numeric(tokens.initial.patches) !== 5476 || numeric(tokens.initial.visual) !== 1369 || tokens.initial.visiblePanel !== "tokens") failures.push("视觉 Token 初始计算异常"); +if (!tokens.overloaded.status.includes("超预算") || numeric(tokens.overloaded.share) <= 100) failures.push("超大视频没有触发上下文超预算"); +if (!connector.k3.visual.includes("从头") || !connector.k3.alignment.includes("无 post-hoc") || connector.k3.score !== "5 / 5" || connector.k3.activeNative !== 5) failures.push("K3 训练制度预设异常"); +if (connector.kimiVl.score !== "4 / 5" || connector.kimiVl.activeNative !== 4 || connector.k3.visiblePanel !== "connector") failures.push("Kimi-VL 原生五维预设异常"); +if (ocr.boundary.status !== "BOUNDARY" || Math.abs(numeric(ocr.boundary.ratio) - 7.81) > 0.01) failures.push("OCR 初始压缩边界异常"); +if (ocr.interpolated.status !== "TEACHING INTERPOLATION" || !ocr.interpolated.evidence.includes("教学插值")) failures.push("OCR 教学插值没有显式标记"); +if (ocr.unreported.status !== "OUT OF EVIDENCE" || ocr.unreported.accuracy !== "未报告") failures.push("OCR 超证据区仍在外推"); +if (loop.toolsStart.state !== "OPEN" || loop.toolsEnd.state !== "VERIFIED" || loop.toolsEnd.evidence !== "97%" || loop.toolsEnd.tools !== "3") failures.push("vision-in-the-loop 终局异常"); +if (loop.cotEnd.state !== "FAILED" || !loop.cotEnd.takeaway.includes("不能凭空增加")) failures.push("文字 CoT 与新观察没有分开"); +if (loop.keyboardSelected !== "connector" || loop.keyboardVisible !== "connector") failures.push("实验键盘 tab 导航异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") failures.push("首页多模态首发入口异常"); +if (home.paperCount !== "355" || papers.total !== 355 || !papers.hasFilter || papers.multimodalVisible < 59) failures.push("论文库多模态标签或总数异常"); +if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); +if (mobile.offenders.length) failures.push(`移动端越界元素:${JSON.stringify(mobile.offenders)}`); +if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); + +if (failures.length) { + console.error(`\nFAIL\n- ${failures.join("\n- ")}`); + process.exitCode = 1; +} else { + console.log("\nPASS multimodal browser regression"); +} + +socket.close(); diff --git a/scripts/check-numerics-browser.mjs b/scripts/check-numerics-browser.mjs index 8affa63..4e9a06c 100644 --- a/scripts/check-numerics-browser.mjs +++ b/scripts/check-numerics-browser.mjs @@ -273,15 +273,15 @@ if (stability.keyboard.selected !== "stability" || stability.keyboard.visible != if (layout.articleSections !== 19 || layout.paperLinks !== 36 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 16 || mobile.mobileLinks !== 16 || home.navLinks !== 16) failures.push("全站导航未同步数值专题"); +if (layout.navLinks !== 17 || mobile.mobileLinks !== 17 || home.navLinks !== 17) failures.push("全站导航未同步数值专题"); if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") { +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "314") failures.push(`首页论文总数异常:${home.paperCount}`); -if (!papers.hasOptimizerFilter || papers.total !== 314 || papers.visible < 8) failures.push("论文库优化器标签或论文总数异常"); +if (home.paperCount !== "355") failures.push(`首页论文总数异常:${home.paperCount}`); +if (!papers.hasOptimizerFilter || papers.total !== 355 || papers.visible < 8) failures.push("论文库优化器标签或论文总数异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-reasoning-browser.mjs b/scripts/check-reasoning-browser.mjs index 02acb0a..7331f25 100644 --- a/scripts/check-reasoning-browser.mjs +++ b/scripts/check-reasoning-browser.mjs @@ -289,7 +289,7 @@ if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentO } if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环")) failures.push("首页 Transformer 新章入口异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态")) failures.push("首页 Transformer 新章入口异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-scaling-browser.mjs b/scripts/check-scaling-browser.mjs index 35777a1..7e39e5f 100644 --- a/scripts/check-scaling-browser.mjs +++ b/scripts/check-scaling-browser.mjs @@ -269,14 +269,14 @@ if (emergence.paths.some((length) => length < 500)) failures.push("涌现多指 if (layout.articleSections !== 16 || layout.paperLinks !== 29 || layout.labTabs !== 4 || layout.views !== 4) { failures.push("章节、论文或实验数量异常"); } -if (layout.navLinks !== 16 || mobile.mobileLinks !== 16 || home.navLinks !== 16) failures.push("全站导航未同步数值专题"); +if (layout.navLinks !== 17 || mobile.mobileLinks !== 17 || home.navLinks !== 17) failures.push("全站导航未同步数值专题"); if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") { +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") { failures.push("首页 Transformer 新章入口异常"); } -if (home.paperCount !== "314") failures.push(`首页论文总数异常:${home.paperCount}`); +if (home.paperCount !== "355") failures.push(`首页论文总数异常:${home.paperCount}`); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-training-systems-browser.mjs b/scripts/check-training-systems-browser.mjs index c98a2be..8e0352c 100644 --- a/scripts/check-training-systems-browser.mjs +++ b/scripts/check-training-systems-browser.mjs @@ -233,7 +233,7 @@ if (layout.articleSections !== 16 || layout.paperLinks !== 37 || layout.labTabs if (layout.documentOverflow > 0 || mobile.documentOverflow > 0 || home.documentOverflow > 0) failures.push("页面存在横向溢出"); if (layout.navGap < 0) failures.push(`桌面导航碰撞:${layout.navGap}px`); if (!mobile.menuVisible || mobile.menuOpen !== "true") failures.push("移动端菜单不可用"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环")) failures.push("首页 Transformer 新章入口异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态")) failures.push("首页 Transformer 新章入口异常"); if (exceptions.length) failures.push(`浏览器脚本异常:${exceptions.join("; ")}`); socket.close(); diff --git a/scripts/check-transformer-browser.mjs b/scripts/check-transformer-browser.mjs index 5c5086e..2e64065 100644 --- a/scripts/check-transformer-browser.mjs +++ b/scripts/check-transformer-browser.mjs @@ -172,7 +172,7 @@ const home = await evaluate(`(() => ({ releaseCards: document.querySelectorAll(".release-card").length, firstRelease: document.querySelector(".release-card h2").textContent, firstHref: document.querySelector(".release-card").getAttribute("href"), - paperCount: [...document.querySelectorAll(".hero-stats b")].map((node) => node.textContent.trim()).find((value) => value === "314"), + paperCount: [...document.querySelectorAll(".hero-stats b")].map((node) => node.textContent.trim()).find((value) => value === "355"), }))()`); await navigate("/papers/"); @@ -236,8 +236,8 @@ if (block.family.trim() !== "Hybrid MoE" || !block.kv.includes("3 KDA : 1 Gated if (!block.path.some((step) => step.includes("KDA × 3")) || !block.note.includes("AttnRes")) failures.push("K3 Block 路径异常"); if (block.context.trim() !== "128K" || numeric(block.mha) !== 400 || numeric(block.kda) !== 1) failures.push("KV 成本缩放异常"); if (block.keyboardSelected !== "block" || block.keyboardVisible !== "block") failures.push("实验 tab 键盘导航异常"); -if (home.releaseCards !== 11 || !home.firstRelease.includes("Agent 不是一个循环") || home.firstHref !== "/agents/") failures.push("首页 Transformer 首发入口异常"); -if (home.paperCount !== "314" || papers.total !== 314 || papers.transformerVisible < 30) failures.push("论文库或首页论文数量异常"); +if (home.releaseCards !== 12 || !home.firstRelease.includes("原生多模态") || home.firstHref !== "/multimodal/") failures.push("首页 Transformer 首发入口异常"); +if (home.paperCount !== "355" || papers.total !== 355 || papers.transformerVisible < 30) failures.push("论文库或首页论文数量异常"); if (!mobile.menuVisible || mobile.menuOpen !== "true" || mobile.tabs !== 4) failures.push("移动端导航或实验异常"); if (exceptions.length) failures.push(`浏览器异常:${exceptions.join(" | ")}`); diff --git a/src/components/MultimodalLab.astro b/src/components/MultimodalLab.astro new file mode 100644 index 0000000..702b52d --- /dev/null +++ b/src/components/MultimodalLab.astro @@ -0,0 +1,1110 @@ +--- +const connectorPresets = [ + { + id: "frozen", + name: "Frozen", + year: "2021", + visual: "训练", + bridge: "训练视觉前缀", + backbone: "冻结", + target: "语言建模 / few-shot", + alignment: "有:学习连续前缀", + native: [0, 0, 0, 1, 0], + note: "让视觉编码器产生连续前缀,进入冻结语言模型;证明无需改动 LLM 权重也能建立视觉入口。", + }, + { + id: "flamingo", + name: "Flamingo", + year: "2022", + visual: "冻结", + bridge: "训练 Resampler", + backbone: "冻结主体,训练 gated X-Attn", + target: "交错图文生成", + alignment: "有:插入式跨注意力", + native: [1, 0, 0, 1, 0], + note: "Perceiver Resampler 压缩可变视觉特征,语言层通过 gated cross-attention 按需读取。", + }, + { + id: "blip2", + name: "BLIP-2", + year: "2023", + visual: "冻结", + bridge: "训练 Q-Former", + backbone: "冻结", + target: "三种表示学习 + 生成", + alignment: "有:两阶段 bridge", + native: [0, 0, 0, 1, 0], + note: "固定数量 query 是高效信息瓶颈;参数省,却可能在密集文档和小字场景漏掉细节。", + }, + { + id: "llava", + name: "LLaVA", + year: "2023", + visual: "冻结 CLIP", + bridge: "训练线性 / MLP", + backbone: "指令阶段更新", + target: "自回归回答", + alignment: "有:feature alignment", + native: [0, 1, 0, 1, 0], + note: "简单 projector 加视觉指令数据成为开放 VLM 的强基线;架构简单不代表视觉通道没有瓶颈。", + }, + { + id: "kimivl", + name: "Kimi-VL", + year: "2025", + visual: "SigLIP 初始化后训练", + bridge: "2×2 shuffle + 2-layer MLP", + backbone: "联合预训练更新", + target: "SigLIP + caption → NTP", + alignment: "有:0.1T 对齐", + native: [1, 1, 1, 1, 0], + note: "MoonViT 用 NaViT packing 接受动态分辨率;语言主干来自 5.2T 纯文本 checkpoint。", + }, + { + id: "k25", + name: "Kimi K2.5", + year: "2026", + visual: "SigLIP 初始化后训练", + bridge: "空间 / 时间压缩 + MLP", + backbone: "15T 图文联合预训练", + target: "caption NTP;无对比损失", + alignment: "有:ViT / projector bridge", + native: [1, 1, 1, 1, 1], + note: "MoonViT-3D 统一图像和视频;zero-vision 只指 SFT,预训练与视觉 RL 仍使用视觉数据。", + }, + { + id: "k3", + name: "Kimi K3", + year: "2026", + visual: "MoonViT-V2 从头训练", + bridge: "2×2 shuffle + 轻量 MLP", + backbone: "从训练开始共同优化", + target: "共同 next-token prediction", + alignment: "无 post-hoc alignment", + native: [1, 1, 1, 1, 1], + note: "原生指训练制度与闭环,不是移除视觉塔。视觉、代码、渲染与新观察可进入同一长轨迹。", + }, +]; + +const nativeLabels = ["数据早期进入", "生成目标统一", "联合优化", "交错输入输出", "视觉 Agent 闭环"]; + +const loopModes = [ + { + id: "direct", + name: "直接 VQA", + steps: [ + ["LOOK", "读取整张 1400×900 发票缩略图", "小字模糊,税额与总额无法稳定区分", 34, 0, "LOW"], + ["ANSWER", "依赖版式先验猜测总额为 ¥1,284.00", "没有新证据;答案听起来合理但未验证", 36, 0, "FAILED"], + ], + takeaway: "一次前向只能使用首次看到的证据;如果 resize 已丢掉小字,语言流畅度无法恢复像素。", + }, + { + id: "cot", + name: "只做文字 CoT", + steps: [ + ["LOOK", "读取整张发票缩略图", "识别到右下角可能有 subtotal / tax / total 三行", 38, 0, "LOW"], + ["THINK", "根据常见发票结构推断最后一行是总额", "结构先验变强,但数字仍然模糊", 46, 0, "LOW"], + ["ANSWER", "给出 ¥1,284.00,并解释加总过程", "推理更长,却建立在未读清数字之上", 48, 0, "FAILED"], + ], + takeaway: "文字思维链能组织已获得证据,不能凭空增加图像分辨率;首步感知错误会被后续推理放大。", + }, + { + id: "tools", + name: "Vision-in-the-loop", + steps: [ + ["LOOK", "读取整张发票并定位右下角金额区", "获得一个候选区域,而不是直接猜答案", 40, 0, "OPEN"], + ["CROP", "裁剪右下角 420×260 区域并 3× 放大", "subtotal、tax、total 三行字符边缘清晰", 68, 1, "OPEN"], + ["OCR", "对裁剪区运行 OCR", "读到 1,200.00、84.00、1,284.00", 84, 2, "OPEN"], + ["PYTHON", "计算 1200 + 84,并与 total 行比较", "计算结果 1,284.00,与视觉文字一致", 94, 3, "OPEN"], + ["VERIFY", "检查币种、字段位置与加总一致性", "最终证据链闭合:总额为 ¥1,284.00", 97, 3, "VERIFIED"], + ], + takeaway: "工具没有让模型“凭空更聪明”,而是允许它主动购买新观察,再用独立计算检查视觉读取。", + }, +]; +--- + +
+
+
+

INTERACTIVE / MULTIMODAL LAB

+

像素进来以后,亲手拨动四个真正的瓶颈

+
+

+ Token 数和训练制度是确定性教学模型;DeepSeek-OCR 曲线中的插值会明确标注, + 不冒充论文实测。实验的目标是建立量纲与边界,而不是模拟某个真实模型分数。 +

+
+ +
+ + + + +
+ +
+
+
TOKEN BUDGET

分辨率翻倍,为什么视觉 Token 接近四倍?

+

这里按正方形图像和规则 patch 计算。真实模型还可能加入缩略图、tile、分隔符、padding 与动态 packing。

+
+ +
+ + + + +
+ +
+
+ 空间压缩 + + +
+
+ 时间池化 + + +
+
+ +
+
+ 01 / PIXELS + 1.05M +

进入视觉预处理的像素

+ +
+ +
+ 02 / RAW PATCHES + 5,476 +

ceil(H/P) × ceil(W/P) × frames

+ +
+ +
+ 03 / VISUAL TOKENS + 1,369 +

空间与时间压缩后的教学近似

+ +
+ +
+ 04 / CONTEXT SHARE + 1.0% +

尚未计算文字、工具结果与输出

+ +
+
+ +
+
+ 预算判断 + 适中:视觉尚未主导上下文 +

单图细节与长文字仍有较大共存空间。

+
+
+ 代价转移 + 2×2 合并节省约 75% 视觉位置 +

Token 变少不是免费信息压缩:小字、细线和短暂事件更容易丢失。

+
+
+
+ + + + + + + +
HOW TO READ 所有架构事实来自对应一手论文;交互中的 meter、置信度和未报告区间插值仅用于形成直觉。
+
+ + + + diff --git a/src/components/SiteHeader.astro b/src/components/SiteHeader.astro index 2806a5d..584e0b0 100644 --- a/src/components/SiteHeader.astro +++ b/src/components/SiteHeader.astro @@ -17,6 +17,7 @@ const items = [ { id: "alignment", href: "/post-training/alignment/", label: "后训练" }, { id: "reasoning", href: "/reasoning/", label: "推理" }, { id: "agents", href: "/agents/", label: "Agent" }, + { id: "multimodal", href: "/multimodal/", label: "多模态" }, { id: "training-systems", href: "/training-systems/", label: "训练系统" }, { id: "numerics", href: "/systems/numerics/", label: "数值" }, { id: "papers", href: "/papers/", label: "论文库" }, diff --git a/src/data/chapters.ts b/src/data/chapters.ts index 9e5d34b..276d504 100644 --- a/src/data/chapters.ts +++ b/src/data/chapters.ts @@ -190,12 +190,12 @@ export const chapters: Chapter[] = [ title: "原生多模态", kicker: "MULTIMODAL", question: "图像是外接插件,还是和文字一样的第一类输入?", - summary: "从 ViT/CLIP、连接器式 VLM 走到 Kimi-VL、MoonViT-V2 与统一主干。", - status: "queued", - progress: 11, - papers: 19, + summary: "用十六张账串起视觉 Token、CLIP、连接器、高分辨率、OCR、视频、统一理解生成,并重点拆解 DeepSeek 三分支与 Kimi 三代 MoonViT。", + status: "published", + progress: 76, + papers: 55, prerequisites: ["02"], - highlights: ["ViT", "视觉 Token", "MoonViT-V2"], + highlights: ["DeepSeek 三分支", "Kimi 三代 MoonViT", "四联实验"], }, { number: "14", diff --git a/src/data/papers.ts b/src/data/papers.ts index 3d07c40..4732d0b 100644 --- a/src/data/papers.ts +++ b/src/data/papers.ts @@ -2416,6 +2416,22 @@ export const papers: Paper[] = [ contribution: "面向 Agentic AI 的 Firecracker microVM 环境,支持 pause、resume、fork、snapshot 与高密度运行。", verified: true, }, + { + year: 2012, + title: "ImageNet Classification with Deep Convolutional Neural Networks", + url: "https://proceedings.neurips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks", + topics: ["多模态"], + contribution: "AlexNet 以 GPU、大规模卷积网络与 ImageNet 监督推动可扩展视觉表示。", + verified: true, + }, + { + year: 2015, + title: "Deep Residual Learning for Image Recognition", + url: "https://arxiv.org/abs/1512.03385", + topics: ["多模态", "Transformer"], + contribution: "残差连接让更深视觉骨干稳定优化,成为多模态视觉塔的重要前史。", + verified: true, + }, { year: 2020, title: "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale", @@ -2424,6 +2440,14 @@ export const papers: Paper[] = [ contribution: "ViT 把图像 patch 视为 Token 输入 Transformer。", verified: true, }, + { + year: 2021, + title: "Scaling Up Visual and Vision-Language Representation Learning With Noisy Text Supervision", + url: "https://arxiv.org/abs/2102.05918", + topics: ["多模态", "数据", "Scaling"], + contribution: "ALIGN 用超大规模噪声 web 图文对训练双编码器,展示数据规模路线。", + verified: true, + }, { year: 2021, title: "Learning Transferable Visual Models From Natural Language Supervision", @@ -2432,6 +2456,30 @@ export const papers: Paper[] = [ contribution: "CLIP 以海量图文对比学习建立可迁移视觉语义空间。", verified: true, }, + { + year: 2021, + title: "Multimodal Few-Shot Learning with Frozen Language Models", + url: "https://arxiv.org/abs/2106.13884", + topics: ["多模态"], + contribution: "Frozen 用视觉编码器生成连续前缀,连接冻结语言模型并激活多模态 in-context learning。", + verified: true, + }, + { + year: 2021, + title: "LiT: Zero-Shot Transfer with Locked-image Text Tuning", + url: "https://arxiv.org/abs/2111.07991", + topics: ["多模态", "后训练"], + contribution: "锁定强图像塔,只训练文本侧去匹配既有视觉空间。", + verified: true, + }, + { + year: 2022, + title: "BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation", + url: "https://arxiv.org/abs/2201.12086", + topics: ["多模态", "数据"], + contribution: "用 captioner 生成描述、filter 清理噪声,同时服务视觉理解与生成。", + verified: true, + }, { year: 2022, title: "Flamingo: a Visual Language Model for Few-Shot Learning", @@ -2448,6 +2496,134 @@ export const papers: Paper[] = [ contribution: "用轻量 Q-Former 桥接冻结视觉编码器与 LLM。", verified: true, }, + { + year: 2023, + title: "MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models", + url: "https://arxiv.org/abs/2304.10592", + topics: ["多模态", "后训练"], + contribution: "用少量高质量视觉对话对齐冻结视觉编码器与冻结语言模型。", + verified: true, + }, + { + year: 2023, + title: "InstructBLIP: Towards General-purpose Vision-Language Models with Instruction Tuning", + url: "https://arxiv.org/abs/2305.06500", + topics: ["多模态", "后训练"], + contribution: "让 Q-Former 感知指令,并系统研究跨任务视觉指令泛化。", + verified: true, + }, + { + year: 2023, + title: "PaLI-X: On Scaling up a Multilingual Vision and Language Model", + url: "https://arxiv.org/abs/2305.18565", + topics: ["多模态", "Scaling"], + contribution: "从组件规模与多语言任务混合两轴扩展视觉—语言模型。", + verified: true, + }, + { + year: 2023, + title: "OCRBench: On the Hidden Mystery of OCR in Large Multimodal Models", + url: "https://arxiv.org/abs/2305.07895", + topics: ["多模态", "评测"], + contribution: "联合评测文字识别、场景文字 VQA、文档 VQA、KIE 与手写公式。", + verified: true, + }, + { + year: 2023, + title: "Evaluating Object Hallucination in Large Vision-Language Models", + url: "https://arxiv.org/abs/2305.10355", + topics: ["多模态", "评测"], + contribution: "POPE 用轮询式对象存在性问题更稳定地诊断视觉幻觉。", + verified: true, + }, + { + year: 2023, + title: "Kosmos-2: Grounding Multimodal Large Language Models to the World", + url: "https://arxiv.org/abs/2306.14824", + topics: ["多模态"], + contribution: "用 location token 和 grounded image-text pairs 把文本指称绑定到视觉区域。", + verified: true, + }, + { + year: 2023, + title: "Patch n' Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution", + url: "https://arxiv.org/abs/2307.06304", + topics: ["多模态", "训练系统"], + contribution: "在固定 Token 预算内打包不同分辨率与长宽比图像的 patch 序列。", + verified: true, + }, + { + year: 2023, + title: "MMBench: Is Your Multi-modal Model an All-around Player?", + url: "https://arxiv.org/abs/2307.06281", + topics: ["多模态", "评测"], + contribution: "用双语多选、能力分层与 CircularEval 建立综合 VLM 评测。", + verified: true, + }, + { + year: 2023, + title: "Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond", + url: "https://arxiv.org/abs/2308.12966", + topics: ["多模态"], + contribution: "把开放视觉对话、OCR 与 grounding 能力整合进 Qwen 视觉语言路线。", + verified: true, + }, + { + year: 2023, + title: "Improved Baselines with Visual Instruction Tuning", + url: "https://arxiv.org/abs/2310.03744", + topics: ["多模态", "后训练"], + contribution: "LLaVA-1.5 用两层 MLP、更多任务数据与清晰训练配方强化简单基线。", + verified: true, + }, + { + year: 2023, + title: "MathVista: Evaluating Mathematical Reasoning of Foundation Models in Visual Contexts", + url: "https://arxiv.org/abs/2310.02255", + topics: ["多模态", "推理", "评测"], + contribution: "用图表、几何、函数与视觉数学题联合考察感知和多步推理。", + verified: true, + }, + { + year: 2023, + title: "HallusionBench: An Advanced Diagnostic Suite for Entangled Language Hallucination and Visual Illusion", + url: "https://arxiv.org/abs/2310.14566", + topics: ["多模态", "评测"], + contribution: "用控制组问题区分语言幻觉、视觉错觉、回答倾向与逻辑一致性。", + verified: true, + }, + { + year: 2023, + title: "Video-LLaVA: Learning United Visual Representation by Alignment Before Projection", + url: "https://arxiv.org/abs/2311.10122", + topics: ["多模态"], + contribution: "在投影前对齐图像和视频表示,探索共同视觉—语言空间。", + verified: true, + }, + { + year: 2023, + title: "MMMU: A Massive Multi-discipline Multimodal Understanding and Reasoning Benchmark for Expert AGI", + url: "https://arxiv.org/abs/2311.16502", + topics: ["多模态", "推理", "评测"], + contribution: "以 11.5K 大学级问题覆盖六大学科、183 子领域与 30 种图像类型。", + verified: true, + }, + { + year: 2023, + title: "LLaMA-VID: An Image is Worth 2 Tokens in Large Language Models", + url: "https://arxiv.org/abs/2311.17043", + topics: ["多模态", "长上下文"], + contribution: "用内容 Token 与上下文 Token 压缩长视频视觉序列。", + verified: true, + }, + { + year: 2023, + title: "RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback", + url: "https://arxiv.org/abs/2312.00849", + topics: ["多模态", "后训练", "评测"], + contribution: "以 segment-level 人工纠错和 dense DPO 对齐视觉忠实度。", + verified: true, + }, { year: 2023, title: "Visual Instruction Tuning", @@ -2464,6 +2640,55 @@ export const papers: Paper[] = [ contribution: "SigLIP 以成对 sigmoid loss 简化大规模图文对比。", verified: true, }, + { + year: 2024, + title: "DeepSeek-VL: Towards Real-World Vision-Language Understanding", + url: "https://arxiv.org/abs/2403.05525", + topics: ["多模态", "数据"], + contribution: "面向截图、PDF、OCR 与图表,用混合视觉编码器处理高分辨率并管理模态竞争。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2024, + title: "How Far Are We to GPT-4V? Closing the Gap to Commercial Multimodal Models with Open-Source Suites", + url: "https://arxiv.org/abs/2404.16821", + topics: ["多模态", "Scaling"], + contribution: "InternVL 1.5 结合 6B 视觉塔、最多 40 个动态 tile 与高质量双语数据。", + verified: true, + }, + { + year: 2024, + title: "Chameleon: Mixed-Modal Early-Fusion Foundation Models", + url: "https://arxiv.org/abs/2405.09818", + topics: ["多模态", "Transformer"], + contribution: "把图像与文字离散成可交错 Token,用 early-fusion 自回归主干统一建模。", + verified: true, + }, + { + year: 2024, + title: "Video-MME: The First-Ever Comprehensive Evaluation Benchmark of Multi-modal LLMs in Video Analysis", + url: "https://arxiv.org/abs/2405.21075", + topics: ["多模态", "评测"], + contribution: "用 900 段短中长视频、字幕和音频条件系统评估视频理解。", + verified: true, + }, + { + year: 2024, + title: "Visual Sketchpad: Sketching as a Visual Chain of Thought for Multimodal Language Models", + url: "https://arxiv.org/abs/2406.09403", + topics: ["多模态", "推理", "Agent"], + contribution: "让模型画线、框选并调用视觉工具,以新视觉产物继续推理。", + verified: true, + }, + { + year: 2024, + title: "SOLO: A Single Transformer for Scalable Vision-Language Modeling", + url: "https://arxiv.org/abs/2407.06438", + topics: ["多模态", "Transformer", "Scaling"], + contribution: "探索单一 Transformer 视觉—语言架构与可稳定训练的开放配方。", + verified: true, + }, { year: 2024, title: "LLaVA-OneVision: Easy Visual Task Transfer", @@ -2472,6 +2697,82 @@ export const papers: Paper[] = [ contribution: "统一单图、多图与视频的视觉指令迁移。", verified: true, }, + { + year: 2024, + title: "Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model", + url: "https://arxiv.org/abs/2408.11039", + topics: ["多模态", "Transformer"], + contribution: "在同一 Transformer 上对文字做 NTP、对连续图像表示做 diffusion。", + verified: true, + }, + { + year: 2024, + title: "Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution", + url: "https://arxiv.org/abs/2409.12191", + topics: ["多模态", "长上下文"], + contribution: "引入动态视觉 Token、M-RoPE 与统一图像 / 视频输入。", + verified: true, + }, + { + year: 2024, + title: "Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation", + url: "https://arxiv.org/abs/2410.13848", + topics: ["多模态"], + contribution: "解耦理解与生成的视觉编码路径,同时共享一个自回归主干。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2024, + title: "JanusFlow: Harmonizing Autoregression and Rectified Flow for Unified Multimodal Understanding and Generation", + url: "https://arxiv.org/abs/2411.07975", + topics: ["多模态"], + contribution: "把语言自回归与图像 rectified flow 放进同一框架,并对齐解耦视觉表示。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2024, + title: "Expanding Performance Boundaries of Open-Source Multimodal Models with Model, Data, and Test-Time Scaling", + url: "https://arxiv.org/abs/2412.05271", + topics: ["多模态", "Scaling", "推理"], + contribution: "InternVL 2.5 从模型、数据与测试时配置三个轴研究多模态扩展。", + verified: true, + }, + { + year: 2024, + title: "DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding", + url: "https://arxiv.org/abs/2412.10302", + topics: ["多模态", "MoE", "长上下文"], + contribution: "用动态 tile、2×2 pixel shuffle、MLP adaptor、DeepSeekMoE 与 MLA 处理高分辨率输入。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2025, + title: "Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling", + url: "https://arxiv.org/abs/2501.17811", + topics: ["多模态", "Scaling"], + contribution: "延续 Janus 解耦视觉路径,改进训练策略、数据规模与模型规模。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2025, + title: "Qwen2.5-VL Technical Report", + url: "https://arxiv.org/abs/2502.13923", + topics: ["多模态", "Agent"], + contribution: "从头训练动态分辨率 ViT,引入绝对时间编码并强化文档和视觉 Agent。", + verified: true, + }, + { + year: 2025, + title: "Vision-R1: Incentivizing Reasoning Capability in Multimodal Large Language Models", + url: "https://arxiv.org/abs/2503.06749", + topics: ["多模态", "推理", "后训练"], + contribution: "探索用大规模强化学习激活多模态长思维与视觉推理。", + verified: true, + }, { year: 2025, title: "Kimi-VL Technical Report", @@ -2481,6 +2782,40 @@ export const papers: Paper[] = [ spotlight: "Kimi", verified: true, }, + { + year: 2025, + title: "VTool-R1: VLMs Learn to Think with Images via Reinforcement Learning on Multimodal Tool Use", + url: "https://arxiv.org/abs/2505.19255", + topics: ["多模态", "推理", "Agent", "后训练"], + contribution: "用可验证奖励训练模型自主选择视觉工具并从新图像观察继续推理。", + verified: true, + }, + { + year: 2025, + title: "DeepSeek-OCR: Contexts Optical Compression", + url: "https://arxiv.org/abs/2510.18234", + topics: ["多模态", "长上下文", "数据"], + contribution: "用 DeepEncoder 将二维页面压成少量视觉 Token,研究光学长上下文压缩。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2026, + title: "DeepSeek-OCR 2: Visual Causal Flow", + url: "https://arxiv.org/abs/2601.20552", + topics: ["多模态", "长上下文"], + contribution: "DeepEncoder V2 根据图像语义动态重排视觉 Token,再交给语言解码器。", + spotlight: "DeepSeek", + verified: true, + }, + { + year: 2026, + title: "ToolsRL: Reward Is All Tool Learning Needs", + url: "https://arxiv.org/abs/2604.19945", + topics: ["多模态", "推理", "Agent", "后训练"], + contribution: "以强化学习研究视觉工具选择、调用与多步观察闭环。", + verified: true, + }, { year: 2020, title: "Measuring Massive Multitask Language Understanding", diff --git a/src/pages/index.astro b/src/pages/index.astro index 6405c0a..3711427 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -15,6 +15,7 @@ const routes: Record = { "post-training/alignment": "/post-training/alignment/", reasoning: "/reasoning/", agents: "/agents/", + multimodal: "/multimodal/", "training-systems": "/training-systems/", "systems/numerics": "/systems/numerics/", }; @@ -93,6 +94,7 @@ const paths = [ 后训练与偏好专题 推理专题 Agent 专题 + 原生多模态专题 训练系统专题 数值与优化专题 @@ -104,7 +106,7 @@ const paths = [
16核心专题
151K3 报告来源
-
314关键论文索引
+
355关键论文索引
47pK3 技术报告
@@ -118,6 +120,22 @@ const paths = [
+ +
+

NEW / CHAPTER 13 PIXELS · TOKENS · NATIVE MULTIMODALITY

+

原生多模态不等于移除视觉塔:真正改变的是数据、目标、优化与行为闭环

+

+ 用语义空间、连接器、分辨率、OCR、视频、训练、幻觉、评测与 Agent 十六张账, + 从 ViT、CLIP 和 LLaVA 走到 DeepSeek-VL / Janus / OCR 三分支,以及 Kimi 三代 MoonViT 与 K3 从头共同 NTP。 +

+
+
+
LINEAGE
2012 → 2026
+
NODES
55 个一手节点
+
LAB
Token · 连接器 · 光学压缩 · 视觉闭环
+
+ +

NEW / CHAPTER 12 AGENTS · TOOL USE · ENVIRONMENTS

diff --git a/src/pages/multimodal/index.astro b/src/pages/multimodal/index.astro new file mode 100644 index 0000000..bbe6199 --- /dev/null +++ b/src/pages/multimodal/index.astro @@ -0,0 +1,1480 @@ +--- +import BaseLayout from "@/layouts/BaseLayout.astro"; +import MultimodalLab from "@/components/MultimodalLab.astro"; + +const toc = [ + ["00", "compass", "先拆成十六张账"], + ["01", "pipeline", "像素到行动的五层"], + ["02", "tokens", "视觉 Token 数学"], + ["03", "vision-prehistory", "视觉骨干前史"], + ["04", "clip", "CLIP 的语义空间"], + ["05", "siglip", "ALIGN / LiT / SigLIP"], + ["06", "connectors", "Frozen / Flamingo"], + ["07", "instruction", "BLIP-2 / LLaVA"], + ["08", "resolution", "分辨率三条路线"], + ["09", "documents", "OCR 与文档"], + ["10", "video", "视频不是图片堆"], + ["11", "native", "“原生”的五维定义"], + ["12", "unified", "统一模型四种含义"], + ["13", "deepseek-map", "DeepSeek 三分支"], + ["14", "deepseek-vl", "VL → VL2"], + ["15", "janus", "Janus 理解与生成"], + ["16", "deepseek-ocr", "光学上下文压缩"], + ["17", "kimi-map", "Kimi 三代 MoonViT"], + ["18", "kimi-vl", "Kimi-VL"], + ["19", "k25", "K2.5"], + ["20", "k3-native", "K3 原生训练"], + ["21", "k3-stability", "从头训练与稳定性"], + ["22", "programmatic", "程序化视觉数据"], + ["23", "lab", "四联交互实验"], + ["24", "hallucination", "多模态幻觉"], + ["25", "evaluation", "评测地图"], + ["26", "visual-agent", "视觉 Agent"], + ["27", "systems", "训练系统与 MoE"], + ["28", "checklist", "审计一款新 VLM"], + ["↳", "papers", "55 个关键节点"], +]; + +const ledgers = [ + ["Q1 / SPACE", "语义空间", "图像怎样靠近语言?", "分类标签、图文对比、caption 与生成目标不是同一层。"], + ["Q2 / BRIDGE", "连接器", "视觉特征怎样进 LLM?", "prefix、resampler、cross-attention、Q-Former、MLP。"], + ["Q3 / BUDGET", "Token 预算", "细节为什么如此昂贵?", "分辨率、patch、tile、shuffle、上下文与预填充成本。"], + ["Q4 / DOC", "OCR / 文档", "模型是在看图还是读结构?", "小字、阅读顺序、公式、表格、版面与多语言。"], + ["Q5 / VIDEO", "时间", "动作顺序怎样进入模型?", "采帧、时空注意力、时间池化、长视频检索。"], + ["Q6 / FUSION", "融合时机", "视觉何时遇见文字?", "early fusion、cross-attention、直接 Token 拼接与晚融合。"], + ["Q7 / OUTPUT", "理解 / 生成", "同一视觉表示能兼顾两端吗?", "语义鲁棒性与像素可逆细节可能冲突。"], + ["Q8 / SFT", "视觉指令", "对齐后为何仍不会协作?", "对话、密集描述、OCR、推理与行动轨迹。"], + ["Q9 / RL", "多模态 RL", "奖励怎样回到像素证据?", "结果奖励、工具使用、视觉校准与跨模态迁移。"], + ["Q10 / AGENT", "工具闭环", "看不清时能否主动再看?", "crop、zoom、OCR、Python、截图、验证器。"], + ["Q11 / HALLU", "幻觉", "语言先验为何压过视觉?", "输入损失、接口损失与生成偏置。"], + ["Q12 / SAFE", "安全", "图片里的文字可信吗?", "视觉提示注入、隐私、权限与工具副作用。"], + ["Q13 / EVAL", "评测", "一个总分混进了什么?", "感知、OCR、知识、推理、视频、Agent 与输入预算。"], + ["Q14 / SYSTEM", "训练系统", "动态图像怎样组 batch?", "packing、straggler、并行、pipeline bubble 与吞吐。"], + ["Q15 / MOE", "稀疏路由", "视觉 Token 会去哪类专家?", "负载、专家专化、路由波动与开放证据缺口。"], + ["Q16 / LINEAGE", "产品谱系", "DeepSeek 与 Kimi 各解哪道题?", "理解、生成、OCR 与原生训练不能压成单线升级。"], +]; + +const waves = [ + { + year: "2012–20", + title: "像素先变成可扩展表征", + nodes: "AlexNet · ResNet · ViT", + gain: "卷积残差让深视觉可训练;ViT 进一步把图像变成 patch 序列。", + debt: "类别监督封闭,固定分辨率会丢失长图和小字。", + }, + { + year: "2021–23", + title: "自然语言成为视觉监督", + nodes: "CLIP · ALIGN · LiT · SigLIP", + gain: "图像获得开放词汇语义空间,预训练视觉塔可以被大量下游模型复用。", + debt: "匹配相似度不是开放式生成,细粒度 OCR 与关系仍弱。", + }, + { + year: "2021–23", + title: "寻找 LLM 的视觉入口", + nodes: "Frozen · Flamingo · BLIP-2 · LLaVA", + gain: "前缀、跨注意力、query bottleneck 与简单 MLP 形成不同连接器范式。", + debt: "冻结带来效率,也把跨模态翻译压在狭窄 bridge 上。", + }, + { + year: "2023–25", + title: "分辨率、文档与视频成为主矛盾", + nodes: "NaViT · dynamic tiling · OCR · temporal pooling", + gain: "模型开始保留长宽比、小字、页面结构与时间关系。", + debt: "视觉 Token、预填充、straggler 与上下文竞争迅速上升。", + }, + { + year: "2024–25", + title: "理解与生成走向统一,但路线分叉", + nodes: "Chameleon · Transfusion · SOLO · Janus", + gain: "统一序列、统一主干、混合目标和解耦视觉路径都成为可选设计。", + debt: "“统一”一词开始同时指四件不同的事。", + }, + { + year: "2024–26", + title: "开放产品线形成自己的答案", + nodes: "DeepSeek-VL/VL2 · Janus · OCR · Kimi-VL/K2.5/K3", + gain: "高分辨率、稀疏骨干、光学压缩、统一视频和原生联合训练进入规模化报告。", + debt: "总参数、激活参数、像素预算和作者报告值更容易被错误横比。", + }, + { + year: "2025–26", + title: "视觉进入 RL 与 Agent 闭环", + nodes: "Vision-R1 · VTool-R1 · ToolsRL · OSWorld · K3", + gain: "模型能主动购买新观察、操作环境并以最终状态验证。", + debt: "模型、工具、harness、步数、权限和 verifier 必须一起审计。", + }, +]; + +const paperChain = [ + ["2012", "AlexNet", "https://proceedings.neurips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks", "GPU 与大规模卷积视觉表示的转折点。"], + ["2015", "ResNet", "https://arxiv.org/abs/1512.03385", "残差连接让深视觉骨干更易优化。"], + ["2020", "Vision Transformer", "https://arxiv.org/abs/2010.11929", "把图像切成 patch,进入标准 Transformer 序列。"], + ["2021", "ALIGN", "https://arxiv.org/abs/2102.05918", "把噪声 web 图文对扩到超大规模。"], + ["2021", "CLIP", "https://arxiv.org/abs/2103.00020", "自然语言监督的开放视觉语义空间。"], + ["2021", "Frozen", "https://arxiv.org/abs/2106.13884", "视觉前缀接入冻结语言模型。"], + ["2021", "LiT", "https://arxiv.org/abs/2111.07991", "锁定图像塔,只调文本侧对齐。"], + ["2022", "BLIP", "https://arxiv.org/abs/2201.12086", "captioner 与 filter 重建图文数据质量。"], + ["2022", "Flamingo", "https://arxiv.org/abs/2204.14198", "Perceiver Resampler 与 gated cross-attention。"], + ["2023", "BLIP-2", "https://arxiv.org/abs/2301.12597", "Q-Former 连接冻结视觉塔与冻结 LLM。"], + ["2023", "SigLIP", "https://arxiv.org/abs/2303.15343", "用独立 sigmoid pair loss 取代 batch softmax。"], + ["2023", "LLaVA", "https://arxiv.org/abs/2304.08485", "简单 projector 与生成式视觉指令调优。"], + ["2023", "MiniGPT-4", "https://arxiv.org/abs/2304.10592", "少量高质量对话对齐冻结视觉与语言模块。"], + ["2023", "InstructBLIP", "https://arxiv.org/abs/2305.06500", "instruction-aware Q-Former 与任务泛化。"], + ["2023", "PaLI-X", "https://arxiv.org/abs/2305.18565", "多语言视觉—语言模型的组件、任务混合与规模扩展。"], + ["2023", "OCRBench", "https://arxiv.org/abs/2305.07895", "识别、DocVQA、KIE 与公式的综合 OCR 评测。"], + ["2023", "POPE", "https://arxiv.org/abs/2305.10355", "用轮询式问题诊断对象幻觉。"], + ["2023", "Kosmos-2", "https://arxiv.org/abs/2306.14824", "用 location token 把文字指称落到视觉区域。"], + ["2023", "NaViT", "https://arxiv.org/abs/2307.06304", "在 Token 预算内打包任意长宽比图像。"], + ["2023", "MMBench", "https://arxiv.org/abs/2307.06281", "双语多选与 CircularEval 综合评测。"], + ["2023", "Qwen-VL", "https://arxiv.org/abs/2308.12966", "OCR、grounding 与开放视觉对话路线。"], + ["2023", "LLaVA-1.5", "https://arxiv.org/abs/2310.03744", "两层 MLP、数据混合与工程基线。"], + ["2023", "MathVista", "https://arxiv.org/abs/2310.02255", "视觉上下文中的数学推理。"], + ["2023", "HallusionBench", "https://arxiv.org/abs/2310.14566", "语言幻觉、视觉错觉与一致性诊断。"], + ["2023", "Video-LLaVA", "https://arxiv.org/abs/2311.10122", "图像与视频的共同视觉—语言空间。"], + ["2023", "MMMU", "https://arxiv.org/abs/2311.16502", "大学级多学科视觉理解与推理。"], + ["2023", "LLaMA-VID", "https://arxiv.org/abs/2311.17043", "内容 / 上下文 Token 压缩长视频。"], + ["2023", "RLHF-V", "https://arxiv.org/abs/2312.00849", "用细粒度人工纠错与 dense DPO 对齐视觉忠实度。"], + ["2024", "VisualWebArena", "https://arxiv.org/abs/2401.13649", "真实网站中的视觉 grounding Agent。"], + ["2024", "DeepSeek-VL", "https://arxiv.org/abs/2403.05525", "真实场景、高分辨率与语言能力保持。"], + ["2024", "MM1", "https://arxiv.org/abs/2403.09611", "系统研究架构、数据和训练配方的相对作用。"], + ["2024", "InternVL 1.5", "https://arxiv.org/abs/2404.16821", "6B 视觉塔、最多 40 个动态 tile 与双语高质量数据。"], + ["2024", "OSWorld", "https://arxiv.org/abs/2404.07972", "真实桌面截图、动作与执行式验证。"], + ["2024", "Chameleon", "https://arxiv.org/abs/2405.09818", "图文交错离散 Token 的 early-fusion 模型。"], + ["2024", "Video-MME", "https://arxiv.org/abs/2405.21075", "短中长视频、字幕与音频条件评测。"], + ["2024", "Visual Sketchpad", "https://arxiv.org/abs/2406.09403", "用画线、框选和视觉工具产生可回看的视觉思维步骤。"], + ["2024", "JEST", "https://arxiv.org/abs/2406.17711", "按 batch 联合可学习性筛选多模态训练样本。"], + ["2024", "SOLO", "https://arxiv.org/abs/2407.06438", "单一 Transformer 视觉—语言训练配方。"], + ["2024", "LLaVA-OneVision", "https://arxiv.org/abs/2408.03326", "单图、多图、视频统一迁移路线。"], + ["2024", "Transfusion", "https://arxiv.org/abs/2408.11039", "同一主干混合文字 NTP 与图像 diffusion。"], + ["2024", "Qwen2-VL", "https://arxiv.org/abs/2409.12191", "动态视觉 Token、M-RoPE 与统一图像 / 视频处理。"], + ["2024", "Janus", "https://arxiv.org/abs/2410.13848", "解耦理解 / 生成视觉编码路径。"], + ["2024", "JanusFlow", "https://arxiv.org/abs/2411.07975", "自回归语言与 rectified flow 图像生成。"], + ["2024", "InternVL 2.5", "https://arxiv.org/abs/2412.05271", "从模型、数据与测试时三个轴扩展开放多模态模型。"], + ["2024", "DeepSeek-VL2", "https://arxiv.org/abs/2412.10302", "动态 tile、pixel shuffle、MoE 与 MLA。"], + ["2025", "Janus-Pro", "https://arxiv.org/abs/2501.17811", "优化训练阶段、数据和规模。"], + ["2025", "Qwen2.5-VL", "https://arxiv.org/abs/2502.13923", "从头训练动态分辨率 ViT、绝对时间编码与视觉 Agent。"], + ["2025", "Vision-R1", "https://arxiv.org/abs/2503.06749", "大规模 RL 激活多模态推理。"], + ["2025", "Kimi-VL", "https://arxiv.org/abs/2504.07491", "MoonViT 原生分辨率与稀疏 MoE。"], + ["2025", "VTool-R1", "https://arxiv.org/abs/2505.19255", "强化学习训练自主视觉工具调用。"], + ["2025", "DeepSeek-OCR", "https://arxiv.org/abs/2510.18234", "把二维视觉表征用作长上下文压缩介质。"], + ["2026", "DeepSeek-OCR2", "https://arxiv.org/abs/2601.20552", "依据图像语义动态重排视觉 Token。"], + ["2026", "Kimi K2.5", "https://arxiv.org/abs/2602.02276", "MoonViT-3D、zero-vision SFT 与视觉 RL。"], + ["2026", "ToolsRL", "https://arxiv.org/abs/2604.19945", "面向视觉工具使用的强化学习。"], + ["2026", "Kimi K3", "https://arxiv.org/abs/2607.24653", "MoonViT-V2 从头共同 NTP 与视觉闭环 Agent。"], +]; + +const audits = [ + ["输入", "最大像素、tile、帧数、字幕 / 音频和 context 分别是多少?"], + ["视觉塔", "从什么 checkpoint 初始化?固定还是更新?图像与视频是否共享?"], + ["压缩", "patch、pixel shuffle、resampler、时间池化分别丢掉什么?"], + ["连接器", "prefix、cross-attention、Q-Former、MLP,还是单主干?"], + ["训练", "哪些阶段使用对比、caption、NTP、SFT、RL?谁被更新?"], + ["“原生”", "数据、目标、优化、输入输出、Agent 五维究竟满足哪些?"], + ["输出", "只生成文字,还是也生成图像、代码、工具动作和新观察?"], + ["评测", "感知、OCR、知识、推理、视频与 Agent 是否分别记录?"], + ["系统", "视觉 Token 怎样打包、并行和限制长尾?吞吐基线是什么?"], + ["安全", "图像文字被当作数据还是指令?工具副作用怎样授权和验证?"], +]; +--- + + +
+
+
+

MULTIMODAL / 13 PIXELS · TOKENS · ACTION

+

图像是外接插件,
还是第一类输入?

+

+ 从 ViT 把像素切成 Token、CLIP 建立开放语义空间,到 Frozen / Flamingo / BLIP-2 / LLaVA + 寻找视觉入口;再沿 DeepSeek 的理解、生成、光学压缩三分支,与 Kimi 三代 MoonViT, + 走到 K3 从训练起共同优化、并能反复“看—做—再看”的原生多模态。 +

+
+
+
LEVEL
L0 直觉 → L3 系统
+
LEDGERS
16 张问题账
+
NODES
55 个一手节点
+
LAB
4 个交互实验
+
TIME
约 220–300 分钟
+
VERIFIED
2026-07-29
+
+
+
+ +
+ + +
+
+

00 SIXTEEN LEDGERS

+

不要先背模型名,先问视觉信息在哪一层丢了

+

+ 多模态不是“给语言模型装一双眼睛”这么简单。像素可能在 resize 时丢失,视觉塔可能看见却没通过 + connector,语言主干可能被常识先验带偏,工具闭环也可能因为权限或验证器失败。十六张账把这些问题逐层拆开。 +

+ + + PREREQUISITE / CHAPTER 02 +
注意力与 Transformer

先理解 Token、位置、多头注意力和残差,才能看清 ViT 与语言主干共享了什么。

+ 回看 Transformer → +
+ +
+ {ledgers.map(([code, title, question, answer]) => ( +
+ {code}

{title}

{question}

{answer}

+
+ ))} +
+ +
+ ONE-SENTENCE MODEL +

多模态模型是一条受 Token 预算约束的信息管道:视觉编码器决定看见什么,连接器决定传过去什么,主干决定怎样融合,工具闭环决定能否主动获取新证据。

+
+ +
+ {waves.map((wave, index) => ( +
+
{String(index + 1).padStart(2, "0")}
+ +
+

{wave.title}

+ {wave.nodes} +

{wave.gain}

+ 留下的债:{wave.debt} +
+
+ ))} +
+
+ +
+

01 FIVE-LAYER PIPELINE

+

一张图进入模型后,至少穿过五道门

+

+ “模型答错了”只能描述终点,不能定位故障。更可用的办法是沿数据流逐层问: + 输入还保留证据吗?视觉塔编码了吗?压缩后传过去了吗?主干引用了吗?最终答案或动作被验证了吗? +

+ +
+
01 / INPUT
{Array.from({ length: 25 }).map(() => )}
Pixels / Frames / Pages

分辨率、长宽比、采帧、裁剪与音频 / 字幕。

失败:细节在进模型前消失
+ +
02 / ENCODER
Vision Encoder

CNN、ViT、SigLIP、MoonViT、DeepEncoder。

失败:视觉表征不适合任务
+ +
03 / BRIDGE
Compress / Project

tile、resampler、Q-Former、pixel shuffle、MLP。

失败:接口成为信息瓶颈
+ +
04 / BACKBONE
Fuse / Reason

语言先验、跨模态注意力、MoE、长上下文。

失败:看见却没有引用
+ +
05 / OUTPUT
T
Text / Image / Action

回答、生成图像、代码、工具调用与环境状态。

失败:输出没有独立验证
+
+ +
+
视觉塔看见

LLM 收到

+
LLM 收到

回答引用

+
回答流畅

视觉忠实

+
动作合法

最终状态正确

+
+ +
+ PLAIN LANGUAGE +

把它想成一条证据管道。模型越大,只能改善其中一部分;如果发票小字在 resize 后只剩几个模糊像素,再强的语言推理也无法恢复原始数字。

+
+
+ +
+

02 VISUAL TOKEN MATH

+

分辨率的成本是平方,不是一条免费滑杆

+

+ Vision Transformer 把图像切成 patch。若图像为 H × W,patch 边长为 P, + 最粗略的视觉位置数是高、宽两个方向 patch 数的乘积。 +

+ +
+ Npatch = ceil(H / P) × ceil(W / P) +
+ Nvisual ≈ Npatch ÷ s² + s × s 表示空间合并因子。视频还要乘帧数,再除时间池化因子。真实模型还会加入 thumbnail、tile、分隔符、padding 与 packing。 +
+ +
+
224² / P14
256 patches

2×2 合并后约 64

+
1024² / P14
约 5,476 patches

2×2 合并后约 1,369

+
3584² / P14
65,536 patches

2×2 合并后仍有 16,384

+
+ +
+
DETAIL细节保真

小字、细线、对象与空间关系

+ +
CONTEXT序列预算

文字、历史、视频与工具观察共用

+ +
COMPUTE训练 / 推理成本

ViT、prefill、显存、通信与尾延迟

+
+ +
+ DON'T OVERREAD +

“最高支持 3584²”不意味着每张图都该用满。最大输入是容量上限;最佳输入取决于信息密度、上下文和系统预算。

+
+
+ +
+

03 VISUAL BACKBONES

+

语言模型能看图之前,视觉先学会了可迁移表示

+

+ AlexNet 证明 GPU 与大卷积网络可以在 ImageNet 规模学习视觉特征;ResNet 用残差路径让更深网络更易优化; + ViT 则把图像切成 patch 序列,直接复用 Transformer。真正与 LLM 接轨的关键,不是“图像也有注意力”,而是两种模态开始共享序列接口、位置机制和缩放工具。 +

+ +
+
CNN

AlexNet

{Array.from({ length: 5 }).map(() => )}

局部卷积与层级特征;类别空间封闭。

+ +
RESIDUAL

ResNet

残差高速公路让更深视觉骨干稳定训练。

+ +
PATCH SEQUENCE

Vision Transformer

图像 patch 变成标准 Transformer 序列。

+
+ +
+ PRIMARY SOURCES +

+ ResNet · + Vision Transformer。 + 这是视觉表示前史,不应倒写成“早期 LLM 多模态”。 +

+
+
+ +
+

04 LANGUAGE SUPERVISION

+

CLIP 的突破:文字不再只是类别名,而是视觉的开放词汇监督

+

+ CLIP 分别编码一批图像与文本,得到一个 N × N 相似度矩阵。正确配对在对角线; + 对比目标拉近正确图文、推远错误组合。分类时不必训练新分类头,只要把类别写成自然语言提示。 +

+ +
+
+
IMAGE
vision encoderv₁ … vₙ
+
TEXT
“a photo of a tabby cat”
text encodert₁ … tₙ
+
+
+ {Array.from({ length: 36 }).map((_, index) => )} + correct pairs +
+
+ +
+
CLIP SOLVED

开放语义空间

  • 自然语言类名
  • 零样本迁移
  • 可复用视觉塔
+
CLIP LEFT OPEN

生成与细节

  • 不会开放式长回答
  • 全局对齐不保证 OCR
  • 计数与关系仍可能弱
+
+ +

+ 因此,CLIP 是后续 VLM 的视觉语义地基,不是完整视觉助手。把“图文可比较”变成“根据图像连续生成答案”,仍需要语言主干、连接器、指令数据与生成目标。 + 参见 CLIP 原论文。 +

+
+ +
+

05 ALIGN · LIT · SIGLIP

+

同样叫图文对齐,谁更新、怎样归一化、数据多脏都不同

+ +
+
+ ALIGN / 2021

扩大噪声图文对

+
{Array.from({ length: 18 }).map(() => )}
+

用超大规模 web 图文对证明“规模可以部分抵消手工清洗不足”,但不会消除偏见、重复和错误配对。

+
+
+ LiT / 2021

锁住图像塔

+
VISION🔒TEXT
+

保留已有强视觉空间,只训练文本侧去匹配;“冻结谁”本身就是训练配方。

+
+
+ SigLIP / 2023

独立 pair sigmoid

+
{Array.from({ length: 8 }).map((_, index) => )}
+

不再把整个 batch 放进同一个 softmax;每对图文独立做二元 sigmoid 分类。

+
+
+ +
+
CLIP-STYLEsoftmax(similarity matrix)

正确 pair 与 batch 内所有候选竞争。

+ +
SIGLIPΣ log σ(yᵢⱼ · scoreᵢⱼ)

每一对图文独立判断匹配 / 不匹配。

+
+ +

+ SigLIP-SO400M 后来成为 DeepSeek-VL2、Kimi-VL、K2.5 等模型的重要视觉初始化。 + 但一种更好的对齐损失不会自动解决动态分辨率、connector、语言生成或工具使用。 + 一手来源:ALIGN、 + LiT、 + SigLIP。 +

+
+ +
+

06 CONNECTOR ERA I

+

Frozen 与 Flamingo:一个学视觉前缀,一个让语言层按需读视觉

+

+ 早期路线的核心约束是:已有语言模型很强、训练一次很贵,能否少动它?答案产生了两种不同接口。 +

+ +
+
+
FROZEN / 2021视觉前缀
+
+
v₁v₂v₃
+
t₁t₂
+
+

视觉编码器学习产生连续 embedding,作为冻结 LLM 的前缀。语言模型保留能力,但视觉前缀承担重翻译任务。

+
+
+
FLAMINGO / 2022跨注意力读取
+
+
{Array.from({ length: 12 }).map(() => )}
+
{Array.from({ length: 4 }).map(() => )}
+
X-ATTNX-ATTN
+
+

Perceiver Resampler 把可变视觉特征压成固定潜变量,再用 gated cross-attention 插入冻结语言层之间。

+
+
+ +
+ 真正要问 +

视觉信息是作为普通序列位置进入自注意力,还是保留在独立 memory 里让语言层跨注意力读取?两者的上下文成本和系统实现完全不同。

+
+ +

+ 一手来源:Frozen · + Flamingo。 +

+
+ +
+

07 CONNECTOR ERA II

+

BLIP-2 与 LLaVA:高效瓶颈和简单基线,各自买到了什么?

+ +
+
+ BLIP-2 / Q-FORMER +
+ FROZEN
VISION
+
{Array.from({ length: 8 }).map((_, index) => q{index + 1})}
+ FROZEN
LLM
+
+

固定 query 是效率,也是上限

+

Q-Former 用有限 query 从视觉特征取信息。训练参数少,但细粒度场景必须挤过固定瓶颈。

+
+
+ LLAVA / PROJECTOR +
+ CLIP
VISION
+
+ LLM
TOKENS
+
+

架构简单,把重心交给数据

+

线性 / 两层 MLP projector 配合生成式视觉指令数据,成为开放 VLM 最易复现的路线之一。

+
+
+ +
+
01Caption

图里有什么

+ +
02Detailed description

局部、关系、文字

+ +
03Conversation

按用户意图回答

+ +
04Reason / Act

推理、工具与验证

+
+ +
+ COMMON MISTAKE +

connector 参数少,不代表它不重要。它是视觉塔与 LLM 之间的带宽和坐标变换;信息能否被语言注意力使用,正由这里决定。

+
+ +

+ 一手来源:BLIP-2 · + LLaVA · + LLaVA-1.5。 +

+
+ +
+

08 RESOLUTION STRATEGIES

+

固定缩放、动态切图、NaViT packing:三种办法,三种不同债务

+ +
+
+ A / FIXED SQUARE +
+

统一缩成正方形

+

batch 和吞吐最规则;长图被压扁、crop 丢边缘、小字最先消失。

+ 系统简单 / 视觉损失高 +
+
+ B / DYNAMIC TILING +
+

全局缩略图 + 局部 tile

+

复用固定视觉塔并保留细节;tile 重复、顺序与 Token 成本成为新问题。

+ 局部清晰 / 上下文昂贵 +
+
+ C / NAVIT PACKING +
+

把不同形状 patch 打包

+

保留长宽比,在固定 Token 预算内装多张图;需要 mask、位置与变长系统支持。

+ 形状原生 / 系统复杂 +
+
+ +

+ NaViT 的关键不是“无限分辨率”,而是取消 batch 中所有图像必须同尺寸的假设。 + DeepSeek-VL2 代表动态切图路线;MoonViT 代表 native-resolution packing 路线。二者都仍受最大 Token、显存与上下文约束。 +

+
+ +
+

09 OCR · DOCUMENTS

+

一页文档不是自然照片:它同时是像素、文字和二维程序

+

+ 文档理解要求模型同时回答三件事:字符是什么?阅读顺序是什么?字符在表格、公式、标题和注释中扮演什么结构角色? + OCR 错一位小数,后面的数学推理可以完全正确却得到错误答案。 +

+ +
+
01 / GLYPH
A 7 税 ∑
字符层

多语言、手写、公式、小字号与非语义字符串。

+
02 / ORDER
1243
阅读顺序

多栏、脚注、图例与复杂页面并非机械栅格扫描。

+
03 / STRUCTURE
{Array.from({ length: 12 }).map(() => )}
结构层

表格 cell、键值关系、公式树与跨页引用。

+
04 / REASON
1,200
+ 84
= 1,284
推理层

读到事实后,还要计算、比较、验证和引用证据。

+
+ +

+ OCRBench 把文字识别、场景文字 VQA、文档 VQA、关键信息抽取与手写公式放在同一评测框架。 + 它提醒我们:只测自然图 VQA,会遗漏真实办公场景最常见的瓶颈。 +

+
+ +
+

10 VIDEO

+

视频不是“很多张独立图片”:时间本身也是证据

+

+ “杯子先掉下还是人先伸手”“红灯出现了多久”“哪个镜头解释了结局”,都不能只靠静态帧集合回答。 + 最直接的逐帧编码又会让视觉 Token 随帧数线性增长。 +

+ +
+
{Array.from({ length: 8 }).map((_, index) => {index + 1})}
+ ↓ SAMPLE / CHUNK +
+
INPUT均匀采帧

便宜,但可能漏掉瞬间事件。

+
ENCODER时空注意力

表征强,训练与显存更贵。

+
BRIDGE时间池化

省 Token,也可能平均掉短动作。

+
LLM时间序列 Token

最通用,却直接竞争上下文。

+
+
+ +
+ 同一 1,024² 帧 / P14 / 2×2 空间压缩 +
1 帧≈1,369 tokens
8 帧≈10,952
32 帧≈43,808
+

再做 4× 时间池化可把位置约降四倍,但不会免费保留所有短暂事件。

+
+ +

+ Video-MME 的评测包含短中长视频,并区分是否提供字幕和音频。 + 报告视频结果时必须同时记录采帧策略、最大帧数、字幕 / 音频与上下文预算。 +

+
+ +
+

11 WHAT DOES “NATIVE” MEAN?

+

“原生多模态”不是行业统一开关,至少要拆成五个维度

+

+ 厂商可以用“native”描述输入、数据、架构或训练。若不拆词,我们会把“早期加入图像”“图文共同 NTP”“没有事后 alignment” + 和“能视觉工具闭环”误当成同一个命题。 +

+ +
+
01 / DATA数据原生

视觉数据是否从预训练早期进入,而非只在末期补课?

+
02 / TARGET目标原生

视觉塔是否与主干共享生成目标或同一训练制度?

+
03 / OPTIMIZE优化原生

视觉塔与语言主干是否共同更新,而非只学一个事后 bridge?

+
04 / I-O输入输出原生

图、文、视频、代码和渲染能否在同一序列交错?

+
05 / AGENT行为原生

动作后能否重新看环境,继续推理并验证?

+
+ +
+
原生多模态 = 没有视觉塔错误
+
原生多模态 = 没有 projector错误
+
原生多模态 = 数据、目标、优化与闭环更早、更深统一可核验
+
+ +

+ K3 明确保留约 0.4B 的 MoonViT-V2 与轻量 MLP projector。它的“原生”重点是从头共同 next-token prediction、 + 无 post-hoc modality alignment,以及视觉在长程工具轨迹中的持续回流。 +

+
+ +
+

12 FOUR KINDS OF UNIFICATION

+

统一序列、统一主干、统一目标、统一行为,是四件事

+ +
+
U1
统一输入序列

图像 Token 与文字 Token 可以交错。

Chameleon · LLaVA
+
U2
统一 Transformer 主干

不同模态共享大部分计算层。

SOLO · Janus
+
U3
统一或协同目标

共同 NTP,或在同一主干混合 NTP 与 diffusion / flow。

K3 · Transfusion
+
U4
统一行为闭环

理解、生成、工具动作和重新观察进入一条轨迹。

K3 · visual agents
+
+ +
+
+ CHAMELEON

全部离散化

+
TTVVTV
+

图文交错离散 Token,用 early-fusion 自回归统一建模。图像 tokenizer 质量和长视觉序列成为代价。

+
+
+ TRANSFUSION

主干统一,损失分流

+
NTP
TEXT
ONE
TRANSFORMER
DIFFUSION
IMAGE
+

文字做 next-token prediction,连续图像做 diffusion;统一主干不要求统一输出表示。

+
+
+ JANUS

主干统一,编码解耦

+
UNDERSTANDAR
BACKBONE
GENERATE
+

理解与生成使用不同视觉编码路径,避免语义鲁棒表征与像素可逆表征互相拉扯。

+
+
+ +

+ 一手来源:Chameleon · + Transfusion · + SOLO · + Janus。 +

+
+ +
+

13 DEEPSEEK SPOTLIGHT

+

DeepSeek 的多模态工作不是一条直线,而是三条不同问题分支

+

+ 把 DeepSeek-VL、Janus、OCR 画成单向“代际升级”会误导:VL 系列优化高分辨率理解, + Janus 探索理解与生成怎样共用主干,OCR 系列研究二维视觉能否成为长上下文压缩介质。 +

+ +
+
+
BRANCH A真实世界理解
+
DeepSeek-VLDeepSeek-VL2
+

固定混合编码器 → 动态 tile;高分辨率、OCR、MoE 与语言能力保持。

+ 输出中心:文字理解 +
+
+
BRANCH B统一理解与生成
+
JanusJanusFlowJanus-Pro
+

解耦视觉编码路径,共享自回归主干;离散生成与 rectified flow 分叉。

+ 输出中心:文字 + 图像 +
+
+
BRANCH C光学上下文压缩
+
DeepSeek-OCROCR2
+

文字渲染成二维页面,用视觉 Token 压缩;再让语义重排改善阅读顺序。

+ 研究中心:压缩与解码 +
+
+ +
+ WHY THREE BRANCHES MATTER +

同一组织的论文可以共享模型、数据和工程经验,但只要优化目标不同,就不能拿“新年份”替代架构比较。

+
+
+ +
+

14 DEEPSEEK-VL → VL2

+

从双视觉尺度到动态 tile:高分辨率怎样进入稀疏语言骨干

+

+ DeepSeek-VL 面向网页截图、PDF、OCR、图表与真实用例, + 使用混合视觉编码器处理 1024² 输入。它尤其强调:视觉预训练一开始就保留语言数据,主动管理视觉—语言竞争,避免语言能力被覆盖。 +

+ +
+
+ DEEPSEEK-VL / 2024 +

两个尺度看同一张图

+
+
384
semantic
1024
detail
LLM +
+
    +
  • 混合视觉编码器
  • +
  • 1024² 真实场景输入
  • +
  • 预训练早期混入语言数据
  • +
+
+ +
+ DEEPSEEK-VL2 / 2024 +

全局缩略图 + 最多九个局部 tile

+
+
{Array.from({ length: 9 }).map(() => )}
SigLIP
384
+
+
    +
  • 候选网格满足 m·n ≤ 9
  • +
  • 每 tile 729 embedding
  • +
  • 2×2 pixel shuffle 后 196 Token
  • +
+
+
+ +
+
01Dynamic tiles

全局缩略图 + 局部视野

+
02SigLIP-SO400M-384

固定视觉编码尺寸

+
032×2 shuffle

729 → 196 / tile

+
042-layer MLP

映射到语言空间

+
05DeepSeekMoE + MLA

稀疏语言骨干

+
+ +
+ PARAMETER HYGIENE +

VL2 论文列出的 1.0B、2.8B、4.5B 是不同版本的激活参数量,不能与总参数混用。动态 tile 也不是任意无限切图:论文候选约束为 m·n ≤ 9

+
+
+ +
+

15 JANUS FAMILY

+

为什么“看懂一张图”和“生成一张图”可能不该共用同一视觉入口

+ +
+
UNDERSTANDING WANTS语义稳定
  • 同一对象跨风格仍接近
  • 忽略不重要像素噪声
  • 方便与语言概念对齐
+
VS
+
GENERATION WANTS细节可逆
  • 保留纹理与颜色
  • 保留精确空间布局
  • 能解码回高质量像素
+
+ +
+
+
UNDERSTAND
Semantic encoder

更关心概念与关系

+
GENERATE
{Array.from({ length: 16 }).map(() => )}
Generation encoder

更关心可恢复视觉细节

+
+ ↘   ↙ +
SHARED COREONE AUTOREGRESSIVE TRANSFORMER

文字与视觉生成序列在主干中统一

+
+ +
+
Janus

解耦理解与生成视觉编码路径,保留统一自回归主干。

+
JanusFlow

语言自回归 + 图像 rectified flow,并对两种表示做对齐。

+
Janus-Pro

延续基本架构,改进训练策略、数据与规模。

+
+ +

+ “统一模型”在这里不等于“一个视觉编码器包办全部”。一手来源: + Janus · + JanusFlow · + Janus-Pro。 +

+
+ +
+

16 DEEPSEEK-OCR · OCR2

+

最反直觉的一条 DeepSeek 路线:把文本先画成图,再用视觉 Token 压回去

+

+ 这不是为了把已有数字文字变得更清晰,而是在问:二维页面能否像人类速览一页纸那样, + 用远少于原始文本序列的位置保留足够信息? +

+ +
+
TEXT CONTEXT长文字 Token 序列
{Array.from({ length: 30 }).map(() => )}
+ RENDER → +
2D PAGE把顺序压进空间
+ ENCODE → +
VISION TOKENS更短视觉序列
{Array.from({ length: 12 }).map(() => )}
+ DECODE → +
OCR OUTPUT恢复文字与结构

压缩越强,解码错误通常越多。

+
+ +
+ DEEPENCODER / ≈380M +
SAM-base≈80M · 高分辨率局部
+
CLIP-large≈300M · 语义压缩
+
16× downsample4096 → 256 positions @ 1024²
+
+ +
+
<10× COMPRESSION≈97%

论文报告的解码精度区域

+
20× COMPRESSION≈60%

论文报告的更强压缩区域

+
100 VISION TOKENS作者报告优于 GOT-OCR2.0

OmniDocBench 特定设置

+
A100-40G>200K pages / day

论文生产管线报告值

+
+ +
+ AUTHOR-REPORTED, NOT A LAW +

压缩率依赖文本 tokenizer、渲染、字体、语言、页面版式、视觉 Token 定义与解码目标。上述数字不是本站复测,也不代表任意文档。

+
+ +

OCR2:阅读顺序本身也可以学习

+
+
+ SEMANTIC REORDER → +
{Array.from({ length: 6 }).map((_, index) => {index + 1})}
+ +
标题 → 左栏 → 图注 → 表格 → 右栏
+
+

+ DeepSeek-OCR2 用 DeepEncoder V2 根据图像语义动态重排视觉 Token, + 把问题描述为两个串联的一维因果结构:视觉侧决定读取序列,语言侧沿该序列解码。 + 这改善序列组织,但不等于二维结构已被完全解决。 +

+
+ +
+

17 KIMI SPOTLIGHT

+

Kimi 三代 MoonViT 的主线,不是“像素越来越大”,而是训练制度越来越统一

+ +
+
+ KIMI-VL

MoonViT

+
INIT
SigLIP-SO400M
OBJECTIVE
SigLIP + caption
ALIGN
0.1T 显式对齐
VIDEO
长上下文输入
+
+ +
+ KIMI K2.5

MoonViT-3D

+
INIT
SigLIP continual
OBJECTIVE
caption NTP
ALIGN
ViT / projector bridge
VIDEO
共享参数 + 时间池化
+
+ +
+ KIMI K3

MoonViT-V2

+
INIT
从头训练
OBJECTIVE
共同 NTP
ALIGN
无 post-hoc stage
VIDEO
共享参数 + 视觉闭环
+
+
+ +
+ THE REAL LINEAGE +

对齐一个强视觉塔用生成目标统一图像 / 视频从头共同优化视觉塔与超大 MoE 主干

+
+
+ +
+

18 KIMI-VL

+

MoonViT:把 NaViT 原生分辨率、SigLIP 语义和稀疏 MoE 接到一起

+ +
+
INPUT
不同分辨率 / 长宽比

NaViT packing

+
VISION
MoonViT ≈400M

SigLIP init · abs pos + 2D RoPE

+
COMPRESS
{Array.from({ length: 4 }).map(() => )}
2×2 pixel shuffle

空间位置约降 4×

+
PROJECT
2-layer MLP

视觉 → 语言维度

+
BACKBONE
{Array.from({ length: 9 }).map(() => )}
Moonlight 16B

约 2.8B 激活 MoE

+
+ +

独立视觉阶段的目标

+
+ L = LSigLIP + 2 × Lcaption + 图文对比让表示具有开放语义,图像条件 caption 让视觉塔朝生成式任务靠近。 +
+ +

从 5.2T 纯文本主干到额外 4.4T 多模态训练

+
+
LANGUAGE START5.2T text

Moonlight 中间 checkpoint

+
VIT + ALIGN2.0T + 0.1T

MoonViT / projector

+
JOINT1.4T

图文联合预训练

+
COOLDOWN0.6T

高质量分布

+
LONG0.3T

8K → 128K

+
+ +

+ 这些数字来自 Kimi-VL 官方论文。 + 这一代已经做联合预训练,却仍有独立 ViT 与 0.1T alignment,因此不属于 K3 定义的“无事后对齐”。 +

+
+ +
+

19 KIMI K2.5

+

MoonViT-3D:图像和视频共享;zero-vision 只发生在 SFT

+ +
+
{Array.from({ length: 4 }).map((_, index) => t{index + 1})}
+ +
SPATIAL帧内注意力

每帧内部对象与布局

+ + +
TEMPORAL帧间注意力

动作顺序与变化

+ +
POOL4× 时间压缩

四帧 patch 轻量聚合

+
+ +
+
KIMI-VLSigLIP contrastive + caption CE

视觉语义对齐 + 生成目标

+ +
K2.5caption CE only

图像 / 视频条件 next-token generation

+
+ +

“zero-vision SFT”最容易被误读

+
+
PRETRAIN≈15T vision-text

图像 / 视频早已进入基础能力

+
SFTtext-only

用 IPython 程序操作激活视觉工具行为

+
RLvisual outcome tasks

grounding、counting、文档、图表与 STEM

+
+ +
+ ZERO-VISION ≠ NO VISION DATA +

“zero-vision”只修饰 SFT。K2.5 预训练约 15T 图文 Token,之后的 outcome-based RL 也使用视觉任务。作者还报告部分文本基准在视觉 RL 后提升,但这不是普遍规律。

+
+ +

一手来源:Kimi K2.5 Technical Report

+
+ +
+

20 KIMI K3 · NATIVE MULTIMODALITY

+

K3 的关键变化:不再把视觉塔事后嫁接到已经成型的语言主干

+

+ K3 报告把语言与视觉从训练开始共同优化,以 next-token prediction 作为共同训练制度, + 并取消 post-hoc modality-alignment stage。视觉、代码、渲染物和新观察还能在百万 Token 级 Agent 轨迹里反复交错。 +

+ +
+
+ POST-HOC CONNECTOR REGIME +
+ TEXT-ONLY LLMVISION TOWERALIGN BRIDGEMULTIMODAL SFT +
+

语言主干先成型,视觉通过独立阶段找入口。

+
+
+ K3 NATIVE REGIME +
+ TEXT DATA+VISION DATAJOINT NTPVISUAL AGENT LOOP +
+

视觉塔、projector 与 2.8T MoE 主干在共同目标下从训练早期协同。

+
+
+ +
+
DEPTH27 layers

Vision Transformer

+
SIZE≈0.4B

MoonViT-V2

+
NORMRMSNorm

无 bias

+
IMAGE / VIDEOshared

空间 / 时间分解注意力

+
SPATIAL4× fewer

2×2 pixel shuffle

+
MAX IMAGE≈3584²

报告支持上限

+
+ +
+
K3 把像素直接塞进 LLM错误
+
K3 不需要视觉 projector错误
+
MoonViT-V2 → 轻量 MLP → LLM报告架构
+
+ +

一手来源:Kimi K3 Technical Report

+
+ +
+

21 FROM-SCRATCH VISION

+

为什么放弃一个强 SigLIP 初始化?K3 的答案来自联合优化稳定性

+

+ K3 报告称,在与 2.8T MoE 主干联合训练的消融中,SigLIP 初始化的 MoonViT-3D 持续出现更高梯度范数和更多尖峰; + 从头训练的 MoonViT-V2 梯度更低、更平稳,并在其视觉评测中达到相当能力。 +

+ +
+
HIGHgradient normLOW
+
+ + +
MoonViT-3D · SigLIP initMoonViT-V2 · from scratch
+
+
+ +
+
OBSERVATION报告曲线

SigLIP 初始化视觉塔梯度更高、尖峰更多。

+
AUTHOR CONCLUSION本配方不需要对比初始化

从头 NTP 可达到相当视觉评测。

+
NOT PROVEN所有 VLM 都应从头训练

架构、规模、数据和优化器改变后结论可能变化。

+
+ +

+ 图中只复现论文主张的趋势,不重绘原始数值。正确表述是“在 K3 的训练消融中”,而不是“SigLIP 初始化普遍不稳定”。 +

+
+ +
+

22 PROGRAMMATIC MULTIMODAL DATA

+

当代码能渲染世界,多模态数据就不再只是“图片配一句话”

+

+ K3 扩大程序化多模态数据,把代码与其可渲染产物绑在一起:SVG、3D、Web、游戏、CAD、动效和视频编辑。 + 这些样本天然包含可执行规格、视觉结果与可修改源程序。 +

+ +
+
SPEC
“做一个可交互的轨道图”

自然语言需求与约束

+
CODE
<svg>
+  <path ... />
+</svg>
可执行中间表示

HTML / SVG / JS / CAD

+
RENDER
视觉结果

模型可以重新观察

+
VERIFY / EDIT
比较规格并修改

形成视觉闭环

+ +
+ +
+ {["SVG", "WEB", "3D", "GAME", "CAD", "MOTION"].map((item, index) =>
{String(index + 1).padStart(2, "0")}{item}
)} +
+ +
+ WHY THIS CHANGES TRAINING +

传统 caption 只告诉模型“图里有什么”;程序化样本还能告诉它“怎样产生、怎样修改、怎样验证这个视觉结果”。这把理解、生成、代码和 Agent 行为接到同一数据闭环。

+
+
+ +
+

23 INTERACTIVE LAB

+

现在亲手调分辨率、训练制度、光学压缩与视觉工具闭环

+

+ 前三个实验分别抓住容量、训练和压缩;第四个实验专门证明“文字思考更长”和“主动获得新视觉证据”不是同一种测试时计算。 +

+ +
+ +
+

24 MULTIMODAL HALLUCINATION

+

模型为什么会描述出图里不存在的东西?因为答案来自证据与先验的竞争

+ +
+
+ VISUAL EVIDENCE
  • resize 丢小目标
  • connector 压缩
  • 遮挡 / 模糊
+
+
VS
+
+ LANGUAGE PRIOR
  • 厨房常有微波炉
  • 训练描述常共现
  • 流畅答案得到偏好
+
+
+ +
+
01 / INPUT LOSS像素证据已经没了

缩放、裁剪、采帧与图像质量。

+
02 / INTERFACE LOSS视觉塔看见但没传过去

query、projector、Token 压缩与注意力。

+
03 / GENERATION BIAS常见答案比视觉更“顺”

语言先验、共现、奖励与解码。

+
+ +

+ POPE 用对象存在性轮询诊断幻觉; + HallusionBench 进一步用控制组问题拆开语言幻觉、视觉错觉、回答倾向和逻辑一致性。 + 单个 yes/no 分数不能覆盖属性、关系、OCR 与长回答忠实度。 +

+ +
+
SEE提高有效视觉证据

动态分辨率、裁剪、负例、密集描述。

+
GROUND绑定位置与引用

region、bbox、OCR span、证据截图。

+
ACT允许主动再看

zoom、OCR、Python、检索与工具。

+
VERIFY独立检查

计算、规则、环境 final state 与拒答。

+
+
+ +
+

25 EVALUATION MAP

+

一个多模态总分,会把感知、OCR、知识和推理揉成无法诊断的平均数

+ +
+
BENCHMARKPERCEPTIONOCRKNOWLEDGEREASONVIDEO
+ {[ + ["MMBench", 3, 2, 2, 2, 0], + ["MMMU", 2, 2, 3, 3, 0], + ["MathVista", 2, 2, 1, 3, 0], + ["OCRBench", 1, 3, 1, 2, 0], + ["Video-MME", 2, 1, 2, 2, 3], + ].map(([name, ...scores]) => ( +
+ {name}{scores.map((score) => )} +
+ ))} +
+ +
+
MMMU11.5K questions

6 大学科、30 学科、183 子领域、30 种图像类型。

+
MATHVISTA6,141 examples

28 个已有数据集 + 3 个新数据集。

+
OCRBENCH29 datasets

识别、VQA、KIE 与手写公式。

+
VIDEO-MME900 videos

254 小时、2700 问答,短中长视频。

+
+ +
+ REPORT THE WHOLE CONFIGURATION + checkpoint + preprocessing + max pixels / frames + prompt + context + tools + evaluator + score +

同名模型若 tile、帧数、字幕或工具预算不同,就不是同一个评测条件。

+
+
+ +
+

26 VISUAL AGENTS

+

从回答一张图到改变桌面:视觉输入一旦进入行动闭环,安全边界也跟着扩大

+ +
+
LEVEL 1Single-shot VQA

一次图像观察 → 文字答案

验证:参考答案
+
LEVEL 2Visual tool reasoning

crop / OCR / Python → 新观察

验证:计算或证据
+
LEVEL 3GUI / environment Agent

连续截图 → 鼠标 / 键盘 / 代码

验证:环境 final state
+
+ +
+
OBSERVE截图 / 图片 / 视频
+
REASON目标、证据、下一动作
+
ACTcrop / code / click / type
+
NEW STATE环境改变并返回新视觉
+ + +
+ +

+ VisualWebArena 把视觉网页任务放进可执行网站; + OSWorld 使用真实桌面应用与执行式验证。 + 此时“看懂截图”不等于“坐标落对”,更不等于“跨应用最终状态正确”。 +

+ +
+
TRUSTED用户目标与系统策略

决定允许的目标、权限与审批。

+
UNTRUSTED网页 / 文档 / 图片文字

可能包含间接提示注入,不能自动升级为指令。

+
CONTROLLED工具接口与执行环境

最小权限、可回滚、可审计与独立验证。

+
+
+ +
+

27 SYSTEMS · MOE

+

动态图像让训练 batch 变得不规则;稀疏 MoE 又把不规则传给路由与通信

+ +
+
VARIABLE LENGTH
样本计算量差异

长图、长视频和多图样本形成 straggler。

+
PACKING
padding 与碎片

按视觉 Token 分桶、NaViT / sequence packing。

+
PIPELINE
ViT 与 LLM 耗时不同

K3 报告把部分 ViT 工作塞进 pipeline bubble。

+
ROUTING
{Array.from({ length: 12 }).map((_, index) => )}
视觉 Token 专家负载

路由专化、热点与稳定性仍缺公开细证据。

+
+ +
+ {["视觉 Token 分桶", "动态 batch", "Patch / sequence packing", "Context parallel", "限制最大像素 / 帧", "ViT / LLM 重叠调度"].map((item, index) => ( +
{String(index + 1).padStart(2, "0")}{item}
+ ))} +
+ +
+ THROUGHPUT HYGIENE +

Kimi-VL 与 K3 的吞吐或 bubble 隐藏结论都依赖硬件、精度、batch、分辨率分布、并行拓扑和比较基线,只能写成各自配置下的作者报告。

+
+ +

+ 视觉 Token 进入 MoE 后是否形成稳定“视觉专家”,当前公开证据不足。本章把它列为开放问题,不从少量路由热图猜测语义专化。 +

+
+ +
+

28 AUDIT CHECKLIST

+

以后再看到一款“原生多模态旗舰”,用这十问把宣传词还原成技术事实

+ +
+ {audits.map(([title, question], index) => ( +
{String(index + 1).padStart(2, "0")}

{title}

{question}

+ ))} +
+ +
+ STILL OPEN +

当前没有定论的问题

+
    +
  • 从头训练视觉塔的稳定性结论,能否跨规模、数据和架构复现?
  • +
  • 视觉 Token 在稀疏 MoE 中是否产生稳定、可迁移的专家专化?
  • +
  • 光学上下文压缩何时优于文本 tokenizer、KV 压缩或外部 memory?
  • +
  • 视觉 RL 对文本任务的正迁移,来自算法、数据难度还是 reward 结构?
  • +
  • vision-in-the-loop 的收益中,模型、工具、harness 与 verifier 各占多少?
  • +
+
+ +
+ YOU NOW HAVE THE MAP +

+ 从像素到视觉 Token,从 CLIP 语义到 connector,从高分辨率、文档和视频到统一理解生成, + 再从 DeepSeek 三分支与 Kimi 三代 MoonViT 走到视觉 RL、Agent、安全与系统。 + 你现在可以不依赖营销命名,逐层解释一款多模态模型到底改变了什么。 +

+
+ + +
+ +
+

PRIMARY PAPER CHAIN

+

本章的一手论文链

+

+ 正文只保留改变表示、接口、训练目标、系统策略或评测方法的关键节点。所有链接直达论文或正式会议页面; + 报告数字不做跨模型无条件横比。 +

+
+ {paperChain.map(([year, title, href, note]) => ( + + {title}

{note}

+
+ ))} +
+
+
+
+ + + diff --git a/src/pages/progress/index.astro b/src/pages/progress/index.astro index fe7caae..897113e 100644 --- a/src/pages/progress/index.astro +++ b/src/pages/progress/index.astro @@ -18,6 +18,7 @@ const workstreams = [ { label: "指令微调与人类偏好", value: 75, next: "加入真实偏好分歧样本、RM 长度偏置与 PPO/DPO 小模型复现" }, { label: "推理与测试时扩展", value: 76, next: "真实模型采样曲线、PRM 案例与逐篇图表精读" }, { label: "工具使用与长程 Agent", value: 74, next: "补真实环境 traces、cross-harness 对照、Agent RL 训练曲线与安全案例" }, + { label: "原生多模态", value: 76, next: "补真实视觉 Token traces、跨分辨率消融、OCR 失败案例与视觉 Agent 安全轨迹" }, { label: "稀疏计算与 MoE", value: 74, next: "补充真实集群 traces 与专家特化案例" }, { label: "长上下文专题", value: 72, next: "加入更多论文逐图笔记与真实模型配置对比" }, { label: "大规模训练系统", value: 71, next: "补真实集群 traces、故障案例与精确 topology 配置" }, @@ -46,7 +47,7 @@ const workstreams = [
OVERALL
专题平均 {average}%
READABLE
{published} 个首版可读专题
ACTIVE
{researching} 个研究/写作中
-
UPDATED
2026-07-29 06:56 CST
+
UPDATED
2026-07-29 07:46 CST
MODE
持续迭代,不锁死版本
@@ -56,7 +57,7 @@ const workstreams = [

01 WORKSTREAMS

-

十七条工作流同时推进,但不混淆“有页面”和“已核验”

+

十八条工作流同时推进,但不混淆“有页面”和“已核验”

内容首版优先打通全局脉络;随后每轮迭代选择一个专题推进到论文/工程层,并做独立事实复核。 @@ -93,8 +94,8 @@ const workstreams = [

K3 报告已结构化拆解

47 页报告目录、151 条参考来源和架构/后训练/系统主线已经提取。

16 专题知识图

从语言模型基础到评测安全,包含先修依赖和三条贯穿案例。

编辑式网站系统

响应式导航、章节模板、侧栏、进度、论文链和证据提示组件。

-

三十九个原创交互视图

K3、语言模型前史、Transformer、DeepSeek、长上下文、MoE、推理、Agent,以及训练系统、Scaling、数据工程、数值和 Alignment 专题。

-

十三篇首版长文

K3、语言模型前史、Transformer、DeepSeek、Scaling、数据工程、长上下文、MoE、后训练、推理、Agent、训练系统与数值优化专题。

+

四十三个原创交互视图

K3、语言模型前史、Transformer、DeepSeek、长上下文、MoE、推理、Agent、多模态,以及训练系统、Scaling、数据工程、数值和 Alignment 专题。

+

十四篇首版长文

K3、语言模型前史、Transformer、DeepSeek、Scaling、数据工程、长上下文、MoE、后训练、推理、Agent、原生多模态、训练系统与数值优化专题。

语言模型前史深度专题

八张独立问题账、33 个正式节点、20 段长文与概率—向量—记忆—对齐四联实验。

Transformer 深度专题

十张独立问题账、40 个正式节点、21 段正文与 QKV—Mask—多头位置—Block 成本四联实验。

Scaling Laws 深度专题

九张账、29 个一手节点、DeepSeek/Kimi 双谱系与曲面—部署—复用—涌现四联实验。

@@ -106,7 +107,8 @@ const workstreams = [

数值、优化器与稳定性深度专题

十张账、36 个一手节点、K2/K3 与 DeepSeek-V3/V4 双谱系,以及格式—状态—更新—失稳四联实验。

指令微调与人类偏好深度专题

十二张账、44 个一手节点、DeepSeek/Kimi 后训练双谱系,以及 SFT—RM—PPO/DPO—配方四联实验。

工具使用与长程 Agent 深度专题

十四张账、52 个一手节点、DeepSeek/Kimi Agent 双谱系,以及循环—工具契约—可靠性—长程 RL 四联实验。

-

314 篇关键论文索引

新增 TextWorld、WebArena、ToolSandbox、AgentDojo、RAGEN、Agent Lightning、AgentENV 等 34 个 Agent 节点。

+

原生多模态深度专题

十六张账、55 个一手节点、DeepSeek 三分支、Kimi 三代 MoonViT,以及 Token—连接器—光学压缩—视觉闭环四联实验。

+

355 篇关键论文索引

新增 ResNet、ALIGN、NaViT、DeepSeek-VL2、Janus、DeepSeek-OCR、Vision-R1 等 41 个多模态节点。

公开仓库与自托管发布

源码公开到 git.k1412.top,网站由不可变镜像、Compose Manager 与 HTTPS 交付。

@@ -132,7 +134,7 @@ const workstreams = [
P1推理二轮深化

真实 pass@k 曲线 → PRM 失败案例 → 逐篇图表精读

案例库 + 真实 traces
P1Alignment 二轮深化

真实偏好分歧 → RM 长度偏置 → PPO/DPO 小模型复现

数据案例 + 可复现实验
P1Agent 二轮深化

真实环境 traces → cross-harness ablation → Agent RL 曲线与提示注入案例

运行证据 + 安全案例库
-
P2原生多模态

ViT/CLIP → connector VLM → Kimi-VL/MoonViT-V2

视觉 Token 流程图
+
P1原生多模态二轮

真实视觉 Token traces → 跨分辨率 / connector 消融 → OCR 与视觉 Agent 安全失败案例

运行证据 + 逐图笔记
@@ -184,6 +186,9 @@ const workstreams = [
Attention 权重与因果解释永久分离

热力图可描述中间权重和提出假设;因果结论必须补消融、patching 或反事实干预。

Agent 按十四张账组织

模型、harness、工具契约、环境、评测器、可靠性与安全不再被压成一个 Agent 分数。

Agent 完成必须回到 final state

function schema、工具执行、业务状态、策略合规与 pass^k 分层评价;模型自报完成不作为证据。

+
原生多模态按五层管道与十六张账组织

像素、视觉塔、压缩 / connector、主干与输出 / 工具闭环分开定位;“原生”再拆成数据、目标、优化、输入输出与 Agent 五维。

+
DeepSeek 多模态永久保留三分支

VL/VL2 的理解、Janus 的统一生成、OCR 的光学压缩不画成错误的单向代际谱系。

+
光学压缩实验分开报告值、教学插值与证据外区域

DeepSeek-OCR 的 <10× / 20× 锚点标成作者报告;中间只做显式教学插值,超过范围不外推。