Interaction Models: A Scalable Approach to Human-AI Collaboration

1. 出发点 (Motivation)

2026 年的 frontier 模型几乎全在 push "autonomy" — 模型自己跑长 task,人在外面看。代价是人被推出了 loop:

"When used in this fashion, some users perceived [our model] as too slow and did not realize as much value. Autonomous, long-running agent harnesses better elicited the model's coding capabilities." — 某 frontier model card,博文引用

但现实里:大多数有价值的工作,用户没法一开始就把需求 spec 死;协作过程中要不断给反馈/澄清。当前的 turn-based 模型架构把人推出去不是因为人不需要,而是因为 interface 没给人留位置。

Thinking Machines 的诊断 — 带宽瓶颈:

现有"伪实时"方案的本质 — harness:把 turn-based 模型外面套一层 VAD (voice activity detection) + TTS + dialog management,组件之间是手写规则。但 Sutton 的 Bitter Lesson 提醒:这种 hand-crafted system 终将被通用能力的提升碾过。要让 interactivity 跟 intelligence 一起 scale,interactivity 必须做进模型本身。

这就是 interaction model 的定位 — 不是"模型 + 外面的实时性 harness",而是"原生支持实时 multi-stream 的模型架构"。

2. 方法 (Method)

核心思想 (类比)

把目前的 LLM 想成对讲机 (walkie-talkie):你按下按钮说一段,松开后等对方说,严格交替。要打断对方?那是另外一个组件的事。

Thinking Machines 要做的是电话 (phone):双方同时持续地听+说,沉默、重叠、插话都是自然的对话原语,不靠外挂检测器。

实现的核心:把时间切成 200ms 一份的 micro-turn,每份里都有用户的 200ms (音频/视频/文字) 和模型的 200ms (音频/文字),两个流并行处理。模型不再"等用户说完",而是每 200ms 都决定一次"我现在该说话、保持沉默、还是 backchannel"。

Turn-based vs Time-aligned micro-turn-based
Fig. 1 — 上:传统 turn-based 模型把 input/output 拍扁成一个 token 序列;下:time-aligned micro-turn 模型把 video/audio/model 三条流都按 200ms 切片,沉默/重叠/插话都内嵌在模型 context 里。

2.1 Micro-turn 200ms 流

模型每 200ms 完成一次"处理 200ms 输入 + 生成 200ms 输出"的循环。输入 token 和输出 token 都被视为,而不是回合的边界。

Human perception vs model token sequence
Fig. 2 — Human perception 是并行的两个流 (input 和 output 同时进行),模型内部把它们 interleave 成一个 200ms-粒度的 token 序列 (input_0, output_0, input_1, output_1, ...)。这就是"双流并行"在 transformer 输入端的具体实现。

这一设计的关键收益:

2.2 双模型分工:实时 interaction + async background

"实时"和"深度推理"在 latency 上天生矛盾 (一个要 200ms 出结果,一个可能想 30 秒)。TM 的设计是双模型:

关键设计:

这套分工类似前作 Qwen-omni、KAME、MoshiRAG 的"thinking+talking 分离"思路,但 TM 把分工做到了更彻底:interaction model 自己也是 intelligent 的,可以独立 hold 整个对话。Background model 只在真的需要深度推理时才介入。

2.3 Encoder-free 早融合

多模态模型常见做法:audio 走一个 Whisper-like encoder,video 走一个 SigLIP/ViT encoder,然后 token-level 拼起来送进 transformer。TM 反其道:所有 encoder 都尽可能轻

Interaction model architecture
Fig. 3 — 单个 200ms micro-turn 的模型架构。输入端 (下):Tokens → Embedding,40×40 Patch → hMLP,dMel → "Bag of embeddings"。Transformer 处理。输出端 (上):Unembedding → Text,Flow → Mel (音频)。整个 stack 从底到顶共同训练,不是预训练 encoder + 微调 LLM 的组合。

**为什么这条路重要:**预训练 encoder (Whisper, SigLIP) 是为识别任务训的,与生成式交互的目标不完全对齐。从头共训能让 representation 自动适配 generation 任务。代价是数据量 / 计算成本提升 — 但 TM 显然认为对 frontier model 这点代价值得。

2.4 推理优化:streaming sessions + 内核优化

200ms 的硬 latency 约束让现成的 LLM serving (vLLM, TensorRT-LLM, SGLang stock) 都不够用 — 它们都是为"大 prefill + 长 decode"优化的,小 prefill 频繁触发的场景下 per-turn overhead 高得离谱。

TM 的解决方案:Streaming sessions。客户端每 200ms 发一个独立 request,服务端把这些 chunk append 到一个 GPU 内存里持久存在的 sequence。避免每次 metadata 重算 + 内存重分配。这个 feature 已经 upstream 到 SGLang — 是博文里仅有的一个可触达的"代码 artifact"。

另一个内核细节:对 MoE 推理用 gather + gemv 而不是常规的 grouped GEMM — 在他们的双向 serving shape 下更快 (跟 PyTorch / Cursor 的并发优化思路一致)。

2.5 Trainer-sampler bitwise 对齐 + Split-KV 一致性

