Repository navigation
[diffusion] model: support Pi0.5 - #30633
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces native support for Vision-Language-Action (VLA) policies, specifically deploying the OpenPI / LeRobot Pi0.5 model with the multimodal_gen runtime. It adds dedicated configurations, sampling parameters, preprocessors, prefix caching, distributed split execution, and HTTP/WebSocket endpoints, alongside benchmarking and E2E testing utilities. The review feedback highlights several critical and medium-severity issues: a safety concern where missing weights should halt the server with a RuntimeError rather than logging a warning; a potential AttributeError in PiGemmaRMSNorm when cond is None but cond_dim is active; a flaw in the image normalization heuristic for dark images; and recommendations to improve API error handling by returning 400 HTTP status codes and binary msgpack error frames over WebSockets.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
d9e0645 to
953b341
Compare
|
/tag-and-rerun-ci |
Summary
Adds a native Pi0.5 dVLA action inference path in
multimodal_gen./v1/actions/generations,/v1/actions/metadata, and/v1/actions/realtime; keeps OpenPI robot clients on/openpi/policy.Current Status
sgl-project/ci-datamain at9982762a42bf2d39ae3a9a78d82b4f04863d35ed.SGL_TEST_FILES_CI_DATA_REVISIONto that ci-data commit and the server consistency test can load the remote GT withoutSGLANG_CONSISTENCY_GT_DIR.--tp-size 2 --sp-degree 1experiment reaches a scheduler/collective gap around prefix execution; do not treat prefix TP as validated in this PR yet. The validated multi-GPU path today is action-SP (--tp-size 1 --sp-degree 2).Latest Remote Validation
Run on
codex-lingbot-v2-gb300x4, PR headca66c99c29c2, NVIDIA GB300,lerobot/pi05_base/ ALOHA profile.python3 -m pytest -s python/sglang/multimodal_gen/test/server/test_server_1_gpu.py -k pi05_action_httppassed with remote pinned GT.0.27s.1.69sand1.34s.7.59 GiB.6.84 GiB; the action-only rank was resident around10 GiBbynvidia-smiduring the run.HTTP Msgpack Performance
Setup:
num_inference_steps=10, deterministic noise, global prefix cache disabled, 2 warmups, 6 measured repeats,/v1/actions/generationswith msgpack envelope, server--batching-max-size 4 --batching-delay-ms 3.81.46 ms82.62 ms11.30 ms34.17 ms25.92 ms86.11 ms105.32 ms120.58 ms60.29 ms11.92 ms40.54 ms23.17 ms79.19 ms81.22 ms130.18 ms32.55 ms11.60 ms34.50 ms23.09 ms300.70 ms306.03 ms11.23 ms36.10 ms243.03 ms291.33 ms296.04 ms325.41 ms162.70 ms11.37 ms34.76 ms235.05 ms294.54 ms299.56 ms434.60 ms108.65 ms12.04 ms34.65 ms236.98 ms115.70 ms128.76 ms16.02 ms37.89 ms42.22 ms133.28 ms135.58 ms248.47 ms124.23 ms16.24 ms54.12 ms42.33 ms128.63 ms136.28 ms488.70 ms122.18 ms17.41 ms48.24 ms42.36 ms609.92 ms644.64 ms16.33 ms45.04 ms527.35 ms611.54 ms653.89 ms1199.55 ms599.77 ms16.58 ms42.57 ms530.99 ms531.64 ms604.13 ms2333.31 ms583.33 ms16.25 ms36.56 ms458.41 msKey takeaways from this sweep:
300.70 msto81.46 ms; batch=4 per-request improves from108.65 msto32.55 ms.Precision / Correctness Checks
1.17e-6; final 10-step action max absolute difference1.17e-7.3,233,713,264bf16 parameters and119,720,608fp32 parameters after skipping unused LM heads; output actions are float32.203 ms; exact cache hit prefix stage about0.2 ms.[50, 32]; output matched single-GPU HTTP with max absolute difference0in the previous split validation.Screenshots
cookbook:

inference architecture:

CI States
Latest PR Test (Base): ❌ Run #29100589465
Latest PR Test (Extra): ❌ Run #29100588385