【免费下载链接】lingbot-world-v2Infinite Worlds with Versatile Interactions项目地址https://gitcode.com/gh_mirrors/li/lingbot-world-v2点击查看免费下载LingBot-World 2.0LingBot-World-Infinity是一款可无限交互的世界模型。本文带你逐层拆解它的wan/源码目录看懂它如何把原生的Wan2.2视频生成模型改造成一个支持KV-Cache 因果推理、可实时驱动 720p 视频的交互式世界模型。无需大量代码跟着 5 个子目录 1 个推理入口走一遍即可。一张图看懂 LingBot-World 2.0 交互世界模型LingBot-World 2.0 相比上一代有四大升级无界交互时长输出质量不随时间衰减、快速响应蒸馏出实时版本可驱动 720p60fps、多样交互元素攻击、射箭、施法、射击等动作 文本事件、智能体框架pilot / director 双 agent 协同。它建立在Wan2.2之上但核心差异只有一个词从双向生成变成因果生成。这也是整个wan/目录改造的灵魂所在。wan 目录源码地图5 个子目录 1 个推理入口打开仓库wan/是全部改造的载体。先建立一张地图后面每一节都会深入其中一块lingbot-world-v2/ ├── generate.py # 推理入口参数解析 分布式初始化 ├── run_fast.sh # 8 卡一键启动脚本 └── wan/ ├── __init__.py # 对外导出 WanI2VCausal ├── image2video.py # 推理管线WanI2VCausal核心调度 ├── configs/ # 模型配置A14B、共享配置 ├── modules/ # 模型主干因果版 / 快速版 / VAE / T5 / 注意力 ├── distributed/ # 多卡FSDP 切分 Ulysses 序列并行 └── utils/ # 相机 Plücker 嵌入、flow-matching 调度器各子目录职责如下配合文件链接可直达源码子目录职责关键文件configs/定义 14B 模型维度与推理超参wan_i2v_A14B.py、shared_config.pymodules/因果/快速 DiT 主干、VAE、T5model_causal.py、model_fast.py、vae2_1.pydistributed/多卡 FSDP 序列并行因果前向fsdp.py、sequence_parallel.pyutils/相机条件、flow-matching 调度cam_utils.py、fm_solvers_unipc.py模型规格定义在 wan/configs/wan_i2v_A14B.pydim5120、num_heads40、num_layers40、patch_size(1,2,2)、vae_stride(4,8,8)。注意这里有两个检查点子文件夹fast_checkpointtransformers快速版与causal_checkpointtransformer_causal因果版——这是双模型变体的伏笔后面会讲。改造①把双向注意力换成因果 KV-Cache 推理原生 Wan2.2 用双向自注意力一次性处理整段视频所有帧互相可见质量高但无法边生成边交互也无法扩展到无限时长。LingBot-World 2.0 的破局点在 wan/modules/model_causal.py 的SelfAttention_KVCache以及快速版 model_fast.py 的CausalWanSelfAttention。它把普通注意力替换成带 KV-Cache 的滚动注意力视频按chunk默认 3~4 个 latent 帧切块逐块生成每块只处理自己的 token但把历史帧的 K/V 存进缓存供后续块复用这样新帧只看过去、不看未来形成因果自回归生成自然支持无限交互。推理总调度在 wan/image2video.py 的generate()它按infer_mode分发到_generate_causal_fastL424 起或_generate_causal_pretrainL730 起两者共享同一套逐 chunk 去噪 回写 KV 缓存的主循环。改造②滚动 KV 缓存窗口——local_attn_size 与 sink_size无限时长意味着 KV 缓存会无限增长内存必然爆炸。LingBot-World 2.0 用两个参数把它控制在固定大小逻辑在 wan/modules/model_causal.pylocal_attn_size默认 -1滑动窗口大小单位是帧。当缓存超过窗口时最旧的 token 被驱逐整体左移只保留最近 N 帧显存恒定。sink_size注意力汇聚帧无论怎么滚动始终保留最前面的 N 帧。这借鉴了Attention Sink思想——开头的关键帧作为锚点保证长程一致性。配合 generate.py 的--local_attn_size 18 --sink_size 6模型用固定的 18 帧窗口 6 帧锚点就能稳定输出远超窗口长度的视频。这正是 README 里无界交互时长的工程来源。快速版的 KV 更新发生在每个 chunk 去噪完成后先用 4 步得到干净 latent再额外跑一次 t0 的前向把这段干净特征写进缓存见 image2video.py 的回写逻辑下一块生成时即可看到它。改造③因果 RoPE 定位——让模型知道自己在第几帧逐块生成时模型每次只见到一小段但它需要知道这段在完整时间轴上的真实位置否则位置编码会错位。解法在 wan/modules/model_causal.py 的rope_apply(..., start_framecurrent_start_frame)快速版对应 causal_rope_apply。每次前向都传入当前块的起始帧偏移current_start_frame把旋转位置编码RoPE平移到正确位置。一句话RoPE 负责我在第几帧KV-Cache 负责我记得前面发生了什么二者共同支撑因果推理。改造④相机/动作条件注入——Plücker 嵌入如何驱动世界世界模型必须听话跟随相机移动、响应 WASD 动作。条件信号由 wan/utils/cam_utils.py 生成读取poses.npy相机-世界矩阵与intrinsics.npy相机内参get_plucker_embeddings为每个像素算出射线起点与方向拼成6 维 Plücker 嵌入cam_utils.py该嵌入在 DiT 中经相机 MLP 注入并在每个 Transformer 块里通过AdaLN 调制cam_scale/cam_shift见 model_causal.py改变特征。这样一段相机轨迹就能指挥世界如何展开。仓库examples/里每个样本都配了poses.npy、intrinsics.npy、wasd_action.npy正是这套条件的输入。上图是examples/00的起始帧第一人称驾驭飞龙飞向哥特城堡配文examples/00/prompt.txt描述风声掠过骑手双手、城堡逐渐靠近——正是相机条件 文本事件共同驱动的交互场景。examples/01则展示纯运镜在薄雾中对巨石阵做缓慢环绕全景无角色动作、只有相机轨迹说明模型能把单一相机路径稳定延展为长镜头。两种推理模式causal_fast 与 causal_pretrain 怎么选infer_mode决定用哪个模型、哪种采样image2video.py模式模型类采样适用场景causal_fast默认WanModelFast每块4 步、无 CFG实时720p 交互延迟敏感causal_pretrainWanModelCausal每块40 步 CFG追求更高单帧质量快速版用蒸馏模型源自 Self-Forcing 思路配合 KV 窗口滚动主打快因果预训练版用完整 CFGcond / uncond 各一套 KV 缓存见 image2video.py主打稳。两者都通过 wan/image2video.py 的generate()统一调度调用方无感知。上图是 run_fast.sh 默认的examples/03起始帧湖畔孤树也是官方推荐的快速上手样本。多卡加速FSDP 切分 Ulysses 序列并行14B 主干 长序列单卡吃不消LingBot-World 2.0 用两条正交的并行策略FSDP 参数切分把 T5 与 DiT 的权重分片到各卡见 wan/distributed/fsdp.py 的shard_modelUlysses 序列并行把 DiT 的超长序列沿时间维度切到多卡注意力内做 all-to-all 通信。因果版专用前向是 sequence_parallel.py 的sp_dit_forward_causal/sp_attn_forward_causal由 image2video.py 在启用--ulysses_size时动态替换到各块。--ulysses_size必须等于卡数且能整除num_headsgenerate.py 有强校验。最快启动步骤一条命令跑通 LingBot-World 2.0前置安装 PyTorch≥2.4、flash-attn与 requirements.txt并从 HuggingFace / ModelScope 下载lingbot-world-v2-14b-causal-fast权重。克隆仓库git clone https://gitcode.com/gh_mirrors/li/lingbot-world-v2 cd lingbot-world-v28 卡一键启动run_fast.shbash run_fast.sh lingbot-world-v2-14b-causal-fast 361它等价于用 generate.py 的run_causal拉起WanI2VCausal默认 480×832、--local_attn_size 18 --sink_size 6、--ulysses_size 8。想换样本把--image指向examples/XX/image.jpg、--action_path指向examples/XX即可prompt建议参考各examples/XX/prompt.txt。小贴士WanI2VCausal提供 prewarm()在计时前跑一次空前向可把首次生成的约 7 秒 CUDA 预热开销移出正式窗口且输出逐比特一致——做实时延迟优化时值得启用。关键文件速查表文件一句话定位wan/image2video.py推理总调度WanI2VCausal分块循环 KV 回写 双模式分发wan/modules/model_causal.py因果主干KV 注意力、因果 RoPE、相机注入wan/modules/model_fast.py快速蒸馏主干4 步采样 窗口滚动wan/modules/vae2_1.pyWan2.1 VAE负责像素↔latent 编解码wan/utils/cam_utils.pyPlücker 嵌入、相对位姿、内参变换wan/configs/wan_i2v_A14B.py14B 维度与两个检查点子文件夹配置wan/distributed/sequence_parallel.pyUlysses 因果序列并行前向generate.py推理入口参数、分布式、保存小结wan 目录的改造本质把 Wan2.2 变成因果世界模型LingBot-World 2.0 只做对了几件对的事KV-Cache 滚动注意力实现因果自回归、窗口 锚点把显存锁死、因果 RoPE保住时间定位、Plücker 相机条件让世界可交互、蒸馏 4 步换来实时、FSDP Ulysses撑起多卡。读懂 wan/modules/model_causal.py 与 wan/image2video.py 这两个文件你就抓住了整个wan/目录的骨架。赞分享【免费下载链接】lingbot-world-v2Infinite Worlds with Versatile Interactions项目地址https://gitcode.com/gh_mirrors/li/lingbot-world-v2点击查看免费下载相关推荐YuriKey开发者指南如何贡献代码和参与项目开发YuriKey开发者指南如何贡献代码和参与项目开发 YuriKey是一个系统级模块旨在帮助用户轻松获取Strong Integrity。本指南将详细介绍如何从40步到4步LingBot-World 2.0实时推理蒸馏causal_fast原理与关键代码解读从40步到4步LingBot World 2.0实时推理蒸馏causal_fast原理与关键代码解读 LingBot World 2.0LingBotProxySQL 项目架构全景剖析目录结构、线程模型与构建系统源码级解读ProxySQL 项目架构全景剖析目录结构、线程模型与构建系统源码级解读 文档说明 本文以仓库内 doc/ai generated/architecture后端数据库负载均衡创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考