Skip to content

docs(wsl): add end-to-end LIBERO eval on WSL2#17

Open
VatsalyaBhadaurya wants to merge 2 commits into
VinRobotics:mainfrom
VatsalyaBhadaurya:docs/wsl-libero-eval
Open

docs(wsl): add end-to-end LIBERO eval on WSL2#17
VatsalyaBhadaurya wants to merge 2 commits into
VinRobotics:mainfrom
VatsalyaBhadaurya:docs/wsl-libero-eval

Conversation

@VatsalyaBhadaurya

@VatsalyaBhadaurya VatsalyaBhadaurya commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

What this adds

Follow-up to #12. Documents running the full serving stack (vla-server + LIBERO client) inside a single WSL2 distro, so the complete loop — sim reset/render → client preprocess → vla-server inference → action → sim step → video — runs on one Windows machine with no separate Linux host.

  • New "End-to-end evaluation (LIBERO client on WSL)" section in docs/backend/wsl.md, plus a SmolVLA / RTX 4050 result table.
  • New eval/run_libero_wsl.sh — a one-command runner that starts vla-server, waits for ready, drives one client run, and stops the server on exit. Takes task-id and episode count as args, or prompts for them; model/suite/output overridable via env.
  • Drops the stale patches/patch.sh reference (CMake fetches llama.cpp automatically now).

Key WSL-specific findings

  • Work from the Linux filesystem, not /mntuv/venv installs are unreliable on drvfs; clone into ~ and run there.
  • Add the user to the render group so MuJoCo EGL can open /dev/dri/renderD128 instead of falling back to software rendering (Permission denied -> kms_swrast).
  • Set UV_LINK_MODE=copy + a home-dir cache so uv does not hardlink across filesystems.

Usage

bash eval/run_libero_wsl.sh          # prompts for task-id + episodes
bash eval/run_libero_wsl.sh 3 5      # task-id 3, 5 episodes, no prompt

Verification

Ubuntu 24.04 (WSL2) + CUDA 12.6 + RTX 4050, server + cl

- vla: backend = CUDA (device 0), ~1.07 GB VRAM
- libero_object task 0 succeeded end-to-end: is_success
- ~131 ms/req server-side (vision ~84 / inference ~46), ~155 ms/step client-side incl. software EGL rendering
- Rendered episode_000000.mp4 + summary.txt produced
- eval/run_libero_wsl.sh 0 1 reproduces the run: CUDA server up → episode succeeds → server cleaned up

Smoke episode

wsl_smoke_episode.mp4

Document running the full serving stack (vla-server + LIBERO client) inside a single WSL2 distro, so the sim reset/render -> preprocess -> inference -> action -> video loop runs on one Windows machine with no separate Linux host.

Key WSL-specific findings: work from the Linux filesystem (not /mnt) for uv/venv reliability; add the user to the 'render' group so MuJoCo EGL can open /dev/dri/renderD128 instead of falling back to software rendering; set UV_LINK_MODE=copy + a home cache. Verified on Ubuntu 24.04 + RTX 4050: libero_object task 0 succeeds end-to-end (is_success: True) with a rendered MP4. Also drops the stale patches/patch.sh reference (CMake now fetches llama.cpp automatically).
Wraps vla-server startup + one client run + cleanup for the WSL2 serving stack. Takes task-id and episode count as args, or prompts for them interactively; model/suite/output overridable via env. Repo-relative paths and preflight checks for the server binary, LIBERO venv, and GGUF. Referenced from docs/backend/wsl.md. Verified on Ubuntu 24.04 + RTX 4050: libero_object task 0 succeeds end-to-end.
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.

1 participant