Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ dynamo-base-docker:

FROM ubuntu:24.04
WORKDIR /workspace
COPY container/deps/requirements.txt /tmp/requirements.txt
COPY pyproject.toml /tmp/pyproject.toml

# Install Python and other dependencies
RUN apt-get update && \
Expand All @@ -159,7 +159,7 @@ dynamo-base-docker:
ENV VIRTUAL_ENV=/opt/dynamo/venv
ENV PATH="${VIRTUAL_ENV}/bin:${PATH}"

RUN UV_GIT_LFS=1 uv pip install -r /tmp/requirements.txt
RUN UV_GIT_LFS=1 uv pip install -e /tmp/[test,standard]

# Copy and install wheels -- ai-dynamo-runtime first, then ai-dynamo
COPY +dynamo-build/ai_dynamo_runtime*.whl /tmp/wheels/
Expand Down
17 changes: 10 additions & 7 deletions container/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -371,13 +371,17 @@ RUN uv venv /opt/dynamo/venv --python $PYTHON_VERSION
ENV VIRTUAL_ENV=/opt/dynamo/venv \
PATH="/opt/dynamo/venv/bin:${PATH}"

# Install common and test dependencies
RUN --mount=type=bind,source=./container/deps/requirements.txt,target=/tmp/requirements.txt \
--mount=type=bind,source=./container/deps/requirements.test.txt,target=/tmp/requirements.test.txt \
# Install runtime wheel first, then dependencies
COPY --chown=dynamo: --from=wheel_builder /opt/dynamo/dist/*.whl /opt/dynamo/wheelhouse/

RUN uv pip install \
/opt/dynamo/wheelhouse/ai_dynamo_runtime*.whl

# Now install dependencies from pyproject.toml (runtime is now available)
RUN --mount=type=bind,source=./pyproject.toml,target=/tmp/pyproject.toml \
UV_GIT_LFS=1 uv pip install \
--no-cache \
--requirement /tmp/requirements.txt \
--requirement /tmp/requirements.test.txt
-e /tmp/[test,standard]

# NIXL environment variables
ENV NIXL_PREFIX=/opt/nvidia/nvda_nixl \
Expand All @@ -390,9 +394,8 @@ COPY --chown=dynamo: --from=wheel_builder /usr/local/ucx/ /usr/local/ucx/
COPY --chown=dynamo: --from=wheel_builder ${NIXL_PREFIX}/ ${NIXL_PREFIX}/
COPY --chown=dynamo: --from=wheel_builder /opt/nvidia/nvda_nixl/lib64/. ${NIXL_LIB_DIR}/

# Copy built artifacts
# Copy nixl artifacts (wheels already copied earlier)
COPY --chown=dynamo: --from=wheel_builder /opt/dynamo/dist/nixl/ /opt/dynamo/wheelhouse/nixl/
COPY --chown=dynamo: --from=wheel_builder /opt/dynamo/dist/*.whl /opt/dynamo/wheelhouse/
COPY --chown=dynamo: --from=wheel_builder $CARGO_TARGET_DIR $CARGO_TARGET_DIR
COPY --chown=dynamo: --from=wheel_builder $CARGO_HOME $CARGO_HOME

Expand Down
4 changes: 2 additions & 2 deletions container/Dockerfile.sglang-wideep
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ RUN if [ "$BRANCH_TYPE" = "local" ]; then \
pip install --break-system-packages target/wheels/*.whl && \
cd /sgl-workspace/dynamo && \
pip install --break-system-packages -e . && \
pip install --break-system-packages --requirement /tmp/local_src/container/deps/requirements.txt ; \
pip install --break-system-packages -e /tmp/local_src[test,standard] ; \
elif [ "$BRANCH_TYPE" = "remote" ]; then \
cd dynamo/lib/bindings/python && \
pip install --break-system-packages maturin && \
maturin build --release && \
pip install --break-system-packages target/wheels/*.whl && \
cd /sgl-workspace/dynamo && \
pip install --break-system-packages -e . && \
pip install --break-system-packages --requirement /sgl-workspace/dynamo/container/deps/requirements.txt ; \
pip install --break-system-packages -e /sgl-workspace/dynamo[test,standard] ; \
else \
pip install --break-system-packages ai-dynamo ; \
fi \
Expand Down
96 changes: 87 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,54 @@ authors = [
{ name = "NVIDIA Inc.", email = "[email protected]" },
]
license = { text = "Apache-2.0" }
license-files = ["LICENSE"]
requires-python = ">=3.10"
dependencies = [
"ai-dynamo-runtime==0.7.0",
"pytest>=8.3.4",
"types-psutil>=7.0.0.20250218",
"kubernetes>=32.0.1,<33.0.0",
"fastapi>=0.115.0",
"accelerate==1.6.0",
"aiconfigurator @ git+https://github.com/ai-dynamo/aiconfigurator.git@5554d2eb8206738c66048bf2d72183e9bcd85759",
"aiofiles",
"aiperf @ git+https://github.com/ai-dynamo/aiperf.git@16dad7c02fcd959ba96823d7bfe7e681e5d5b41d",
"av==15.0.0",
"click<8.2.0",
"distro",
# filelock: required by planner
"fastapi==0.120.1",
"filelock",
"typer",
"click<8.2.0",
"setuptools",
"ftfy",
"genai-perf==0.0.15",
"grpcio-tools==1.66.0",
"httpx",
"kr8s",
"kubernetes==32.0.1",
"kubernetes_asyncio",
"matplotlib",
"msgspec",
"mypy",
"nvidia-ml-py==13.580.65",
"opentelemetry-api",
"opentelemetry-sdk",
"pip",
"pmdarima",
"pre-commit",
"prometheus-api-client",
"prometheus_client>=0.23.1,<1.0",
"prophet",
"protobuf==5.29.5",
"pydantic>=2.10.6",
"pyright",
"pytest>=8.3.4",
"PyYAML",
"scikit-learn",
"scipy<1.14.0",
"sentencepiece",
"setuptools",
"tensorboard==2.19.0",
"tensorboardX==2.6.2.2",
"transformers",
"typer",
"types-aiofiles",
"types-psutil>=7.0.0.20250218",
"types-PyYAML",
"uvicorn",
]

classifiers = [
Expand Down Expand Up @@ -65,6 +98,51 @@ sglang = [
]

[dependency-groups]
test = [
# For IFEval dataset loading in kvbm tests
"datasets",
# For NATS object store verification in router tests
"nats-py",
"psutil>=5.0.0",
"pyright",
"pytest",
"pytest-asyncio",
"pytest-benchmark",
"pytest-codeblocks",
"pytest-cov",
"pytest-forked",
"pytest-md-report",
"pytest-mypy",
"pytest-timeout",
# Triton client to Dynamo gRPC server
"tritonclient[grpc]",
# add types library stub for PyYAML
"types-PyYAML",
"types-requests",
]

standard = [
"ucx-py-cu12",
]

deploy = [
# Kubernetes and async dependencies
"aiofiles>=0.8.0",
# Benchmarking dependencies for Dynamo
"genai-perf==0.0.15",
"httpx>=0.24.0",
"kubernetes-asyncio>=24.0.0",
# Plotting and visualization
"matplotlib>=3.5.0",
"numpy>=1.21.0",
"pandas>=1.3.0",
"plotly>=5.0.0",
# YAML processing
"pyyaml>=6.0.0",
"scipy>=1.7.0",
"seaborn>=0.11.0",
]

docs = [
# Core Sphinx
"sphinx>=8.1",
Expand Down
Loading