技术博客
WAM 世界模型数据

一张 5090,跑起一个能一直玩下去的世界:ABot-World-0 解析

Leza2026-07-24 14:51
一张 5090,跑起一个能一直玩下去的世界:ABot-World-0 解析

论文链接:https://arxiv.org/pdf/2607.19191

立即体验:https://abot-world.amap.com/#create

代码地址:https://github.com/amap-cvlab/ABot-World

生成一段好看的视频,和生成一个"能进去玩"的世界,是两回事。后者要求:你按一下键,画面跟着变;变完的画面又成为下一步的输入;而且这个循环得一直转下去不崩掉。

高德 AMAP CV Lab 的 ABot-World-0 想一次性解决四个互相纠缠的瓶颈——拿不到带动作标注的数据、用户意图不好表达、自回归越跑越飘、整套流水线塞不进消费级显卡。最终成绩:5B 模型,720P(1280×704)、最高 16 FPS、按键到首帧 1.2 秒、峰值显存 ≤19.3 GiB,全部在一张 RTX 5090 上。

数据:把采集本身做成一个伺服系统

训练语料来自三个互补的源,各有各的残缺:AAA 游戏能从运行时 API 直接拿到真值按键,但画风被游戏本身框死;仿真引擎(UE + 自研 ABot-3DGS 重建的街景)几何精确、动作标签确定,但轨迹得人为设计;互联网视频多样性最好,却只能靠位姿估计打伪标签。

真正有意思的是 WorldExplorer——一个自动采集智能体。导航 agent 自主探索场景(优先没去过的区域,退化到就近搜索,再退化到带碰撞检测的前进),并行管线同步录下视频、位姿、按键、环境状态,跨模态对齐误差 33 ms 以内。

关键在于它不是"采完就完事",而是接了一条训练反馈回路:训练监控 → 弱点诊断 → 策略调整 → 定向重采。哪类场景-动作组合模型学不好,采集配比就往哪偏(同时保留最低覆盖率防止灾难性遗忘)。数据分布从一次性产物变成了被主动调节的变量。之后还有 6 个质量维度、14 项确定性检查 + VLM 语义筛查的三级过滤。

控制:整个世界只有 8 个键

ABot-World-0 的动作接口简单得有点反直觉:就是 8 个键。WASD 管移动、IJKL 管转视角,每帧编码成 8 维 multi-hot 向量;因为 VAE 在时间维压缩 4 倍,每 4 帧的动作拼成 32 维 token,正好对齐一个 latent 帧,再经适配器加性注入 patch embedding。

第三人称的身份漂移单独处理:几张参考图编码成"身份记忆" token 拼在序列最前面,给负的时间 RoPE 索引,并且只允许视频 token 注意记忆 token、不允许反向。静态身份和动态轨迹因此被 干净地隔开。

训练:双向教师 → 因果学生 → LongForcing

先训一个双向教师:基于 Wan2.2 全参微调,全时域注意力,画质和动作对齐都最好,但依赖未来帧、没法流式部署。然后三步蒸馏成因果学生:

  1. Teacher Forcing:加因果掩码,历史帧给干净真值,把结构改造成自回归;

  2. ODE 蒸馏:冻住上一步的模型,让学生直接预测其概率流 ODE 的干净终点,多步去噪压成少步;

  3. LongForcing(本文主贡献):前两步只保证"单步转移准"。但自回归里每一次预测都会改写后续的视觉上下文,训练时见到的状态和长程推理时的状态会持续偏离——这是分布偏移,不是单步精度问题。LongForcing 让学生真的跑长自 rollout,再用一个时域更长的教师在 DMD 阶段做分布级监督,专门覆盖误差已经累积起来的那段状态空间。

系统:少步采样 ≠ 实时交互

这是论文最硬的一个立论,Table 2 把它摊开了:

基线和只换高效注意力核的版本直接 OOM——单独加速一个算子救不了整条流水线。换上从 TAEHV 简化来的轻量解码器 LightVAE 才第一次跑通;再叠 FP8、Fast-RoPE(在局部注意力窗内重锚 RoPE + Triton 核)、MXFP4,一路推到 15.8 FPS。此外还有 FramePack 式的模块按需换入换出、有界局部 KV cache 加缓存量化。

顺带一提:MXFP4 在 Blackwell 上的张量核吞吐是 MXFP8 的两倍,而 MXFP6 与 MXFP8 共用数据通路、没有原始算力增益——这正好解释了表里 MXFP6→MXFP4 那一跳为什么这么明显。

效果

5B 的 ABot-World-0 在多项指标上拿到次优,明显好于 14B 的 LingBot-World 和 8.3B 的 HY-World 1.5。Memory 一列(0.5041)低于 Genie 3 和 HappyOyster——这与它用有界局部 KV cache 的设计取舍是自洽的:牺牲长程记忆换恒定显存。

LongForcing 的 60 秒消融是全文最直接的证据:

点赞收藏
// 评论0
0 / 500
还没有评论,快来抢沙发