Skip to content

FastWAM LIBERO ROBOTWIN sim packages - #96

Open
ClockWorkKid wants to merge 12 commits into
AMDResearch:mainfrom
ClockWorkKid:WAM-FastWAM
Open

FastWAM LIBERO ROBOTWIN sim packages#96
ClockWorkKid wants to merge 12 commits into
AMDResearch:mainfrom
ClockWorkKid:WAM-FastWAM

Conversation

@ClockWorkKid

Copy link
Copy Markdown
Contributor

Added the following new packages:

  1. WAM - FastWAM
  2. Simulator - LIBERO, RoboTwin2.0

ClockWorkKid and others added 12 commits August 18, 2026 17:38
…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>
…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>
…-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 skalade left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Video imagination gif shows robotwin, but instruction says DATASET=libero

x11_display: false

environment_variables:
- "HSA_OVERRIDE_GFX_VERSION=11.5.1"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HSA_OVERRIDE no longer necessary with latest ROCm

Comment on lines +10 to +11
gpu_support: true
x11_display: false

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why overriding default rocm7.14 image?

Comment on lines +29 to +40
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"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not needed

# 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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.')

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants