究极干货 —— 用最纯粹的语言,解析 DeepSeek OCR

news/2025/11/2 17:24:05/文章来源:https://www.cnblogs.com/OBCE666/p/19185136

究极干货 —— 用最纯粹的语言,解析 DeepSeek OCR

楔子

最近看到了一篇极具启发性的论文:《DeepSeek-OCR: Contexts Optical Compression》, AI 大神 Andrej Karpathy 对 DeepSeek 那篇 DeepSeek-OCR 的论文评价很高,你可能以为他会说:“哇,这个 OCR 模型真厉害,识别率又提升了!”

但他没有。相反,他几乎是挥了挥手说:“它是个不错的 OCR 模型,但这不重要。” 因为真正令人兴奋的,是这篇论文引出的一个更具颠覆性的想法:我们是不是从一开始就喂了错误的“语料”给 AI 了?

Karpathy 的核心观点是:也许,大型语言模型(LLM)的输入端,根本就不应该是“文本”(Text),而应该永远是“像素”(Pixels)。

这个想法听起来有点绕。我们明明有纯文本,为什么非要先把它“渲染”成一张图片,再喂给 AI 去看呢?

首先,这是个效率问题。

我们现在用“文本”喂 AI,是通过一个叫“Tokenizer”(分词器)的东西,把句子切成一个个“词元”(Token)。比如“Hello, world!”可能被切成 ["Hello", ",", " world", "!"]。问题是,这种方式可能很“浪费”。

而 DeepSeek-OCR 这篇论文无意中提供了一个佐证:它证明了,AI 可以只用 100 个“视觉词元”(Vision Tokens),就高精度地“解压缩”出包含 1000 个“文本词元”的原文内容。这就像,你给AI的不是一长串啰嗦的文字,而是一小块高密度的“信息压缩饼干”(图片)。AI “吃” 下去(处理)的上下文窗口更短,效率自然更高。

信息更“保真”,不再丢失细节

想象一下,你让 AI 帮你阅读一个网页。现在的“文本”输入方式,就像是你通过电话把网页内容念给 AI 听。所有加粗、颜色、字体大小、排版布局……这些视觉信息全都丢失了。

而“像素”输入方式,就像是你直接截了一张图发给 AI。哪个信息更全?不言而喻。Karpathy 认为,像素是一个“信息流更广”的输入方式。它不仅能处理纯文本,还能自然地理解文本的样式(粗体、颜色),甚至页面上任意的图表和图像。

绕开 AI 分词器

前面两点只是铺垫,Karpathy 真正的“怨念”在于:他想彻底干掉“分词器”(Tokenizer)。他直言不讳地“炮轰”:“我必须再说一次我有多讨厌分词器。分词器是丑陋的、分离的、非端到端的。它 ‘进口’ 了所有 Unicode 编码、字节编码的丑陋之处,继承了大量历史包袱,还带来了安全/越狱风险……它必须被淘汰。”

为什么他这么恨分词器?分词器就像是 AI 的“嘴替”和“眼替”,它强行介入在“原始文本”和“AI 大脑”之间。这个“中间商”不仅笨拙,而且会扭曲信息。

Karpathy 举了个绝妙的例子:一个笑脸表情符号 “😀”。通过“分词器”,AI 看到的不是一张“笑脸”,而是一个奇特的内部代码,比如 [tok482]。AI 无法利用它在看图时学到的关于“人脸”和“微笑”的知识(迁移学习)来理解这个符号。

但如果输入的是一张包含“😀”的图片,AI 的“视觉”部分会立刻认出:哦,这是一张微笑的脸。哪个更符合直觉?哪个更智能?像素输入,让 AI 得以“眼见为实”。

重新定义 AI 的“输入”与“输出”

Karpathy 的设想是,未来的 AI 模型,其“输入端”(用户提问)应该只接收图像(像素),而“输出端”(AI 回答)则可以保持为文本。为什么?因为“看懂一张图”(视觉到文本)的任务,远比“画出一张逼真的图”(文本到视觉)要容易得多,也实用得多。

这种“输入用眼(像素),输出用嘴(文本)”的架构,也天然契合了AI处理信息的两种模式:输入(Encoding):像人一样,一口气看完整个页面(图片),全盘理解(即双向注意力)。输出(Decoding):像人一样,一个词一个词地往外说(即自回归)。所以,DeepSeek-OCR这篇论文的真正价值,不在于它提供了一个多好的 OCR 工具,而在于它充当了一次“概念验证”(Proof-of-Concept)。

它用实验数据证明了:用“看图”的方式来“读书”,是完全可行的,而且可能效率更高。这不仅仅是“文本到文本”(Text-to-Text)任务变成了“视觉到文本”(Vision-to-Text)任务,它暗示了一个更根本的转变 —— AI 的主要信息入口,正在从“语言”转向“视觉”。

这个小小的 OCR 研究,可能真的撬动了一个大大的未来。

欢迎大家关注 OceanBase 社区公众号 “老纪的技术唠嗑局”,在这个公众号中,会持续为大家更新与 #数据库、#AI、#OceanBase 相关的技术内容!

闲言少叙,正文开始

(本文的作者是来自蚂蚁集团的陈梓康(库达),前面 “楔子” 部分的内容,出自 Karpathy 和宝玉,在正文内容开始之前,先对这三位大佬表示感谢~)

今天,我不想做一次简单的论文导读。我希望我们能一起,从第一性原理出发,将这篇论文放置于 VLM 和 LLM 发展的宏大叙事中,解构其思想,审视其价值,并探寻其为我们揭示的未来图景。

其中,我会在文中使用 「这是我自己的猜想」 标识来 highlight 我觉得那些重要的,并且隐藏在论文背后的故事和思考。

我们首先从信息论和系统架构的视角,来审视 DeepSeek-OCR 所解决的根本问题:计算效率与信息密度的矛盾。

但,咱们也并不是说 DeepSeek OCR 颠覆了什么事情,例如这两天公众号上发布的文章,很多都是 AI 吹出来的。所以在此我也泼一泼冷水,让大家能够更加谨慎却勇敢地探索未来 AI 记忆系统的各种可能性。

1. 开篇:我需要知道什么?

首先,请允许我提出一个论断:这篇论文最核心的思想贡献,绝不是“一个更好的 OCR 模型”。如果是这样,我们今天就不必坐在这里。它的真正价值,在于提出了一个大胆且反直觉的范式——“上下文光学压缩” (Contexts Optical Compression)。

它在问一个根本性的问题:当 LLM 的上下文窗口成为计算和内存的瓶颈时,我们除了在“数字域” (Digital Domain) 内卷算法和架构,是否可以另辟蹊径,回到“模拟域”或者说“光学域”去寻找答案?

ref:数字型号和模拟信号的互搏

这篇论文的作者们,实际上是将一张包含数千个文本Token的文档页面,“渲染”成一张图像,再用一个高效的视觉编码器将其压缩成几百个视觉 Token。这个过程,本质上是将离散的、一维的符号序列(Text Tokens),映射为连续的、二维的像素矩阵(Image),再重新编码为离散的、一维的特征序列(Vision Tokens)。它完成了一次信息的跨模态转码和压缩。

那么,这种“光学压缩”范式,与当前主流的长上下文解决方案相比,其本质区别何在?

  • 对比 RAG (Retrieval-Augmented Generation):RAG 是一种“开卷考试”的策略。它将知识存储在外部,通过检索器动态调取。它解决的是知识的广度问题,但没有压缩进入 Transformer 核心计算的上下文本身。而光学压缩,更像是把开卷的参考书用“缩微胶卷”拍下来,然后带着放大镜进考场。它直接作用于进入上下文的信息本体,而非信息的获取方式。
  • 对比注意力机制创新 (FlashAttention / RingAttention): 这些是系统和算法层面的操作。它们通过优化计算和内存访问,使得二次复杂度的 Attention 能够处理更长的序列。但这并没有改变 O(N^2) 的本质,只是把 N 的天花板推高了。光学压缩的思路则完全不同,它釜底抽薪,致力于将N本身变得极小。如果能将 10,000 个文本 Token 压缩成 500 个视觉 Token,那么 N^2 的计算量将骤降 400 倍。这是另外一种,压缩的思路,即 tokens 压缩,而不是计算和存储的优化。
  • 对比状态空间模型 (Mamba): Mamba 等线性复杂度的模型,是从架构根基上抛弃了 Attention 的二次依赖,是一种架构革命。它和光学压缩是正交的。光学压缩是一种编码策略,Mamba 是一种序列处理架构。理论上,我们可以将光学压缩后的视觉 Token 序列,喂给 Mamba 架构的解码器,从而实现“双重增益”。但目前,Mamba 模型并没有广泛受到认可,因此,未来可能不会有太多人关注这个结合。

Then,回答刚才的问题:DeepSeek OCR 它更接近什么(本质)?我认为,它完美地融合/仿生了两个概念:

  • 计算机体系结构中的“内存分层” (Memory Hierarchy): 我们可以将 LLM 的注意力上下文视为 CPU 的 L1/L2 Cache,高速但昂贵。而通过光学压缩存储的上下文,就像是主存(DRAM)甚至硬盘(SSD)。它容量大、成本低,但访问(解码)时需要一次“解压缩”操作。下图中的模拟“记忆遗忘”机制,更是将这个比喻推向了极致。

  • 信息论中的“有损压缩”: 下图清晰地展示了,当压缩比从 10x 提升到 20x 时,OCR 精度从 97% 下降到 60%。这表明信息是有损失的——它牺牲了完美的、比特级的文本重建能力,换取了数量级的 Token 压缩。这对于很多不需要 100% 保真度的任务(如摘要、情感分析、甚至多轮对话历史管理)是完全可以接受的。

