From 9712c49b72d477d8b5759a837619de5c60d1ccaa Mon Sep 17 00:00:00 2001 From: Pepijn Date: Fri, 17 Apr 2026 09:36:49 +0100 Subject: [PATCH] fix(docker): make VLABench asset download tolerant + HF mirror option Google Drive returns HTTP 429 ("too many users") on VLABench's shared academic asset file, blocking CI builds unpredictably. - Add VLABENCH_ASSETS_REPO build arg: when set, snapshot_download the given HF Hub dataset repo straight into VLABench/assets/. This is the reliable path for CI once a mirror is uploaded. - Keep the gdown script as fallback but make it best-effort (|| echo WARN) so quota errors don't block the image build. If neither source succeeds, the constant.py patch (empty-dir guard) keeps module import working; only task-build at runtime will surface missing-mesh errors. Made-with: Cursor --- docker/Dockerfile.benchmark.vlabench | 29 +++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile.benchmark.vlabench b/docker/Dockerfile.benchmark.vlabench index 0a5dbd6c7..ac5843afe 100644 --- a/docker/Dockerfile.benchmark.vlabench +++ b/docker/Dockerfile.benchmark.vlabench @@ -41,11 +41,30 @@ p.write_text(t.replace( \ mujoco==3.2.2 dm-control==1.0.22 \ open3d colorlog scikit-learn openai gdown -# Download VLABench mesh assets from Google Drive. Task configs reference -# object meshes (obj/meshes/fruit/, containers/basket/, etc.); without them -# the task builder crashes with IndexError on random.choice([]). -# gdown handles Google Drive's confirmation tokens for large files. -RUN python ~/VLABench/scripts/download_assets.py --choice all +# Download VLABench mesh assets. Task configs reference object meshes +# (obj/meshes/fruit/, containers/basket/, etc.); without them the task builder +# picks from an empty mesh list and crashes at task-build time. +# +# Preferred source: an HF Hub mirror. Set VLABENCH_ASSETS_REPO at build time +# (e.g. --build-arg VLABENCH_ASSETS_REPO=lerobot/vlabench-assets) and we'll +# snapshot_download the repo into VLABench's assets dir. This is the reliable +# path for CI — Google Drive frequently returns HTTP 429 ("Too many users have +# viewed or downloaded this file recently") on shared academic files. +# +# Fallback: VLABench's own gdown-based script. Best-effort only; the build +# will NOT fail if gdown hits a Drive quota, letting us ship an image where +# task-build may still IndexError but the rest of the pipeline is exercised. +ARG VLABENCH_ASSETS_REPO="" +RUN ASSETS_DIR="$HOME/VLABench/VLABench/assets" && \ + if [ -n "${VLABENCH_ASSETS_REPO}" ]; then \ + echo "Downloading VLABench assets from HF Hub: ${VLABENCH_ASSETS_REPO}" && \ + python -c "from huggingface_hub import snapshot_download; \ +snapshot_download(repo_id='${VLABENCH_ASSETS_REPO}', repo_type='dataset', local_dir='${ASSETS_DIR}')"; \ + else \ + echo "No VLABENCH_ASSETS_REPO set — falling back to gdown (best-effort)" && \ + python ~/VLABench/scripts/download_assets.py --choice all || \ + echo "WARN: VLABench asset download failed (likely Google Drive quota). Env task-build may crash."; \ + fi # Overlay the PR's source code on top of the nightly image. COPY --chown=user_lerobot:user_lerobot . .