Gamma-World: Generative Multi-Agent World Modeling Beyond Two Players

Paper: arXiv:2605.28816 Project page: research.nvidia.com/labs/sil/projects/gamma-world Code status: nv-tlabs/Gamma-World 目前只有 README 与 assets;代码搜索未找到开源实现。README 在 2026-05-28 仍写明 code、distilled streaming checkpoints、training scripts 与 dataset preparation tools 将在后续发布。

1. Motivation (研究动机)

现有 interactive video/world model 大多仍是 single-agent simulator:未来视频通常只受一个 action stream、一个用户输入或一个可控视角约束。这样的模型可以生成一个人的未来观察,但不能自然处理多个玩家、多个机器人或多个 embodied agents 同时在同一空间中交互的情况。多智能体场景多了一层约束:视频不仅要沿时间一致,还要跨 agent perspective 一致,因为每个 agent 看到的是同一个 underlying world state 的不同视角。

论文直接对标的并不是普通 text-to-video,而是多智能体 world model 中更难的三个结构性问题:

  • 独立可控:每个 agent 都有自己的动作序列,模型不能把多个视角简单拼成一个大图后失去 agent-level correspondence。
  • 置换对称:同质 agent 不应因为被放在 slot 1/slot 2 而获得不同身份偏置;learned per-player ID embedding 会把模型绑到固定 roster。
  • 可扩展实时推理:Solaris 这类 dense joint attention 在所有 agent tokens 之间做全连接交互,cross-agent attention 成本随 agent 数 二次增长,难以扩展到超过两名玩家并保持 streaming rollout。

这件事值得研究,是因为可控 world model 若要用于 multiplayer game generation、interactive simulation、robot coordination 或 embodied AI,就必须从“一个 action 控制一个未来视频”升级到“多个 agent 在共享世界中同步行动并互相影响”。如果模型既能保持共享世界一致性,又能以 KV cache 形式实时响应新动作,就可以成为交互式仿真器,而不是离线视频生成器。

2. Idea (核心思想)

核心洞察是:多智能体 world model 不应该把 agent 当成固定编号的 slot,也不需要让每个 agent token 与所有其他 agent token 做密集交互;更合理的结构是 agent identity 用对称几何编码区分,agent interaction 通过一个紧凑共享状态交换信息

γ-World 的关键创新有三点:第一,用 Simplex Rotary Agent Encoding 把 agent 表示成 regular simplex 的顶点,使所有 agent 两两等距,从 RoPE phase 上区分身份但不引入 slot 偏置;第二,用 Sparse Hub Attention 让 agent 只看自己的 stream 和少量 hub tokens,hub tokens 再聚合/广播跨 agent 信息,把交互成本从关于 的二次增长降为线性;第三,用 bidirectional diffusion teacher → causal multi-step student → conditional Self-Forcing distillation 的三阶段训练,把高质量全上下文建模蒸馏成支持 KV cache 的 few-step streaming generator。

与 Solaris 的根本差异在于:Solaris 使用 learned per-player ID + dense joint attention,适合两玩家但结构上偏固定 roster 和二次交互;γ-World 则把身份编码做成 permutation-equivalent simplex geometry,把通信做成 hub-mediated shared state,因此能从两玩家训练零样本扩展到四玩家推理。

3. Method (方法)

3.1 Overall framework:同步多 agent 输入 + causal multi-agent DiT

Figure 2 解读:左侧是同步的多 agent observations/actions,每个 agent 在同一时间 都有自己的观察 与动作 ;中间用共享 visual tokenizer 和 action encoder 得到按 排列的 latent tokens;右侧是 causal multi-agent DiT student,核心包含 action injection、4D Simplex RoPE、Sparse Hub Self-Attention 和 KV cache。图下方对比了 linear RoPE baseline 与 simplex RoPE:前者把 agent 放在一维编号线上,slot 间距离不均;后者把 agent 放在 simplex 顶点,所有 pairwise distances 相等。注意图中 attention mask:不同 agent 之间的直接注意力被 mask,跨 agent 信息只能通过 hub tokens 传递。

形式化地,γ-World 学习一个 action-conditioned multi-agent generator:给定 个 agent 的历史观察与动作 ,预测下一步每个 agent 的观察 。由于 是同一世界状态的多个视角,模型必须联合生成,而不能把每个视角独立 rollout。