2. 深入架构与算法

2.1. 论证信息瓶颈与模态协同的必要性

首先我们需要知道,LLM long context 的核心吐槽有:

  1. 纯文本模式开销还是太高了,平方增长。
  2. 当下 LLM 对于语言的解码/编码的信息密度太低。比如,在文档排版中,1200 个文本 Token往往只占据一页(甚至半页)的物理空间。而一个高分辨率的图像,只需要几百个视觉 Token 就能承载所有这些信息。( OCR 想要解决的问题就属于这个范畴)。

正所谓 “一图胜千言”,视觉模态本质上是一种高效的压缩介质。我们的目标是实现视觉 Token n 数量远小于文本 Token N 数量的“上下文光学压缩”,即 n ≪ N。

提问:还有其他高效的介质吗? 我认为可能是视频介质。你可以这么理解,就是 Image 本身是一个 2D 表征,它似乎证明 2D 表征的压缩率大于平方开销的 Text Context。那么,3D 表征是什么?至少,视频介质是 3D 的,只不过里面的时间流向是单向的。

此外,本质上我们在寻找什么? 我们寻找的是表征方法,然后再寻找的才是在哪个环节借助 NN 网络解决我的需求。

2.2. 高效感知与信息提炼

要实现高压缩比(例如 10:1 或更高)下的无损或近无损解码,核心在于编码器必须具备在极低 Token 数量下捕获高分辨率输入的能力。这就是 DeepEncoder 的职责。

解码的方案有千千万,比如:InternVL 的瓦片方法或 Qwen-VL 的自适应分辨率编码。但是它们的问题在于,传统 VLM 编码器在高分辨率下要么产生过多 Token,要么导致激活内存爆炸,影响训练和推理效率。

显然 DeepSeek 也意识到了这个问题,于是,他们设计出了:DeepEncoder——其,串行混合注意力机制 (Serial Hybrid Attention)。分三步走:

  • 局部感知与高分辨率输入 (Window Attention Dominance): DeepEncoder 的前半部分采用了以窗口注意力为主导的 SAM-base 结构「著名的由 MetaAI 提出的 Segment Anything(SAM)」(约 80M 参数)。
    • 作用:它能够处理高分辨率输入(如 1024×1024 或更高),将图像切分成大量的初始 Patch Token(例如 4096 个)。由于采用局部窗口注意力(或者可以理解成滑动窗口),即使在如此多的 Patch Token 下,其激活内存消耗依然保持在可接受的低水平。这模拟了人类视觉系统对局部细节的精细聚焦。
  • 16倍 Token 压缩器 (The Information Bottleneck): 这是 DeepEncoder 的核心。在局部注意力之后,他们串联了一个 2 层的卷积模块,执行16倍的 Token 下采样。
    • 结果:4096 个 Token 瞬间被压缩至 256 个 Token。这极大地减少了后续全局注意力层的计算负担,实现了高效的 Token 压缩和内存控制。
    • 问题:如何巧思想到需要加入一个这样的模块呢?
  • 全局知识与语义整合 (Dense Global Attention): 压缩后的少量 Token 进入基于 CLIP-large(300M 参数)的组件。
    • 作用:CLIP 预训练带来的视觉知识使其能够高效地整合压缩后的视觉特征,将纯粹的像素感知转化为具有更高语义密度的“知识特征”。

结论:DeepEncoder 成功地将高分辨率输入的挑战转化为一个可控的、低激活内存的压缩问题,输出的是一组高度提炼的潜在视觉 Token:

2.3. 高效解码与知识重构 (MoE Decoder: Decompression and Retrieval)

经过前面的压缩操作,那么接下来,压缩后的视觉 Token Z 现在需要被 LLM 解码器 f 重新构建成原始的长文本 X。

目标:如何让一个紧凑的语言模型,从如此少量的视觉信息中,准确地“幻想”出并输出长达 10 倍的文本内容?

  • 压缩-解压映射的学习: 解码器需要学习非线性映射