RL/RLHF 训练里,trainer 和 sampler 用同一份 weights 但跑出不同 logits 是个常见 bug 源 (浮点累加顺序、不同 kernel 实现、不同并行策略带来差异)。TM 强调他们做到了 bitwise 一致,代价只有 <5% 端到端开销。两个关键 trick:

  1. **NVLS 通信内核:**在 Blackwell GPU 上用 NVLink Switch (NVLS) 实现 deterministic、low-latency 的 all-reduce 和 reduce-scatter。一个有意思的副作用:这些自定义内核本身就比 stock 快,所以"batch-invariant 版本"在某段时间反而是更快的版本 (博文 footnote 调侃"funnily enough")。
  2. Split-KV attention 一致性 (跟 Colfax 合作):attention 的 Split-KV 是 prefill 和 decode 之间累加顺序不一致的主要源。TM 选择一致地按 4096 token 左对齐切,让 decode 和 prefill 走同样的累加 schedule,从而 bitwise 等价。

这两条都是 LLM serving 的"工程内功",但博文给了具体方案不是 hand-waving。这是博文里最技术化、跟 production system 直接相关的两段。

2.6 与代码对照 (none)

博文没有公开训练代码、模型权重、推理 stack 完整实现。唯一可触达的代码 artifact 是上游到 SGLang 的 streaming sessions feature。其他所有架构决策都是博文文字描述。

下面这段是教学性的伪代码,把博文文字描述的 micro-turn 循环用 Python 写出来 — 不是 TM 代码:

Didactic reference — based on blog description, not TM official code

# Server-side micro-turn loop (didactic)
class InteractionSession:
    def __init__(self, model, frame_ms=200):
        self.model = model                       # transformer with co-trained encoders/decoders
        self.frame_ms = frame_ms                 # 200ms
        self.kv = []                             # persistent KV cache in GPU memory
        self.bg_results = asyncio.Queue()        # async background-model channel

    async def on_micro_turn(self, audio_chunk, video_frame, text_chunk):
        # 1) Encode inputs in-place — no big external encoders
        audio_tok = self.model.dmel_embed(audio_chunk)
        video_tok = self.model.hmlp_patches(video_frame, patch=40)
        text_tok  = self.model.tok_embed(text_chunk) if text_chunk else None

        # 2) "Bag of embeddings" — concatenate into this micro-turn's input slot
        input_slice = bag_of([audio_tok, video_tok, text_tok])
        self.kv.append_inputs(input_slice)

        # 3) Drain async background results into the same context window
        while not self.bg_results.empty():
            self.kv.append_bg(self.bg_results.get_nowait())

        # 4) Decode this micro-turn's output (200ms of text + audio)
        out_text, out_mel = self.model.decode_one_microturn(self.kv)

        # 5) Decide: speak? silent? backchannel? delegate to background?
        if needs_deep_thought(out_text):
            asyncio.create_task(self.background_model.run(self.kv.snapshot()))

        return out_text, self.model.flow_head(out_mel)

# Client just streams 200ms chunks; server holds the persistent kv.

真正实现 (TM internal) 用 SGLang streaming sessions + 上面提到的自定义 NVLS / Split-KV 内核 + batch-invariant trainer/sampler 对齐。

3. 结论 (Key Findings)

TM 发布了 TML-Interaction-Small — 276B 参数 MoE, 12B active,实时 interaction model。

Intelligence vs interaction frontier
Fig. 4 — 双轴帕累托。左:横轴 FD-bench v1.5 Interaction Quality (越右越好),纵轴 Audio MultiChallenge intelligence (越高越好) — TML-small 在两个轴上同时领先。右:横轴 responsiveness (越左越好,turn-taking latency),纵轴 intelligence — TML-small 同样占 Pareto frontier。

核心数字 (vs GPT-realtime-2.0 minimal / GPT-realtime-2.0 xhigh / Gemini-3.1-flash-live):

Big benchmark table
Tab. 1 — TM 划分 Instant / Thinking 两栏。在 Instant 列内 (即不开 background-agent 思考),TML 几乎每个指标都拿"best per row" — 黄色高亮。Thinking 栏的 GPT-2.0-xhigh 在纯 intelligence上仍然更强 (Audio MultiChallenge 48.5),但其 turn-taking latency 1.63s 比 TML 的 0.40s 慢 4 倍。这正是 paper 的 thesis:intelligence-vs-latency frontier 上 TML 是新的 Pareto 点。

新维度 benchmark (TM 自己造的,目前还没人能正经做):

这些任务上 GPT-realtime / Gemini 几乎是零分或回退到沉默/猜答案 — 因为现有商业 real-time API 都是 audio-only turn-detection 的 harness,无法主动响应视觉变化。TM 是第一个把 speech-out visual proactivity 端到端做出来的。

4. 实现细节 (Implementation Notes)

博文是 product/research preview, 不是论文。下面是能从文中提炼出的工程参数 + 设计取舍:

5. 批判性总结 (Critical Assessment)

5.1 优点

5.2 不足 / 疑点

5.3 适用 vs 不适用

5.4 进一步阅读

讨论 / Comments

评论托管在本仓库的 GitHub Discussions, 需 GitHub 账号。