vpp2 plugin runs VPP2
RoboDojo and LIBERO action policies, plus standalone video prediction.
Use the PhyAI CUDA environment and the complete VPP2 release
directory, including config.json, Wan assets, tokenizer, weights, and
dataset_stats.json. Run the commands below from the PhyAI repository root.
Action inference
--image in the order below:
The
.pt file contains CPU tensors: action in the checkpoint’s action units
and normalized_action. Add --return-video for a full decoded video in
video_full.
Action inference supports guidance scale 1 only.
For history conditioning, use --condition-history and
--condition-observation; --help lists their tensor formats. Your application
manages observation history and action execution.
Video prediction
video_stage1_49f for 49 frames instead of 17. Both variants default to
30 steps and CFG scale 4. The saved output includes video_latents and decoded
video, shaped [1, 3, T, H, W] with values in [-1, 1].
Multiple GPUs
Replaceuv run python with
uv run torchrun --standalone --nproc_per_node=N, then append:
The process count must equal
tp × cfg-parallel. DP, CP, and sequence
parallelism are not supported.
Configuration
The example automatically selects a kernel policy. Override it with--kernel-config /path/to/policy.yaml.
Both YAML files also select the fused normalization, modulation, and RoPE
kernels. Keep the policy matched to the inference mode.
CUDA graphs are enabled by default;
--no-cuda-graph disables them. First
requests include graph capture and compilation costs. For repeated inference,
reuse one Engine; see examples/vpp2/run_vpp2.py for the Python API and cleanup.
When constructing the engine yourself, pass the matching YAML through
KernelConfig(config_path=...) in EngineConfig.kernel.
Performance
RoboDojo measurements use one NVIDIA H200 GPU,240 × 416 resolution,
17 video frames, 32 actions, and 10 Euler steps. With FlashInfer 0.7.4 and
Humming 0.1.19:
Ranges cover run medians, each from ten requests after three warmups. Timing
excludes image preprocessing, tokenization, checkpoint I/O, video decoding, and
first-request capture.
The line chart shows the optimization stages measured with FlashInfer 0.6.17
and Humming 0.1.16, before the dependency upgrade:


