Flow Matching Model-Based Policy Optimization based on PWM (Policy Learning with Large World Models).
This repository implements Flow-based world models for first-order gradient policy optimization, building on the PWM framework. We explore whether Flow Matching can provide better-behaved surrogate dynamics for model-based RL.
# Clone the repository
git clone git@github.com:thedannyliu/Flow-MBPO-PWM.git
cd Flow-MBPO-PWM
# Create conda environment
conda env create -f environment.yaml
conda activate pwm
# Install package in editable mode
pip install -e .The active workflow is under scripts/experiments/single_task_online/.
# Build a smoke manifest
python scripts/experiments/single_task_online/build_manifest.py \
--stage smoke \
--output scripts/experiments/single_task_online/manifests/smoke_tmp.csv
# Split by cluster (fixed task-to-cluster assignment)
python scripts/experiments/single_task_online/split_manifest_by_cluster.py \
--manifest scripts/experiments/single_task_online/manifests/smoke_tmp.csv
# Submit on one cluster
bash scripts/experiments/single_task_online/submit_manifest_array.sh \
--manifest scripts/experiments/single_task_online/manifests/smoke_tmp_pace_ice.csv \
--gpu-type H100 --max-concurrent 4See scripts/experiments/single_task_online/README.md for full usage, including packed mode
(one GPU running multiple light rows concurrently).
Configs are in scripts/cfg/:
| Config | Description |
|---|---|
alg/pwm_5M_baseline_final.yaml |
MLP world model baseline |
alg/pwm_5M_flow_v1_substeps2.yaml |
Flow WM, Heun, K=2 |
alg/pwm_5M_flow_v2_substeps4.yaml |
Flow WM, Heun, K=4 (recommended) |
alg/pwm_5M_flow_v3_substeps8_euler.yaml |
Flow WM, Euler, K=8 |
env/dflex_ant.yaml |
Ant locomotion environment |
Both baseline and flow configs use:
wm_batch_size: 256wm_buffer_size: 1_000_000num_envs: 128max_epochs: 15_000horizon: 16
Flow-specific parameters:
use_flow_dynamics: true/falseflow_integrator: heun/eulerflow_substeps: 2/4/8
Flow-MBPO-PWM/
├── src/ # Source code
│ ├── algorithms/ # PWM training algorithm
│ ├── models/ # WorldModel, FlowWorldModel, Actor
│ └── utils/ # Helpers, integrators, monitoring
├── scripts/ # Active single-task training/eval/experiment scripts
│ └── experiments/single_task_online/
└── environment.yaml # Conda environment
@misc{georgiev2024pwm,
title={PWM: Policy Learning with Large World Models},
author={Ignat Georgiev, Varun Giridha, Nicklas Hansen, and Animesh Garg},
eprint={2407.02466},
archivePrefix={arXiv},
primaryClass={cs.LG},
year={2024}
}MIT License