- 数据工程的支撑:注意到大模型**已经隐式地学习了这种隐射关系**。因为其训练数据不仅包括传统的 OCR 1.0 数据(多语言、粗/细粒度文档标注),还包括复杂的 OCR 2.0 数据(图表解析、化学公式、平面几何)。这确保了模型学到的视觉 Token 不只是像素的表示,而是**高层次的、结构化的语义信息**。
  • 解码器的选择。我们容易注意到,显然:
    • 考虑 1:MoE 架构适合进行高通量、大规模的 OCR 解码和数据生产(比如,每天 200k+ 页面)(DeepSeek 团队真的很喜欢「降本增效」哈哈哈)。
    • 考虑 2:OCR 1.0 数据也好,OCR 2.0 数据也好,都说明了数据的分布是稀疏的(因为数据是容易被分类的),因此猜测模型的参数也应该是稀疏的。而 MoE 本身就是稀疏模型。我认为,这是使用 MOE 模型来表达 f 映射的效果如此之好的关键原因「这是我自己的猜想😄」。
    • 因此,DeepSeek-OCR 采用 DeepSeek-3B-MoE(激活参数约 570M)作为解码器。
    • 思考:更大的参数量,是不是能够解决更多模态的数据呢?(比如,帮助合成前端生成任务的训练数据?「这是我自己的猜想😄」)
    • 问题: 我调研了社区使用 OCR 的体感,发现 MoE 对于图片的理解能力,更多还只是体现在一个“内容提取”的能力上。但是在其他方面的能力,一个是,幻觉率大概是 80%,另一个是该 MoE 对于指令遵循的能力还是不够。因此,我认为在这一块,我们仍旧有很多可以提升,毕竟还只是 3B 模型。或者可能有其他新的架构创新来解决这个问题。
    • 变更:底层的 vllm、sglang 也许尽快跟进,并且支持未来多模态的解码和推理。
  • 压缩边界的验证: 实验证明,光学压缩的潜力惊人。
    • 当文本 Token 数量是视觉 Token 的 10 倍以内(压缩比 < 10x)时,模型可以达到约 97% 的 OCR 解码精度。
    • 即使在极端的 20 倍压缩比下,OCR 精度仍能保持在约 60%。
    • 学术价值: 这一结果提供了经验指导,证明了紧凑语言模型能够有效地从压缩的视觉表征中解码信息。它为未来 VLM Token 分配优化和 LLM 上下文压缩提供了理论基础和实践界限。

2.4. 从 OCR 到未来认知 Beyond the Document

DeepSeek-OCR 不仅仅是一个高效的 OCR 模型,它更是基于信息压缩第一性原理,探索视觉与语言模态(VLM/LLM)协同的先驱性工作。其核心算法流程,从 DeepEncoder 的低激活内存高压缩架构,到 MoE 解码器的高效知识重构,为我们提供了一套将长文本信息转化为计算高效的视觉潜在表征的完整范式。值得借鉴学习的地方很多。

  1. 深度解析 (Deep Parsing) 与结构化提取OCR 任务不再是简单的文本识别。DeepSeek-OCR 具备深层解析能力(Deep parsing)。通过统一的提示,模型能够:
    1. 将文档中的图表转化为 HTML 表格(金融报告中的关键能力)。
    2. 识别化学公式并转化为 SMILES 格式。
    3. 解析平面几何图形的结构。
    4. ……

毋庸置疑,这种“OCR 1.0 + 2.0”技术是 VLM/LLM 在 STEM 领域发展的基石。并且,它其实超过了我们对于 OCR 的定义范围。它是一种端到端的数据识别和数据清洗的算法(nlp instructions + pdf -> structured data)。发散来讲,我觉得这种思路,可以解决 80% LLM 语料清洗的各种疑难杂症问题。不知道 LLM 数据团队是不是有可能改造 DeepSeek OCR 框架,来做出一个基于视觉的通用的语料数据清洗框架呢?(3B 模型的消耗还是很诱人的哈哈哈)「这是我自己的猜想😄****」

  1. 模拟记忆与遗忘机制

上下文光学压缩提供了一个模拟人类记忆衰退的优雅方案。该学术问题的背景:在一个多轮对话系统中,我们如何管理历史上下文,以防止计算开销爆炸?

  • 人类记忆的映射:人类对近期事件记忆清晰,对遥远事件记忆模糊。这种衰减机制与视觉感知中信息随距离或分辨率下降的模式相似。
  • 光学实现(视觉实现):
    • 近期上下文:渲染成高分辨率图像,使用 DeepEncoder 的高保真模式(例如 Gundam 或 Large 模式)进行编码,保留高保真度。
    • 远期上下文:通过渐进式缩小渲染的图像(对应 Tiny 或 Small 模式,即通过窗口注意力),可以进一步减少视觉 Token 消耗。Token 数量的减少,导致了文本的“模糊化”和信息精度的自然衰减,从而实现了记忆的渐进式遗忘
  • 但是,我觉得 DeepSeek OCR 还有一点可以考虑得更加周到的是,我们如何恢复那些逐渐被遗忘的记忆,即「记忆再水化(我对于记忆的机制的广义定义是:记忆淡化,并且可在特定时机回想起某个东西)。虽然有一些工程性的办法解决,比如,“当模型需要精确引述或代码/公式高保真时,对目标页‘局部升采样’或二次 OCR,临时把该片段放回文字上下文”。但 OCR 架构本身不是这种所谓的有点类似于 self-reference 的架构,因此缺乏一点完美感。「这是我自己的猜想😄

论文展望:这一机制为构建理论上无限上下文的 LLM 架构提供了潜在途径,它巧妙地在信息保留和计算约束之间取得了平衡。DeepSeek-OCR 的研究表明,这种通过视觉模态进行长上下文压缩的方法,是未来 VLM/LLM 协同发展的一个极具前景的新方向。

3. 论文之外 —— 谈谈 DeepSeek OCR 对于记忆机制设计的启发和外推

我们知道,传统的记忆框架,大都是个闭环记忆系统:每次交互后,新记忆被压缩 C(一般是向量压缩 RAG、或者一些所谓的 NN 模型压缩比如 MemGen)并分级存储,供未来检索。

但是现在压缩 C 的方法多了一种,即上下文光学压缩。

DeepSeek OCR 它真正想说的,是如何用光学-视觉通道,重新设计大型语言模型的「记忆系统」。论文用 OCR 这个概念掩盖了 DeepSeek 的真实目的,那就让我来推演「技术的下一步」吧。下面我按照“记忆”而非“OCR”的主线,结合我对于大模型记忆的理解和经验,给出一条在大模型记忆这个方向的思维推演

3.1. 概念再次对齐

层级 人类对照 LLM 对照 经典解决方案 DeepSeek-OCR 的切入点
1. Sensory memory 0.1 s 视网膜残影 原始 10K-100K token 直送 Attention —— 把“文本像素化”→ 视觉 token,用光学把感官缓冲压缩一个数量级
2. Working memory 7±2 组块 kv-cache常驻GPU HBM 滑动窗口 / 稀疏 attn 用图像分辨率当“光圈”
,动态调节 cache 大小
3. Long-term memory 海马-皮层固化 外存 RAG / 参数记忆 向量库 / LoRA 把“遗忘”做成可微的光学降采样
,而不是手动阈值

DeepSeek-OCR 的核心创意,是让第 1→2 层的压缩过程,从“数字-序列”域搬到“光学-像素”域,从而把「记忆容量」与「计算开销」解耦。下面所有外推,我都是在放大这一思想。

3.2. 探索-1 把“上下文”当一张可微调的「全息底片」

3.2.1. 直观类比

  • 传统 Transformer:像把一本书撕成 10 000 张小纸条,每张纸条必须与所有其余纸条做一次“两两握手”,O(n²) 次握手。
  • DeepSeek-OCR:把整本书一次性拍成一张“微缩全息底片”,只让几百个“光斑”(vision token) 进入握手区;握手次数骤降 400×。

3.2.2. 压缩方式

既然 DeepEncoder 对于图像的压缩效果显著,那么我会选择采用「文本 → 图像 → vision token」这条通道。其本质上,其实在做一次可控的有损编码

  • H(text) ≈ 8 bit/char × 6 char/token ≈ 48 bit/token
  • H(image) 在 1024×1024×3×8 ≈ 25 Mbit 量级,但经过 DeepEncoder 后只剩 256×d 维浮码,假设 d=1024、FP16,≈ 0.5 Mbit。压缩比 50× 时,信息熵损失 ≈ 3 %(参考论文 97 %→60 % 的实验曲线)。
  • 但是,对于「文本 → 图像」这个过程的具体实现细节,我个人暂时也办法定夺。可能需要做很多实验,来验证/分析「文本 → 图像」对于后续步骤的上下文光学压缩的实际影响。

这么操作的关键是:把“遗忘”预先 baked in 到编码器权重里,让模型学会哪些视觉纹理对应“可丢”的排版空白,哪些对应“必保”的语义 token——这比事后用启发式阈值剪枝要优雅,因为:

  • 可微:梯度可反向穿透 CNN-ViT;
  • 统一:同一条 loss 既管 OCR 精度也管压缩率。这里源于我在 Nano-Banana 训练思路中得到的启发。就是,用文字/字母生成的准确性来衡量 Nano-Banana 的 image edit 功能的精度和质量。解释一下就是,如果我们同时最优化 OCR 准确率 & 降低 tokens 数量这个帕累托条件,那么我们最终能够得到一个,既不丢失语义/视觉信息,tokens 数量又少的,(多模态)大模型。

3.2.3. 实现 sketch:一张「可编程光圈」驱动记忆闸门

因为在 LLM 记忆之中,我们希望模型能够动态的调整压缩率。因此,或许我可以大胆尝试把 DeepEncoder 的 16× Conv 下采样改成一个可学习的、内容依赖的“光圈模块”

基于这样的设计,或许我们能够在未来的 LLM 中实现一个这样的 feature:

  • 训练阶段:在 loss 里加一项 λ·aperture_ratio,让模型自己权衡“记多少”
  • 推理阶段:用户用一条 system prompt 即可把 aperture 调到 0.1,实现“只记得大意”。或者用户说,“请帮我仔细回忆”,那么就是把 aperture 调到 1.0。

你看,是不是很有意思?

3.2.4. 开放问题

  • 光圈可解释性:能否把 σ(·) 的触发模式反向映射到人类可读的“遗忘规则”? 它和遗忘会有什么关系呢?这个或许只有等到这套系统实现的那一天,才能够知道了。
  • 与 KV-cache 的联动:光圈输出能否直接预测哪些 layer/head 可以跳过?

