FastWAM LIBERO ROBOTWIN sim packages - #96
Conversation
…lator bases Adds three packages on top of main (ROCm 7.14, Strix Halo / gfx1151): - simulation/libero: model-agnostic LIBERO (MuJoCo/EGL) base exposing a Policy seam - simulation/robotwin: model-agnostic RoboTwin 2.0 (SAPIEN/Vulkan) base exposing a Policy seam (curobo replaced by mplib for ROCm) - wam/fastwam: Wan2.2-TI2V-5B world-action model; chains onto both sim bases for closed-loop and interactive rollouts, plus standalone open-loop replay and video imagination Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…README refs; swap RoboTwin example to FastWAM Removes the per-package docs/UPSTREAM_PIN provenance files and fastwam RUNTIME_OPTIMIZATION.md; repoints README references to FASTWAM_COMMIT/RT_COMMIT in the Dockerfiles. Drops the libero vjepa example (belongs with the vjepa package) and swaps the RoboTwin AHA-WAM example for a FastWAM closed-loop example. Co-authored-by: Cursor <cursoragent@cursor.com>
Regenerate all demo gifs at native source resolution via ffmpeg palettegen (LIBERO 512x256, RoboTwin 640x480, imagination 896x224/640x384, slow 448x448), replacing the downscaled ~240px versions. Adds robotwin_fastwam.gif for the RoboTwin package example. Co-authored-by: Cursor <cursoragent@cursor.com>
…ge roots Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…-top slow caption, RoboTwin-only imagination Co-authored-by: Cursor <cursoragent@cursor.com>
Swap the fixed-frame click_bell/lift_pot demos (black top-right panel) for continuous closed-loop rollouts from the ported harness's 4-view compositor: head | third-person observer / left | right wrist. Co-authored-by: Cursor <cursoragent@cursor.com>
Regenerate the simulation/robotwin example (beat_block_hammer) as a continuous 4-view rollout with the third-person observer panel populated, matching the refreshed fastwam closed-loop gifs. Remove the now-unreferenced beat_block_hammer and handover_block gifs from the fastwam package. Co-authored-by: Cursor <cursoragent@cursor.com>
- robotwin: pin scipy<1.15 so mplib/toppra import under numpy 1.26.4 - fastwam/libero/robotwin READMEs + sim config: use resolved package names (libero, robotwin) for ryzers build; add --name to chained example builds Co-authored-by: Cursor <cursoragent@cursor.com>
skalade
left a comment
There was a problem hiding this comment.
Looking good. Some additional comments:
Remove unused assets:
- closedloop_libero_bbq_sauce.gif
- closedloop_libero_butter.gif
- imagination_libero.gif
- openloop_libero_ep00.png
- openloop_libero_per_dim_mae.png
- openloop_robotwin_ep00.png
- openloop_robotwin_per_dim_mae.png
There's also a duplicate gif:
- closedloop_libero_alphabet_soup.gif (duplicates LIBERO’s package GIF)
if possible I'd keep config.yaml's minimal where possible, unless there's a good re-use reason throughout the scripts/demos
| # SPDX-License-Identifier: MIT | ||
|
|
||
| # ROCm 7.14 base (rocm/pytorch torch 2.10.0). | ||
| init_image: rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.10.0 |
There was a problem hiding this comment.
why overriding default 7.14 torch 2.12 image?
| @@ -0,0 +1,91 @@ | |||
| ### FastWAM | |||
|
|
|||
| This package runs [FastWAM](https://github.com/yuantianyuan01/FastWAM) on AMD Ryzen AI Max+ 395 (Strix Halo, gfx1151) under ROCm 7.14. FastWAM is a Wan2.2-TI2V-5B world-action model (T5 text encoder, Wan VAE, and a joint video/action DiT) that can plan actions with the video head skipped for speed, or imagine future frames alongside the action plan. It chains on top of a simulator base for closed-loop and interactive runs, or runs standalone on the plain base for the non-sim demos. | |||
There was a problem hiding this comment.
Remove "This package runs FastWAM on AMD Ryzen AI Max+ 395 (Strix Halo, gfx1151) under ROCm 7.14." I'd rather ROCm version not be hardcoded in readmes of individual packages and technically this should work on strix points as well
| right). | ||
|
|
||
| ```sh | ||
| DATASET=libero ryzers run --name fastwam /ryzers/demos/demo_videogen.sh |
There was a problem hiding this comment.
Video imagination gif shows robotwin, but instruction says DATASET=libero
| x11_display: false | ||
|
|
||
| environment_variables: | ||
| - "HSA_OVERRIDE_GFX_VERSION=11.5.1" |
There was a problem hiding this comment.
HSA_OVERRIDE no longer necessary with latest ROCm
| gpu_support: true | ||
| x11_display: false |
There was a problem hiding this comment.
I think these are default runtime params in ryzers and are unnecessary to set separately per package
| # SPDX-License-Identifier: MIT | ||
|
|
||
| # ROCm 7.14 base (rocm/pytorch torch 2.10.0). | ||
| init_image: rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.10.0 |
There was a problem hiding this comment.
why overriding default rocm7.14 image?
| for TASK in $TASKS; do | ||
| echo "########## RoboTwin $TASK ($NUM_EPISODES episodes) ##########" | ||
| python -u experiments/robotwin/eval_robotwin_single.py \ | ||
| ckpt=$CKPT gpu_id=0 mixed_precision=bf16 \ | ||
| EVALUATION.robotwin_root=/opt/RoboTwin \ | ||
| EVALUATION.task_name=$TASK EVALUATION.task_config=$TASK_CONFIG \ | ||
| EVALUATION.eval_num_episodes=$NUM_EPISODES \ | ||
| EVALUATION.dataset_stats_path=$REL/robotwin_uncond_3cam_384_dataset_stats.json \ | ||
| 2>&1 | grep -viE 'svulkan2|Failed to initialize denoiser|cudaErrorInsufficientDriver' \ | ||
| || echo "TASK $TASK returned nonzero" | ||
| done | ||
| echo "PASS: RoboTwin closed-loop suite complete" |
There was a problem hiding this comment.
it looks like regardless of python exit condition the script will always print a PASS
RoboTwin explicitly converts pipeline failures into successful echo commands, then always prints PASS
| x11_display: false | ||
|
|
||
| environment_variables: | ||
| - "HSA_OVERRIDE_GFX_VERSION=11.5.1" |
| # SPDX-License-Identifier: MIT | ||
|
|
||
| # ROCm 7.14 base (rocm/pytorch torch 2.10.0). | ||
| init_image: rocm/pytorch:rocm7.14_ubuntu24.04_py3.12_pytorch_release_2.10.0 |
There was a problem hiding this comment.
shouldn't override default ryzer unless there's good reason
| --- a/envs/robot/planner.py | ||
| +++ b/envs/robot/planner.py | ||
| @@ -274,6 +274,7 @@ except Exception as e: | ||
| print('[planner.py]: Something wrong happened when importing CuroboPlanner! Please check if Curobo is installed correctly. If the problem still exists, you can install Curobo from https://github.com/NVlabs/curobo manually.') |
There was a problem hiding this comment.
The patch enables the mplib fallback but leaves RoboTwin’s original error reporting intact. Since Curobo is intentionally absent on ROCm, this is an expected condition
Change the patch so the resulting planner.py does this:
except ModuleNotFoundError as exc:
if (exc.name or "").split(".", 1)[0] != "curobo":
raise
CuroboPlanner = None
Added the following new packages: