| # WorldMem |
|
|
| Long-term consistent world simulation with memory. |
|
|
| ## Environment (conda) |
|
|
| ```bash |
| conda create -n worldmem python=3.10 |
| conda activate worldmem |
| pip install -r requirements.txt |
| conda install -c conda-forge ffmpeg=4.3.2 |
| ``` |
|
|
| ## Data preparation (data folder) |
|
|
| 1. Download the Minecraft dataset: |
| https://huggingface.co/datasets/zeqixiao/worldmem_minecraft_dataset |
| 2. Place it under `data/` with this structure: |
|
|
| ```text |
| data/ |
| βββ minecraft/ |
| βββ training/ |
| βββ validation/ |
| βββ test/ |
| ``` |
|
|
| The training and evaluation scripts expect the dataset to live at `data/minecraft` by default. |
|
|
| ## Checkpoints |
|
|
| Pretrained checkpoints are hosted on Hugging Face: `zeqixiao/worldmem_checkpoints`. |
|
|
| Example download to `checkpoints/`: |
|
|
| ```bash |
| huggingface-cli download zeqixiao/worldmem_checkpoints diffusion_only.ckpt --local-dir checkpoints |
| huggingface-cli download zeqixiao/worldmem_checkpoints vae_only.ckpt --local-dir checkpoints |
| huggingface-cli download zeqixiao/worldmem_checkpoints pose_prediction_model_only.ckpt --local-dir checkpoints |
| ``` |
|
|
| Then point your scripts or configs to these files, for example: |
|
|
| ```bash |
| python -m main +name=train +diffusion_model_path=checkpoints/diffusion_only.ckpt +vae_path=checkpoints/vae_only.ckpt |
| ``` |
|
|
| ## Training |
|
|
| Run a single stage: |
|
|
| ```bash |
| sh train_stage_1.sh |
| sh train_stage_2.sh |
| sh train_stage_3.sh |
| ``` |
|
|
| Run all stages: |
|
|
| ```bash |
| sh train_3stages.sh |
| ``` |
|
|
| The stage scripts include dataset and checkpoint paths. Update those paths or override them on the CLI to match your local setup. |
|
|
| ## Training config (exp_video.yaml) |
| |
| Defaults live in `configurations/experiment/exp_video.yaml`. |
|
|
| Common fields to edit: |
| - `training.lr` |
| - `training.precision` |
| - `training.batch_size` |
| - `training.max_steps` |
| - `training.checkpointing.every_n_train_steps` |
| - `validation.val_every_n_step` |
| - `validation.batch_size` |
| - `test.batch_size` |
|
|
| You can also override values from the CLI used in the scripts: |
|
|
| ```bash |
| python -m main +name=train experiment.training.batch_size=8 experiment.training.max_steps=100000 |
| ``` |
|
|
| W&B run IDs: `configurations/training.yaml` has `resume` and `load` fields. The run ID is the short token in the run URL (for example, `ot7jqmgn`). |
|
|