Skip to content

Load the pi0.5 policy at the size it runs at - #871

Draft
danwahl wants to merge 1 commit into
mainfrom
vla-quantize
Draft

Load the pi0.5 policy at the size it runs at#871
danwahl wants to merge 1 commit into
mainfrom
vla-quantize

Conversation

@danwahl

@danwahl danwahl commented Aug 21, 2026

Copy link
Copy Markdown

The two vocabulary heads no action chunk reads are dropped, and a checkpoint is built in host memory so what reaches the GPU is what runs there. On the shipped Kinova checkpoint the server holds 8593 MiB where it held 10103.

An int8 knob in vla_serving.yaml holds the language backbone and the vision tower at eight bits, taking that to 5375 MiB for 0.14s per 50-step chunk against 0.13s, both inside the real-time budget at 10 fps. /health reports which of the two is running. What eight bits costs in success rate is unmeasured on this checkpoint.

The two vocabulary heads no action chunk reads are dropped, and a checkpoint is
built in host memory so what reaches the GPU is what runs there. On the shipped
Kinova checkpoint the server holds 8593 MiB where it held 10103.

An int8 knob in vla_serving.yaml holds the language backbone and the vision
tower at eight bits, taking that to 5375 MiB for 0.14s per 50-step chunk against
0.13s, both inside the real-time budget at 10 fps. /health reports which of the
two is running. What eight bits costs in success rate is unmeasured on this
checkpoint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JFNEZkKa2NN7LMWbzM37Nq
@danwahl danwahl self-assigned this Aug 21, 2026
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7a9f8340-7c92-4059-a051-63d133a016f1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@danwahl
danwahl requested a review from griswaldbrooks August 21, 2026 04:44
@github-actions

Copy link
Copy Markdown

MoveIt Pro Example WS - Objectives Integration Test Report

@rlpratt12 rlpratt12 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tried this on an RTX 4060 Laptop (8 GB) today, since it's exactly the case the PR unlocks. It works — but adding a dependency to this layer surfaced how expensive a rebuild is, and I think that's worth addressing while this file is already open.

--no-cache-dir makes every rebuild re-download the whole CUDA wheel set. Adding torchao invalidates the pip layer, so the rebuild pulled ~3.5 GB across 154 wheelstorch 530 MB, cublas 423 MB, cufft 214 MB, cusolver 201 MB, cusparse 146 MB, and the rest of nvidia-cu*. On wifi at ~8 MB/s that's ~7 minutes of pure download, and it saturated the link while it ran.

Two things came out of that:

  1. pip's 15s default read timeout is too tight for this layer. My first attempt died at 565s with ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443) — ten minutes of downloading thrown away, since the failed layer restarts from zero. ENV PIP_DEFAULT_TIMEOUT=120 and PIP_RETRIES=10 fixed it for me. Cheap insurance on a layer this large.

  2. A BuildKit cache mount would make rebuilds nearly free, and is the more interesting fix:

    RUN --mount=type=cache,target=/root/.cache/pip \
        pip install "lerobot[pi,smolvla]==0.6.0" ...

    The cache lives outside the image, so image size is unchanged — which I assume is what --no-cache-dir was protecting. The difference is that the next version bump costs a few hundred KB instead of 3.5 GB.

Neither blocks the PR, and if you'd rather keep the diff tight I'd understand — but (1) in particular bit me on the first try and cost more time than the change would.


Separately, two notes from running it, not review comments:

  • The /app bind mount is a trap for this change specifically. docker-compose.yaml mounts src/vla_sim/docker:/app:ro, so the new vla_inference_server.py runs against whatever image already exists. Anyone who pulls this branch and starts the server without forcing a rebuild gets ModuleNotFoundError: No module named 'torchao' at line 85, which reads like a broken PR rather than a stale image. The launcher only builds that profile-gated image when it's missing, so moveit_pro run --only-inference-server alone isn't enough — I had to docker rmi the old image first. Might be worth a line in the PR description.

  • On the accuracy question you flagged in vla_serving.yaml ("What it costs in success rate is unmeasured on this checkpoint") — I'll be running the cube-stacking objective against int8: true on the 4060 and can report back what I see. Happy to have that data point live somewhere more durable than a PR thread if useful.

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