GalilAI's stable-worldmodel Gives Yann LeCun-Backed AI Researchers One Unified Training Platform
A new open-source PyTorch platform unifies data collection, training, and MPC-based evaluation for world models across 30+ standardized environments.
PRO- GalilAI released stable-worldmodel, a unified PyTorch platform for world model data collection, training, and MPC evaluation.
- Ships with 30+ environments spanning DMControl, 100+ Atari games, Fetch robotics, Craftax, PushT, and TwoRoom.
- Environments expose factors of variation (lighting, textures, physics) for zero-shot generalization testing.
- LanceDB backend reads 4,815 samples/sec locally versus 1,416 for HDF5, with 3x smaller footprint.
- Includes CEM, iCEM, MPPI planners and DINO-WM, LeWM, PLDM baseline implementations.
- Paper on arXiv co-authored by Yann LeCun and Randall Balestriero, MIT licensed.
World model research has a reproducibility problem. Every new paper re-implements the same baselines, cobbles together its own evaluation protocol, and reinvents data loading pipelines. stable-worldmodel is a new open-source PyTorch platform from the GalilAI group that tries to end the reinvention loop by giving researchers one unified toolkit for the entire loop: collect data, train a model, then evaluate it with model-predictive control.
The project has picked up over 2,000 GitHub stars, and its accompanying paper lists a heavyweight author roster including Yann LeCun and Randall Balestriero. It ships under MIT license and installs with a single pip install 'stable-worldmodel[data]'.
One API for the whole world model loop
A world model is a learned simulator that predicts how an environment evolves in response to actions, letting agents plan by imagining future outcomes. The library exposes that loop through three primitives: a World for collecting data, a dataset loader, and a WorldModelPolicy wrapping a planning solver. Here is the entire evaluation flow:
import stable_worldmodel as swm
from stable_worldmodel.policy import WorldModelPolicy, PlanConfig
from stable_worldmodel.solver import CEMSolver
world = swm.World("swm/PushT-v1", num_envs=8)
world.collect("data/pusht_demo.lance", episodes=100)
solver = CEMSolver(model=your_world_model, num_samples=300)
policy = WorldModelPolicy(solver=solver, config=PlanConfig(horizon=10, receding_horizon=5))
world.set_policy(policy)
results = world.evaluate(episodes=50)This story is for Pro members
You've reached the end of the free preview. Upgrade to AlphaSignal Pro to read the full article - and everything else behind the paywall.