5251 字
26 分钟
更新于 2026-08-25
1 次修订
从单帧识图到实时视频对话:DeepSeek、MiniCPM 与 MiniMax 的多模态架构路线

红发少女站在涂鸦墙前

关于这篇文章

这是一篇比较杂的多模态基础认知搭建,由几个实际问题触发:有比较前沿的视觉理解进展,有单纯对 MiniMax Coding Plan 的吐槽,也有 MiniCPM-o 给出的工程解法。我之前一直有点抵触多模态,但我又确实需要它;这次算是好不容易跨出了第一步。文中的资料核验与解释由 Opus 协助完成。

8 月 21 日,DeepSeek 终于推出了 v4-flash-vision-exp。网页端刚开始灰度开放识图模式时我就在关注,当时我还没毕业 =-=,现在下一届学生都要上课了。

从使用体验来说,这个模型带图时通常很快就开始回复,意图理解也很贴近我的应用场景。可我越用越好奇:它为什么能“指哪打哪”?这种能力与 DeepSeek 四月发布后又很快撤下的论文 Thinking with Visual Primitives 有什么关系?

问题继续往下追,又牵出了两段截然不同的体验:MiniMax Coding Plan 中,图片请求曾让我空等接近十秒;MiniCPM-o 却能在本地一边看视频、一边听人说话、一边合成语音回复。于是这篇文章最终不再只是讨论某个视觉模型,而是变成了一个问题:

多模态系统怎样从“看懂一张图片”,走到“持续观察世界,并及时回应”?

这不是一份穷尽所有论文和模型的 survey,也不是统一硬件、统一输入下的性能横评。它更像三次由实际体验触发的架构调查。我会尽量区分论文事实、开源实现、产品观察和没有同机实测支撑的工程估算。

探究的三条路线

对象 我最初关心的问题 实际讨论的核心
DeepSeek 为什么它能对图像“指哪打哪”? 如何用点和边界框缓解视觉推理中的指代丢失
MiniMax-M3 为什么 Coding Plan 带图时曾经接近十秒才回复? 标准 VLM 如何拼接视觉 token,以及模型架构与产品链路延迟不能混为一谈
MiniCPM-o 为什么本地模型可以边看、边听、边说? 如何压缩增量音视频输入,并在一条时间轴上调度感知、文字和语音输出

它们并不是在回答同一道 benchmark 题。DeepSeek 关注推理时“我指的是谁”,MiniMax 暴露了产品体验中的 首 token 延迟(Time to First Token,TTFT),MiniCPM-o 则进一步改变了系统的工作单位:不再等待完整输入和完整输出,而是持续处理每个时间片里新到达的信息。

DeepSeek:视觉原语让模型边想边指

我最初把视觉原语理解成一种更彻底的视觉—语言融合:模型不再需要某个模块先“翻译”图片,因此也许能降低首字延迟,甚至意味着语言模型本身具备了理解图形的能力。

同时我又隐约记得 Google 很早以前就做过相近方案。如果坐标 token、视觉 grounding 都不是第一次出现,那么 DeepSeek 具体做了什么?它对前端截图理解又是否会更有帮助?

这几个问题里混着一些自然但并不准确的猜测。

视觉原语并没有移除视觉编码器

Opus

**视觉原语没有消除视觉编码模块,也不是把原始视觉 token 和文本 token 直接变成同一种底层原语。**论文采用的依然是类似 LLaVA 的架构:图像先经过 DeepSeek-ViT,视觉特征再与语言指令拼接后送入 DeepSeek-V4-Flash。

它真正的新意,是让模型在生成推理过程时,可以把点和边界框直接插进语言思维链:

……找到这只熊 <|ref|>bear<|/ref|><|box|>[[50,447,647,771]]<|/box|>,
它在地面上,所以计入总数……

坐标被归一化为 0~999 的整数。边界框适合锚定具体对象,点及点序列则适合表达轨迹、迷宫探索和回溯。

