1111ARG PYTHON_VERSION=3.13
1212ARG PYTHON_IMAGE=python:${PYTHON_VERSION}-slim-trixie
1313ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.9.30
14- ARG SAFE_SYNTHESIZER_RUNTIME_PACKAGE="nemo-safe-synthesizer[engine,cu129]==0.1.2 "
14+ ARG SAFE_SYNTHESIZER_RUNTIME_PACKAGE="nemo-safe-synthesizer[engine,cu129]==0.1.7 "
1515ARG FLASHINFER_CU129_INDEX_URL="https://flashinfer.ai/whl/cu129"
1616ARG PYTORCH_CU129_INDEX_URL="https://download.pytorch.org/whl/cu129"
17- ARG VLLM_CU129_WHEEL="vllm @ https://github.com/ vllm-project/vllm/releases/download/v0.20.0/vllm-0.20.0%2Bcu129-cp38-abi3-manylinux_2_31_x86_64.whl "
17+ ARG VLLM_CU129_INDEX_URL=" https://wheels. vllm.ai/ee0da84ab9e04ac7610e28580af62c365e898389/cu129 "
1818
1919# =============================================================================
2020# uv binary
@@ -29,7 +29,7 @@ ARG PYTHON_IMAGE
2929ARG SAFE_SYNTHESIZER_RUNTIME_PACKAGE
3030ARG FLASHINFER_CU129_INDEX_URL
3131ARG PYTORCH_CU129_INDEX_URL
32- ARG VLLM_CU129_WHEEL
32+ ARG VLLM_CU129_INDEX_URL
3333ARG CONTAINER_VARIANT=cu129
3434ARG USERNAME=nemo
3535ARG USER_UID=1000
@@ -110,11 +110,10 @@ RUN printf '%s\n' \
110110 printf '%s\n' \
111111 "${SAFE_SYNTHESIZER_RUNTIME_PACKAGE}" \
112112 > /tmp/safe-synthesizer-runtime.txt && \
113- printf '%s\n' \
114- "${VLLM_CU129_WHEEL}" \
115- > /tmp/vllm-cu129.txt && \
116113 printf '%s\n' \
117114 wandb==0.27.2 \
115+ 'cryptography>=48.0.1,<49' \
116+ 'pyarrow>=23.0.1,<24' \
118117 > /tmp/safe-synthesizer-overrides.txt
119118
120119RUN --mount=type=cache,target=/root/.cache/uv \
@@ -157,12 +156,12 @@ RUN --mount=type=cache,target=/root/.cache/uv \
157156 UV_CACHE_DIR=/root/.cache/uv uv pip install --python /opt/venv/bin/python \
158157 --extra-index-url "${FLASHINFER_CU129_INDEX_URL}" \
159158 --extra-index-url "${PYTORCH_CU129_INDEX_URL}" \
159+ --extra-index-url "${VLLM_CU129_INDEX_URL}" \
160160 --index-strategy unsafe-best-match \
161161 --torch-backend cu129 \
162162 --overrides /tmp/safe-synthesizer-overrides.txt \
163163 --constraints /tmp/safe-synthesizer-constraints.txt \
164- --requirements /tmp/safe-synthesizer-runtime.txt \
165- --requirements /tmp/vllm-cu129.txt
164+ --requirements /tmp/safe-synthesizer-runtime.txt
166165
167166COPY pyproject.toml uv.lock ./
168167COPY packages/ packages/
@@ -179,9 +178,13 @@ RUN mkdir -p docs && \
179178# Skip the `nemo-platform` wrapper wheel: it bundles every first-party plugin and
180179# service, which drags unrelated source trees into this task image. The runtime
181180# imports come from nemo-platform-sdk, nemo-platform-plugin, and nmp-common.
181+ # The runtime layer above installs CVE-patched cryptography/pyarrow; do not let
182+ # the workspace lock downgrade them during plugin sync.
182183RUN --mount=type=cache,target=/root/.cache/uv \
183184 UV_CACHE_DIR=/root/.cache/uv uv sync --package nemo-safe-synthesizer-plugin --no-dev --no-editable --inexact \
184- --no-install-package nemo-platform
185+ --no-install-package nemo-platform \
186+ --no-install-package cryptography \
187+ --no-install-package pyarrow
185188
186189COPY docker/scripts/cve-cleanup.sh /bin/
187190RUN bash /bin/cve-cleanup.sh
0 commit comments