底座是 DiT-style latent video diffusion。单 agent latent 被扩展为多 agent latent: 流匹配训练使用线性插值: 并回归 velocity: 其中 包含 initial observations 和 per-agent actions。为了 streaming generation,latent sequence 被划分为 temporal blocks,每个 block 有独立 noise level,block 内双向 attention,但 query 只能看当前或过去 block,这样与推理时逐 block denoise、写入 KV cache 的模式一致。

3.2 Action conditioning:共享 action encoder,不把动作和 slot 绑定

每个 agent 有自己的动作序列 ,但 action encoder 在所有 agent 间共享: 个 transformer block 中,动作特征被投影成 layer-specific bias: 并广播加到对应 agent、frame、spatial token: 这个设计的直觉是:动作语义应该与 agent slot 无关。同一个 “move forward / attack / gripper open” 动作在 agent 1 与 agent 2 上应共享语义;agent 身份由后面的 Simplex RoPE 区分,而不是由 action encoder 暗中记住 slot。

3.3 Simplex Rotary Agent Encoding:用 regular simplex 做无序 agent identity

普通 3D RoPE 把 token 坐标 映射到 temporal/height/width 三个旋转带: γ-World 新增 agent axis,把 rotary head dimension 切分为: 得到 4D RoPE: 如果直接设 ,agent 会落在一维线上, 不同导致 agent pair 距离不同,slot 1/2/3/4 具有结构性差异。γ-World 改用 regular simplex。给定 simplex pool size ,且 ,在 维 agent-angle space 中构造 个顶点: 其中 是从 零均值子空间到 的线性等距映射。顶点满足: 训练时,对 个 active agents 采样一个 injective assignment ,并设: 最终 agent-band rotation 是: Appendix B 进一步证明:centered one-hot simplex 归一化后任意两个不同顶点内积都是 ,因此 pairwise squared distance 恒为 ;乘上 后,agent angle 的距离变成 。在 complex RoPE space 中,若 足够小,则 ,所以 complex rotation 的 pairwise separation 也近似相等。直觉上,这相当于告诉模型“这些 agent 都可交换,但必须能被区分”:没有一个 slot 天然更特殊,也不需要为额外 agent 学一个新 embedding。

3.4 Sparse Hub Attention:用 hub token 取代 dense all-to-all agent attention

Dense cross-agent attention 在一个 block 内对所有 agent tokens 做全连接。若每帧空间 token 数为 ,block 长度为 ,agent 数为 ,dense attention 成本为: γ-World 引入 个 learnable hub tokens per latent frame,agent tokens 只能 attend 自己的 stream 和 hub tokens;hub tokens 可以 attend 所有 agent 和其他 hub tokens。直接的 agent-to-agent attention 被 mask,因此跨 agent 信息走两跳路径: 将序列组织为 个 agent tokens 加 个 hub tokens,令 表示 token 的身份,hub topology mask 为: 再与 block-causal mask 组合: 其中 是 temporal block index。最终 per-block attention 成本变为: 固定时关于 线性增长。这里 hub tokens 的角色不是输出视频,而是一个 compact shared communication state:agent 从自己的历史与 hub cache 读信息,hub 聚合所有 agent 的世界状态,再广播回各 agent。

3.5 三阶段训练与 KV-cached streaming inference

γ-World 的部署目标是 conditional few-step causal generator。单纯 bidirectional diffusion teacher 质量高,但 online generation 时会偷看未来帧;单纯 causal model 可 streaming,但只用 ground-truth history 训练会有 train-test mismatch。论文采用三阶段配方:

  1. Bidirectional teacher:用 dense bidirectional attention 一次处理完整 multi-agent sequence,同一个 noise level 覆盖所有 agent-time slots;它只在训练中使用,用来学习高质量 conditional multi-agent distribution。
  2. Causal student:使用 Diffusion Forcing 和 block-causal attention,结合 Sparse Hub Attention mask,每个 block 单独采样 noise level;这是一个完整 multi-step diffusion model,不只是蒸馏前的 warm-up。
  3. Conditional Self-Forcing distillation:把 causal multi-step student 压缩为 few-step generator。蒸馏时 teacher 与 student 都接收同一 conditioning package (initial observations + per-agent actions),避免 few-step model 只生成“合理视频”但偏离指定初始状态和动作。

推理时,distilled student 每次生成一个 latent block,并维护两类 KV cache:每个 agent stream 自己的 cache,以及共享 hub cache。新 block 中,agent 读取自己的历史和 hub cache;hub 读取所有 agent 与历史 hub states。这样即使使用 cache,cross-agent 信息仍通过 Sparse Hub Attention 的 hub path 传递。

