世界模型与FlashWorld:从“在梦中学习“到秒级3D场景生成

1. 世界模型

1.1 什么是世界模型

世界模型是一种交互式预测模型,在动作的条件下模拟时空环境。与大语言模型(LLM)预测句子中的下一个词不同,世界模型预测的是下一个状态------即当前状态在接收到控制输入后的即时未来。用更简洁的表述:LLM学习语言的结构,世界模型学习因果的结构。

这个定义中最关键的词是"动作"。标准视频模型基于概率预测下一帧 P ( x t + 1 ∣ x t ) P(x_{t+1} | x_t) P(xt+1∣xt),而世界模型基于干预预测下一个状态 P ( s t + 1 ∣ s t , a t ) P(s_{t+1} | s_t, a_t) P(st+1∣st,at)。那个 a t a_t at(t时刻的动作)是区分世界模型与视频生成模型的分界线。视频模型像一个你只能旁观的梦,世界模型则像清醒梦(lucid dream)------你可以在其中采取行动并观察后果。

想象接球时发生了什么。你的眼睛接收一个场景:投球者的手臂、飞行中的球、风、刺眼的阳光。从这些感官数据的洪流中,你的大脑构建了一个关于正在发生什么的压缩模型,关键是,还有即将发生什么的模型。它预测球在未来几百毫秒内的轨迹,然后向你的手发送一个运动指令。你接住了球。整个循环------观察、预测、行动------在不到一秒的时间内完成,不涉及任何语言或"思考"。世界模型在计算上做的正是同样的事情。

1.2 为什么语言和代码不够

2026年3月,科技博客Not Boring的作者Packy McCormick与General Intuition CEO Pim De Witte联合发表了一篇约两万英文字的长文"World Models: Computing the Uncomputable",其中有一个生动的思想实验:试着仅用文字描述拍手这个动作------双手在空间中的位置、以皮秒为单位的变化、接触点、声音、手掌如何挤压对方、两掌之间的空气发生了什么。你做不到。语言是对现实一种极度有损的压缩。

代码呢?代码是一种非常精确的语言,但要编写一个能描述曼联比赛中数千名球迷行为的模拟程序,在传统计算中至少是一个 O ( N 2 ) O(N^2) O(N2) 的问题。每个人、每面旗帜、每把椅子、每个球,都必须被显式计算,而且它们之间的交互也需要计算。

世界模型绕过了这个问题。它将那些动态的、在计算上难以大规模模拟的情况,压缩成神经网络中的一次固定成本操作。整个体育场作为一次固定成本的前向传播被模拟出来。场景的复杂度不会让"引擎"在推理时指数级地慢下来,因为世界的模式已经在训练阶段被吸收进了权重。

赫尔曼·黑塞在1946年获诺贝尔文学奖的小说《玻璃球游戏》中描绘了一个致力于纯粹思想的知识乌托邦卡斯塔利亚。主角约瑟夫·克内希特最终选择离开这个完美的符号世界,走向混乱的、具身的、不可预测的现实。McCormick在文中写道:"大语言模型就是我们的卡斯塔利亚人。它们是符号的精湛操弄者,但完全运作在表征的领域。它们能描述拍手,但不能拍手。"

1.3 动作:终极压缩形式

世界模型背后的一个关键洞察是:动作是终极压缩形式。

考虑当你决定向左迈步避开水坑时发生了什么。你的大脑处理了视觉场景(人行道、水坑、周围的人、路缘、驶来的公交车),预测了即时未来,评估了选项,然后选择了一个。一个外部观察者看不到你脑袋里面的东西,不知道你到底在想什么。他们不需要知道。他们看到所有那些近乎瞬时计算的输出:向左迈步。

对计算机而言,动作是绕过模拟成本的作弊码。如果人类大脑比最好的LLM效率高得多,那么我们可以通过观察人类如何回应环境中无数变量来几乎免费获得所有那些计算。每一个动作携带了足够的信息来预测接下来会发生什么,直到下一个动作更新画面。

在传统模拟引擎中,每一种可能的行为都必须被编码。如果你想让一千个球迷对进球做出逼真反应,你需要为每种类型的反应写规则。计算成本随着Agent数量和交互复杂度扩展。在世界模型中,成本固定为一次神经网络传播。随机的、混乱的、人类的现实已经被烘烤进了学习到的权重中。

1.4 世界模型简史:四个浪潮

世界模型的历史可以追溯到1990年。于尔根·施密德胡伯(LSTM之父)发表了《让世界可微分》,提出构建一个循环神经网络,赋予它两个任务:学习预测模拟世界中接下来会发生什么,以及用这个模拟世界来训练一个Agent在其中行动。第二年,Richard Sutton在《Dyna》中主张学习、规划和反应应该统一在一个单一架构中。

