单篇 · 无期号ARTICLE
当模型学会遗忘:R-SWA 注意力机制的技术拆解
本期要点POINTS
本期要点
关键实测数据DATA
关键实测数据
百度开源 Unlimited OCR,号称"500M 参数吊打 235B 大模型"。这个宣称有几分真、几分营销?论文揭示了一颗值得关注的注意力机制内核——R-SWA。
"500M vs 235B" 的真实面目
2026 年 6 月,百度开源了 Unlimited OCR——一个基于 DeepSeek-OCR 改进的文档解析模型。随之在社交网络上传播的是:
3B 总参数、仅 500M 激活参数的 OCR 模型,在 OmniDocBench 上以 93%+ 的 Overall 分数,超越了 Qwen3-VL 235B(~89%)。
500M 激活 vs 235B 全参。但这组数据需要放在正确的参考系中解读。
在 OmniDocBench v1.5 上几个代表性模型的分数[^1]:
| 模型 | 参数量 | Overall ↑ |
|---|---|---|
| InternVL3 | 78B | 80.33 |
| Qwen2.5-VL | 72B | 87.02 |
| Qwen3-VL | 235B | 89.15 |
| DeepSeek-OCR(基线) | 3B-A0.5B | 87.01 |
| Unlimited OCR | 3B-A0.5B | 93.23 |
| DeepSeek-OCR 2 | 3B-A0.5B | 89.17 |
← 表格可左右滑动查看
两个关键信息被"500M vs 235B"的叙事掩盖了:
- DeepSeek-OCR 本身就达到了 87%——只比 235B 的 Qwen3-VL 低 2 个百分点。OCR 任务上通用模型的规模优势远不如在其他领域显著。
- 真正更有意义的对比是 Unlimited OCR 和它的基线 DeepSeek-OCR 之间的差距——同样架构、同样参数量,唯一的变化是把标准 MHA 换成了 R-SWA。分数从 87.01 跳到 93.23,净增 6.22 个百分点。
"500M 吊打 235B" 确实是营销话术——跨量级对比永远存在"专项 vs 通用"的不可比性。但 R-SWA 这个注意力机制本身打了一场硬仗:只改 attention,4000 步 fine-tune,相同参数量的模型性能提升 6.22%。
问题根源:长序列解码的 KV Cache 诅咒
所有基于 LLM 的 OCR 模型(包括 DeepSeek-OCR)都面临同一个困境:KV cache 随输出长度线性增长。
假设一份 20 页的文档:
- DeepEncoder 将每页压缩为 256 visual tokens → prefix = 5120 tokens
- 每页平均输出约 5120 tokens → total output ≈ 102K tokens
标准 MHA 下每层的 KV cache:
C_MHA(T) = L_prefix + L_output = 5K + 102K = 107K
仅 KV cache 就占满了单张 A100。论文 Fig.3 展示了解码延迟随序列长度增长的趋势:DeepSeek-OCR 的 FlashAttention 耗时在 6K 步时已达 ~18μs/步,仍在上升[^1]。这就是所有端到端 OCR 模型只能逐页 for-loop 处理的根本原因。
R-SWA 核心设计

认知科学灵感
论文描述了一个很直觉的观察:人类抄书时注意力聚焦在三处:
- 原书(对应 visual tokens):始终可见
- 刚写的几个字(对应最近几个 output tokens):大约只看最近 3-5 个
- 写好的内容(对应更早的 output tokens):不保留精确记忆,只保留"软遗忘"
这个观察对应了两个关键设计原则:
- visual/reference tokens 永久驻留——它们是最核心的信息源,不应随滑动窗口被驱逐
- output tokens 只需要近期上下文——更早的历史不需要精确回溯
Attention Scope 定义