3.3. 探索-2 把 RAG 做成「光学+向量双路召回」

3.3.1. 传统 RAG 的盲区

  • 检索器只看「语义向量」,不管「排版结构」——于是表格、公式、分栏 pdf 常被拦腰截断;
  • 召回后仍需把整段文字重新 tokenize,没有压缩,context 长度瓶颈未解决。

3.3.2. 光学双路相机

把 DeepEncoder 当成一枚「光学视网膜」,与语义向量并行工作:

doc → ┌── semantic encoder → 256 d 向量 ─┐└── DeepEncoder  → 128 vis tokens ─┤↑                       |+–––––––– fuse –––––––––+
  • 召回阶段:两路索引同时建库,语义向量管“含义”vis token 管“版面”
  • 阅读阶段:把召回的 vis token 直接塞进 LLM 的 vision slot,无需再展开成文本 token
  • 预期结果:
    • 版面完整性 ↑(表格不脱线);
    • 上下文长度 ↓(128 vs 800+ text token);
    • 复杂度仍是 O(n²),但 n 已经 6× 更小。

3.3.3. 一个可运行的“小目标”

我们可以基于上面的想法(光学双路相机),来改进 RAG 系统。比如,可以在某个 8B-Instruct 上插 64 个 vision slot,用 DeepSeek-3B-MoE 当“光学解码头”,做金融年报 QA。

  • 数据集:FinQA-scan(把原版表格全部渲染成 1024×1024 png)。
  • 指标:Exact-Match & Token-Latency。
  • 预期:
    • EM 提升几个点(版面不再被破坏);
    • 端到端 latency ↓ 30 %(128 vs 800 token)。

3.3.4. 开放问题

  • 如何给「光学索引」做 ANN(向量检索召回)?但是 vis token 是 2-D 特征图,扁平化后 L2 距离意义不大……
  • 多页文档跨页对齐:当表格横跨 3 页,vis token 如何跨页复用?

3.4. 探索-3 统一的记忆框架可能是什么?(既不是长上下文,也不是 RAG)

3.4.1. 架构总览

我觉得未来的记忆框架,肯定不只是长上下文,也不只是 RAG,因此我尝试提炼探索 1 和探索 2 中的思想和架构,来找到一种能够统一不同框架的统一框架。

我想这样设计,就是它只有三个可执行二进制:optix-encode、optix-cache、optix-recall,却同时替代了

  • 长上下文 KV-cache
  • RAG 向量库
  • 多轮对话历史管理
  • 甚至 LoRA 权重仓库(为什么不呢?)

不妨把整个系统叫做 Optix-Memory Stack(简称 OMS),一句话总结:

「任何长度的文本、权重、对话,一律先拍成一张 1024×1024 灰度图,再压成 128 个 vision-token,成为唯一寻址单位;Attention 永远只在这 128×128 的“光斑”里做二次运算。」

下面给出细节的统一架构、数据流、训练-推理一体配方

  1. 数据流:三次「拍照」,一次「衍射」
模态 输入 拍照参数 输出 visual-key 驻留位置
A. 长文档 PDF/N 页 光圈=0.1(10×压缩) 128 vk / 每 1024×1024 图 optix-cache(vis-k)
B. 多轮历史 文本 窗口注意力 128 vk / 每 100 轮 同上,LRU 链
C. 权重补丁 LoRA ΔW ∈ ℝ^(d×r) reshape→灰度→衍射层 128 vw / 每 LoRA optix-cache(vis-w)
D. 推理 问题 q 文字→渲染→同Encoder 128 vq 不进cache,直接 attend
  1. 文档输入流

  2. 权重入口(比如 LoRA)

4. 在对话历史中

  1. 最后一步:MoE-Decode (3B)

对于架构,我们需要注意到:

  • 所有异构数据(doc、weight、history)先成像、后编码,得到同构的 128-D visual-key
  • 自此以后,系统里只有一种 token = visual-key;
  • Attention 复杂度永远 128² = 16 384 FLOPs,与原始长度、权重秩、对话轮数无关;输入总是 [batch, 128, dim],不管你来的是文档、权重还是历史。
  • 训练、推理、热更新、回滚,全部在「图空间」完成,零浮点权重下发

这个框架的作用就是,能够把三种原本异质的数据(文档、权重、对话历史)先强行拍成「同一张 1024×1024 灰度图」,再压成同形状的 128-D 向量,以后系统里只认这 128-D 向量,别的统统不存在。

为什么非得“统一”?

  • 只有同形状才能塞进同一个 Attention 矩阵;否则要写三套 CUDA kernel。
  • 一旦统一,复杂度就恒定为 128×128=1.6 万 FLOPs,跟原始长度、权重秩、对话轮数再无关系——这是整个 Stack 能“恒定”的根基。
  • 以后做缓存、做召回、做热更新,只需要比较/替换 128-D 向量,工程界面极度简化。

