我相当喜欢新的 DeepSeek-OCR 论文。它是一个不错的 OCR 模型(可能比 dots 稍差一点),是的,数据收集等等,但无论如何,这并不重要。
对我来说更有趣的部分(尤其是作为一个骨子里是计算机视觉、暂时伪装成自然语言处理的人)是像素是否比文本更适合作为 LLM 的输入。文本 token 在输入时是否浪费且糟糕透顶。
也许更合理的做法是,LLM 的所有输入应该只使用图像。即使你碰巧有纯文本输入,也许你更愿意将其渲染成图像再输入:
- 更多的信息压缩(见论文)=> 更短的上下文窗口,更高的效率
- 显著更通用的信息流 => 不仅仅是文本,还有例如粗体文本、彩色文本、任意图像。
- 输入现在可以轻松地默认使用双向注意力处理,而不是自回归注意力——更加强大。
- 删除(输入端的)分词器!!我已经抱怨过我多么不喜欢分词器。分词器是丑陋的、独立的、非端到端的阶段。它“引入”了 Unicode、字节编码的所有丑陋之处,继承了大量的历史包袱,存在安全/越狱风险(例如续字节)。它使得两个肉眼看起来相同的字符在网络内部表现为两个完全不同的 token。一个笑脸表情符号看起来像一个奇怪的 token,而不是一个……真正的笑脸,包括像素和所有随之而来的迁移学习。分词器必须消失。
OCR 只是众多有用的视觉到文本任务之一。而文本到文本的任务可以变成视觉到文本的任务。反之则不然。
因此,用户消息可以是图像,但解码器(助手响应)仍然是文本。如何现实地输出像素……或者你是否想要这样做,就不那么明显了。
现在我还要克制自己不去做 nanochat 的仅图像输入版本的支线任务……