WorldModelBench
Run WorldModelBench with WorldFoundry's in-tree evaluator and VILA judge path.
On this page
About
WorldModelBench asks whether generated videos behave like world models. It contains 350 public test instances across 7 domains and 56 subdomains. Each instance provides a first-frame description, an instruction, and a first-frame image. Text-to-video models use the description plus instruction; image-to-video models use the first frame plus instruction.
WorldFoundry already includes the WorldModelBench evaluator wrapper and runtime under worldfoundry/evaluation/tasks/execution/runners/worldmodelbench. Do not clone the official repos for a WorldFoundry run. You still need the data assets and the VILA judge checkpoint.
What It Measures
WorldModelBench judges whether video generators behave as world models — not only whether clips look good, but whether they follow instructions, preserve temporal common sense, and respect physical laws. The benchmark crowdsourced 67K human labels to train a human-aligned VILA judge that automates evaluation.
Benchmark Design
| Axis | Coverage | Scoring |
|---|---|---|
| Domains | 7 application domains, 56 subdomains, 350 public prompts | 50 prompts per domain |
| Instruction following | Object, subject, and intended motion alignment | 0–3 per instance |
| Common sense | Temporal coherence and frame-wise aesthetics | 0–2 per instance |
| Physical adherence | Newtonian motion, solid mechanics, fluid mechanics, impenetrability, gravity | 0–5 per instance |
| Prompts | Text description + instruction + first-frame image | T2V uses text; I2V uses image + instruction |
Physical-adherence checks target subtle violations such as size drift, unnatural deformation, impossible fluid flow, object penetration, and gravity inconsistency — failures that generic video-quality metrics often miss.
Official References
- Paper: arXiv:2502.20694
- Project page and leaderboard: worldmodelbench-team.github.io
- Official source reference: github.com/WorldModelBench-Team/WorldModelBench
- Test data: Efficient-Large-Model/worldmodelbench
- Judge model: Efficient-Large-Model/vila-ewm-qwen2-1.5b
- In-tree runner:
worldfoundry/evaluation/tasks/execution/runners/worldmodelbench/run_worldmodelbench_official_runner.py
Leaderboard Notes
The public leaderboard reports Instruction Following, Physics Adherence, Common Sense, and a Total Score. Official answers and explanations are withheld for test integrity; submit results to worldmodelbench.team@gmail.com per the project page. WorldFoundry normalizes local judge output into scorecard.json but does not host the upstream submission workflow.
Prepare Data And Assets
Run from the WorldFoundry repository root:
cd /path/to/WorldFoundry
export PYTHONPATH="$PWD:${PYTHONPATH:-}"Create a data root with the manifest, first-frame images, and evaluator file layout expected by the runner:
<worldmodelbench_data_root>/
worldmodelbench.json
images/
evaluation.pyWorldFoundry ships the public 350-instance manifest:
export WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT=/path/to/worldmodelbench
mkdir -p "${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}"
cp worldfoundry/data/benchmarks/assets/worldmodelbench/worldmodelbench.json \
"${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}/worldmodelbench.json"If you use a Hugging Face mirror for the data assets, place it in the same root:
hf download Efficient-Large-Model/worldmodelbench \
--repo-type dataset \
--local-dir "${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}"Download the judge checkpoint:
export WORLDFOUNDRY_WORLDMODELBENCH_JUDGE=/path/to/vila-ewm-qwen2-1.5b
hf download Efficient-Large-Model/vila-ewm-qwen2-1.5b \
--local-dir "${WORLDFOUNDRY_WORLDMODELBENCH_JUDGE}"Generate one video per manifest row. The output filename must match the first-frame stem:
images/69620089860948e38a4921dd4869d24f.jpg
=> <generated_videos>/69620089860948e38a4921dd4869d24f.mp4export WORLDFOUNDRY_GENERATED_ARTIFACT_DIR=/path/to/worldmodelbench/generated_videosPrompt construction follows the local README:
# text-to-video
" ".join([instance["text_first_frame"], instance["text_instruction"]])
# image-to-video
image = instance["first_frame"]
text = instance["text_instruction"]Run With WorldFoundry
Public command for importing a completed worldmodelbench_results.json:
worldfoundry-eval zoo benchmark-run \
--benchmark-id worldmodelbench \
--mode official-validation \
--official-results-path /path/to/worldmodelbench_results.json \
--benchmark-data-root "${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}" \
--generated-artifact-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--output-dir tmp/worldmodelbench/official-validation \
--jsonDirect runner command for judge execution through the bundled runtime:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/worldmodelbench/run_worldmodelbench_official_runner.py \
--worldmodelbench-root worldfoundry/evaluation/tasks/execution/runners/worldmodelbench/runtime \
--data-root "${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}" \
--video-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--judge "${WORLDFOUNDRY_WORLDMODELBENCH_JUDGE}" \
--model-name "${WORLDFOUNDRY_MODEL_NAME:-candidate_model}" \
--output-dir tmp/worldmodelbench/direct-runner \
--jsonDirect runner command for importing a completed result file:
PYTHONPATH=. "${WORLDFOUNDRY_UNIFIED_PYTHON:-python}" \
worldfoundry/evaluation/tasks/execution/runners/worldmodelbench/run_worldmodelbench_official_runner.py \
--data-root "${WORLDFOUNDRY_WORLDMODELBENCH_DATA_ROOT}" \
--video-dir "${WORLDFOUNDRY_GENERATED_ARTIFACT_DIR}" \
--official-results-path /path/to/worldmodelbench_results.json \
--output-dir tmp/worldmodelbench/direct-import \
--jsonMetrics
WorldModelBench raw category maxima are 3, 2, and 5 points. WorldFoundry reports both raw and normalized values when possible.
| Metric ID | Meaning |
|---|---|
instruction_following | Whether the generated video follows the requested instruction. Raw max: 3. |
common_sense | Framewise and temporal common-sense quality. Raw max: 2. |
physical_adherence | Physical-law adherence across Newtonian behavior, mass/solid consistency, fluid behavior, penetration, and gravity. Raw max: 5. |
world_model_average | Primary aggregate across the three public categories. Raw max: 10. |
Outputs
The runner writes these files under --output-dir:
scorecard.json: normalized scorecard with metric values and generated-video coverage.raw_metric_table.jsonl: one row per metric ID.judge_responses.jsonl: flattened VILA judge responses when available.upstream/worldmodelbench_results.json: generated by the direct judge path.upstream_stdout.logandupstream_stderr.log: direct judge execution logs.
Public benchmark-zoo runs can also write runner_runtime_report.json.