humanwam_goal plugin and the examples/HumanWAM-Goal/run_humanwam_goal.py entry point.
Python imports use phyai.models.humanwam_goal and phyai_utils_tools.models.humanwam_goal.
Prepare the environment
Use Linux with GLIBC 2.34 or newer, Python 3.12 or 3.13, and a Hopper GPU (SM90). This inference path is tested with Torch 2.11 and CUDA 12.8. TP=2/4 requires NVLink-connected GPUs and the CUDA toolkit (nvcc).
Follow installation to prepare a PhyAI checkout. From its root,
activate the environment and install the CUDA 12.8 builds and attention dependency:
Prepare the checkpoint
Model weights: HumanWAM-Goal on Hugging Face. Set the path to an inference checkpoint with these assets:sampling.json must include corrector_weights for the ten-step sampling schedule.
Prepare an observation
Save your observation in JSON. Image paths are relative to that JSON file; the example script loads them as RGB images. Replace the image paths, instruction, state values, and domain ID below with values for your checkpoint and robot. The zero state shows the input shape only.normalized_state uses the checkpoint’s normalization and model coordinates.
The example does not convert physical robot coordinates. You can also supply
state_valid_mask and action_valid_mask to specify valid state and action
channels; padded channels must remain disabled.
For visual history, add captures to history in timestamp order, oldest first:
{"timestamp": ..., "images": {...}}. Their timestamps must precede
observation_timestamp and use the same time base in seconds. The processor
selects frames using the history settings in processor.json.
For real-time chunking (RTC), add normalized_prefix as a matrix of previous
actions in the same normalized model coordinates. Its row count must fit the
checkpoint’s prefix-length limit. Omit it when you have no prefix to condition on.
Run inference
Select an available GPU. This command uses one GPU:--tp 2:
CUDA_VISIBLE_DEVICES=0,1,2,3 and --tp 4. The Engine starts
the workers; run the command once. Add --no-cuda-graph for eager execution.
The first request includes model warmup and graph capture.
Read the output
The script saves a NumPy.npy array of normalized actions:
(1, 48, 49) float32 True:
one action chunk, 48 steps, and 49 values per step. RTC prefix rows remain in the
chunk. Convert the normalized output to your robot’s coordinates and skip the
already committed prefix before executing new actions.
