@@ -170,18 +170,12 @@ jobs:
170170 "
171171
172172 # ── ROBOTWIN 2.0 ──────────────────────────────────────────────────────────
173- # RoboTwin 2.0 is NOT pip-installable (SAPIEN / CuRobo / mplib require a
174- # 20-minute source installation with specific NVIDIA driver versions).
175- # The image therefore installs only the base lerobot package and runs the
176- # fully-mocked unit-test suite, which catches:
177- # - import-time regressions in lerobot.envs.robotwin
178- # - RoboTwinEnvConfig registration under --env.type=robotwin
179- # - Gymnasium wrapper, multi-task factory, and processor-step correctness
180- #
181- # For a full end-to-end eval on a NVIDIA GPU machine, follow the install guide
182- # at https://robotwin-platform.github.io/doc/usage/robotwin-install.html.
173+ # Isolated image: full RoboTwin 2.0 stack — SAPIEN, mplib, CuRobo,
174+ # pytorch3d, + simulation assets (~4 GB).
175+ # Build takes ~20 min on first run; subsequent runs hit the layer cache.
176+ # Requires an NVIDIA GPU runner with CUDA 12.1 drivers.
183177 robotwin-integration-test :
184- name : RoboTwin 2.0 — build image + mocked unit tests
178+ name : RoboTwin 2.0 — build image + 1-episode eval
185179 runs-on :
186180 group : aws-g6-4xlarge-plus
187181 env :
@@ -198,6 +192,9 @@ jobs:
198192 with :
199193 cache-binary : false
200194
195+ # Build the full-install image: SAPIEN, mplib, CuRobo, pytorch3d +
196+ # simulation assets (~4 GB). Layer cache lives in the runner's local
197+ # Docker daemon — reused across re-runs on the same machine.
201198 - name : Build RoboTwin 2.0 benchmark image
202199 uses : docker/build-push-action@v6 # zizmor: ignore[unpinned-uses]
203200 with :
@@ -209,22 +206,21 @@ jobs:
209206 cache-from : type=local,src=/tmp/.buildx-cache-robotwin
210207 cache-to : type=local,dest=/tmp/.buildx-cache-robotwin,mode=max
211208
212- # Run the fully-mocked test suite — no SAPIEN installation required.
213- # 19 tests verify the gymnasium wrapper, config registration, multi-task
214- # factory, error handling, and task list integrity.
215- - name : Run RoboTwin 2.0 unit tests (mocked, no SAPIEN)
209+ - name : Run RoboTwin 2.0 smoke eval (1 episode)
216210 run : |
217- docker run --rm \
218- --shm-size=2g \
211+ docker run --rm --gpus all \
212+ --shm-size=4g \
213+ -e HF_HOME=/tmp/hf \
214+ -e HF_USER_TOKEN="${HF_USER_TOKEN}" \
219215 lerobot-benchmark-robotwin:ci \
220216 bash -c "
221- pytest tests/envs/test_robotwin.py -k 'not ProcessorStep' \
222- --tb=short -q
217+ hf auth login --token \"\$HF_USER_TOKEN\" --add-to-git-credential 2>/dev/null || true
218+ lerobot-eval \
219+ --policy.path=pepijn223/smolvla_robotwin \
220+ --env.type=robotwin \
221+ --env.task=beat_block_hammer \
222+ --eval.batch_size=1 \
223+ --eval.n_episodes=1 \
224+ --eval.use_async_envs=false \
225+ --policy.device=cuda
223226 "
224-
225- # Verify that RoboTwinEnvConfig is correctly registered and importable
226- # as --env.type=robotwin, independent of the SAPIEN installation.
227- - name : Verify RoboTwin config registration
228- run : |
229- docker run --rm lerobot-benchmark-robotwin:ci \
230- python -c "from lerobot.envs.configs import EnvConfig; choices = EnvConfig.get_known_choices(); assert 'robotwin' in choices, f'robotwin not in registered envs: {list(choices)}'; cfg = choices['robotwin'](); assert cfg.task == 'beat_block_hammer'; assert len(cfg.features) >= 5; print('RoboTwinEnvConfig registered OK:', cfg.task, '| features:', sorted(cfg.features))"
0 commit comments