From a493b63e09898860f6c7b6e8f8f2bf2e923ce350 Mon Sep 17 00:00:00 2001 From: Johan de Ruiter Date: Sat, 11 Jul 2026 01:01:12 +0000 Subject: [PATCH] cosmos3: drop gated Cosmos-Guardrail1 prefetch from worker image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Guardrails are disabled in worker.py (guardrails=False, #21), so the nvidia/Cosmos-Guardrail1 snapshot (the only gated repo, ~10.8GB) is never loaded at runtime. Remove its prefetch, plus the now-unneeded BuildKit hf_token secret mount / HF_TOKEN export — the remaining prefetched repos (Qwen3 tokenizers, Wan VAEs) are all public (verified gated=False), so the build needs NO HF token. Effect: no token/gate hassle at build time, ~11GB smaller image, faster registry push/pull and pod cold-start. Runtime inference is unchanged (the weights were already unused post-#21). Re-add the download + secret if guardrails are ever turned back on. Co-Authored-By: Claude Opus 4.8 (1M context) --- examples/cosmos3/Dockerfile | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/examples/cosmos3/Dockerfile b/examples/cosmos3/Dockerfile index af8aa4c673c1..7cca53876b54 100644 --- a/examples/cosmos3/Dockerfile +++ b/examples/cosmos3/Dockerfile @@ -6,11 +6,9 @@ # There is no DeepInfra copy of the framework repo — this directory plus the # pin below is the complete, reviewable definition of the image. # -# Build (from this directory; token file must hold an HF token whose account -# has accepted the nvidia/Cosmos-Guardrail1 auto-gate — the secret mount keeps -# it out of image layers and history): -# docker build --secret id=hf_token,src=/path/to/token-file \ -# -t localhost:30500/cosmos3-worker:v1 . +# Build (from this directory; no HF token needed — all prefetched repos are +# public now that the gated Cosmos-Guardrail1 snapshot is no longer fetched): +# docker build -t localhost:30500/cosmos3-worker:v1 . ARG CUDA_VERSION=13.0.2 ARG BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-cudnn-devel-ubuntu24.04 @@ -49,7 +47,7 @@ RUN git clone --filter=blob:none ${COSMOS_FRAMEWORK_REPO} /workspace && \ # NOTE: patches are applied LAST (near the entrypoint), not here. cosmos_framework # is installed editable (`uv pip install -e`), so patching /workspace afterward is # picked up live at runtime — and keeping the patch layer last means editing a -# patch rebuilds in seconds instead of re-running the ~11GB gated HF prefetch. +# patch rebuilds in seconds instead of re-running the HF prefetch below. RUN --mount=type=cache,target=/root/.cache/uv uv python install RUN echo "$CUDA_VERSION" | sed -E 's/^([0-9]+)\.([0-9]+).*/cu\1\2/' > /root/.cuda-name RUN --mount=type=cache,target=/root/.cache/uv \ @@ -73,20 +71,19 @@ RUN --mount=type=cache,target=/root/.cache/uv \ RUN --mount=type=cache,target=/root/.cache/uv \ uv pip install --no-deps -e /workspace -# Pre-fetch HuggingFace dependencies needed by cosmos_framework at model init -# time: Qwen tokenizer configs (*.json, *.txt — few MB), Wan VAE checkpoints, -# and the full Cosmos-Guardrail1 snapshot (the one gated repo — auto-approve -# gate; the token account must have accepted it). The token comes in via a -# BuildKit secret mount so it never persists in a layer or in image history. -# This eliminates any runtime dependency on HuggingFace availability. +# Pre-fetch the public HuggingFace dependencies cosmos_framework needs at model +# init time: Qwen tokenizer configs (*.json, *.txt — few MB) and the Wan VAE +# checkpoints. All are public repos, so the build needs NO HF token. This +# eliminates any runtime dependency on HuggingFace availability. # Revisions MUST match the pins in -# cosmos_framework/inference/common/checkpoints.py and -# cosmos_framework/auxiliary/guardrail/common/core.py at the ref above — the +# cosmos_framework/inference/common/checkpoints.py at the ref above — the # runtime looks up these exact revisions; a mismatch silently falls back to a # live (unauthenticated, rate-limited) HF fetch at every pod boot. -RUN --mount=type=secret,id=hf_token \ - export HF_TOKEN=$(cat /run/secrets/hf_token 2>/dev/null || true) && \ - uvx hf@1.13.0 download --format=json \ +# NOTE: the gated nvidia/Cosmos-Guardrail1 snapshot is intentionally NOT fetched +# — guardrails are disabled in worker.py (guardrails=False), so it is never +# loaded at runtime. Re-add its download here (and the BuildKit hf_token secret +# it needs) if guardrails are ever turned back on. +RUN uvx hf@1.13.0 download --format=json \ Qwen/Qwen3-0.6B \ --repo-type model \ --revision c1899de289a04d12100db370d81485cdf75e47ca \ @@ -115,11 +112,7 @@ RUN --mount=type=secret,id=hf_token \ Wan-AI/Wan2.2-TI2V-5B \ --repo-type model \ --revision 921dbaf3f1674a56f47e83fb80a34bac8a8f203e \ - Wan2.2_VAE.pth && \ - uvx hf@1.13.0 download --format=json \ - nvidia/Cosmos-Guardrail1 \ - --repo-type model \ - --revision d6d4bfa899a71454a700907664f3e88f503950cf + Wan2.2_VAE.pth # DeepInfra runtime settings. # - LD_LIBRARY_PATH is cleared so the venv/CUDA libs resolve without host leakage.