但在1990年,全世界的计算能力大约是今天的百万亿分之一。这两篇论文在当时几乎就是科幻。

第一浪潮(2018-2019):"这真的能行吗?"

2018年3月,David Ha和Schmidhuber发表了题为《世界模型》的论文,问了一个问题:Agent能在自己的梦中学习吗?他们构建了一个有三个组件的系统:视觉模型(V)将原始像素压缩成紧凑表示,记忆模型(M)学习预测接下来会发生什么,控制器(C)决定做什么。他们让Agent完全在世界模型幻想出的梦境中练习,然后将学到的策略迁移回实际环境。它成功了。

同期,SimPLe算法在Atari 100k基准上证明,仅用10万步真实环境步骤(大约两小时的游戏时间)就能学会玩26个Atari游戏。

第二浪潮(2020-2022):"世界模型能达到人类水平吗?"

Danijar Hafner在Google DeepMind开发的DreamerV2成为第一个在55个游戏的Atari基准上达到人类水平的世界模型Agent,完全在想象中训练,在单块GPU上。

同年,MuZero在《Nature》上发表。它采用了几乎完全相反的哲学方法------从未生成任何可观察的东西,完全在自己发明的抽象潜在表征中规划。MuZero纯粹通过观察和结果,从零开始学习了包括规则、游戏动态和价值函数在内的一切,在Go、国际象棋和将棋上匹配了AlphaZero,同时还泛化到了57个Atari游戏。

MuZero的成功意味着该领域出现了两个对立的思想流派:生成式世界模型(产生可观察的未来)和潜在世界模型(在抽象空间中预测)。

2022年,Yann LeCun发表了《通向自主机器智能的路径》,提出了JEPA(联合嵌入预测架构),反对完全生成像素,主张预测未来状态的抽象表征,刻意丢弃不可预测的视觉细节。

同年,IRIS将世界建模重新定义为在图像token学习词汇上的语言建模,把LLM的扩展特性直接带入了世界建模。IRIS是第一个在与人类相同的可用游戏数据量下、通过想象学习方法超过人类的模型。

第三浪潮(2023-2024):"世界模型能真正实现交互吗?"

GAIA-1(2023年)在Wayve开发,将序列建模方法扩展到90亿参数并在真实世界驾驶视频上训练,确认了LLM中观察到的扩展定律也适用于视觉世界模型。

DIAMOND(2024年)使用扩散模型直接预测未来帧,视觉保真度有了实质性提升,而这种丰富度直接转化为更好的Agent表现。DIAMOND在反恐精英游戏数据上训练,从大约87小时的素材、在单块GPU上,产生了一个完全交互的、可玩的神经游戏引擎。

Google DeepMind的Genie(2024年)是一个110亿参数的模型,在未标注的2D平台游戏互联网视频上训练,完全从零学习了一个动作空间。

第四浪潮(2025-2026):"模型能在真实世界中行动吗?"

Comma.ai完全在学习到的世界模型内部训练了一个驾驶策略,并将其部署在openpilot中------这可以说是第一个由世界模型训练的Agent驱动的消费产品。

Meta的V-JEPA 2在超过一百万小时的视频上通过自监督掩码预测进行预训练,仅在62小时机器人数据上微调,就在新环境中零样本部署在真实的Franka机械臂上执行取放任务。

GAIA-2(2025年3月)将扩散方法推向了多摄像头自动驾驶模拟,可以再现真实驾驶的全部复杂性。

1.5 当前格局:三条技术路线的竞争

当前世界模型领域存在三条主要技术路线,它们从不同方向逼近同一个目标------产生能泛化并在各种环境中做事的Agent。

潜在世界模型(Latent World Models)

以Yann LeCun的JEPA为代表。不预测像素,而是在抽象的压缩空间中做预测,刻意丢弃不可预测的视觉细节。优势是计算效率高、规划速度快。劣势是更难评估(你不能看着输出直观判断它是否合理)、迭代速度慢、存在表征坍缩问题。AMI Labs拿着10.3亿美元赌这条路线。

生成式世界模型(Generative World Models)

产生人类可观察的、交互式的未来。优势是可解释性强、泛化能力好(理论上捕获了所有视觉信息)。劣势是计算成本高。General Intuition、Wayve、Decart、Runway都在这条路线上。Google DeepMind的Genie 3也属于此类。

VLA(视觉-语言-动作模型)

以Physical Intelligence为代表。取一个理解场景的VLM,加上一个动作头,将人类语言指令翻译成机器人指令。优势是可以复用LLM的巨大基础设施和数据。劣势是物理动作不能干净地映射到token,分布外泛化较差。Physical Intelligence以56亿美元估值融资6亿美元,Skild也在这条路线上。

这三条路线并非完全对立。正如McCormick所写:"我个人不认为VLA和世界模型真的在竞争。它们试图从不同方向达到在物理世界中行动。VLA是语言优先的,世界模型是视频-动作优先的。两者可能会趋同。"

1.6 FlashWorld在世界模型版图中的位置

在这个宏大的图景中,FlashWorld扮演着一个特殊而关键的角色:高效的3D资产生成器。

世界模型需要大量的3D交互数据来训练。GWM(Gaussian World Models)论文展示了如何将3D高斯表示深度嵌入到动力学学习的循环中,但它需要大量的3D场景数据。FlashWorld可以在几秒钟内从文本或图像生成多样化的3D场景,为世界模型提供近乎无限的训练环境。

这种组合指向了一个更宏大的愿景:Real-to-Sim-to-Real闭环。机器人拍摄真实环境图片,FlashWorld将其扩展为完整的3D场景,世界模型在重建的场景中学习动力学并训练策略,最终将策略部署回真实世界。


2. FlashWorld技术深度解析

2.1 问题定义:3D生成的"不可能三角"

在FlashWorld出现之前,3D场景生成领域长期面临一个根本性的矛盾。现有方法大致分为两条路线:多视角(MV)导向的扩散方法和3D导向的直接生成方法。前者能够生成画质极高的多视角图像,但各视角之间缺乏几何一致性,因为它们本质上是独立生成的二维图像;后者直接输出3D高斯表示(3D Gaussian Splatting, 3DGS),天然保证了几何一致性,但生成的画面往往模糊、细节不足。

更关键的问题在于速度。以CAT3D为代表的高质量方法需要77分钟才能完成一次生成,Director3D需要7分钟,即便是相对快速的Prometheus也需要15秒。这样的速度在实际应用中几乎不可接受------无论是游戏资产的批量生产、机器人仿真环境的快速构建,还是AR/VR内容的实时创作,都需要秒级的响应。

FlashWorld同时解决了这三个维度的问题:速度(A100上7秒,H100上4秒)、画质(T3Bench IQA评分4.12,远超Director3D的3.24)、以及3D一致性。对应的代码在Github上。

图1:FlashWorld整体架构。左侧为双模态预训练阶段,右侧为跨模态后训练阶段。

2.2 核心方法:双模态预训练 + 跨模态蒸馏

FlashWorld的方法论可以用一句话概括:先让同一个模型同时学会两种生成模式,再让高质量的模式"教"一致性好的模式。

双模态预训练(Dual-mode Pre-training)

在预训练阶段,FlashWorld构建了一个基于DiT(Diffusion Transformer)的统一骨干网络,同时支持两种工作模式:

MV导向模式接收带噪声的多视角图像潜在表示,通过DiT Blocks进行去噪,直接输出去噪后的多视角潜在表示,再由VAE解码器还原为像素级图像。优化目标是多视角重建损失 L M V \mathcal{L}_{MV} LMV,关注每个视角图像的视觉质量。

3D导向模式同样接收带噪声的输入,但在DiT Blocks输出之后,额外经过一个3DGS解码器,将特征转换为3D高斯参数(位置、颜色、不透明度、尺度和旋转),然后通过可微分渲染器从新视角渲染出图像。优化目标是3D一致性损失 L 3 D \mathcal{L}_{3D} L3D,确保从任意视角渲染的结果在几何上是自洽的。

图2:FlashWorld双模态预训练架构。左侧为MV导向模式,右侧为3D导向模式。

关键设计在于:这两种模式共享同一个DiT骨干网络的权重。模型在预训练阶段就同时学到了"如何生成高质量图像"和"如何保持3D一致性"两种能力。

跨模态后训练(Cross-mode Post-training)

预训练完成后,3D导向模式的视觉质量仍然不如MV导向模式。FlashWorld引入了跨模态蒸馏技术来弥合这一差距:冻结MV导向模式作为"教师",让3D导向模式作为"学生"进行学习。蒸馏的核心机制基于DMD(Distribution Matching Distillation)损失。

图3:不同3D场景生成方法的对比。FlashWorld在速度和质量上均取得显著优势。

直观理解:教师告诉学生"从这个视角看,图像应该长什么样",学生在保持自身3D一致性的前提下,学习生成与教师同等质量的渲染结果。

此外,后训练阶段还引入了OOD(Out-of-Distribution)Co-training策略,混入大量单张图片和文本Prompt,配合随机采样的相机轨迹,极大提升了模型在开放世界场景下的泛化能力。

图4:Flashworld 去噪流程。模型仅在4个关键步骤进行去噪,即可生成高质量的3D场景。

3. 代码实现深度解析

FlashWorld的开源代码仓库结构清晰,核心文件包括:app.py(推理系统与Web服务)、cli.py(命令行批量生成)、models/(模型定义)、utils.py(工具函数)、quant.py(FP8量化加速)。以下逐一拆解关键实现。

3.1 GenerationSystem:推理流水线的核心

app.py中的GenerationSystem类是整个推理流程的入口。它的初始化过程揭示了FlashWorld的模型组成:

python 复制代码
class GenerationSystem(nn.Module):
    def __init__(self, ckpt_path=None, device="cuda:0", ...):
        self.latent_dim = 48          # 潜在空间通道数
        self.temporal_downsample_factor = 4
        self.spatial_downsample_factor = 16  # 480x704 -> 30x44
        self.feat_dim = 1024          # 3D特征维度
        self.denoising_steps = [0, 250, 500, 750]  # 仅4步去噪

        model_id = "Wan-AI/Wan2.2-TI2V-5B-Diffusers"

        # VAE编码器:将图像压缩到潜在空间
        self.vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae")

        # 文本编码器:UMT5,处理文本提示
        self.text_encoder = UMT5EncoderModel.from_pretrained(
            model_id, subfolder="text_encoder")

        # DiT骨干:基于Wan2.2的5B参数Transformer
        self.transformer = WanTransformer3DModel.from_pretrained(
            model_id, subfolder="transformer")

        # 3DGS重建解码器:将特征转换为高斯参数
        self.recon_decoder = WANDecoderPixelAligned3DGSReconstructionModel(
            self.vae, self.feat_dim, ...)

几个值得注意的设计细节。FlashWorld基于万象(Wan)2.2的5B参数视频扩散模型构建,这是一个已经在大规模视频数据上预训练过的模型。latent_dim=48表示潜在空间的通道数,spatial_downsample_factor=16意味着480x704的输入图像在潜在空间中被压缩为30x44的特征图。denoising_steps = [0, 250, 500, 750]定义了仅4步的去噪调度------传统扩散模型通常需要20-50步去噪,FlashWorld通过跨模态蒸馏将步数压缩到4步,这是其速度优势的关键来源之一。

3.2 反馈机制:迭代精化的秘密

FlashWorld的推理过程并非简单的单次前向传播,而是包含一个精巧的反馈循环。在generate方法中:

python 复制代码
for i in range(len(self.denoising_steps)):
    t_ids = torch.full((noisy_latents.shape[0],),
                       self.denoising_steps[i], device=self.device)
    t = self.timesteps[t_ids]

    if self.use_feedback:
        # 将上一步的预测结果作为额外条件输入
        _condition_latents = torch.cat(
            [condition_latents, prev_feats, prev_latents_pred], dim=1)

    if i < len(self.denoising_steps) - 1:
        out = self.forward_generator(
            noisy_latents, raymaps, _condition_latents, t,
            text_embeds, cameras, cameras,
            image_height, image_width, need_3d_mode=True)

        latents_pred = out["3d"]  # 使用3D模式的预测

        if self.use_feedback:
            prev_latents_pred = latents_pred
            prev_feats = out['feat']

        # 在预测结果上重新加噪,进入下一步
        noisy_latents = self.scheduler.scale_noise(
            latents_pred,
            self.timesteps[...self.denoising_steps[i + 1]...],
            torch.randn_like(noise))
    else:
        # 最后一步:直接输出3DGS参数,跳过渲染和重编码
        ...

这段代码展示了FlashWorld的核心推理逻辑:在每一步去噪中,模型不仅输出当前步的预测结果,还将上一步的预测潜在表示(prev_latents_pred)和特征(prev_feats)作为额外条件输入到下一步。这种反馈机制使得后续步骤能够在前一步的基础上进行精化,而不是从零开始预测。

...详情请参照古月居

相关推荐
那年窗外下的雪.1 小时前
AIDC 学习日志|第 14 天|MAC Flapping 与 EVPN 多归属分层排障
网络·git·学习·macos·github·spine
薛定e的猫咪1 小时前
(arXiv 2026)GLiBRL :可学习基函数的深度贝叶斯元强化学习 ----待补充
人工智能·深度学习·学习·算法·机器学习
sunshine22 girl1 小时前
Angular7,9,学习笔记一 创建项目,基本语法
笔记·学习
小雪崩1 小时前
嵌入式学习 day30:minilog
linux·c语言·学习
Dovis(誓平步青云)1 小时前
牛奶不能减成负数:冰箱库存的筛选、去重与不可变更新
android·java·开发语言
Awna2 小时前
MySQL 存储空间与索引运维实战:从空间排查到在线扩容
android·运维·mysql
xiaoxiangsiyan2 小时前
现代大型虚拟化智慧园区整体架构EVPN‑VXLAN落地全解
运维·网络·学习·架构
智购科技无人售货机工厂2 小时前
2026自动售货机触摸屏驱动开发:从I2C协议到多点触控校准的工程实践~YH
android·驱动开发·python·单片机·云原生·django
mlidongfeng2 小时前
[AI][昇腾950]TP(Transport Layer,传输层)学习笔记
笔记·学习