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
This commit is contained in:
Pepijn
2026-04-17 09:36:49 +01:00
parent ece993353f
commit 9712c49b72
+24 -5
View File
@@ -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 . .