24年8月来自谷歌和以色列特拉维夫大学的论文“Diffusion Models Are Real-time Game Engines”。
GameNGen,是完全由神经模型驱动的游戏引擎,在长轨迹上高质量地与复杂环境进行实时交互。GameNGen 可以在单个 TPU 上以每秒超过 20 帧的速度交互式模拟经典游戏 DOOM,如图所示。
下一帧预测实现了 29.4 的 PSNR,与有损 JPEG 压缩相当。人类评分者在区分游戏短片和仿真合成片段方面,仅比随机机会略胜一筹。GameNGen 分两个阶段进行训练:(1) RL 智体学习玩游戏并记录训练过程,(2) 训练扩散模型,根据过去帧和动作的序列生成下一帧。条件增强可在长轨迹上实现稳定的自回归生成。如图是GameNGen和世界模型、GameGAN的比较:
电脑游戏是手工制作的软件系统,以以下游戏循环为中心:(1) 收集用户输入,(2) 更新游戏状态,(3) 将其渲染到屏幕像素。这个以高帧率运行的游戏循环,为玩家创造了一个交互式虚拟世界的幻觉。这种游戏循环通常在标准计算机上运行,虽然已经有许多尝试在定制硬件上运行游戏(仅举几个例子,例如,标志性游戏 DOOM 已在烤面包机和微波炉、跑步机、相机、iPod 和 Minecraft 游戏等厨房电器上运行),但在所有这些情况下,硬件仍然按原样模拟手动编写的游戏软件。此外,虽然存在截然不同的游戏引擎,但游戏状态更新和渲染逻辑都由一组手动规则组成,这些规则是手动编程或配置的。
近年来,生成模型在以多模态输入(例如文本或图像)为条件生成图像和视频方面取得了重大进展。在这波浪潮的最前沿,扩散模型成为媒体(即非语言)生成的事实标准,其中包括 Dall-E(Ramesh,2022)、SD(Rombach,2022)和 Sora(Brooks,2024)等工作。乍一看,模拟视频游戏的交互式世界似乎与视频生成相似。然而,交互式世界模拟不仅仅是非常快速的视频生成。对仅在整个生成过程中可用的输入动作流进行条件化的要求,打破了现有扩散模型架构的一些假设。值得注意的是,它需要自回归地生成帧,这往往是不稳定的并导致采样发散。
几项重要的研究(Ha & Schmidhuber,2018;Kim,2020;Bruce,2024)使用神经模型模拟交互式视频游戏。然而,这些方法中的大多数在模拟游戏的复杂性、模拟速度、长期稳定性或视觉质量方面都受到限制。因此,很自然地会问一个问题:实时运行的神经模型能否高质量地模拟复杂的游戏?
相关工作
交互式 3D 模拟。模拟 2D 和 3D 环境的视觉和物理过程并允许对其进行交互式探索,是计算机图形学中一个得到广泛发展的领域 (Akenine-Mller et al., 2018)。游戏引擎(例如 Unreal 和 Unity)是处理场景几何表示并响应用户交互渲染图像流的软件。游戏引擎负责跟踪所有世界状态,例如玩家位置和移动、物体、角色动画和光照。它还跟踪游戏逻辑,例如通过完成游戏目标获得的积分。电影和电视制作使用光线追踪的变型方法(Shirley & Morley, 2008),这对于实时应用来说太慢且计算密集型。相比之下,游戏引擎必须保持非常高的帧速率(通常为 30-60 FPS),因此依赖于高度优化的多边形光栅化,通常由 GPU 加速。阴影、粒子和光照等物理效果通常使用高效的启发式方法来实现,而不是物理上精确的模拟。
神经 3D 模拟。近年来,用于重建 3D 表示的神经方法取得了重大进展。NeRF(Mildenhall,2020)使用深度神经网络参数化辐射场,该网络针对给定场景进行专门优化,该网络来自从各种相机姿势拍摄的一组图像。经过训练后,可以使用体渲染方法对场景的新视角进行采样。高斯slatting(Kerbl,2023)方法建立在 NeRF 的基础上,但使用 3D 高斯和经过调整的光栅化方法来表示场景,从而缩短了训练和渲染时间。虽然这些方法展示了令人印象深刻的重建结果和实时交互性,但它们通常仅限于静态场景。
视频扩散模型。扩散模型在文本-到-图像生成方面取得了最先进的成果(Saharia,2022;Rombach,2022;Ramesh,2022;Podell,2023),这项工作也已应用于文本-到-视频生成任务(Ho,2022;Blattmann,2023b;a;Gupta,2023;Girdhar,2023;Bar-Tal,2024)。尽管在真实性、文本依附性和时间一致性方面取得了令人瞩目的进步,但视频扩散模型对于实时应用来说仍然太慢了。
游戏模拟和世界模型。有几项研究尝试训练带有动作输入的游戏模拟模型。(Yang 2023) 构建了一个包含现实世界和模拟视频的多样化数据集,并训练了一个扩散模型,根据前一个视频片段和动作的文本描述来预测连续视频。(Menapace 2021) 和 (Bruce 2024) 专注于从视频中无监督地学习动作。(Menapace 2024) 将文本提示转换为游戏状态,然后使用 NeRF 将其转换为 3D 表示。(Ha & Schmidhuber 2018) 训练变分自动编码器 (Kingma & Welling,2014) 将游戏帧编码为潜向量,然后使用 RNN 模拟 VizDoom 游戏环境,根据随机策略(即随机选择动作)对随机部署进行训练。然后通过“幻觉”环境中玩游戏来学习控制器策略。(Hafner 2020) 证明,RL 智体可以完全根据潜空间中学习的世界模型生成的情节进行训练。(Kim 2020) 使用 LSTM 架构对世界状态进行建模,并结合卷积解码器生成输出帧,并在对抗性目标下进行联合训练。虽然这种方法似乎可以为像 PacMan 这样的简单游戏产生合理的结果,但它难以模拟 VizDoom 的复杂环境并产生模糊的样本。(Alonso 2024)训练一个扩散世界模型,根据观察历史预测下一个观察结果,并在 Atari 游戏上迭代训练世界模型和 RL 模型。
本文专注于可交互式玩游戏的实时模拟,并展示了对长距离轨迹的鲁棒性。利用 RL 智体探索游戏环境并创建观察和交互的展示,以训练交互式游戏模型。另一项工作探索学习环境的预测模型并将其用于训练 RL 智体。
交互环境 E 由潜状态空间 S、潜空间的部分投影空间 O、部分投影函数 V (S → O)、一组动作 A 以及转移概率函数 p(s|a,s′) 组成。给定一个输入交互环境 E 和一个初始状态 s0 ∈ S,交互式世界模拟是一个模拟分布函数 q(on|o<n, a≤n),oi ∈ O,ai ∈ A。给定一个观测值之间的距离度量 D(O × O → R),一个策略,即给定过去动作和观测 π(an|o<n, a< n) 的智体动作分布,一个初始状态分布 S0,以及一个情节长度的分布 N0,交互式世界模拟目标就是最小化 E(D(oiq, oip))。重要的是,这些样本的条件动作始终由智体与环境 E 交互获得,而条件观察可以从 E(教师强制目标)或模拟仿真(自回归目标)中获得。
以下用教师强制目标训练生成模型。给定一个模拟分布函数 q,环境 E 可以通过自回归采样观察来模拟。
GameNGen是一种生成式扩散模型,它学习模拟游戏。第一阶段室通过智体游戏收集数据,第二阶段对生成式模型的训练。为了收集此模型的训练数据,在教师强制目标下,首先训练一个单独的模型来与环境交互。这两个模型(智体和生成模型)按顺序进行训练。智体在训练期间的全部动作和观察语料库 Tagent 都会得到维护,并在第二阶段成为生成模型的训练数据集。参见下图。
要训练一个生成扩散模型,该模型以智体在上一阶段收集的轨迹 Tagent(动作和观察)为条件。重新利用预训练的文本-到-图像扩散模型 Stable Diffusion v1.4(Rombach,2022)。根据轨迹 T ∼ Tagent 来调节模型 fθ,即根据一系列先前的动作 a<n 和观察(帧)o<n 来调节模型 fθ,并删除所有文本条件。
具体来说,为了以动作为条件,只需从每个动作(例如一个特定按键)到一单token中学习一个嵌入 Aemb,并将文本中的交叉注意替换到这个编码的动作序列中。为了以观察(即先前的帧)为条件,用自动编码器 φ 将它们编码到潜空间中,并将它们在潜通道维度中连接到噪声潜空间。
Stable Diffusion v1.4 的预训练自动编码器将 8x8 像素块压缩为 4 个潜通道,在预测游戏帧时会产生明显的伪影,影响小细节,尤其是底部栏 HUD。为了在提高图像质量的同时利用预训练知识,仅使用针对目标帧像素计算的 MSE 损失来训练潜自动编码器的解码器。使用 LPIPS(Zhang 2018)等感知损失可能进一步提高质量,将其留待将来的研究。注:这个微调过程完全独立于 U-Net 微调,并且自回归生成不受其影响(仅对潜变量进行自回归调节,而不是像素)。
使用 DDIM 采样(Song,2022)。仅对过去观察条件 o<n 采用无分类器指导(Ho & Salimans,2022)。针对过去行动条件 a<n 的指导没有帮助提高质量。使用的权重相对较小(1.5),因为较大的权重会产生伪影,而由于自回归采样,伪影会增加。还尝试并行生成 4 个样本并合并结果,希望防止罕见的极端预测被接受并减少误差积累。
在推理过程中,需要同时运行 U-Net 降噪器(多步)和自动编码器。在硬件配置(TPU-v5)上,一单个降噪器步和一次自动编码器的评估都需要 10 毫秒。如果使用单个降噪器步运行模型,则设置中可能出现的最小总延迟为每帧 20 毫秒,或每秒 50 帧。通常,生成扩散模型(例如SD)不会通过单个降噪步产生高质量结果,而是需要数十个采样步来生成高质量图像。实际上,只需 4 个 DDIM 采样步就可以稳健地模拟 DOOM(Song,2020)。事实上,用 4 个采样步与使用 20 个或更多步时模拟相比,质量没有下降。
仅使用 4 个去噪步会导致 U-Net 总成本为 40 毫秒(总推理成本为 50 毫秒,包括自动编码器)或每秒 20 帧。假设在案例中,步骤较少对质量的影响可以忽略不计,这源于以下因素的组合:(1) 受限的图像空间,以及 (2) 前几帧的强烈调节作用。在附加硬件上并行生成多个帧,可以很容易地进一步大幅提高图像生成率,类似于 NVidia 的经典 SLI 交替帧渲染 (AFR) 技术。与 AFR 类似,实际模拟速率不会增加,输入延迟也不会减少。
智体模型使用 PPO(Schulman,2017)进行训练,使用简单的 CNN 作为特征网络,遵循 (Mnih 2015)的方法。它使用 Stable Baselines 3 基础架构(Raffin,2021)在 CPU 上进行训练。智体获得帧图像和游戏内地图的缩小版,每个版本的分辨率为 160x120。智体还可以访问它执行的最后 32 个操作。特征网络为每个图像计算得到大小为 512 的表征。PPO 的参与者-和-评论家(AC)模型是 2 层 MLP 头,位于图像特征网络的输出和过去动作序列的串联之上。用 Vizdoom 环境(Wydmuch,2019)训练智体玩游戏。并行运行 8 款游戏,每款游戏的重放缓冲区大小为 512,折扣因子 γ = 0.99,熵系数为 0.1。在每次迭代中,网络使用批大小 64 进行 10 个周期的训练,学习率为 1e-4。总共执行 10M 个环境步骤。
从 Stable Diffusion 1.4 的预训练检查点训练所有模拟模型,解冻所有 U-Net 参数。用 128 的批处理大小和 2e-5 的恒定学习率,使用没有权重衰减的 Adafactor 优化器(Shazeer & Stern,2018)和 1.0 的梯度剪裁。将扩散损失参数化更改为 v-prediction(Salimans & Ho 2022a)。上下文帧条件以 0.1 的概率被删除,允许在推理期间使用 无上下文语法(CFG)。用 128 个具有数据并行化的 TPU-v5e 设备进行训练。结果是700,000 个训练步之后得到的。
对于噪声增强,用最大噪声级 0.7,使用 10 个嵌入buckets。用 2,048 的批量大小来优化潜解码器,其他训练参数与降噪器的参数相同。对于训练数据,采用在 RL 训练期间智体玩游戏的所有轨迹以及评估数据。总体而言,生成了 9 亿帧用于训练。所有图像帧(在训练、推理和调节期间)的分辨率均为 320x240,填充为 320x256。用上下文长度为 64(即,模型提供其自己最后 64 个预测以及最后 64 个动作)。