3.4.2. 训练 =「image 空间」里的单一 loss

目标函数只留两项:

L = L_task + λ · aperture
  • L_task:下游目标(OCR 字符交叉熵、QA 的 EM、对话回复困惑度);
  • λ·aperture:迫使光圈缩小→压缩率上升,让模型自己学会「哪些像素该被遗忘」

训练流程(伪代码):

for batch in loader:img = Renderer(batch, aperture=uniform(0.02,1.0))vk  = DeepEncoder(img)                # 128vw  = DiffractiveFilm(LoRA_png)       # 128out = OptixAttn(v_q, v_k, v_w)        # 128 × 128 恒定loss = CrossEntropy(out, target) + λ*aperturegrad = loss.backward()                # 梯度穿透 CNN + 衍射层opt.step()

所有参数(CNN、衍射层、MoE)联合更新,一次收敛;收敛后,把 aperture 固化成 3 个离散档位

  • Gundam(光圈 1.0) → 高保真,用于代码/公式;
  • Small(0.1) → 日常对话;
  • Tiny(0.02) → 极长记忆仓库。

3.4.3. 推理引擎:0 浮点权重、0 KV-cache

  • 无传统 KV-cache,显存占用 = 128×dim×layer = 常数(8 层 1024 dim ≈ 32 MB);
  • 若命中 vis-w(LoRA),直接把 128 vw 当「衍射权重」喂入 Attention,不需要下发浮点 ΔW
  • 若 cache miss,从磁盘读取 png→衍射层→vw,耗时 < 1 ms
  • 整个推理过程 batch-size 可线性放大,无长序列爆炸。

3.4.4. 一句话收束

Optix-Memory Stack 让「上下文长度」「权重大小」「对话轮数」这三个曾经各自膨胀的维度,全部坍缩成一张 1024×1024 的灰度图;自此,LLM 的记忆问题被转译成可调光圈、可衍射、可遗忘的光学系统——不再问“能装多少 token”,而只需问“想保留多少像素”

当然,再次强调,整个 Section 3 都是一些思维实验上的探索,时间短,可能有很多考虑不周甚至错误的想法。

4. 更多的问题

  • 视觉 token 拼接上限
    • 目标:测 Nvisual 对回答质量和显存的临界点。
    • 做法:固定总 Context ≈16 K token,逐步用视觉 token 替换文本 token;比较 OpenBook QA / 对话跟踪指标。
  • “增量压缩”记忆曲线
    • 目标:验证多分辨率压缩是否优于一次性丢弃。
    • 做法:对同一段历史上下文,分别做 {1×, 5×, 10×, 20×} 压缩序列;让模型在之后若干轮随机提问细节,测回答精度随时间衰减。
  • Expert-Type 自发现
    • 目标:验证布局类别 ↔ MoE-routing 的自动对齐。
    • 做法:初始化 8-expert ViT-Decoder,不加任何人工 rule,让 Router 根据 token route;监控每个 expert 的激活类型(公式 / 表格 / 纯文本 / 图像)聚类情况。

其他开放问题:

  1. “视觉 token + 语言 token”混合序列的 Positional Encoding 如何共享?
  2. 在线场景下,DeepEncoder 的前向成本如何做到 <1× GPT-3.5 token 生成?
  3. 当需要修改或删除历史记忆时,如何级联地更新 hash / 索引,使得“可遗忘性”符合法规要求(GDPR right-to-be-forgotten)?
  4. 视觉压缩对于多语言(尤其非拉丁字母、竖排文本)是否有偏置?需要 language-aware screen renderer 吗?
  5. ……

5. 总结

DeepSeek ORC 让我们再一次有机会审视信息的表征与计算的边界。

或许未来,评价一个模型的记忆能力,我们不再问“它能容纳多少 Token”,而是问:“在一张代表着记忆的底片上,我们应该选择保留多少像素?”

参考资料

[1]

《DeepSeek-OCR: Contexts Optical Compression》: https://github.com/deepseek-ai/DeepSeek-OCR/blob/main/DeepSeek_OCR_paper.pdf

[2]

著名的由 MetaAI 提出的 Segment Anything(SAM): https://segment-anything.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图文详细】用HBuilder X写PHP并且能够在浏览器运行打开 - 昵

【图文详细】用HBuilder X写PHP并且能够在浏览器运行打开 今天教大家如何使用HBuilder X写PHP。 用到的工具: HBuilder X,配置phpstudy端口和url、登录账号下载php语言服务 phpStudy,仅仅查看端口,启动apache、mysq…

可视化水表数据并实现用水量超标警报的技术方案

本文详细介绍如何通过S0脉冲模块连接水表,使用NodeMCU采集数据,结合InfluxDB时序数据库实现用水量可视化监控和警报系统的完整技术方案。如何可视化水表数据并在用水量过多时获得警报 在我居住的村庄,水表每5年更换…

闲话 25.11.2

