Incantation:以自然语言作为多实体视频世界模型的动作接口 Incantation: Natural Language as the Action Interface for Multi-Entity Video World Models
首个用自然语言同时控制多个实体的可交互视频世界模型,支持跨实体动作迁移与开放词汇
前置知识
视频扩散模型(Video Diffusion Model)
在潜在空间(latent space)通过迭代去噪生成视频帧序列的概率生成模型,通常以 3D U-Net 或 Diffusion Transformer(DiT)为骨干,配合 VAE 完成像素↔潜在空间的编解码。Wan 2.2 TI2V-5B 是本文使用的基础模型。
Incantation 是一个在预训练双向视频扩散模型(Wan 2.2)之上改造而来的交互式世界模型,理解其注意力机制与潜在帧概念是读懂 Stage 1 改造的前提。
交叉注意力(Cross-Attention)
让一个序列(如视觉 token)以另一个序列(如文本 embedding)为键值进行条件采样的注意力机制,是文生图/文生视频条件生成的核心模块。本文把每个潜帧只与自己的文本条件做交叉注意力,从而避免历史帧被未来动作标签污染。
Incantation 的关键设计就是解耦的交叉注意力:每个帧只接收自身 prompt 而不污染已提交的历史帧,这是其可控性的来源。
RoPE(Rotary Position Embedding)
通过在注意力分数上叠加与位置相关的相位旋转,把相对位置信息注入注意力的位置编码方案。在长序列推理时,位置索引会不断增长,超出训练分布即所谓 RoPE OOD,会导致视频闪烁、漂移。
Incantation 必须保证实时长时段生成,因此提出有界 RoPE 与 RoPE 解耦的 KV 缓存滑动窗口,让所有推理时刻的位置都落在训练分布内。
自回归视频生成与 KV 缓存
在流式生成长视频时,模型以历史已生成帧为条件生成下一帧;KV 缓存存储历史注意力键值,避免重复计算。StreamingLLM 等工作使用 sink token + 滑动窗口限制显存增长。
Incantation 的 Stage 2 把 50 步教师蒸馏到 2 步学生,并在推理时以 7 帧滑窗 + sink 帧的方式控制显存,使生成可无限延续。
动作接口(Action Interface)
用户向世界模型描述下一帧应该发生什么的协议层。常见三大类:引擎内动画 ID(DIAMOND)、人体设备输入(Genie/Oasis)、场景级文本(GameGen-X)。本文的核心论点是:现有接口在结构上无法同时支持开放词汇语义与逐实体可寻址性。
这是本文立论的基石;理解这一层才能体会为什么作者要提出用自然语言作为动作接口。
Self-Forcing 蒸馏与一致性蒸馏
Self-Forcing 让学生模型在训练时以自己生成的(而非 ground truth)历史帧为条件,从而抑制自回归推理时的暴露偏差;ODE 初始化则把双向教师的输出流场对齐到因果学生上,使蒸馏能稳定起步。
Stage 2 把 50 步推理压到 2 步、达到 19.7 FPS,靠的就是这两步蒸馏 + 滑窗 KV 缓存的组合。
研究动机
现有的可交互视频世界模型在多实体共享单一视角这一关键场景(典型如 RPG Boss 战、PvP 格斗)上存在结构性的控制能力短板。根因不在模型本身,而在动作接口的设计:其一是引擎内动画 ID(如 DIAMOND 在 Atari/CS 上用的离散索引),每个 ID 在设计时就被绑定到特定实体的一段固定动画上,词汇表之外的任何行为在结构上不可表达;其二是键盘/鼠标等设备输入(GameNGen、Genie、Oasis、Matrix-Game、MineWorld 等),粒度只到玩家本人,无法区分场景里谁该动;其三是场景级文本指令(GameGen-X 的 InstructNet、Hunyuan-GameCraft-2 的「打开门」类自由 prompt、LingBot-World 的全局/局部事件),粒度只到整张画面,把多个实体的行为揉在同一个描述里。多实体尝试要么放弃共享视角(Solaris 用分玩家第一人称流,ShareVerse 用四视角拼接,MultiGen 用外部记忆),要么只控制一侧(COMBAT 只对 Tekken 3 玩家提供反应性对手,没有可指挥接口),要么完全放弃联合动力学。简言之,没有任何现有接口能在同一画面里给每个独立实体发出独立、可组合、可跨实体共享语义的动作指令。
本文的目标是本文要构造一个支持单一共享视角 + 每实体独立且并发可控的可交互视频世界模型。具体目标有四:(i) 把动作接口从离散的固定 ID 换成自然语言文本,让每个实体每个 0.25 s 拥有一个独立文本槽位,可以并发下发动作、且槽位数量可线性扩展到 3 个甚至更多实体;(ii) 让模型在跨实体迁移(把 Margit 的招牌技能让 Crucible Knight 做出来)和词汇表外表达(Downward slash、Dual light blade throw 等近义/改写)这两类结构性测试中显著优于离散 ID 接口,前者提升 +46 pp、后者实现从 0% 到 90% 的质变;(iii) 在 480p 分辨率下达到 19.7 FPS 端到端实时帧率,并把推理从教师的 50 步压到 2 步(约 74× 加速),同时不损失 ACA;(iv) 视觉稳定性必须覆盖 2 小时以上的连续交互(FVD 在 30–118 min 区间波动仅 [162, 171]),并能在仅替换每实体动作词表的前提下复现到另一个视觉风格迥异的世界(2D 像素 KOF),以此证明接口本身具备跨世界通用性。
与已有工作不同的是,本文的独特切入角度是把瓶颈从模型容量不够重新归因到接口协议本身不够表达力。作者论证:动作接口是用户与世界模型之间的契约,它的表达能力上限决定了模型能做什么,而文本接口恰好同时拥有开放词汇语义(如 light blade、throw 等子词可跨实体复用,无需为每个实体设计一套独立动画命名空间)与逐实体可寻址(每个槽位在句法上隔离,模型可以独立地决定每个实体做什么)两项性质。传统方法之所以做不到,是因为它们在这两个维度上做了取舍:离散 ID 牺牲开放词汇换可寻址、场景级 prompt 牺牲可寻址换开放词汇。基于这一观察,Incantation 把 Wan 2.2 TI2V-5B 的双向骨干改造为潜帧级(0.25 s)文本条件 + 解耦交叉注意力 + RoPE 解耦滑窗 KV 缓存 + 2 步 Self-Forcing 学生的系统,并在两个视觉风格迥异的世界(3D 写实 Elden Ring 与 2D 像素 KOF)上仅替换每实体动作词表槽位即复现性能,作为该接口跨世界通用性的实证。这种以接口协议立论而非以模型规模取胜的角度,是本文与同领域近期工作(GameNGen、Oasis、Genie 系列、Matrix-Game 等)的本质区别。
核心方法
Incantation 把动作接口从离散索引换成结构化自然语言 prompt(例如「Player performs [ACTION_P]. Boss performs [ACTION_B].」),每个槽位在句法上独立、对应一个实体,时间粒度 0.25 s。技术上分两阶段:Stage 1 把预训练的双向视频扩散骨干 Wan 2.2 TI2V-5B 改造为逐帧文本条件——历史帧保留双向自注意力(不破坏 Wan 预训练先验),当前被去噪的潜帧只与它自己的 prompt 做交叉注意力(避免污染历史),并通过有界 RoPE 分配位置索引保证推理时不出训练分布;Stage 2 在 Stage 1 教师之上做两段蒸馏,先用 ODE 一致性目标把双向教师的流场对齐到因果学生(1k 步),再做 Self-Forcing 蒸馏把推理步数压到 2 步,同时配合 RoPE 解耦的 KV 缓存滑窗在推理时持续丢弃最旧非 sink 帧、保持局部位置索引有界,实现 19.7 FPS 的 480p 长时段生成。直觉上:文本接口带来跨实体语义共享,离散 ID 接口在结构上做不到;解耦交叉注意力则让每个 0.25 s 都能精准落到对应动作上。
核心创新是把自然语言从场景描述层下沉到动作接口层,并通过三处机制同时满足开放词汇与逐实体可寻址两个原本对立的需求:(1) Prompt 模板里每个实体一个句法隔离的槽位(Player performs X. Boss performs Y.),天然支持并发独立控制与可扩展到 N 个实体;(2) 解耦的文本交叉注意力只作用于被去噪的目标帧、历史帧不被污染,从而既保留 Wan 2.2 双向自注意力的预训练先验、又防止当前动作标签回灌到已提交的历史中造成伪影;(3) RoPE 解耦的 KV 缓存滑动窗口——把原始 key(未旋转)缓存、查询时按当前局部位置 on-the-fly 旋转——解决了滑窗时相对位置改变导致的闪烁问题。与已有方法相比,本质区别是:DIAMOND/Genie/Oasis 等都是单实体 ID/键盘 → 单帧,无法跨实体共享语义;而 GameGen-X/Hunyuan-GameCraft-2 是整段场景 prompt → 整段视频,无法区分实体。Incantation 是第一个把两者统一到 0.25 s 逐帧潜空间层面的方案。
方法步骤详情
Stage 1(语言条件架构):(i) Prompt 表述——为每个实体分配一个句法隔离的槽位,多实体模板为「Player performs [ACTION_P]. Boss performs [ACTION_B].」,0.25 s 时间粒度,槽位数量可增删无需改架构;(ii) 上下文组装——对每一训练步目标帧 t,使用 Sink + Recent + Noisy 结构:Ks=1 个 sink 帧(剧集首帧,永久锚定全局几何/外观)、Kr=7 个最近干净潜帧(约 1.75 s)、Kn=1 个被去噪的目标帧;(iii) 逐帧语言条件注意力——历史 (Ks+Kr) 个 token 之间做完整双向自注意力(保留 Wan 2.2 预训练先验),并在历史与目标之间设置因果边界;文本交叉注意力只作用于目标帧,历史帧被 mask 掉;(iv) 有界 RoPE 位置分配——sink 永久锚定 0,目标帧位置 min(pt, C),Kr 个最近帧占目标帧之前的连续位置,Kr 控制显存与计算、C 控制位置范围,确保所有推理位置都在训练分布内。Stage 2(实时长时段推理):(v) ODE 初始化——把双向教师用 flow matching 一致性目标 $\mathcal{L}_{\text{ODE}} = \mathbb{E}_{\tau,v_0,\epsilon}\| f_\theta(v_\tau;\text{causal}) - f_{\text{teacher}}(v_\tau;\text{bidir})\|_2^2$ 对齐到因果学生(1k 步、lr 5e-6、batch 128、16×H100);(vi) Self-Forcing 蒸馏——学生训练时以自己生成的历史为条件而非 ground truth,抑制自回归暴露偏差,15k 步把推理压到 2 步;(vii) RoPE 解耦 KV 缓存滑窗——缓存 raw key(不旋转),按公式 $p_i^{\text{local}} = \text{clamp}(p_i^{\text{abs}} - \delta, 0, C)$、$\delta = \max(0, p_t^{\text{abs}} - C)$ 实时计算每个缓存帧的局部相对位置再做 RoPE 旋转,查询时按 $\text{Attn}(q_t, k_i) = \text{Softmax}(q_t R(p_t^{\text{local}}) k_i^{\text{raw}} R(p_i^{\text{local}})^{\top}/\sqrt{d})$ 融合,最旧的非 sink 帧被淘汰、sink 永远保留。训练数据:30 h Margit + 15 h Crucible Knight + 83 h KOF,约 128 h,从引擎内存以 0 时间偏移读取逐帧动作三元组 $(v_t, a_t^{\text{player}}, a_t^{\text{boss}})$。
技术新颖性
技术新颖性体现在四个相互耦合的层面。第一,把自然语言动作接口从概念落地到具体的每帧 prompt 模板 + 解耦交叉注意力,让语言接口既保留开放词汇又保留逐实体可寻址,这是现有离散 ID、设备输入、场景级 prompt 三大家族都做不到的组合。第二,把 Wan 2.2 这种全双向预训练骨干改造为支持流式因果推理而不破坏预训练先验——传统做法是直接套因果 mask 强制重训(效果差且代价高),Incantation 用 ODE 初始化在 1k 步内闭合双向/因果的流场差异。第三,RoPE 解耦的 KV 缓存技术细节解决了滑动窗口会改变相对位置从而导致闪烁的工程难题,让长时段生成稳定在 2 小时以上(FVD 在 30–118 min 区间波动仅 [162, 171])。第四,把同一个架构+训练配方仅替换每实体词表槽位即在 2D 像素 KOF 上复现性能(学生 94.0% ACA vs 教师 94.9%),提供了跨世界接口通用性的实证。所有这些共同支撑了一个结构性论断:文本作为动作接口在结构上优于离散索引,而非仅在某一特定分布上表现更好。
实验结果
核心实验沿三条坐标轴对比 NL(本文自然语言接口)与 Action-Index(共享 47 类联合词表的离散 ID 接口,所有其他条件相同)。坐标轴 1(分布内对等性):在训练集出现频次最高的 5 个动作上,NL 平均 ACA 95%(逐动作:双光刃投掷 95%、法杖下砸 80%、盾格挡 100%、重劈 100%、坩埚尾击 100%),Action-Index 89%,差距仅 6 pp,从而排除 NL 优势源于模型容量或优化的可能。坐标轴 2(跨实体语义迁移):在 Margit 与 Crucible Knight 联合训练后,对 5 个目标实体从未见过的动作对做评测(NL 改变实体身份词、Action-Index 切换 one-hot),NL 平均 ACA 89%(I 级 80%、II 级 90%、III 级 80/95/100%),Action-Index 仅 43%(I 级 15%、II 级 60%、III 级 25/40/75%),整体差距 46 pp;并辅以 VLM pairwise 裁判(gemini-3.1-flash-lite-preview,n=20/动作):Tier I NL 胜率 85% vs 15%、Tier III 全部 NL 领先 10–25 pp、McNemar 配对检验 $Z=6.38$, $p<10^{-10}$。坐标轴 3(词汇表外覆盖):4 个 OOV probe(Downward slash、Crucible tail、Shield guard、Dual light blade throw,每个为 top-3 频率 prompt 改一个词)40 次试验 NL 聚合 ACA 90%,Action-Index 因结构上没有对应槽位强制为 0%——这是定性差异而非定量差距。系统层指标(Table 2):Elden Ring 上教师 50 步 FVD 206.2、ACA 93.2%、单帧延迟 12058.7 ms;2 步学生 FVD 138.6、ACA 90.4%、单帧延迟 163.4 ms(74× 加速),实际端到端 19.7 FPS;KOF 上相同配方仅替换词表即得 FVD 162.9、ACA 94.0%、单帧延迟 165.2 ms(67× 加速)。长时段稳定性(Table 11,5 路 ~118 min Margit 滚动):FVD 在 [162.4, 171.3] 之间,mean 166.0、std 2.3,30–118 min 内未见单调退化,且比教师的 50 步 206.2 还低约 40 FVD。架构消融(Table 5,2×2 因式):双向历史 + 文本仅作用于目标帧 FVD 201.9(本文选择)、双向 + 文本作用于全部帧 197.1、因果 + 文本仅作用于目标帧 245.1、因果 + 文本作用于全部帧训练始终未收敛(FVD > 1100),说明双向先验保留与解耦交叉注意力缺一不可。Stage 2 消融(Table 6):不滑窗 FVD 从 10 s 的 439.6 暴涨到 30 s 的 996.9(2.3× 退化),说明 KV 滑窗是长时段关键;kv=7/cap=16 与 kv=7/无 cap 差距仅 0.9–2.0 FVD,说明 RoPE 上限影响小、滑窗本身已足够。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 分布内动作控制(Elden Ring,5 个高频动作) | Action Control Accuracy (ACA, ≥1) | NL 95% | Action-Index 89% | +6 pp |
| 跨实体动作迁移(5 对 Margit↔Crucible Knight 互训后未见动作) | Action Control Accuracy (ACA, ≥1) | NL 89% | Action-Index 43% | +46 pp |
| 词汇表外(OOV)动作表达(4 个近义/改写 probe,40 trials) | Action Control Accuracy (ACA, ≥1) | NL 90% | Action-Index 0% | 结构性差距(+90 pp) |
| Elden Ring 系统级(480p, 2 步学生) | FVD ↓ / 单帧延迟 | FVD 138.6 / 163.4 ms | 教师 50 步 FVD 206.2 / 12058.7 ms | FVD −67.6、延迟 74× 加速 |
| KOF 系统级(2D 像素格斗,仅替换词表) | FVD ↓ / ACA / 单帧延迟 | 学生 FVD 162.9 / ACA 94.0% / 165.2 ms | 教师 FVD 170.1 / ACA 94.9% / 10986.0 ms | 67× 加速,ACA 仅 −0.9 pp |
| 长时段滚动稳定性(5 路 × ~118 min Margit) | FVD 在 30–118 min 区间的均值/极差 | mean 166.0、std 2.3、range [162.4, 171.3] | 教师 50 步 10 s 评测 FVD 206.2 | 稳定且低于教师 ~40 FVD |
| Elden Ring 轨迹条件 ACA(vs 商业基线) | ACA % | 学生 90.4% | Seedance 2.0 46.7% / LongLive 20.3% | +43.7 pp / +70.1 pp |
| 端到端实时吞吐(480p,TAEHV 解码器) | Eff. FPS | 19.7 FPS(0.81× 实时) | 无流式重叠时 10.1 FPS(1.58× 实时) | 约 1.95× 提升,实现实时 |
局限与改进
作者自陈三大局限。(1) 标注通道依赖引擎内存读取:游戏是唯一能同时提供逐帧、逐实体、零成本、交互帧率标注的领域,因此 NL 接口在非游戏场景(真实视频、闭源引擎)下需要替换标注源(VLM 自动标注、遥操作日志、机器人本体感知等)——这是数据侧问题,不改变接口本身,但仍限制直接外推。(2) 仅语义动作控制:本文接口处理离散语义动作,无法原生支持相机 SE(3) 轨迹、机器人末端力/速度等数值连续控制;作者提出保留语言作为高层语义通道并叠加一个并行连续控制模块即可,但尚未实现。(3) Episode 级状态依赖手写 Observer–Tracker–Policy 三段循环(A.16 附录):角色死亡、阶段切换等需要长期离散状态维持的行为,超出扩散骨干的 ~1.75 s 上下文;当前以 Qwen3-VL-2B + 外部状态机 + 阈值策略解决,但每个新领域需重写 Observer 与 Tracker schema,未做到世界无关的 learned 版本。自己额外观察:(a) NL 接口的开放词汇最终受限于文本编码器(继承自 Wan 2.2)的训练分布,对真正新颖 token 仍需显式适应;(b) 单实体场景下 NL 接口退化为对离散输入的换皮,无表达力优势;(c) 残存故障:2 步学生在极端镜头抖动的 Boss 跳跃攻击下偶发运动模糊(<3% 帧,靠 guidance scale 4.5 缓解),VLM 击检测对盾反有 <5% 误报(被 HP 计数阈值兜底);(d) 所有评测均使用人工盲评(每条至少 3 名标注员、{0,1,2} 三档、within-1 一致性 93.3–96.5%),ACA 数值因此是主观指标,跨研究可比性受限,论文也承认通用 VLM judge 在 Tier II 上退化为随机(50/50)。
独立分析的弱点
独立分析有四点值得改进的方向。第一,以引擎内存作为标注既是优势也是隐患:一旦用于闭源/未修改的游戏或真实视频,整套 pipeline 就失效;建议在论文主线之外提供一条基于 VLM 自动打标签 + 主动学习的冷启动路径,让用户能在没有游戏内存权限的情况下用数百小时人工示范视频训练同样能力的模型。第二,逐帧 prompt 模板「Player performs X. Boss performs Y.」对 >2 实体线性外推缺乏空间/相对位置信息,对 5+ 实体场景会出现「谁打谁」指代不清;可考虑加入 entity-local 的空间关系 token(如 front-left of player)或参考点编码。第三,离散语义动作无法表达数值化强度(轻击 vs 重击仅靠新词区分),与连续控制(力度、轨迹)脱节;论文已提出语言 + 并行连续通道思路,但 2 步学生是否还扛得住多通道融合尚未验证,且 TAEHV 解码下 VAE 仅 9 ms 的预算里要塞下额外条件分支,实现难度不小。第四,2 步 Self-Forcing 在极端运动模糊下 <3% 退化提示我们去噪器在边角情况下过平滑;可考虑加入轻量级对抗判别器或在 Loss 上加运动向量监督,让 2 步模型保留高频细节而不只是看起来对。
未来方向
作者提出的方向有三。(a) 跨域推广:把 NL 接口应用到非游戏场景(具身操作、自动驾驶),核心是把逐实体动作文本从引擎内存改成 VLM/teleop/robot proprioception 自动产出的 caption;(b) 语义+连续混合控制器:在语言接口之上叠加一个并行连续控制模块,让语言负责做什么、连续信号负责做多少/多准;(c) 用 learned 模块替换手写的 Observer–Tracker–Policy 闭环,让 episode 级离散状态可被端到端学出来。基于成果可延伸的方向还包括:(i) 真正多玩家竞技 AI——把每个对手都做成独立 NL 可控实体,配合强化学习策略可作为对抗训练环境;(ii) 把 NL 接口接到具身机器人的高层任务规划上,自然语言任务指令可分解为逐实体语义动作;(iii) 用 Incantation 当训练场去合成多视角对抗视频数据,缓解当前动作识别/姿态估计数据集稀缺问题;(iv) 把 RoPE 解耦 KV 缓存抽象为通用长视频流式生成插件,使其他自回归视频模型也能零成本获得 2 小时级稳定滚动能力;(v) 研究共享文本编码器 + 不同骨架对跨世界迁移的下限,把现在换词表即迁移的经验证据扩展到 5+ 世界(如赛车、模拟飞行)。
复现评估
复现门槛在中等偏高层级。代码与数据集预览已开源(GitHub: matrixteam-ai/Incantation,HuggingFace 数据集预览 zhush/incantation-elden-ring-scenes,Elden Ring 完整数据与 KOF 完整数据将随项目完整发布)。复现所需算力:(i) Stage 1 双向教师在 16×H100 80GB 上跑 51k 步(1k warmup@256×448 + 50k@480×832,AdamW、batch 64、peak lr 1e-5),约数天 GPU·日;(ii) ODE 初始化 1k 步@480×832(lr 5e-6、batch 128、16×H100);(iii) Self-Forcing 蒸馏 15k 步(lr 2e-6);(iv) VLM Observer 4.5k 损伤事件 + 16.3k 非事件 0.25 s 窗口 LoRA 微调,单卡 H100 8 h。推理只需单卡 H100 80GB 即可达 19.7 FPS。预训练骨干 Wan 2.2 TI2V-5B 与 TAEHV 均公开(Apache 2.0 / MIT)。数据层面,Elden Ring 数据需自录——需要逆向读取引擎 current_animation 字段,论文承诺发布 raw-ID→动作映射,但仍要求研究者具备游戏内存读取能力或使用 KOF 模拟器寄存器。难度集中在三处:(1) 引擎内存标注通道,论文已留出接口但实现细节需要用户自行逆向;(2) Wan 2.2 双向→因果的 ODE 对齐对超参敏感,lr 偏离 5e-6 即可能发散;(3) TAEHV 流式管线需要 CUDA stream 重叠 + 边界重叠 L 帧消抖,对工程实现有一定门槛。
论文图表