-
Notifications
You must be signed in to change notification settings - Fork 16
feat(experimentalist): isolate optimization with OpenShell and Harbor #1008
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
62e27e7
6838ccb
ff05339
7f3abcb
de0bbcc
0b6586c
13fa625
a2735c4
d5123f4
9050e85
84e4a20
04e2a9a
16da9af
4999c68
2d9506d
f194f9a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| # syntax=docker/dockerfile:1 | ||
| # SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| ARG NMP_PYTHON_BASE=nmp-python-base | ||
|
|
||
| FROM ${NMP_PYTHON_BASE} AS dependencies | ||
| COPY --from=nmp-workspace pyproject.toml uv.lock README.md ./ | ||
| RUN --mount=type=cache,target=/root/.cache/uv \ | ||
| uv sync --frozen --only-group experimentalist --no-install-workspace --no-editable | ||
|
|
||
| FROM dependencies AS builder | ||
| COPY --from=nmp-workspace . . | ||
| RUN --mount=type=cache,target=/root/.cache/uv \ | ||
| for package in \ | ||
| nemo-eval-author-plugin \ | ||
| nemo-experimentalist-plugin \ | ||
| nemo-insights-plugin \ | ||
| nemo-platform \ | ||
| nemo-platform-plugin \ | ||
| nemo-platform-sdk \ | ||
| nmp-common; do \ | ||
| uv build --wheel --package "$package" --out-dir /wheels; \ | ||
| done | ||
|
|
||
| FROM ${NMP_PYTHON_BASE} AS runtime | ||
|
|
||
| LABEL com.nvidia.nemo.experimentalist.openshell-runtime="1" | ||
|
|
||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
| iproute2 \ | ||
| nftables \ | ||
| && apt-get clean \ | ||
| && rm -rf /var/lib/apt/lists/* \ | ||
| && groupadd --system sandbox \ | ||
| && useradd --system --gid sandbox --create-home --home-dir /home/sandbox --shell /bin/bash sandbox \ | ||
| && mkdir -p /sandbox \ | ||
| && chown sandbox:sandbox /sandbox \ | ||
| && touch /etc/nemo-experimentalist-container | ||
|
|
||
| COPY --from=dependencies /app/.venv /app/.venv | ||
| COPY --from=builder /wheels /wheels | ||
| RUN UV_COMPILE_BYTECODE=0 uv pip install \ | ||
| --python /app/.venv/bin/python \ | ||
| --no-deps \ | ||
| /wheels/*.whl \ | ||
| && rm -rf /wheels | ||
|
|
||
| ENV HOME=/home/sandbox \ | ||
| PATH="/app/.venv/bin:$PATH" \ | ||
| XDG_CACHE_HOME=/sandbox/.cache | ||
|
|
||
| WORKDIR /sandbox | ||
| USER sandbox |
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,15 @@ | ||||||||||
| # Experimentalist control plane. Harbor and Docker remain host-side. | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Add the required SPDX header. Line 1 starts with a project comment, but the file has no SPDX copyright or license identifiers. Add both headers before the existing comment. Proposed fix+# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
# Experimentalist control plane. Harbor and Docker remain host-side.As per coding guidelines, every file under 📝 Committable suggestion
Suggested change
🤖 Prompt for AI AgentsSource: Coding guidelines |
||||||||||
| target "nmp-experimentalist-docker" { | ||||||||||
| target = "runtime" | ||||||||||
| context = "." | ||||||||||
| dockerfile = "plugins/nemo-experimentalist/Dockerfile" | ||||||||||
| contexts = { | ||||||||||
| nmp-python-base = "target:nmp-python-base" | ||||||||||
| nmp-workspace = "target:nmp-workspace" | ||||||||||
| } | ||||||||||
| cache-to = maybe_registry_cache_to("nmp-experimentalist") | ||||||||||
| cache-from = maybe_registry_cache_from("nmp-experimentalist") | ||||||||||
| tags = sha_and_maybe_latest_tags("nmp-experimentalist") | ||||||||||
| output = image_output() | ||||||||||
| platforms = get_platforms() | ||||||||||
| } | ||||||||||
Uh oh!
There was an error while loading. Please reload this page.