3.6 论文级伪代码(代码未发布,待 released code 替换)

代码搜索未找到开源实现;下面伪代码只依据论文公式、Appendix D 和 GitHub README 的方法描述整理,不能视为 released-code-grounded implementation。待 nv-tlabs/Gamma-World 发布训练/推理代码后,应替换为实际源码对应版本并补充 github_ref

import torch
import torch.nn.functional as F
 
 
def simplex_vertices(V: int, dp_half: int, device="cuda"):
    assert V <= dp_half + 1
    eye = torch.eye(V, device=device)
    centered = eye - torch.ones(V, V, device=device) / V
    centered = centered * (V / (V - 1)) ** 0.5
    # Paper uses an isometry Q into R^{dp/2}; zero padding is the common implementation case.
    out = torch.zeros(V, dp_half, device=device)
    out[:, :V] = centered
    return out
 
 
def assign_simplex_angles(num_agents: int, vertices: torch.Tensor, alpha: float):
    perm = torch.randperm(vertices.shape[0], device=vertices.device)[:num_agents]
    return alpha * vertices[perm]  # [P, dp/2]
 
 
def sparse_hub_mask(agent_ids, block_ids, is_hub):
    same_agent = agent_ids[:, None] == agent_ids[None, :]
    touches_hub = is_hub[:, None] | is_hub[None, :]
    hub_topology = same_agent | touches_hub
    causal = block_ids[None, :] <= block_ids[:, None]
    return causal & hub_topology
 
 
def flow_matching_loss(model, clean_latents, cond):
    eps = torch.randn_like(clean_latents)
    sigma = torch.rand(clean_latents.shape[0], 1, 1, 1, 1, device=clean_latents.device)
    z_sigma = (1 - sigma) * clean_latents + sigma * eps
    target_velocity = eps - clean_latents
    pred_velocity = model(z_sigma, sigma=sigma, cond=cond)
    return F.mse_loss(pred_velocity, target_velocity)
 
 
def streaming_rollout(student, initial_obs, actions, num_blocks):
    kv_agent, kv_hub = {}, {}
    generated = []
    for block_id in range(num_blocks):
        block_actions = actions[:, block_id]
        latent = torch.randn_like(student.empty_block(initial_obs))
        for t in [1000, 750, 500, 250]:
            latent = student.denoise_step(
                latent,
                timestep=t,
                initial_obs=initial_obs,
                actions=block_actions,
                kv_agent=kv_agent,
                kv_hub=kv_hub,
            )
        kv_agent, kv_hub = student.update_kv_cache(latent, kv_agent, kv_hub)
        generated.append(latent)
    return torch.cat(generated, dim=1)

3.7 Code-search / mapping status

Code reference: 代码搜索未找到开源实现。nv-tlabs/Gamma-Worldmain@bb8e961 (2026-05-28) 仅含 README 与 assets;README 明确写明 code、distilled streaming checkpoints、training scripts、dataset preparation tools 将后续发布。因此当前没有可审计的实际 source-file mapping,也不能设置 github_ref 为实现锚点。

Paper ConceptCurrent Source FileStatus
Simplex Rotary Agent Encodingnot released论文给出公式与 Appendix B proof;仓库无实现文件
Sparse Hub Attentionnot released论文给出 mask 与复杂度;仓库无 attention module
Conditional Self-Forcing distillationnot released论文给出训练阶段与超参;仓库无 training script/config
KV-cached streaming inferencenot releasedREADME 说 distilled streaming checkpoints with KV cache support coming soon
Dataset preparationnot releasedREADME 标注 planned future update

4. Experimental Setup (实验设置)

4.1 Datasets and domains

论文使用两类 domain:

  • Virtual-game environment / Minecraft-style synchronized trajectories:作者构建了受 SolarisEngine 启发的数据生成 pipeline,包含 controllable episode scripts、coordinated bots、aligned visual-action recording。主设置是 two-agent episodes,并用同一 pipeline 扩展到 four-agent scenes,用于测试 pairwise interaction 与 agent-count scaling。论文没有在主文给出精确样本条数。
  • RealOmin-Open Dataset:用于 real-world robot coordination,把左右两个 robot arms 视为两个 interacting agents;每个 robot action 是对齐到视频帧的连续 action sequence。论文同样没有给出该子集的精确样本数。

4.2 Baselines and evaluation protocols

