@@ -42,9 +42,11 @@ RUN ln -sfn /opt/nemo_rl_venv /opt/venv
4242RUN UV_CACHE_DIR=/root/.cache/uv \
4343 uv-glue pip freeze --python /opt/nemo_rl_venv/bin/python --exclude-editable > /tmp/base-python-freeze.txt
4444
45- # Editable platform glue WITH dependency resolution. The from-source base ships clean package
46- # metadata, so uv can resolve the glue's real deps (typer, sniffio, ngcsdk, opentelemetry-*,
47- # sqlalchemy, kubernetes, fastapi, ...) instead of us pinning them by hand.
45+ # Editable platform glue WITH dependency resolution. The [integrations] extra is
46+ # training-runtime only; nmp-api installs nmp-rl without extras. The from-source
47+ # base ships clean package metadata, so uv can resolve the glue's real deps
48+ # (typer, sniffio, ngcsdk, opentelemetry-*, sqlalchemy, kubernetes, fastapi, ...)
49+ # instead of us pinning them by hand.
4850# To stop uv moving the pinned RL / vLLM / mcore / Gym stack while it does that, freeze the base venv
4951# first and pass it as --overrides (base versions win over whatever the glue requests). Packages the
5052# base doesn't have are still installed fresh. `| grep '==' ` drops git/URL installs (TE, flash-attn,
@@ -64,7 +66,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
6466 -e /app/packages/nemo_platform_plugin \
6567 -e /app/packages/nmp_common \
6668 -e /app/packages/nmp_customization_common \
67- -e /app/services/rl
69+ -e " /app/services/rl[integrations]"
6870
6971ARG NMP_COLLECT_SOURCES=0
7072ENV NMP_COLLECT_SOURCES=${NMP_COLLECT_SOURCES}
0 commit comments