惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
W
WeLiveSecurity
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
P
Privacy & Cybersecurity Law Blog
Help Net Security
Help Net Security
L
LINUX DO - 最新话题
H
Hacker News: Front Page
H
Heimdal Security Blog
Google DeepMind News
Google DeepMind News
V
Vulnerabilities – Threatpost
Know Your Adversary
Know Your Adversary
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Recorded Future
Recorded Future
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
D
DataBreaches.Net
V
Visual Studio Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
GbyAI
GbyAI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
A
Arctic Wolf
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
P
Proofpoint News Feed
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
Scott Helme
Scott Helme
酷 壳 – CoolShell
酷 壳 – CoolShell
SecWiki News
SecWiki News
The Cloudflare Blog
N
News and Events Feed by Topic
宝玉的分享
宝玉的分享
Hacker News - Newest:
Hacker News - Newest: "LLM"
小众软件
小众软件
博客园 - Franky
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Attack and Defense Labs
Attack and Defense Labs
T
Threat Research - Cisco Blogs

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
stable-worldmodel:世界模型研究的可复现平台
Cheman · 2026-05-31 · via BlogFinder

今天在 GitHub Trending 上看到一个有意思的项目:stable-worldmodel,这是一个为世界模型研究提供可复现评估的平台,统一了数据收集、训练和评估流程。

一、项目概述

stable-worldmodel 是由 Galilai Group 开发的开源项目,旨在为世界模型研究提供一个统一的、可复现的实验平台。世界模型(World Model)是强化学习中的一个核心概念,它让智能体能够学习环境的内部表示,从而进行规划和决策。

核心特性:

  • 统一的三个阶段接口:数据收集、训练、模型预测控制评估
  • 支持多种标准化环境(DeepMind Control Suite、Gymnasium、Atari 等)
  • 内置常见基线实现和规划求解器
  • 多种数据格式支持(LanceDB、HDF5、Video、LeRobot)
  • 丰富的视觉和物理变异因子,便于评估泛化能力

解决的问题: 世界模型研究缺乏统一的标准化平台,不同研究使用的环境、数据格式和评估方法各不相同,导致结果难以复现和比较。stable-worldmodel 通过提供统一接口和标准化环境,解决了这个痛点。

二、技术原理

架构设计

stable-worldmodel 采用模块化设计,核心架构分为三层:

  1. 环境层(Envs):统一封装多种环境,提供 Gymnasium 接口
  2. 数据层(Data):支持多种数据格式,提供统一的数据加载和转换接口
  3. 求解器层(Solver):实现多种规划求解器,用于模型预测控制评估
import stable_worldmodel as swm
from stable_worldmodel.policy import WorldModelPolicy, PlanConfig
from stable_worldmodel.solver import CEMSolver

# 1. 收集数据集
world = swm.World("swm/PushT-v1", num_envs=8)
world.set_policy(your_expert_policy)
world.collect("data/pusht_demo.lance", episodes=100, seed=0)

# 2. 加载数据并训练世界模型
dataset = swm.data.load_dataset("data/pusht_demo.lance", num_steps=16)
world_model = ...  # 你的模型

# 3. 使用模型预测控制评估
solver = CEMSolver(model=world_model, num_samples=300)
policy = WorldModelPolicy(solver=solver, config=PlanConfig(horizon=10))

world.set_policy(policy)
results = world.evaluate(episodes=50)
print(f"Success Rate: {results['success_rate']:.1f}%")

核心技术栈

  • PyTorch:深度学习框架
  • LanceDB:高效数据存储和检索
  • Gymnasium:标准化环境接口
  • Hydra:配置管理
  • WandB:实验跟踪

数据流分析

stable-worldmodel 的数据流设计非常灵活,支持多种格式:

格式磁盘布局适用场景
lanceLanceDB 表(episode 连续扁平行)默认格式 — 支持追加,快速索引读取
hdf5单个 .h5 文件(每列一个数据集)可移植的单文件工件
folder.npz 列 + 每步一张 JPEG检查、部分键流读取
video.npz 列 + 每 episode 一个 MP4长 episode,紧凑图像存储
lerobotlerobot://<repo_id>(只读适配器)直接在 LeRobot Hub 数据集上训练/评估

性能对比(基于 PushT 数据集):

  • 吞吐量:LanceDB 本地无缓存可达 4814.8 samples/s,远超 HDF5 的 1416.1 samples/s
  • 存储大小:Video 格式仅 496.29 MB,而 HDF5 需要 43.12 GB

三、安装与快速开始

环境要求

  • Python >= 3.10
  • PyTorch
  • 推荐使用 uv 进行依赖管理

安装步骤

从 PyPI 安装:

pip install stable-worldmodel            # 仅基础功能
pip install 'stable-worldmodel[all]'     # + 训练、环境、数据格式

从源码安装(开发模式):

git clone https://github.com/galilai-group/stable-worldmodel
cd stable-worldmodel
uv venv --python=3.10 && source .venv/bin/activate
uv sync --extra all --group dev

数据集和检查点存储在 $STABLEWM_HOME(默认为 ~/.stable_worldmodel/)。

最简运行示例

import stable_worldmodel as swm

# 创建环境
world = swm.World("swm/PushT-v1", num_envs=8)

# 使用随机策略收集数据
import gymnasium as gym
world.set_policy(lambda obs: gym.spaces.unflatten(env.action_space, np.random.randn()))

# 收集数据
world.collect("data/pusht_demo.lance", episodes=100, seed=0)

# 加载数据集
dataset = swm.data.load_dataset("data/pusht_demo.lance", num_steps=16)
print(f"Dataset size: {len(dataset)}")

四、使用方法与实战

基础用法

1. 环境列表和变异因子

# 列出所有注册的环境
swm envs

# 查看环境的变异因子
swm fovs PushT-v1

stable-worldmodel 的一大特色是提供丰富的变异因子(Factors of Variation),包括光照、纹理、动力学、形态等可独立控制的视觉和物理参数,方便评估分布偏移下的零样本泛化能力。

2. 数据集管理

# 列出缓存的数据集
swm datasets

# 检查特定数据集
swm inspect pusht_expert_train

# 转换数据集格式
swm convert pusht_expert_train --dest-format video

3. 训练基线模型

项目提供了常见基线的参考实现:

  • scripts/train/lewm.py:实现 LeWM
  • scripts/train/prejepa.py:复现 DINO-WM

进阶用法

自定义环境

添加新环境只需遵循 Gymnasium 接口:

from gymnasium import Env, spaces
import numpy as np

class MyCustomEnv(Env):
    def __init__(self):
        super().__init__()
        self.action_space = spaces.Box(low=-1, high=1, shape=(2,))
        self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(64,))
    
    def reset(self, seed=None):
        # 初始化环境
        return self._get_obs(), {}
    
    def step(self, action):
        # 执行动作
        obs = self._get_obs()
        reward = 0
        terminated = False
        return obs, reward, terminated, False, {}
    
    def _get_obs(self):
        return np.random.randn(64)

# 注册环境
swm.register_env("MyCustomEnv-v0", MyCustomEnv)

自定义求解器

实现自定义规划求解器:

from stable_worldmodel.solver import BaseSolver

class MyCustomSolver(BaseSolver):
    def __init__(self, model, **kwargs):
        super().__init__(model)
        self.kwargs = kwargs
    
    def solve(self, initial_state, goal_state, horizon):
        # 实现你的规划算法
        actions = np.random.randn(horizon, self.action_dim)
        return actions

# 使用自定义求解器
solver = MyCustomSolver(model=world_model, num_samples=100)
policy = WorldModelPolicy(solver=solver, config=PlanConfig(horizon=10))

实际项目示例

复现 DINO-WM

# 训练 DINO-WM 模型
python scripts/train/prejepa.py \
    --config configs/dinowm_pusht.yaml \
    --data_path data/pusht_demo.lance \
    --output_dir checkpoints/dinowm_pusht

评估世界模型

from stable_worldmodel.policy import WorldModelPolicy, PlanConfig
from stable_worldmodel.solver import CEMSolver

# 加载训练好的模型
world_model = load_checkpoint("checkpoints/my_model.pt")

# 创建求解器
solver = CEMSolver(model=world_model, num_samples=300)

# 创建策略
policy = WorldModelPolicy(solver=solver, config=PlanConfig(horizon=10))

# 评估
world = swm.World("swm/PushT-v1", num_envs=8)
world.set_policy(policy)
results = world.evaluate(episodes=50)

print(f"Success Rate: {results['success_rate']:.1f}%")
print(f"Average Return: {results['average_return']:.2f}")

五、常见问题与解决方案

安装失败

问题pip install stable-worldmodel[all] 失败

解决方案

  1. 确保 Python 版本 >= 3.10
  2. 安装 PyTorch 之前先安装 PyTorch:pip install torch torchvision
  3. 使用 uv 进行依赖管理:uv sync --extra all --group dev

运行时错误

问题ModuleNotFoundError: No module named 'dm_control'

解决方案

pip install 'stable-worldmodel[env]'

问题:数据集加载失败

解决方案

  1. 检查数据集路径是否正确
  2. 确认数据集格式是否支持
  3. 使用 swm inspect <dataset_name> 检查数据集

性能问题

问题:训练速度慢

解决方案

  1. 使用 LanceDB 格式存储数据(性能最优)
  2. 增加 num_envs 进行并行数据收集
  3. 使用 GPU 进行训练

兼容性问题

问题:LeRobot 数据集支持失败

解决方案

  • LeRobot 支持需要 Python 3.12+:pip install 'stable-worldmodel[lerobot]'
  • 确保 Python 版本符合要求

六、总结

stable-worldmodel 为世界模型研究提供了一个统一、可复现的实验平台,极大地降低了研究门槛,提升了代码的可复现性。其核心优势包括:

  1. 统一接口:标准化数据收集、训练和评估流程
  2. 丰富环境:支持多种标准化环境,内置变异因子
  3. 灵活数据格式:支持 LanceDB、HDF5、Video 等多种格式
  4. 基线实现:提供常见方法的参考实现,便于对比
  5. 活跃开发:来自顶级研究机构的维护,持续更新

如果你是世界模型研究方向的研究者或工程师,stable-worldmodel 绝对值得一试。它不仅能加速你的研究进程,还能提升实验结果的可信度和可复现性。

项目地址:https://github.com/galilai-group/stable-worldmodel

论文地址:https://arxiv.org/abs/2605.21800

文档地址:https://galilai-group.github.io/stable-worldmodel/