主要 baseline:

  • Frame concat / Multiverse-style baseline:把多个 agent views 合并为单个视觉流。
  • Solaris:multiplayer Minecraft world model,使用 synchronized player trajectories、dense joint attention 与 learned per-player ID。
  • Architecture ablation variants:Spatial Concat、Sequence Concat、View Embedding、Simplex Encoding、γ-World Full。
  • Training-stage variants:Bidirectional teacher、Causal student、Distilled student。

评估指标:

  • FVD / FID:视频/图像分布质量,越低越好。
  • LPIPS:perceptual distance,越低越好。
  • PSNR / SSIM:像素级重建/结构相似度,越高越好。
  • Latency / FLOPs:Figure 3 中报告 DiT latency、self-attention latency 和 analytical self-attention FLOPs;latency 是对 24 latent frames 的 3 次 full rollout 取平均,并使用 full KV cache。

4.3 Training config and implementation details

Appendix D 给出的实现细节如下,这些数值来自论文的 additional implementation details,而非代码配置(代码尚未发布):

  • Backbone:Cosmos-Predict2.5-2B TI2V checkpoint;hidden dimension ,28 transformer blocks,16 attention heads,head dimension 128,MLP ratio 4,AdaLN-LoRA rank 256。
  • RoPE partition;simplex pool size 为 4,训练时 2 active runtime slots,每步随机采样 2/4 simplex vertices 并 permute agent slot order。
  • Action format:game action 每帧 25 维:23 个离散 player controls + 2 个连续 camera controls;robot action 每帧 10 维:3D end-effector position、6D orientation、gripper opening。
  • Action encoder:keyboard one-hot 和 camera vector 分别经 MLP lift 到 128 维,再用 fusion MLP + stride-4 1D temporal convolution,最后投影到 ,作为每层 self-attention 输入的 per-block bias。
  • Sparse Hub / cache:causal student 使用 learnable global hub tokens per latent frame;local windowed attention 只看每个 view 最近 24 latent frames,使 KV cache 与总生成长度解耦。

训练阶段:

  • Stages 1/2:teacher 和 student 都初始化自 Cosmos-Predict2.5-2B TI2V;在 2-agent gameplay、每视角 上训练。teacher 先用 93-frame clips(latent length 24)预训练 10,000 iterations,再用 189-frame clips(latent length 48)fine-tune 6,000 iterations;causal student 用 93-frame clips 预训练 15,000 iterations。两阶段都用 AdamW,learning rate ,weight decay ,100-step linear warm-up,gradient clipping 0.1;teacher 和 student 各用 32 NVIDIA GB200s。推理不使用 CFG。
  • Stage 3 Self-Forcing distillation:student 从 Stage 2 初始化,real score 是 frozen Stage-1 teacher,fake score 也是从 Stage-1 teacher 初始化并可训练。DMD loss 在 189-frame clips 上优化;每个 generator step 用 timesteps (flow shift 5.0 warp)denoise。每个 block 后,用 context-noise level 128 重新 forward 并写入 per-layer KV cache。generator:critic 更新比例为 1:4;distillation 训练 400 iterations on 32 NVIDIA GB200s,student LR ,critic LR ,weight decay

5. Experimental Results (实验结果)

5.1 Main quantitative results vs. Solaris

Table 1 在五类 multi-agent protocol 上比较 Frame concat、Solaris 和 γ-World。所有 FVD/FID 都是越低越好。

MethodMemory FVDMemory FIDGrounding FVDGrounding FIDMovement FVDMovement FIDBuilding FVDBuilding FIDConsistency FVDConsistency FID
Frame concat450.669.8528.363.2556.965.0551.887.3576.0123.2
Solaris333.851.7301.936.1311.136.3448.671.0443.194.8
γ-World184.124.8199.324.0191.521.2264.532.1280.046.9

结果显示 γ-World 在 memory、grounding、movement、building、consistency 五类都显著优于 Solaris。最能体现方法目标的是 Consistency:FVD 从 Solaris 的 443.1 降到 280.0,FID 从 94.8 降到 46.9,说明它不只是单视角画质更好,而是在跨 agent 共享状态上更稳定。

5.2 Architecture ablations

SettingCompositionAgent EncodingInteractionFVD ↓FID ↓LPIPS ↓PSNR ↑SSIM ↑
Spatial ConcatSpatial concatNoneFull312.438.70.32624.80.782
Sequence ConcatSequence concatNoneFull285.635.20.29825.60.798
View EmbeddingSequence concatView emb.Full256.332.40.28126.40.815
Simplex EncodingSequence concatSimplexFull228.529.60.26527.50.830
γ-World (Full)Sequence concatSimplexSparse Hub223.430.20.26927.70.836

