You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Private real-robot deployment bundle (Long-WAM on the YAM arms). Access is granted manually by the owner.

Log in or Sign Up to review the conditions and access this model content.

Long-WAM on the YAM arms (gr00t YAM environment)

Files in this folder: serve_longwam_yam.py (workstation), longwam_http_policy.py (robot PC), this README. The two molmoact2_* / serve_policy.py files are the MolmoAct2 reference this mirrors.

Same shape as the MolmoAct2 deployment: an HTTP policy server on the RTX 5090 workstation and a gr00t Policy on the robot PC.

file runs on role
serve_longwam_yam.py workstation loads the fine-tuned checkpoint, keeps the 30 Hz observation history, serves /act /reset /health (MolmoAct2 json_numpy wire format)
longwam_http_policy.py robot PC gr00t Policy that posts every control step and executes 32-step chunks

Contract: state and actions are 14-D [left j0..j5, left gripper, right j0..j5, right gripper], absolute joint targets, 32 steps per chunk at 30 Hz; cameras top_cam, left_cam, right_cam (the bottom camera is not used). The prompt must be the training prompt, e.g. Stack all bowls.

Workstation (RTX 5090)

  1. Get the bundle from https://huggingface.co/AaronHuangWei/Long-WAM-YAM-Stack-Bowls-Deploy (gated, request access). It contains these two scripts, the model code (code/FastWAM), the Wan2.2 VAE (models/Wan-AI/...), the text cache, and models/YAM_05_stack_bowls/ with config.yaml, the step_XXXXXX.pt checkpoints and dataset_stats.json.
  2. Python 3.10/3.11 with PyTorch 2.7.1+cu128, then:
pip install -e bundle/code/FastWAM fastapi uvicorn
  1. Start the server (this file lives next to this README; copy it anywhere):
export DIFFSYNTH_MODEL_BASE_PATH=/path/to/bundle/models            # has Wan-AI/Wan2.2-TI2V-5B/Wan2.2_VAE.pth
export PYTHONPATH=/path/to/bundle/code/FastWAM/src
export TORCHINDUCTOR_CACHE_DIR=$HOME/.cache/longwam_inductor       # compiled kernels survive restarts
python serve_longwam_yam.py \
  --run-dir /path/to/bundle/models/YAM_05_stack_bowls \
  --checkpoint /path/to/bundle/models/YAM_05_stack_bowls/step_020000.pt \
  --stats /path/to/bundle/models/YAM_05_stack_bowls/dataset_stats.json \
  --text-cache-dir /path/to/bundle/text_embeds_cache --prompt "Stack all bowls." \
  --accel lossless --port 8000

curl http://localhost:8000/health answers once warm-up is done.

--accel lossless (default) = resident RoPE + torch.compile of the four hot paths with CUDA Graphs (--compile-mode max-autotune); measured on an H100 with the same model: 478 ms eager -> 173 ms, max action difference 0.024. Use --compile-mode max-autotune-no-cudagraphs if CUDA Graphs misbehave, --accel eager for the plain BF16 reference, --no-gpu-check on GPUs other than the 5090. No quantization is used. First start compiles for a few minutes and warms up before serving.

Robot PC (gr00t)

longwam_http_policy.py needs numpy requests and the gr00t Policy base class. Because the model conditions on a 1.6 s observation history, the policy must receive every 30 Hz step: use it directly in the control loop instead of wrapping it in SyncChunkingPolicy / AsyncChunkingPolicy (it manages the chunk itself; replan_steps=8 executes 8 of the 32 predicted steps, then asks for a new chunk). LowPassFilterPolicyWrapper can still be applied on top.

from longwam_http_policy import LongWAMHttpPolicy
policy = LongWAMHttpPolicy("http://WORKSTATION_IP:8000", "Stack all bowls.",
                           action_space=env.action_space, replan_steps=8)
policy.reset()
action, info = policy.get_action(observation)     # every control step

get_action returns the same (first_action, info) structure as the MolmoAct2 policy (info["action_chunk"] holds the full 32-step chunk).

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading