MIO 与任意到任意的流式多模态模型

Learn~120 minutesPython (stdlib, four-modality token allocator + streaming decode loop)先修要求: Phase 12 · 11 (Chameleon), Phase 6 (Speech and Audio)
GPT-4o 交付了一款大多数开放模型无法复制的产品:一个能听见声音、看见视频、并实时开口回应的 Agent。2024 年末开放生态给出的答案是 MIO(Wang 等,2024 年 9 月)。MIO 把文本、图像、语音和音乐都 token 化,在交错序列上训练一个因果 Transformer,实现任意模态到任意模态的生成。AnyGPT(Zhan 等,2024 年 2 月)是概念验证;MIO 是规模化;Unified-IO 2(Allen AI,2023 年 12 月)是带视觉 + 动作定位的表亲。本课解读任意到任意的范式——四个 tokenizer、一个 Transformer、适合流式的解码。
学习目标
  • 设计一个共享词表,容纳文本、图像、语音和音乐 token 而不发生冲突。
  • 在压缩率与重建效果的权衡上,比较 SEED-Tokenizer(图像)与 SpeechTokenizer 的 residual-VQ(语音)。
  • 解释构建任意到任意生成的四阶段课程。
  • 说出三种开放的任意到任意方案及其主要权衡:MIO、AnyGPT、Unified-IO 2。

问题

统一多模态模型说起来容易,规模化做起来难。直到 2024 年,大多数「任意到任意」系统都是 pipeline 式的:视觉模型 → 文本表示 → 语音模型 → 音频。每一跳都丢失信息、增加延迟、让训练更复杂。GPT-4o 的演示视频展示了单模型方案能做到亚秒级响应;开放系统落后了数月。

工程挑战在于:

  • 每种模态都需要 tokenizer,压缩要足够无损以支持重建,产出的 token 速率还要是 Transformer 能消化的。
  • 单一词表要为文本(32k+)、图像(16k+)、语音(4k+)、音乐(8k+)分配空间。至少四万多个条目。
  • 训练数据必须覆盖每一个输入-输出组合(文本→图像、图像→语音、语音→图像等),否则模型必须靠组合能力泛化。
  • 推理时输出 token 的流式速度必须满足对话级延迟(首个音频字节时间 <500ms)。

概念

四种模态,四个 tokenizer

MIO 的 tokenizer 栈:

  • 文本:标准 BPE,词表约 32000。
  • 图像:SEED-Tokenizer(2023)——带离散码本的量化 VAE,4096 个条目,每张图 32x32 个 token。
  • 语音:SpeechTokenizer residual-VQ(2023)——把 16kHz 波形编码到 8 个分层码本;第一层是粗粒度内容,后续层补充韵律和说话人身份。
  • 音乐:类似的 residual-VQ(Meta 的 MusicGen / Encodec 家族),4-8 个码本。

每种模态产出整数 token。这些 token 在共享词表中获得互不重叠的 ID 区间:

text:   0..31999
image:  32000..36095  (4096 image tokens)
speech: 36096..40191  (4096 speech base tokens, plus residual layers)
music:  40192..48383  (8192 music tokens)
sep:    48384..48390  (<image>, <speech>, <music>, </...>, etc.)

总计:约 48k 词表。输入 embedding 和输出投影覆盖整个词表。

流式解码

语音生成使用 residual-VQ。Transformer 预测基础层(第 0 层)的语音 token;一个并行解码的残差量化器预测后续层。每个第 0 层 token 在 16kHz 下大约对应 50ms 音频。

流式模式:

  1. 用户对着麦克风说话;实时音频 tokenizer 每 50ms 产出语音 token。
  2. MIO 在 token 到达时即时消费(prompt 预填充 + 增量前向)。
  3. 输出 token 随生成流出;并行语音解码器把它们转成音频采样,延迟约 50-150ms。
  4. 首个音频字节时间:MIO 论文中约 300-500ms,接近 GPT-4o 的约 250ms。

Mini-Omni(arXiv:2408.16725)、GLM-4-Voice(arXiv:2412.02612)和 Moshi(arXiv:2410.00037)是互补的流式语音 LLM 设计。Moshi 尤其能在单张 GPU 上做到 160ms 往返。

四阶段课程

MIO 的训练课程:

  1. 第一阶段——对齐。大规模模态配对语料:文本-图像、文本-语音、文本-音乐。每一对使用各自的 token 词表片段。训练共享词表。
  2. 第二阶段——交错。多模态交错的文档(带图片和视频的博客、带文字稿的播客等)。训练跨模态上下文。
  3. 第三阶段——语音增强。加入额外音频数据提升语音质量,同时不损失文本能力。
  4. 第四阶段——SFT。跨模态的指令微调:VQA、图像描述、叙述、语音到语音对话。

缺少任何阶段都会削弱特定能力:跳过第二阶段,模型会丢失跨模态上下文;跳过第三阶段,语音质量会很差。

视觉思维链

MIO 引入了 chain-of-visual-thought(视觉思维链):模型生成中间图像 token,作为一步推理。对于「猫在爬树吗?」这个问题,模型会:

  1. 输出 <image> token,把场景渲染出来(基于输入图像或草图)。
  2. 输出分析这张草图的文本。
  3. 输出最终答案。

渲染出的中间图像充当草稿纸。空间推理类任务的基准成绩因此提升。这个思路与文本推理中的思维链(CoT)一脉相承。

任意到任意的竞争者

  • AnyGPT(arXiv:2402.12226):4 种模态(文本、图像、语音、音乐),设计相近。
  • Unified-IO 2(arXiv:2312.17172):增加了视觉动作输出、深度、法线。任务更丰富,规模更小。
  • NExT-GPT(arXiv:2309.05519):LLM + 各模态专属的扩散解码器。不是单模型方案。
  • CoDi(arXiv:2305.11846):可组合扩散;通过共享 latent 实现任意到任意。

MIO 最接近纯 token 的任意到任意。AnyGPT 是它的概念前身。

延迟预算

对于对话产品,每个组件的延迟都很关键:

  • 麦克风到音频 token:约 50ms。
  • 预填充(音频 token + 历史):8B 模型上约 100ms。
  • 首个输出 token:约 50ms。
  • 并行 residual-VQ + 语音解码器:约 100-150ms。

首个音频字节时间合计:最低约 300ms。GPT-4o 声称约 250ms。Moshi 声称 160ms。根据公开基准,MIO/AnyGPT 在 400-600ms 区间。

为什么任意到任意依然困难

即使到了 2026 年,开放的任意到任意模型在两个维度上仍落后于闭源模型:

  • 语音质量。residual-VQ tokenizer 是有损的;与 ElevenLabs 级别的音色相比,对话语音听起来机械。
  • 跨模态推理。让模型「把你看到的东西唱出来」,失败率仍高于纯视觉任务。

这些都是开放的研究问题。Qwen3-Omni(第 12.20 课)是 2025 年最先进的开放尝试。

any-to-any-stream静态版本未包含此交互图

使用它

code/main.py:

  • 定义并打印四模态的词表分配。
  • 把一组多模态输入(文本、图像、音频片段、音乐)路由通过 tokenizer 路由器。
  • 模拟一次文本转语音响应的流式解码,并统计延迟。
  • 根据编码器、预填充和解码器延迟,计算预期的首个音频字节时间。

交付它

本课产出 outputs/skill-any-to-any-pipeline-auditor.md。给定一份对话产品规格(输入模态、输出模态、延迟目标),它审计 MIO 家族的设计选择并计算延迟预算。

练习

  1. 你的产品接受语音输入、返回语音输出。端到端延迟预算目标是多少?列出消耗时间的组件。
  1. SpeechTokenizer 的 residual-VQ 使用 8 个码本。论证为什么必须并行解码各残差层(而非顺序解码),以及它带来多少延迟节省。
  1. 你的词表有 32k 文本 + 4k 图像 + 4k 语音。再加上 8k 音乐和约 10 个分隔符。在隐藏维度 4096 下,embedding 矩阵的参数开销是多少?
  1. 视觉思维链会生成一张中间图像。哪类问题能从中受益?哪类问题会因为多出的 token 而受损?
  1. 读 Moshi(arXiv:2410.00037)。描述它的「inner monologue」技术,并与 MIO 的视觉思维链比较。

关键术语

术语常见说法实际含义
任意到任意「多模态输入/输出」单个模型能以任意方向接收和输出文本、图像、语音和音乐
Residual-VQ「语音 tokenizer 栈」多码本 token 化,每层增加信息;基础层是内容,后续层是韵律
SEED-Tokenizer「图像编码」MIO 使用的离散图像 tokenizer,码本有 4096 个条目
视觉思维链「视觉草稿纸」模型在给出最终答案前先生成一张中间图像作为推理步骤
首个音频字节时间「TTFAB」从用户发声到第一个音频输出的延迟;小于 500ms 才有对话感
四阶段课程「训练配方」对齐 -> 交错 -> 语音增强 -> SFT,按此顺序

延伸阅读

示意图共 1 张

any-to-any diagram
any-to-any

“Stay hungry, stay foolish.”

— Steve Jobs

esc
↑↓切换↵打开esc关闭