解读:从 Spatial Concat 到 Sequence Concat,说明把 agent 保持为独立 stream 比拼大图更适合多 agent;View Embedding 到 Simplex Encoding 的改善说明 slot-free identity 比 learned view id 更稳定;Full 版本用 Sparse Hub 后 FVD/PSNR/SSIM 继续改善,同时换来更好的扩展效率。FID/LPIPS 上 Full 相比 Simplex + Full Attention 略有回退,但整体质量和可扩展性更好。

5.3 Sparse Hub Attention efficiency

Figure 3 解读:横轴是 players 数量 ,三组图分别比较 DiT latency、self-attention latency 和 analytical FLOPs。Dense attention 随 增长很快,例如 8 players 时 DiT latency 约 611 ms、self-attention latency 17.6 ms、FLOPs 7.6T;Sparse Hub Attention 对应约 246 ms、4.5 ms、981.0G。这个结果直接验证了 §3.4 的复杂度分析:hub-mediated interaction 保留跨 agent 通信,但避免 agent-token 之间的全连接二次增长。

5.4 Qualitative results: two-agent, four-agent, robotics

Figure 1 解读:teaser 同时展示 game scene 与 real-world scene,强调 γ-World 的目标不是生成单个视频,而是在多个 agent streams 之间保持同步:一个 agent 的动作会改变共享世界,其他 agent 的视角也应反映这个变化。

Figure 4 解读:两 agent 示例中,每一行是不同任务。重点看 paired streams 是否同步:当一个 agent 与物体、建筑或另一 agent 互动时,另一个 agent 的观察也应出现对应变化。论文认为这些样例说明模型在维护 shared latent world state,而不是独立生成两段互不关联的视频。

Figure 5 解读:四 agent 示例是从只在 two-agent data 上训练的模型零样本扩展而来。这里的关键不是单张画面质量,而是模型无需改架构、无需新增 learned player embedding,就能为更多 agent 生成同步 rollouts;这正是 Simplex RoPE 的 pool-based identity 与 Sparse Hub Attention 的线性交互路径共同带来的效果。

Figure 6 解读:机器人例子把左右两个 robot arms 当成 interacting agents,输入是连续 end-effector/gripper action。该图的意义是说明同一个多 agent 形式化不只适用于 Minecraft 玩家,也可以迁移到 physical coordination 场景;不过它仍是 qualitative demonstration,不能等同于大规模机器人泛化验证。

5.5 Training-stage and hub-token ablations

Table 5 比较 bidirectional、causal、distilled 三种变体:

VariantFVD ↓FID ↓LPIPS ↓PSNR ↑SSIM ↑
Bidirectional227.331.00.27227.70.828
Causal266.434.40.27726.20.805
Distilled239.730.90.27326.80.811

Bidirectional teacher 质量最好,因为能看完整时间上下文;causal student 支持 streaming 但质量下降;distilled model 在保留 causal/KV-cache 结构的同时恢复了相当一部分 teacher 质量,说明 Self-Forcing-style distillation 对实时推理是必要的。

Table 6 扫描 hub token 数

Hub Tokens FVD ↓FID ↓LPIPS ↓PSNR ↑SSIM ↑
1250.931.50.27127.30.825
8223.430.20.26927.70.836
32221.829.80.26727.90.838
128220.529.50.26628.00.839

容量不足,说明 hub 确实在承载 cross-agent shared state;更大的 持续改善,但从 收益变小。作者最终在实现细节中使用 ,是在质量与实时推理成本之间的折中。

5.6 Limitations and conclusions

作者明确指出当前局限:评估主要集中在 gaming environments 和 robotics examples,更复杂、异质、长时程的场景还需要验证;simplex pool 只能在固定 rotary agent band 内扩展 agent 数,非常大的人群可能需要更大的 band 或 hierarchical grouping;γ-World 没有显式 3D geometry 或 physics constraints,长 rollout 仍可能累积不一致。

总体结论是:γ-World 证明了多智能体 world model 可以同时满足 agent-level controllability、permutation-symmetric identity、efficient cross-agent communication 和 streaming inference。它最重要的贡献不是某个单一指标,而是提出了一套可扩展结构:Simplex RoPE 解决“谁是谁但不偏向 slot”,Sparse Hub Attention 解决“如何共享世界状态但不做全连接”,conditional distillation 解决“如何把高质量全上下文模型变成实时可交互模型”。