reactor-team/open-dreamer

GitHub: reactor-team/open-dreamer

Open Dreamer 是一个 Minecraft 世界模型的本地推理工具,能够根据输入视频和 VPT 动作序列生成未来视频帧。

Stars: 3 | Forks: 0

Open Dreamer # 推理 **Open Dreamer 世界模型的最小化本地推理 —— 从 MP4 和匹配的 Minecraft VPT 动作中生成新 帧。** [🎮 在线演示](https://next-state.github.io/open-dreamer/)  ·  [🌐 项目与训练](https://github.com/next-state/open-dreamer)

实时演示技术支持
本仓库是一个为 [Open Dreamer](https://github.com/next-state/open-dreamer) 设计的小型、独立的 rollout 工具。 给定一段简短的视频片段和一系列 Minecraft/VPT 风格的动作,它会将视频片段编码到模型的 latent space 中,并生成后续的帧 —— 这是一种在本地以脚本化方式在你自己的素材上 驱动该世界模型的方法。 只想体验一下该模型?**[在线演示](https://next-state.github.io/open-dreamer/)** 可以在你的浏览器中运行实时版本,无需任何配置。 ## 🎮 立即体验 体验 Open Dreamer 最简单的方式就是使用浏览器内演示 —— 进入 生成的 Minecraft 世界并实时游玩: 👉 **[打开演示](https://next-state.github.io/open-dreamer/)** 如果你想在本地运行 rollout,请继续阅读。 ## ⚙️ 快速开始 请在仓库根目录下执行以下所有命令。 ### 1. 安装 ``` uv sync ``` ### 2. 提供 checkpoint 你需要一个训练好的 Open Dreamer checkpoint(一个 Orbax checkpoint 目录)。你可以使用 [Open Dreamer 训练 pipeline](https://github.com/next-state/open-dreamer) 训练一个,或者通过 `--checkpoint_path` 指向你已有的 checkpoint。下方的示例 使用的是 `/path/to/open-dreamer-checkpoint`。 ### 3. 验证 JAX 是否识别到 GPU Rollout 需要支持 CUDA 的 JAX GPU;如果 `jax.devices("gpu")` 为空,脚本会在加载 checkpoint 之前退出。 ``` uv run python - <<'PY' import jax import jax.numpy as jnp print("backend", jax.default_backend()) print("gpu devices", jax.devices("gpu")) x = jnp.ones((2048, 2048), dtype=jnp.float32) y = (x @ x).block_until_ready() print("result device", y.device) PY ``` ### 4. 下载示例数据 `download_vpt_sample.py` 会获取 OpenAI 官方的 Minecraft VPT 10.x 承包商 索引,验证示例 `.mp4` 是否在列表中,并下载该 MP4 文件及其 配套的 `.jsonl` 动作文件: ``` uv run python download_vpt_sample.py --overwrite ``` 预期文件: ``` samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.mp4 samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.jsonl ``` ### 5. 运行 rollout ``` XLA_PYTHON_CLIENT_PREALLOCATE=false uv run python inference.py \ --checkpoint_path /path/to/open-dreamer-checkpoint \ --input_mp4 samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.mp4 \ --actions_path samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.jsonl \ --output_mp4 outputs/vpt_sample_rollout.mp4 \ --num_context_frames 4 \ --horizon 1 \ --num_steps 4 \ --use_ema ``` ## 更大的 rollout 增加 `--num_context_frames` 和 `--horizon` 以获取更长的输出: ``` XLA_PYTHON_CLIENT_PREALLOCATE=false uv run python inference.py \ --checkpoint_path /path/to/open-dreamer-checkpoint \ --input_mp4 samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.mp4 \ --actions_path samples/vpt/cheeky-cornflower-setter-02e496ce4abb-20220421-092639.jsonl \ --output_mp4 outputs/rollout.mp4 \ --num_context_frames 16 \ --horizon 64 \ --num_steps 4 \ --use_ema ``` 只有前 `--num_context_frames` 个视频帧会被读取和编码。动作 文件必须包含至少 `num_context_frames + horizon` 个动作; 完整的动作序列会先进行移位,然后再被拆分为 context 和未来(future) 动作。 ## 输入格式 动作文件可以是 JSON 数组或 JSONL。每个条目都是一个 VPT 风格的动作 字典,包含 `mouse` 和 `keyboard` 字段,例如: ``` {"mouse":{"dx":0.0,"dy":0.0,"buttons":[],"dwheel":0.0},"keyboard":{"keys":["key.keyboard.w"]}} ``` 输入视频帧必须是 RGB `368x640`,或者是 RGB `360x640`,以便它们能够 被零填充(zero-pad)到训练时使用的 `368x640` 模型形状。 ## 📚 参考文献 - Open Dreamer:[项目主页、博客文章和训练 pipeline](https://github.com/next-state/open-dreamer) - Dreamer 4:[Training Agents Inside of Scalable World Models](https://danijar.com/project/dreamer4/) ## 📄 许可证 **保留所有权利。** 请参阅 [LICENSE](LICENSE)。这是一个临时声明; 正式的许可证预计将在未来的版本中发布。
标签:JAX, Vectored Exception Handling, 世界模型, 人工智能, 推理框架, 游戏模拟, 用户模式Hook绕过, 视频生成, 逆向工具