R-SWA 的 attention scope 分为两段[^1]:
N(t) = P ∪ D_n(t)
P = {1, ..., L_m} ← 全部 visual + prompt tokens(永久可见)
D_n(t) = { j | max(L_m+1, L_m+t-n)
≤ j ≤ L_m+t-1 } ← output 最近的 n 个 tokens(默认 n=128)
每个 decode token 的 attention 计算只在 m + n 个 token 内进行——通常约 5K-10K(visual)+ 128(output)= 一个固定值。
与标准 SWA 的关键区别
| 维度 | 标准 SWA | R-SWA |
|---|---|---|
| Visual tokens | 随窗口滑动逐步驱逐 | 永久保留,从不驱逐 |
| Output tokens | 滑动窗口 | 滑动窗口(n=128) |
| Visual 信息衰减 | 渐进模糊 | 保真度不损 |
| 适用场景 | 文本生成 | OCR/ASR/翻译等 reference-based 任务 |
← 表格可左右滑动查看
KV Cache 管理
KV cache 实现为固定容量的环形缓冲区[^1]:
C_R-SWA(T) = L_m + min(n, T) ≤ L_m + n
无论输出 1K tokens 还是 100K tokens,decode-side KV cache 永远不超过 L_m + 128。
| 输出长度 | MHA KV Cache | R-SWA KV Cache | 压缩比 |
|---|---|---|---|
| 256 | 5,376 | 5,248 | ~1x |
| 1K | 6,144 | 5,248 | 1.17x |
| 10K | 15,360 | 5,248 | 2.9x |
| 100K | 105,000 | 5,248 | 20x |
← 表格可左右滑动查看
注:假设 L_m = 5K(约 20 页文档的 visual tokens),实际取决于图像分辨率和页数。
推理速度实测
论文 Table 4 给出了理论推理速度天花板对比[^1](prefill length=10,理想并发条件):
| 输出长度 | DS-OCR TPS | U-OCR TPS | Δ |
|---|---|---|---|
| 256 | 7,229 | 7,229 | 0% |
| 512 | 7,468 | 7,715 | +3% |
| 2,048 | 7,167 | 7,881 | +10% |
| 6,144 | 5,823 | 7,848 | +35% |
← 表格可左右滑动查看
在 6K 输出时 Unlimited OCR 比基线快 35%。论文解释:标准 MHA 的 FlashAttention kernel 在 KV cache 长度跨越特定对齐边界时会出现数据传输效率骤降(Fig.3 中的 spike),R-SWA 完全避免了这个问题[^1]。
R-SWA 为何提高准确率
仅改变 attention 机制、不增加任何参数量,Unlimited OCR 比 DeepSeek-OCR 高出 6.22 个百分点。
论文 Table 2 展示了全部 9 种子类型文档(PPT、学术论文、书籍、考试卷、报纸、杂志、笔记等)的详细对比,R-SWA 在每一项上都全面优于或持平于基线[^1]。
一个合理的推测(论文未明说,但可从数据推断):标准 Full Attention 在长序列解码时,注意力分布随序列增长而发散,模型需要对过去所有 token 计算 attention,信息被稀释。R-SWA 强制模型聚焦在近 128 个 output tokens 和全部 visual tokens 上,反而让注意力更集中。
OmniDocBench 详细对比
论文 Table 1 展示了 Unlimited OCR 与基线 DeepSeek-OCR 的逐项对比[^1]:
| 指标 | DS-OCR | U-OCR | Δ |
|---|---|---|---|
| Overall ↑ | 87.01 | 93.23 | +6.22% |
| Text Edit ↓ | 0.073 | 0.038 | -48% |
| Formula CDM ↑ | 83.37 | 92.61 | +11.1% |
| Table TEDS ↑ | 84.97 | 90.93 | +7.0% |
| Read-order Edit ↓ | 0.086 | 0.045 | -48% |
← 表格可左右滑动查看
多页长文 One-shot
论文 Table 3 展示了 Unlimited OCR 的多页处理能力[^1](自建测试集):
| 页数 | Edit Distance ↓ | Distinct-35 ↑ |
|---|---|---|
| 2 | 0.036 | 99.87% |
| 5 | 0.045 | 99.98% |
| 10 | 0.053 | 99.83% |
| 20 | 0.057 | 99.89% |
| 40+ | 0.107 | 96.90% |
← 表格可左右滑动查看
论文分析认为 40+ 页时 Edit Distance 上升到 0.107 的主要原因是 DeepEncoder 的 Base 模式(1024×1024)分辨率不足以识别小字,而非 R-SWA 丢失方向[^1]。
"Unlimited" 的边界
论文诚实地标注了当前限制[^1]:
- Prefill length 仍然是瓶颈。20 页 ≈ 5K visual tokens。200 页时 prefill 本身会撑爆 32K context。
- Base 模式(1024×1024)在多页场景下遇到小字识别瓶颈。40+ 页测试中的错误大量来自小字模糊问题。
- 当前最大上下文 32K,对应约 ~30 页文档的极限(128K 训练版已在路线图上)。
训练细节
论文 §4 详细说明了训练设置[^1]:
| 项目 | 取值 |
|---|---|
| 起点 | DeepSeek-OCR checkpoint |
| 训练步数 | 4000 steps |
| 训练数据 | 200 万 PDF 样本(9:1 单页:多页) |
| 单页标注 | PaddleOCR 标注 → 拼接坐标 + 内容 |
| 多页构造 | 随机拼接 2~50 页,<page> 分隔,pack 到 32K |
| 冻结部分 | DeepEncoder(冻结,只训 LLM) |
| 优化器 | AdamW + cosine annealing, lr=1e-4 |
| 硬件 | 8×16 A800, global batch=256 |
| 并行方案 | DeepEP + expert parallelism=4, Megatron-LM |
← 表格可左右滑动查看
只训 4000 步说明 R-SWA 属于低成本替换——不改变模型架构,只改 attention mask + KV cache 管理。
这为什么值得关注
对 OCR 从业者
大批量文档 OCR 场景(银行流水、发票、论文库):
- 扔掉 for-loop 分页逻辑。20 页文档一次推理,延迟恒定。跨页的阅读顺序、表格、引用连贯性相比逐页处理有质的提升。
- 硬件成本骤降。恒定 KV cache 意味着不需要为长文档预留巨量显存,8GB 消费级显卡也能处理长文档。
- 部署简单。HuggingFace transformers 直接可用,SGLang / vLLM 均已支持[^2]。
对 Attention 机制研究者
R-SWA 填补了一个被忽视的空白:在 reference-based 长序列解码场景下,visual tokens 不应该滑动。
论文中给出了具体架构参数[^3]:hidden=1280, heads=10, head_dim=128, MoE intermediate=896, 64 experts, top-6 routing, vocab=129,280。并非通用 attention 方案,而是针对一个精心剪裁的架构。
论文明确指出了向 ASR(音频固定、文本生成滑动)和翻译(源文本固定、目标文本生成滑动)的迁移路线[^1]。这个价值大于 OCR 本身。
对大模型格局的观察
Unlimited OCR 间接回答了一个更大的问题:端到端 OCR 赛道已极度成熟。
- 3B MoE 模型已在 OCR 专项上击败 235B 通用模型
- DeepEncoder 的 16× 压缩比已相当好
- 现在连 attention 机制也找到了最适合这个任务的变体
留给后来者的创新空间正在收窄——除非在训练数据量或数据质量上做出突破性差异。
诚实评价
回到最初的问题:"500M 吊打 235B" 是否事实?
- 在 OmniDocBench OCR 单项上,Unlimited OCR 确实超越了 Qwen3-VL 235B。这个结论是事实
- 但这是 OCR 专项模型 vs 通用 VL 模型的跨量级对比,字面上正确但不反映真实差距。这个叙事是营销
- R-SWA 本身的 6.22% 提升(同参数量下)和 35% 推理加速(6K 输出时)是实打实的贡献
参考文献
[^1]: Baidu Inc. Unlimited OCR Works. arXiv:2606.23050, 2026. https://arxiv.org/abs/2606.23050 [^2]: Baidu. Unlimited-OCR. GitHub, 2026. https://github.com/baidu/Unlimited-OCR [^3]: Dicklesworthstone. franken_ocr — Pure-Rust CPU-only OCR engine for Unlimited-OCR. GitHub, 2026. (提供架构参数逆向分析)
发布于 2026-07-17 | 锐Owl · AI 观察者 · 解构者 · 传播者