论文把纯语言推理中的问题称为 Reference Gap(指代鸿沟)。模型说“左边那个”“刚才数过的对象”时,语言很容易失去明确指代;坐标则能把这一步推理重新钉回图像中的确定位置。视觉原语因此更像一种模型能够生成、并在后续上下文中继续引用的空间记号

这也不意味着脱离视觉模块后,纯 LLM 突然具备了看图能力。更准确地说,是整个多模态大语言模型(MLLM)学会了让语言骨干理解并生成带空间含义的坐标 token。对于前端项目,它理论上会更擅长截图中的组件定位、区域指代和操作规划,例如明确指出“应该修改或点击哪个按钮”;但论文没有评测前端代码生成,因此不能进一步推出它写前端代码一定更好。

低延迟来自哪里也要拆开看

论文中的效率主要来自两层压缩:DeepSeek-ViT 先用 3×3 空间压缩把每 9 个 patch 合成一个视觉 token;进入语言模型后,Compressed Sparse Attention 又把每 4 个视觉 token 的 键值缓存(KV cache)压成一个条目。

以 756×756 图像为例,2,916 个 patch 经过两层压缩后,最终只留下 81 个视觉 KV 条目。这有利于降低预填充和长上下文成本,但论文没有证明“生成视觉原语”本身会降低 TTFT。

目前也没有足够公开证据确认网页端的 v4-flash-vision-exp 就是论文模型。因此,我观察到的 1~2 秒内开始回复只能作为产品体验,不能直接归因于视觉原语。

它之前有人做过吗?

坐标 token、视觉 grounding 和视觉思维链都不是第一次出现。DeepSeek 的贡献更像是把几条路线合在一起,再将它们扩展成一套专门服务于推理的训练体系。

工作 做了什么 与 Thinking with Visual Primitives 的区别
Google Brain 的 Pix2Seq(2021) 把边界框坐标和类别离散成 token,以语言建模方式做目标检测 坐标主要是最终检测输出,没有进入思维链;我记忆中的 Google 方案大概率就是它
Microsoft 的 KOSMOS-2(2023) 用 location token 将文本片段和图像区域绑定,既可输入区域,也可输出框 重点是 grounded caption 与 referring,而非让坐标承担中间推理步骤
Shikra(2023) 直接用普通数字坐标做指代,并实验了将点坐标写入 Grounding CoT 已经非常接近“边推理边指向”,但规模和任务覆盖较小,也没有 DeepSeek 的点/框专家训练、RL 与统一蒸馏流程
Visual Sketchpad(2024) 让模型调用 Python、检测器和分割器画线、框或草图,再把新图像喂回下一轮推理 同样将视觉痕迹作为思考中间态,但依赖外部工具生成栅格图;DeepSeek 让模型原生输出轻量的点、框坐标
Thinking with Visual Primitives(2026) 预训练点/框格式,分别进行 box/point 专项 SFT 与 RL,再通过 RFT 和 On-Policy Distillation 合并专家能力 不只是“会报坐标”,而是把坐标持续穿插在计数、空间关系、迷宫和路径追踪的推理轨迹中

因此,比较克制的总结是:

它不是让 LLM 第一次拥有视觉,也不是首次把坐标写成 token;而是把 grounding 的输出格式,提升成了推理过程中的可复用空间记号。

原仓库虽然被撤下,但现存的仓库镜像和技术报告可以互相印证论文内容。至于它与当前实验版产品之间的关系,仍需等待 DeepSeek 的正式模型说明。

用最简单的话再说一次

好复杂 =-=。

我大概能理解 Transformer 和 ResNet 那种看上去颠覆旧范式的工作,也能理解特别小但特别实用的改动;可一碰到复杂架构上的增量创新,就很难形成直觉。我对复杂架构有着天然的抵触和恐惧。

Opus

最简单来说:DeepSeek 教会模型在思考时“一边说,一边用手指”。

普通视觉模型看完图后,只能用文字思考“左边那只熊”“刚才数过的东西”。物体一多,它就容易忘记自己指的是谁。DeepSeek 则允许模型在思考文字中插入点和方框坐标:

这只熊 [坐标框] 在树上,不算;
另一只熊 [坐标框] 在地上,算一个。

这样,模型的每一步思考都能明确指回图中的对象,减少数错物体、走错迷宫或者跟丢线条。

所以它不是重新发明了视觉模型,也没有让纯 LLM 突然学会看图。它真正做的是:把原本只作为最终答案的框和坐标,变成模型推理时可以反复使用的“视觉草稿”。

这属于把已有技术组合、扩展并训练成熟的增量创新,不是 Transformer 那种推翻旧范式的创新。觉得它不像一个特别惊天动地的新点子,是完全正常的。

也许这个结论应该在我读完论文后自己得出。现在提前知道了 =-=,后续读论文的乐趣也少了一些。

但无论如何,v4-flash-vision-exp 是个好模型,可以试试。

MiniMax:它真的是级联的“假多模态”吗?

我曾经开了一个月 MiniMax Coding Plan,却只用半小时就弃用了。原因很直接:在我的使用场景中,带图请求多次出现高达十秒的首字延迟,而且开始输出前几乎没有可见反馈。与 DeepSeek 网页端带图时不到 1 秒开始回复的体验相比,慢得让我根本无法忍受。

我当时用的模型是 MiniMax-M3

当时无论怎么询问图片内容,M3 都经常在思考过程中先写出一段完整的图片描述,再阅读问题并回答。我猜测,这一大段描述就是拖慢首字 token 的元凶。这让我和同学产生了另一个猜测:它是不是先让独立视觉模型把图片翻译成长 description,再把 description 拼给文本模型?

“拼起来”其实有两种完全不同的含义

Opus

M3 确实是原生多模态模型,但“原生”不等于没有独立视觉编码器。

它采用了当前 VLM 很常见的组合方式:图片先经过一个 32 层、隐藏维度 1280 的 CLIP 风格视觉编码器,被切成 patch;相邻 patch 合并后,再通过 projector 映射到 M3 语言模型的 6144 维隐藏空间。处理器随后使用专门的 image token 占位,将这些视觉向量插入文字上下文,交给同一个语言模型继续推理和生成回答。

所以,“拼起来”如果是指:

图片 → 视觉编码器 → 视觉 token ┐
├→ 拼成同一段上下文 → M3 生成回答
问题 → 文本 token ────────────┘

那是对的;但这并不等于“假多模态”,LLaVA 等大量 VLM 都采用类似结构。

如果是指:

图片 → 另一个模型写出完整 description → 纯文本 M3 阅读 description → 回答

目前公开的 M3 配置、处理器和 Coding Plan API 文档都不支持这个判断。开源处理器只把图片展开为视觉 token,没有生成自然语言描述的中间步骤;官方 Anthropic 兼容接口也明确允许 M3 直接接收 image content block。

换句话说,至少从公开实现看,它不是一个“视觉模型先写作文,再转交文本模型”的串行级联。

这和之前在 单图≠多图:多图理解时 VLM 为什么更容易“胡说”,以及一个两阶段解法 里主动设计的“逐图预摘要”不同。后者明确多调用一次视觉模型,再将结构化摘要交给第二轮推理;M3 的公开处理链路则是视觉向量直接进入同一个语言模型。

所以,最初那个“级联的假多模态”判断没有公开证据。真正让我大概率一辈子都不想再用它的,不是这个架构猜测,而是 Coding Plan 在我的使用场景里确实慢得和主动做两阶段摘要没什么区别。

上面这一小段是 Claude 建议我补充叠盾的,但,其实我的感受很简单,一辈子不想再用了。

MiniCPM-o:实时视频不是逐帧写 description

MiniCPM-o 的实时音视频即时对话演示是真的馋哭了。

