stable-worldmodel-a-high-performance-platform-for-reproducible-world-model-research
Ayush Chaurasia
Quentin Lhoest
Lucas Maes
Quentin Le Lidec
reproducible-data-curation-in-the-multimodal-lakehouse
Prashanth Rao
newsletter-may-2026
ChanChan Mao
newsletter-april-2026
ChanChan Mao
how-lancedb-accelerates-vector-search-at-10-billion-scale
Yang Cen
opensearch-vs-lancedb-for-vector-search-query-cost-and-infrastructure
Justin Miller
volcano-engine-autonomous-driving-data-lake-solution
Kejian Ju
unifying-the-av-ml-stack-lancedb
Ayush Chaurasia
lance-json-support-why-you-might-not-really-need-variant
Jack Ye
building-a-storage-format-for-the-next-era-of-biology
Pavan Ramkumar
newsletter-march-2026
ChanChan Mao
smart-parsing-meets-sharp-retrieval-combining-liteparse-and-lancedb
Clelia Astra Bertelli
Prashanth Rao
lance-format-v2-2-benchmarks-half-the-storage-none-of-the-slowdown
Xuanwo
make-your-sql-workflows-multimodal-with-lancedb-x-duckdb
Prashanth Rao
agentic-coding-as-community-stewardship
Xuanwo
what-we-mean-by-multimodal
Prashanth Rao
ai-native-development-local-continue-lancedb
Ty Dunn
lance-file-format-2-2-taming-complex-data
Xuanwo
lance-blob-v2
Xuanwo
Jack Ye
openclaw-lancedb-memory-layer
Xuanwo
Prashanth Rao
openclaw-lancedb-seed2
LanceDB
openclaw-memory-from-zero-to-lancedb-pro
Prashanth Rao
upload-lance-datasets-to-hf-hub
Prashanth Rao
zero-shot-image-classification-with-vector-search
Vipul Maheshwari
werides-data-platform-transformation-how-lancedb-fuels-model-development-velocity
Qian Zhu
Fei Chen
training-a-variational-autoencoder-from-scratch-with-the-lance-file-format
LanceDB
track-ai-trends-crewai-agents-rag
LanceDB
tokens-per-second-is-not-all-you-need
Mingran Wang
Tan Li
the-future-of-open-source-table-formats-iceberg-and-lance
Jack Ye
the-case-for-random-access-i-o
LanceDB
series-a-funding
Chang She
semanticdotart
Ayush Chaurasia
second-dinners-secret-weapon-lancedb-powered-rag-for-faster-smarter-game-development
Qian Zhu
search-within-an-image-331b54e4285e
Kaushal Choudhary
scalable-computer-vision-with-lancedb-voxel51-d8b65066d5f6
LanceDB
rethinking-table-file-paths-lance-multi-base-layout
Jack Ye
rag-isnt-one-size-fits-all
Leonard Marcq
python-package-to-convert-image-datasets-to-lance-type
Vipul Maheshwari
one-million-iops
Weston Pace
november-feature-roundup
Will Jones
newsletter-september-2025
Jasmine Wang
newsletter-october-2025
Jasmine Wang
newsletter-november-2025
ChanChan Mao
newsletter-june-2025
David Myriel
newsletter-july-2025
Jasmine Wang
newsletter-january-2026
ChanChan Mao
newsletter-february-2026
ChanChan Mao
newsletter-december-2025
ChanChan Mao
newsletter-august-2025
Jasmine Wang
my-summer-internship-experience-at-lancedb-2
Raunak Sinha
my-simd-is-faster-than-yours-fb2989bf25e7
LanceDB
multimodal-myntra-fashion-search-engine-using-lancedb
LanceDB
multimodal-lakehouse
David Myriel
multi-document-agentic-rag-a-walkthrough
Vipul Maheshwari
modified-rag-parent-document-bigger-chunk-retriever-62b3d1e79bc6
Mahesh Deshwal
memgpt-os-inspired-llms-that-manage-their-own-memory-793d6eed417e
Ayush Chaurasia
late-interaction-efficient-multi-modal-retrievers-need-more-than-just-a-vector-index
Ayush Chaurasia
lancedb-x-continue
LanceDB
lance-x-huggingface-a-new-era-of-sharing-multimodal-data
Prashanth Rao
Quentin Lhoest
Xuanwo
Ayush Chaurasia
lance-x-duckdb-sql-retrieval-on-the-multimodal-lakehouse-format
Xuanwo
lance-windows-windows-lance
Chang She
lance-v2
Weston Pace
lance-namespace-lancedb-and-ray
Jack Ye
lance-file-2-1-stable
Weston Pace
lance-file-2-1-smaller-and-simpler
Weston Pace
lance-data-viewer
Gordon Murray
lance-community-governance
Jack Ye
introducing-lance-namespace-spark-integration
Jack Ye
implementing-corrective-rag-in-the-easiest-way-2
LanceDB
hybrid-search-rag-for-real-life-production-grade-applications-e1e727b3965a
Mahesh Deshwal
hybrid-search-combining-bm25-and-semantic-search-for-better-results-with-lan-1358038fe7e6
LanceDB
hybrid-search-and-custom-reranking-with-lancedb-4c10a6a3447e
LanceDB
how-to-reduce-hallucinations-from-llm-powered-agents-using-long-term-memory-72f262c3cc1f
Tevin Wang
guide-to-use-contextual-retrieval-and-prompt-caching-with-lancedb
LanceDB
grpo-understanding-and-fine-tuning-the-next-gen-reasoning-model-2
Mahesh Deshwal
graphrag-hierarchical-approach-to-retrieval-augmented-generation
Akash Desai
gpu-accelerated-indexing-in-lancedb-27558fa7eee5
LanceDB
geo-support
Jack Ye
geneva-twelvelabs
David Myriel
geneva-feature-engineering
Jonathan Hsieh
from-bi-to-ai-lance-and-iceberg
Jack Ye
Prashanth Rao
fluss-integration
Wayne Wang
file-readers-in-depth-parallelism-without-row-groups
Weston Pace
feature-rabitq-quantization
David Myriel
Yang Cen
feature-full-text-search
David Myriel
enhance-rag-integrate-contextual-compression-and-filtering-for-precision-a29d4a810301
Kaushal Choudhary
effortlessly-loading-and-processing-images-with-lance-a-code-walkthrough
LanceDB
designing-a-table-format-for-ml-workloads
Weston Pace
custom-dataset-for-llm-training-using-lance
LanceDB
creating-a-fintech-agent
Vipul Maheshwari
convert-any-image-dataset-to-lance
LanceDB
columnar-file-readers-in-depth-structural-encoding
Weston Pace
columnar-file-readers-in-depth-repetition-definition-levels
Weston Pace
columnar-file-readers-in-depth-compression-transparency
Weston Pace
columnar-file-readers-in-depth-column-shredding
Weston Pace
columnar-file-readers-in-depth-backpressure
Weston Pace
columnar-file-readers-in-depth-apis-and-fusion
Weston Pace
chunking-techniques-with-langchain-and-llamaindex
Prashant Kumar
chunking-analysis-which-is-the-right-chunking-approach-for-your-language
Shresth Shukla
chat-with-csv-excel-using-lancedb
LanceDB
case-study-netflix
David Myriel
case-study-dosu
Qian Zhu
Michael Ludden
case-study-cognee
David Myriel
Vasilije Markovic
case-study-coderabbit
Qian Zhu
building-rag-on-codebases-part-2
Sankalp Shubham
building-rag-on-codebases-part-1
Sankalp Shubham
branching-and-shallow-clone
Jack Ye
better-rag-with-active-retrieval-augmented-generation-flare-3b66646e2a9f
LanceDB
benchmarking-random-access-in-lance
Chang She
benchmarking-lancedb-92b01032874a-2
LanceDB
benchmarking-cohere-reranker-with-lancedb
LanceDB
anythingllms-competitive-edge-lancedb-for-seamless-rag-and-agent-workflows
Ayush Chaurasia
announcing-lance-sdk
Weston Pace
agentic-rag-using-langgraph-building-a-simple-customer-support-autonomous-agent
LanceDB
advanced-rag-precise-zero-shot-dense-retrieval-with-hyde-0946c54dfdcb
LanceDB
accelerate-vector-search-applications-using-openvino-lancedb
LanceDB
a-primer-on-text-chunking-and-its-types-a420efc96a13
Prashant Kumar
a-practical-guide-to-training-custom-rerankers
Ayush Chaurasia
a-practical-guide-to-fine-tuning-embedding-models
Ayush Chaurasia
keep-your-data-fresh-with-cocoindex-and-lancedb
Prashanth Rao
Linghua Jin

Stable-Worldmodel: A High Performance Platform for Reproducible World Model Research

June 3, 2026
EngineeringAnnouncement

World models are learned predictive models of how an environment evolves under actions. These are central to agents that can plan, reason, and generalize beyond their training data. Recent work ( LeWorldModel, DINO-WM, V-JEPA2, PLDM, TD-MPC2) keeps pushing the modeling story forward, but the surrounding research infrastructure is fragmented: every paper ships a one-off codebase, every implementation reinvents the same data pipeline and the same handful of planning solvers, and there's no shared evaluation surface for fair comparisons.

Stable-Worldmodel  is the open-source platform built to fix that. One package, one set of abstractions for data collection, training, and evaluation, clean reference implementations of every modern baseline (LeWM, DINO-WM, PLDM, TD-MPC2, GCBC and friends), planning solvers (CEM, MPPI, iCEM, gradient-based), and a controllable-perturbations evaluation suite that lets you measure zero-shot generalization with a single number.

Read the paper on arXiv here.

Underneath all of it sits a LanceDB data layer. LanceDB is a multimodal lakehouse built on the open-source Lance columnar format, optimized for modern multimodal AI access patterns.

The data layer 

This high-performance default data layer built on top of LanceDB has several advantages.

  1. Dataloader throughput is high enough to keep a modern GPU saturated. For example, on a single H200 we see roughly 40k steps/hour with Lance when training LeWM model, versus ~20k steps/hour against the same dataset in HDF5, and even less with popular video-based dataloaders that decode frames from videos on-the-fly.
