DeepSeek-OCR降本增效,10×暴力压缩还能读得清

DeepSeek-OCR 模型发布,给 OCR 领域带来了不小的震动。

但它并不是大家认知中的提升 OCR 领域的文字识别能力,而是在于通过光学压缩技术解决长文本处理中的计算效率问题

换句话说,现在大模型 token 消耗成本随着输入的文字增长而增长。

如果把需要消耗的 token 固定在一个可控的范围内,无论你输入多少文字,总的计算成本就是可控的。

因此,DeepSeek-OCR 给我们提供了一个新思考视角:把输入的文字,全部限定在一张图片上,来控制大模型消化 token 的成本

可以看出,从 DeepSeek 诞生之日起,就一直在做控制成本、降低资源消耗的事情,让 AI 技术能够以低成本的方式推广给更多的人应用。

1. 首先回顾一下典型视觉编码器的局限性

现有的 VLMs 主要采用以下三种类型的视觉编码器:

  • 双塔架构

    • 例如 Vary,通过并行 SAM 编码器增加视觉词汇参数,适用于高分辨率图像处理。
    • 但这种架构需要双重图像预处理,增加了部署复杂度,并且在训练时难以实现编码器的流水线并行化。
  • 瓦片方法

    • 例如 InternVL2.0,通过将图像分割成小瓦片进行并行计算,降低高分辨率下的激活内存。
    • 但这种方法的原生分辨率较低(通常低于 512×512),导致大图像被过度分割,产生大量 token。
  • 自适应分辨率编码

    • 例如 Qwen2-VL,采用 NaViT 范式直接处理完整图像,通过基于块的分割避免瓦片并行化。
    • 虽然这种方法能够灵活处理多种分辨率,但在处理大图像时会消耗大量激活内存,甚至导致 GPU 内存溢出,训练时需要极长的序列长度。

2. DeepSeek-OCR 的架构设计

DeepSeek-OCR 的整体架构包括一个编码器(DeepEncoder)和一个解码器(DeepSeek3B-MoE-A570M)。

  • 编码器负责从图像中提取特征并进行 token 化和压缩。
  • 解码器则基于这些 token 和提示生成所需的文本输出。

2.1. DeepEncoder

DeepEncoder 是 DeepSeek-OCR 的核心组件,主要由两部分组成:

  • 以窗口注意力为主的视觉感知特征提取组件。
  • 以全局注意力为主的视觉知识特征提取组件。

为了充分利用现有预训练成果,研究者们采用了 SAM-base(80M 参数)和 CLIP-large(300M 参数)作为这两部分的主要架构。

  • 窗口注意力组件:负责处理高分辨率输入下的局部特征,通过窗口注意力机制高效处理大量 token。
  • 全局注意力组件:负责处理全局特征,通过全局注意力机制提取图像的整体语义信息。
  • 16× 压缩模块:在两个组件之间,通过两层卷积模块实现 16× 的 token 压缩,有效降低了激活内存。

2.2. 多分辨率支持

为了支持不同分辨率下的 token 数量需求,DeepEncoder 设计了多种分辨率模式,包括原生分辨率模式(Tiny、Small、Base、Large)和动态分辨率模式(Gundam、Gundam-M)。

这些模式通过动态插值位置编码实现,使得单个模型能够支持多种分辨率输入。

2.3. DeepSeek3B-MoE 解码器

解码器采用 DeepSeek3B-MoE 架构,激活参数量为 570M。

在推理过程中,模型激活 64 个专家中的 6 个以及 2 个共享专家,实现高效的文本重建。

解码器将压缩后的 token 重新转换为文本表示,通过非线性映射函数实现这一过程。

3. 数据引擎

为了训练 DeepSeek-OCR,研究者们构建了丰富多样的训练数据集,涵盖 OCR 1.0 数据、OCR 2.0 数据、通用视觉数据和纯文本数据。

  • OCR 1.0 数据:主要包括传统 OCR 任务,如场景图像 OCR 和文档 OCR。数据集包含从互联网收集的 3000 万页 PDF 数据,覆盖约 100 种语言。

  • OCR 2.0 数据:主要包括复杂人工图像的解析任务,如图表、化学公式和平面几何图形的解析。

  • 通用视觉数据:用于注入一般图像理解能力,帮助模型更好地处理通用视觉任务。

    • 在训练阶段使用了 20% 的通用视觉数据(如图像描述、目标检测和定位等任务的数据)。
    • 通过在训练阶段引入这些通用视觉数据,DeepSeek-OCR 能够学习到图像的基本特征和语义信息,从而在处理图像相关的任务时表现出更好的性能。
  • 纯文本数据:占总数据量的 10%,确保模型具备良好的语言能力。

  • 多语言数据处理:DeepSeek-OCR 采用了两种标注方式:粗标注(coarse annotations)和细标注(fine annotations)。

    • 粗标注:通过直接从完整数据集中提取文本内容来完成,这种方式主要教模型如何识别光学文本,尤其是一些少数民族语言。
    • 细标注:包括 200 万页的中文和英语数据,这些数据使用先进的布局模型(如 PP-DocLayout)和 OCR 模型(如 MinerU、GOT-OCR2.0)进行标注。

3.1. 训练流程

DeepSeek-OCR 的训练分为两个阶段:独立训练 DeepEncoder 和训练整个 DeepSeek-OCR 模型。

  • 训练 DeepEncoder:使用 2 个 epoch、1280 的批量大小,采用 AdamW 优化器和余弦退火调度器,学习率为 5e-5,训练序列长度为 4096。

  • 训练 DeepSeek-OCR:使用 20 个节点(每个节点配备 8 个 A100-40G GPU),采用管道并行策略,将模型分为 4 个部分进行训练。整个模型使用 AdamW 优化器和基于步长的调度器,初始学习率为 3e-5。

DeepSeek-OCR 使用较少的 token 数量就超越了现有模型:

  • 使用 100 个 token(640×640 分辨率),DeepSeek-OCR 超越了 GOT-OCR2.0(256 个 token)。
  • 使用 400 个 token(1280×1280 分辨率),DeepSeek-OCR 与现有最先进模型持平。
  • 使用 800 个 token(Gundam 模式),DeepSeek-OCR 超越了 MinerU2.0(平均 6000+ 个 token)。

GitHub 仓库:deepseek-ai/DeepSeek-OCR

Hugging Face 模型:deepseek-ai/DeepSeek-OCR