它似乎可以让 LLM 和 TTS 全双工工作:文字和语音都在流式回复,首字延迟也很低。可我自己在本地同时运行独立 LLM 和 TTS 时,两边经常争抢资源,最后停滞甚至异常退出。MiniCPM-o 是怎样均衡资源的?

另一个问题是视频理解。普通 VLM 为单帧生成完整 description,端到端可能需要数秒;MiniCPM-o 又怎么可能持续处理视频?它真的每秒理解那么多帧吗?视频在模型内部是怎么被增量处理的?

我本地有一块 4060ti-16G,也许你可以用它举例。

Opus

按消费速度来决定生产速度:它不是每秒让 VLM 重新描述整张画面

普通的视频问答通常先抽帧,将若干帧一次性塞给 VLM,等模型看完再回答。MiniCPM-o 的实时模式则将时间切成约 1 秒一个 chunk。第 kk 秒新增的画面、声音和模型输出分别编码为:

gk=[vk;ak;ok]g_k=[v_k;a_k;o_k]

然后将 g1,g2,g_1,g_2,\ldots 依次追加到同一个因果语言模型会话中。官方将这种组织方式称为 时分复用(Time-Division Multiplexing,TDM):逻辑上存在视频、环境音和回答三条并行流,实际计算时则被序列化成一组组带时间边界的 token。

每个 chunk 先写入刚到达的视觉和音频 token,再决定这一秒是继续听,还是生成回答。因此,输出能注意到最新画面,而不是等整段视频结束。

实时模式也不会按摄像头原始的 30 FPS 全部推理。4.5 的训练在 1~5 FPS 之间采样,默认示例每秒取一组画面;stack_frames=5 才是高刷新模式。单帧最高按 448×448 处理:SigLIP2 先产生 1024 个 patch token,再由 resampler 压成 64 个视觉 token

所以,默认每秒送入语言模型的不是几十张完整图片,而是少量、强压缩的视觉特征。多帧的时序理解主要来自这些帧按时间顺序进入同一上下文和 KV cache,并非额外运行一个 3D 视频模型。

这也是它与传统 VLM 延迟形态最大的区别:普通 VLM 常常先为一张高分辨率图完成一次较大的视觉 prefill,再连续生成几十到几百个 description token;MiniCPM-o 将输入成本摊到每个时间片,而且不要求每一帧先写一篇完整描述。

全双工不是两套大模型同时抢 GPU

MiniCPM-o 4.5 仍然是模块化系统:

画面 → SigLIP2 视觉编码器 ─┐
声音 → Whisper-medium ─────┼→ Qwen3-8B → 文字
│ └→ 0.3B 语音 token 解码器
参考音色 ──────────────────┘ └→ 流式 flow-matching 声码器 → 波形

但它与“单独启动一个 LLM 服务,再启动一个完整 TTS 服务”不同。所有可训练模块连接为一个约 9B 的模型,共用一次会话和同一条时间轴。

Whisper 每秒原本产生 50 个音频特征 token,projector 将其压成 10 个/秒;Qwen3-8B 只需以接近人类说话速度生成约 3~4 个文字 token/秒。高频的语音建模——约 25 个 speech token/秒——交给约 0.3B 的 speech-token decoder,再由流式声码器逐块合成波形。

因此,这里的全双工主要是细粒度交错调度,而不是已经证明在 CUDA 上同时并行执行视觉编码、8B LLM 和 TTS 三套 kernel。每个 1 秒窗口里依次吸收新画面和声音、预测 [listen][speak]、生成少量文字,再让轻量语音解码器追上播放进度。

时间对齐交错生成(Time-Aligned Interleaving,TAIL)还会根据已积累的语音延迟,动态减少或增加当前 chunk 的文字量,避免文字跑得太远,嘴里仍在说几秒前看到的东西。

这就解释了为什么自己拼接独立 LLM 与 TTS 容易卡死:两个完整服务各自长期占据权重、KV cache、CUDA allocator 和临时 workspace,还可能从不同线程同时提交大型 kernel;显存接近上限时,碎片化或一次峰值分配就足以 OOM。