Format Source Cache Samples/sec
HDF5 local no 1,416
HDF5 local yes 1,474
Video (MP4) local 1,331
LanceDB local no 4,815
LanceDB local yes 4,431
HDF5 S3 no 9
HDF5 S3 yes 757
LanceDB S3 no 3,184
LanceDB S3 yes 3,253

  1. Reading LanceDB datasets directly from a remote bucket is performant, which makes training directly from object storage a viable workflow rather than paying the significant cost to sync to local disk upfront. You effectively keep your GPUs fed, while training directly off of object storage.

  2. Index support and zero-copy data evolution : You can have search indexes like vector, FTS and hybrid search on the same training dataset to explore and curate your training data more easily, without any additional cost or performance loss. This is because LanceDB supports zero-copy data evolution, which means adding new features is essentially free.

A quick tour

Stable-Worldmodel builds on three abstractions: a World (vectorized Gymnasium environments + controllable perturbations), a Policy (anything with get_actions), and a Solver (the planning algorithm an MPC policy calls into). The library essentially composes these three abstractions:

1. Collect: dump trajectories into a Lance table

world = swm.World("swm/PushT-v1", num_envs=8, max_episode_steps=1000)
world.set_policy(your_expert_policy)
world.collect(dataset_path="pusht.lance", episodes=5000, seed=42)

2. Train: same loader path works for local, S3, GCS, or HF Buckets URIs

dataset = swm.data.load_dataset("pusht.lance", num_steps=16)
trainer.fit(world_model, DataLoader(dataset, batch_size=256, num_workers=8))

3. Evaluate under controlled perturbations

planner = swm.solver.CEMSolver(world_model)
world.set_policy(swm.policy.MPCPolicy(planner))
metrics = world.evaluate( 
		episodes=100, video="videos/",
		options={"variation": ["agent.size", "background.color"]}
		)
print(metrics["success_rate"])

None of these blocks cares whether pusht.lance is a local directory, an s3:// URI, or a Hugging Face Hub URI like hf://buckets/<org>/<bucket>/pusht.lance.

Training LeWorldModel using stable-worldmodel

To ground the data-layer numbers in a real model, the canonical baseline in the SWM zoo is LeWorldModel (LeWM). 

LeWM is a latent dynamics model in the JEPA family with a deliberate twist: it trains end-to-end from raw pixels with only two loss terms, rather than relying on a frozen DINOv2 encoder the way DINO-WM does. The forward pass looks like the following:

There are three design points worth calling out:

  • End-to-end from pixels. Most JEPA-style world models bolt onto a frozen pretrained encoder. LeWM trains the encoder, action embedder, and predictor jointly. This is what gives the 192-dim embedding its expressiveness. roughly 200× more compact than DINO's patch tokens  and what makes planning fast: the encoder isn't a 1B-parameter foundation model, it's a small ViT (Vision Transformer) sized for the task.
  • SIGReg as collapse prevention. Joint-embedding architectures classically collapse to a constant unless you stop them with EMA targets, stop-gradients, predictor heads on the target side, or some combination. LeWM uses SIGReg instead: a regularizer that softly pushes the latent embedding distribution toward an isotropic Gaussian. One scalar weight λ to tune instead of a half-dozen pretraining-recipe knobs.
  • Two losses, one optimizer. The full training loss is pred_loss + λ · sigreg_loss, both differentiable end-to-end with no auxiliary supervision. Training runs to convergence on a single H200 in hours, not days.

