| name | build-and-dependency |
| description | Build and dependency management for NeMo-RL. Covers Docker image building and running, uv usage, venv setup, and adding dependencies. |
| when_to_use | Setting up a dev environment; building or running the Docker container; adding or removing a dependency; uv errors; 'how do I install', 'ModuleNotFoundError', 'build the image', 'run in Docker', 'uv sync fails'. |
Build and Dependency Guide
Docker Images
Build the release image (includes all dependencies and pre-fetched venvs):
docker buildx build -f docker/Dockerfile --tag nemo-rl:latest .
docker buildx build -f docker/Dockerfile \
--build-arg NRL_GIT_REF=main \
--tag nemo-rl:latest \
https://github.com/NVIDIA-NeMo/RL.git
Skip optional backends to reduce build time:
docker buildx build -f docker/Dockerfile \
--build-arg SKIP_VLLM_BUILD=1 \
--build-arg SKIP_SGLANG_BUILD=1 \
--tag nemo-rl:latest .
See @docs/docker.md for full options.
Always Use uv
Never use pip install directly — always go through uv.
uv run examples/run_grpo.py
uv run --group test bash tests/run_unit.sh
uv sync --locked
Exception: Dockerfile.ngc_pytorch is exempt from this rule.
Adding Dependencies
uv add <package>
uv add --optional --extra <group> <package>
uv lock
Commit both pyproject.toml and uv.lock together:
git add pyproject.toml uv.lock
git commit -s -m "build: add <package> dependency"
Common Pitfalls
| Problem | Cause | Fix |
|---|
uv sync --locked fails | Dependency conflict or stale lockfile | Re-run uv lock and commit updated lock |
ModuleNotFoundError after pip install | pip installed outside uv-managed venv | Use uv add + uv sync, never bare pip install |
| Docker build fails at vLLM | vLLM build time overhead | Pass --build-arg SKIP_VLLM_BUILD=1 |