|
Download augment/vace/SETUP.md from mlnha/pose6daug-scripts: direct link, hf CLI and curl.
- Browser
- Download file 4.92 kB
-
https://huggingface.co/mlnha/pose6daug-scripts/resolve/main/augment/vace/SETUP.md
- Command line
-
hf download hf://mlnha/pose6daug-scripts/augment/vace/SETUP.md
-
curl -L -o SETUP.md https://huggingface.co/mlnha/pose6daug-scripts/resolve/main/augment/vace/SETUP.md
4.92 kB
| # First hour on a new machine | |
| Do these in order. Everything else β how the pipeline works, why the sources are picked the | |
| way they are, runtime numbers β is in `README.md`; this file is only the setup path. | |
| Assumes you have this repo and nothing else. | |
| --- | |
| ## 0. What you must bring yourself | |
| | | size | why it is not here | | |
| |---|---|---| | |
| | **WAN weights** β `Wan2.1-VACE-1.3B`, `VACE-Annotators` | 31 GB | too large to ship; get them from the VACE release or copy from the original machine | | |
| | **GPU** with β₯ 27 GB free | | `--offload_model False` keeps the DiT resident | | |
| Everything else is in this repo. | |
| --- | |
| ## 1. Unpack the data (~3 GB, 2 min) | |
| ```bash | |
| cd <repo>/ # the directory holding aug32/, VACE/, datasets_pack/ | |
| mkdir -p data && cd data | |
| tar -xf ../datasets_pack/source_episodes.tar # 2.7 GB -> pickplace_target_human/ | |
| tar -xzf ../datasets_pack/aug_materials_ext.tar.gz # 121 MB -> aug_materials_ext/ | |
| tar -xzf ../datasets_pack/target_meshes.tar.gz # 14 MB -> objaverse/ lightwheel/ | |
| cd .. | |
| ``` | |
| Check: | |
| ``` | |
| data/pickplace_target_human/<5 tasks>/{videos,extras} | |
| data/aug_materials_ext/<4 tasks>/ep<N>/mask_gt_target_object_<camera>.mp4 | |
| data/{objaverse,lightwheel}/<category>/<model>/model.xml | |
| ``` | |
| --- | |
| ## 2. Link the WAN weights | |
| ```bash | |
| ln -s /path/to/VACE-home-models VACE/models | |
| ls VACE/models # must show Wan2.1-VACE-1.3B and VACE-Annotators | |
| ``` | |
| --- | |
| ## 3. Build two Python environments | |
| **A β batch driver.** Needs `robocasa`, `robosuite`, `mujoco`, `trimesh`, `pyrender`, | |
| `opencv-python`, `numpy`. This one also renders the target meshes' reference views, so | |
| `trimesh` + `pyrender` are not optional. Versions that work: mujoco 3.3.1, robosuite 1.5.2, | |
| robocasa 1.0.0, trimesh 4.12.1, pyrender 0.1.45, numpy 1.26.4, Python 3.10. | |
| **B β WAN inference.** Python 3.12, `torch 2.5.1+cu124`, `flash_attn 2.8.3`, plus | |
| `VACE/requirements.txt`. `wan` must be importable (it is a site-package in the original | |
| environment, installed from the VACE repo). | |
| ```bash | |
| export VACE_PY_ROBOCASA=/path/to/env-A/bin/python | |
| export VACE_PY_WAN=/path/to/env-B/bin/python | |
| ``` | |
| --- | |
| ## 4. Export the data paths | |
| ```bash | |
| cd <repo> | |
| export VACE_ROBOCASA_ROOT=$PWD/data/pickplace_target_human | |
| export VACE_AUG_MATERIALS=$PWD/data/aug_materials_ext | |
| export VACE_ASSET_ROOTS=$PWD/data/lightwheel:$PWD/data/objaverse | |
| ``` | |
| Leave `VACE_RENDER_SCRIPT_DIR` and `VACE_RENDER_PYTHON` alone β they default to | |
| `aug32/vendor/` and to `VACE_PY_ROBOCASA`, both already correct. | |
| Put all five exports in a file you can `source`; every later step needs them. | |
| --- | |
| ## 5. Preflight | |
| ```bash | |
| ./aug32/preflight.sh | |
| ``` | |
| Every line must read `OK`. It checks both interpreters, the vendored renderer and its | |
| imports, the VACE fork and weights, the three data roots, per-task GT-mask coverage, and | |
| free GPU memory. A `MISS` names the exact path that is wrong. | |
| --- | |
| ## 6. Smoke test before the real batch | |
| One assignment end to end, ~10 min on one GPU, to catch a broken path before a multi-hour | |
| run: | |
| ```bash | |
| mkdir -p /tmp/vace_smoke | |
| $VACE_PY_ROBOCASA aug32/build_aug32_assignments.py \ | |
| --out-root /tmp/vace_smoke --per-mesh 1 --targets teapot/teapot_6 | |
| head -1 /tmp/vace_smoke/assignments.jsonl > /tmp/vace_smoke/one.jsonl | |
| mv /tmp/vace_smoke/one.jsonl /tmp/vace_smoke/assignments.jsonl | |
| ./aug32/run_aug32.sh /tmp/vace_smoke /tmp/vace_smoke_out 0 | |
| ``` | |
| Expect `/tmp/vace_smoke_out/<task>-ep<N>_<src>_teapot_6/` with three camera folders, each | |
| holding one mp4. | |
| --- | |
| ## 7. The real run | |
| ```bash | |
| ./aug32/run_aug32.sh /scratch/vace_aug32 /scratch/output_aug_256 0 | |
| ``` | |
| 8 targets Γ 32 episodes Γ 3 cameras β 3,084 WAN jobs, **~44 h on one GPU** at the measured | |
| 51.4 s/job. Split it: `run_aug32.sh ... <gpu> 4` writes four worker manifests, and the four | |
| WAN processes can be moved onto four GPUs (~11 h). Every stage is idempotent, so an | |
| interrupted run resumes where it stopped. | |
| --- | |
| ## Common failures | |
| | symptom | cause | | |
| |---|---| | |
| | `FileNotFoundError: Missing GT target-object mask video` | `VACE_AUG_MATERIALS` not exported, or pointing above `aug_materials_ext/` | | |
| | `ModuleNotFoundError: No module named 'trimesh'` during `prep-worker` | env A lacks trimesh/pyrender β install them, or point `VACE_RENDER_PYTHON` at an env that has them | | |
| | `unrecognized arguments: --batch_manifest` | `VACE/` was replaced with a fresh upstream clone; apply `aug32/vace_wan_inference_batch.patch` | | |
| | WAN job ~82 s instead of ~51 s | `--offload_model False` got dropped; it is in `run_aug32.sh`, do not remove it | | |
| | exo cameras come out with the object *erased* rather than swapped | expected at 256Γ256 β the target mask is ~0.2 % of an exo frame. Only `robot0_eye_in_hand` (~9 %) reliably swaps | | |
| | assignments have fewer same-category sources than expected | the dataset only holds 5 teapot / 3 donut / 2 jar / 2 syrup_bottle episodes. Only MeasuringCup009 can fill 32 from its own category | | |