The result is SOTA-competitive numbers on Push-T (94% success rate) and OGBench-Cube (72%) with roughly 50× less planning latency than DINO-WM.

Training from object storage

LanceDB can read from different kinds of storage services in the unified API powered by Apache OpenDAL, so swm's loader is URI-agnostic: s3://, gs://, az://, a local path, or the newly launched Buckets (Hugging Face's S3-alike object storage service) using the hf://buckets///.lance URI.

Storage Buckets are a recent addition to the Hugging Face Hub: they're mutable, S3-like object stores that you can explore in the browser, script from Python, or manage with the Hugging Face CLI. Unlike Models and Datasets repositories, they aren't version-controlled.

Why does this matter for Lance?

As modern AI data infrastructure tools, Lance and HF Buckets share a common design philosophy: break data into small, independently-accessible chunks. Where a traditional object store sees monolithic files, both Lance and Buckets (built on top of Xet) see collections of small pieces. That alignment means you benefit from deduplication at no extra cost.

The pre-warming feature is another win for large-scale reads. When your Lance tables span terabytes of data, reducing time-to-first-byte and saturating bandwidth across your most active regions (GCP US East, GCP EU West, AWS EU West) directly translates to faster training job completion. And on top of all that, if you're already using Hugging Face's tooling, there's zero new surface area. Same CLI, same Python client, same fsspec or OpenDAL abstraction.

The training command takes any of those URIs interchangeably:

export HF_TOKEN=...

python scripts/train/lewm.py   data=tworoom data.dataset.name=hf://buckets/your-org/your-bucket/tworoom.lance

This allows faster iteration and experimentation: 

  • Spot instances stop being painful:  there's nothing to sync, so an interruption costs minutes of progress, not a multi-GB resync.
  • Colab and other hosted notebooks become reasonable training targets, since the large  local download is no longer the gate.
  • Multi-region experiments are a config change.
  • For HF-hosted datasets specifically, the dataset, baselines, checkpoints, and demo Spaces can live under one organization. 

Convert to Lance in one command

If your dataset is in a different format like HDF5 or LeRobot's Parquet + video layout, porting to LanceDB is just a simple 1-line command. swm ships a converter that streams episodes one at a time so memory stays bounded:

1. Convert using the stable-worldmodel CLI:

swm convert --source tworoom.h5 --dest tworoom.lance

2. Push to HF Buckets (or any other object store):

huggingface-cli buckets upload your-org/your-bucket tworoom.lance

3. Train:

python scripts/train/lewm.py data.dataset.name=hf://buckets/your-org/your-bucket/tworoom.lance

Conclusions

stable-worldmodel is an open-source platform for reproducible research and evaluation of world models, providing modular tools for data management, planning, and standardized benchmarks with customizable visual and physical properties. Our experiments show that current world models still struggle with robust zero-shot generalization under even mild distribution shifts, and swm aims to make future progress more measurable, scalable, and reproducible.

Try it now

pip install stable-worldmodel

Try the 2 min Colab walkthrough

Open In Colab

Additional Resources

Quentin Lhoest
Open Source & ML/Data Engineer at Hugging Face
Lucas Maes
Ph.D Student JEPA @ Mila
Quentin Le Lidec
Postdoctoral researcher @ NYU

Stable-Worldmodel: A High Performance Platform for Reproducible World Model Research

Ayush Chaurasia
Quentin Lhoest
Lucas Maes
Quentin Le Lidec
June 2, 2026
stable-worldmodel-a-high-performance-platform-for-reproducible-world-model-research

🌍 Lance-Backed World Model Platform, 🦆 Multimodal SQL with Lance DuckDB Extension, 💰 LanceDB vs OpenSearch Cost Breakdown

ChanChan Mao
May 28, 2026
newsletter-may-2026

Reproducible Data Curation In The Multimodal Lakehouse

Prashanth Rao
May 29, 2026
reproducible-data-curation-in-the-multimodal-lakehouse