一个 bgf 对角线提取技巧的拓展闲话 前几周(?)打了 us-tc。puzzle hunt 真好玩 😋 悠悠博客上更新了完赛记录 怎么快两个月没写鲜花了 /jk 前几月(?)写了点东西,发一下! 推歌: Weier Schnee by regulus ft. 初音…

题解:uoj695 【候选队互测2022】毛估估就行

题意:给出一个无向无权图,\(q\) 次询问两点距离,但是假设真实距离为 \(d\),输出 \([d-1,d+1]\) 都视为正确。\(n\le 8000,q\le 10^6,m\le n^2\)。 做法: 正常的最短路肯定是没法做,做出来就得图灵奖了。注意到输…

@ 和 禁止转义字符串

string str = ""; \r 表示转义字符,如果字符串真的要输入\,需要\表示非转义,如果要输入 \r,应当输入 \\r。 "也需要转义, "" @ 禁止\转义,但是双引号仍旧需要保持转义 """…

11.2 —— (VP)2022icpc南京

日常被打爆,赛时3题,铜牌题被卡 \(O(n\log n\log A)\) 一直疯狂 \(TLE\),赛后发现自己的思路跟正解完全背道而驰。 \(I\) 纯签到。 \(G\):无解情况的判断特别简单,将所有的 \(0\) 看作 \(1\),然后判断前缀和的每…

第二次软件工程作业

https://gitee.com/UUDI/second-software-engineering

Edge---浏览器优化配置

Edge浏览器这款自带的浏览器,使用体验还是可以的。但是内存占用较高,而且关闭Edge浏览器,依然占内存使用。 比如:我打开电脑,都没有使用Edge浏览器,但是依然会占内存:

华为Matebook清灰之后扬声器没声音

华为matebook清灰之后没声音,声卡驱动一切正常,耳机ok。又拆开检查排线是不是插稳了,结果发现排线只要不故意去插拔,根本就没法影响。 重启好几次都没啥用。网上检索了几种方案,组合一下发现莫名奇妙就好了。 htt…

string.replace替换null

string.replace替换nullreplace相当于erase;

类和对象-多态project09

多态的基本语法project9 filename01 多态分为两类 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态区别 静态多态的函数地址早绑定-编译阶段确定…

Pointnet++论文学习

背景 在PointNet中并没有局部特征的概念,要么是对单个物体进行处理获取单个特征,要么是进行整体最大池化获取全局特征,丢失了很多局部信息。也是因此在进行分割物体时效果显得一般,Pointnet++则优化了这个问题。 方…

C++的值类型(左值,右值,亡值,泛左值,纯右值)

C++的值类别C++的值的类型,基本可以分为左值,亡值,纯右值,泛左值,右值五种类型。 lvalue 平常我们说的左值就是lvalue,左值一般是指,可以在内存中长久存在的值,可以被取地址。一切具有名字的变量,不论类型如何…

CF1730D Prefixes and Suffixes

题意:给出两个字符串\(s1,s2\) 你可以把s1的k个连续前缀与s2的k个连续后缀交换 k任意选取,可以操作无限次 问是否可以将s1与s2变得相等 观察后发现,存在着某个特性,即将某一个字符串翻转之后,s1[i] == s2[i],这…

工具---短视频下载神器

在看微信视频号、小程序、抖音、快手、小红书、酷狗音乐、QQ音乐的时候,可以通过这个软件将其下载。 软件:res-downloader 在github里面下载:https://gitee.com/zhoumath/res-downloader也可以在国内的下载:https:…

使用iptables双重DNAT

使用iptables双重DNAT 一、需求 由于企业内部网络安全问题,往往只开启一个端口供企业外部业务与也企业内部服务器访问。因此需要在企业网关的前端接一个前置机(192.168.0,91),用于供端口映射处理。 整体架构如下,其…

AT ABC290 F Maximum Diameter 题解

Solution组合好题,注意到 \(n\) 个点的边数为 \(n - 1\),总度数为 \(2n - 2\),因此序列 \(a\) 的权值不为 \(0\) 时当且仅当 \(\sum a = 2n - 2\) 且 \(a_i \gt 0\)。 接下来是一个简单的贪心,如果对于给定的序列需…

ABC430

ABC430C. Truck Driver 二分或双指针 固定区间左端点 \(l\),找到区间中至少有 \(A\) 个 a 的最小右端点 \(r_a\),以及区间中至少有 \(B\) 个 \(b\) 的最小右端点 \(r_b\)。显然条件二更紧,所以用 \(r_b-r_a\) 来更…

团队作业1——团队展示选题-大学生健康生活管理与预警系统

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13471这个作业的目标 通…

广告投放名词

直投 广告主通过广告投放平台或者Marketing API 进行广告的直接投放,利用媒体的用户数据能力以及广告模型进行广告的预估和优化。直投广告的优势在于,广告平台累计了大量的用户基础数据以及产品行为数据,得到丰富的…