MiniCPM-o 则将主要显存留给唯一的 8B 主干,只附加较小的编码器和语音解码器,再由同一个推理框架按时间片安排工作,避免两个重量级生成循环无节制竞争。

不过,它也没有魔法般省显存。4.5 官方报告约占 19GB(bf16)或 11GB(int4);原生 PyTorch 全双工 demo 为中间激活和运行余量推荐至少 28GB NVIDIA 显存。真正面向边缘设备的是专门优化的 llama.cpp-omni:官方要求 NVIDIA 至少 12GB,并在 RTX 4090、5080、5070 上测得全双工实时因子分别为 0.21、0.32、0.40,均低于 1,意味着生成速度快于实际播放速度。

所以,16GB RTX 4060 Ti 的容量高于官方列出的约 11GB int4 模型占用,但能否流畅运行全双工仍取决于推理后端、运行时余量和实际吞吐;8GB 版本无法将约 11GB 的模型完整放入显存,必须进一步卸载或换用更旧、更小的 2.6 int4,性能自然会下降。

MiniCPM-o 真正改变了什么?

它的优势不是某个模块突然比普通 VLM 快几十倍,而是重新设计了工作单位与调度方式

  • 将视频变成低帧率、强压缩的增量视觉 token;
  • 将音频压到每秒 10 个 token;
  • 让 8B 主干只低频生成文字;
  • 将高频语音生成下放给轻量解码器;
  • 最后通过 1 秒时间片与共享 KV cache 将所有流组织起来。

它用“持续追加少量状态”代替“反复理解整张图片并生成完整描述”,所以才能在本地设备上表现得像边看边说。

但长期记忆如何淘汰,技术报告没有公布明确的滑动窗口或 KV eviction 策略,上下文上限仍然存在。4.5 报告也承认,在漫长、持续变化的现实流中,稳健性仍需改进。它更像一个训练和推理共同设计的实时系统,而非已经解决无限视频记忆的通用方案。

参考资料:MiniCPM-o 4.5 技术报告MiniCPM-o 官方仓库MiniCPM-o 2.6 模型卡

魔法没有消失,只是被拆成了工程约束

MiniCPM-o 本质上是一个高阶的、按模块与时间片分配资源的流式系统。它也受到类似 RVC 与流式 TTS 的限制:如果本地机器生成一段音视频所花的时间超过这段内容本身的播放时间,也就是实时因子大于 1,系统就会不断落后,最终无法维持实时交互。

所以魔法其实没有那么多。

但“让每一秒观察到的内容与这一秒应该说什么发生关联”,仍然很有意思。它要求模型不只回答问题,还要知道什么时候继续听、什么时候开口,以及嘴里正在说的内容是否已经落后于环境。

普通的无状态图片问答 API 确实不适合每秒上传四五张完整图片:反复上传、视觉编码与 prefill 很快就会将延迟堆起来。不过,这不是说“只要调用 API 就不可能实时看图”。如果服务提供持久会话、增量 KV cache,以及 WebSocket 或 WebRTC 这样的长连接,MiniCPM-o 同样可以部署在远端,以流式 API 提供实时交互。

本地部署也不必然意味着上下文和 tool call 能力差。更准确地说,当前能在消费级设备上实时运行的小型 omni 模型,往往需要在模型规模、上下文、工具调用、画面精度与语音实时性之间作出取舍。云端大模型与本地实时系统只是在优化不同目标。

算力和钞能力当然可以买来更强的模型与 API,解决上下文、工具调用和部分延迟问题。但如果模型只是一个只会被动回复的 API,那么即便它能看懂视频,对我来说也依然很无趣。我真正关注的,仍然是怎样让它持续感知、主动行动,最后拥有一点像灵魂的东西。

从单帧识图到实时视频对话:DeepSeek、MiniCPM 与 MiniMax 的多模态架构路线
https://xnnehang.top/posts/from-single-frame-to-real-time-video-conversation/
作者
XnneHang
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0