diff --git a/Earthfile b/Earthfile index 6a9482219..e59798d87 100644 --- a/Earthfile +++ b/Earthfile @@ -159,7 +159,7 @@ dynamo-base-docker: ENV VIRTUAL_ENV=/opt/dynamo/venv ENV PATH="${VIRTUAL_ENV}/bin:${PATH}" - RUN uv pip install -r /tmp/requirements.txt + RUN UV_GIT_LFS=1 uv pip install -r /tmp/requirements.txt # Copy and install wheels -- ai-dynamo-runtime first, then ai-dynamo COPY +dynamo-build/ai_dynamo_runtime*.whl /tmp/wheels/ diff --git a/benchmarks/profiler/utils/estimate_perf.py b/benchmarks/profiler/utils/estimate_perf.py index b4f4fc97e..a6abc0d09 100644 --- a/benchmarks/profiler/utils/estimate_perf.py +++ b/benchmarks/profiler/utils/estimate_perf.py @@ -66,7 +66,9 @@ class AIConfiguratorPerfEstimator: # NOTE: MOE models error out unless moe_tp_size and moe_ep_size are provided. model_config = aiconfigurator.sdk.config.ModelConfig(**model_config_kwargs) - model = aiconfigurator.sdk.models.get_model(self.model_name, model_config) + model = aiconfigurator.sdk.models.get_model( + self.model_name, model_config, self.backend + ) return model def estimate_perf( diff --git a/benchmarks/pyproject.toml b/benchmarks/pyproject.toml index 0f3da1323..4eb0dedf0 100644 --- a/benchmarks/pyproject.toml +++ b/benchmarks/pyproject.toml @@ -40,7 +40,7 @@ classifiers = [ ] dependencies = [ - "aiconfigurator==0.2.0", + "aiconfigurator @ git+https://github.com/ai-dynamo/aiconfigurator.git@e46d9089ffe4f5dd62c46914489c55b6dfdbc903", "networkx", "pandas", "pydantic>=2", diff --git a/container/Dockerfile b/container/Dockerfile index b52c5c3bd..bf17e8ee9 100644 --- a/container/Dockerfile +++ b/container/Dockerfile @@ -116,6 +116,7 @@ RUN apt-get update -y \ automake \ cmake \ git \ + git-lfs \ libtool \ meson \ net-tools \ @@ -261,7 +262,10 @@ ENV VIRTUAL_ENV=/opt/dynamo/venv \ # 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 \ - uv pip install --requirement /tmp/requirements.txt --requirement /tmp/requirements.test.txt + UV_GIT_LFS=1 uv pip install \ + --no-cache \ + --requirement /tmp/requirements.txt \ + --requirement /tmp/requirements.test.txt ################################## ##### Wheel Build Image ########## @@ -382,7 +386,7 @@ RUN uv pip install \ /opt/dynamo/wheelhouse/ai_dynamo*any.whl \ /opt/dynamo/wheelhouse/nixl/nixl*.whl \ && cd /opt/dynamo/benchmarks \ - && uv pip install . \ + && UV_GIT_LFS=1 uv pip install --no-cache . \ && cd - \ && rm -rf /opt/dynamo/benchmarks diff --git a/container/Dockerfile.sglang b/container/Dockerfile.sglang index 90deda296..03a655bfe 100644 --- a/container/Dockerfile.sglang +++ b/container/Dockerfile.sglang @@ -65,6 +65,7 @@ RUN apt-get update -y \ python${PYTHON_VERSION}-dev \ build-essential \ git \ + git-lfs \ # SGLang build dependencies cmake \ ibverbs-providers \ @@ -149,6 +150,7 @@ RUN apt-get update && \ # jq and curl for polling various endpoints and health checks jq \ git \ + git-lfs \ curl \ # Libraries required by UCX to find RDMA devices libibverbs1 rdma-core ibverbs-utils libibumad3 \ @@ -206,14 +208,17 @@ RUN uv pip install \ /opt/dynamo/wheelhouse/ai_dynamo*any.whl \ /opt/dynamo/wheelhouse/nixl/nixl*.whl \ && cd /opt/dynamo/benchmarks \ - && uv pip install . \ + && UV_GIT_LFS=1 uv pip install --no-cache . \ && cd - \ && rm -rf /opt/dynamo/benchmarks # 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 \ - uv pip install --requirement /tmp/requirements.txt --requirement /tmp/requirements.test.txt + UV_GIT_LFS=1 uv pip install \ + --no-cache \ + --requirement /tmp/requirements.txt \ + --requirement /tmp/requirements.test.txt # Copy launch banner RUN --mount=type=bind,source=./container/launch_message.txt,target=/workspace/launch_message.txt \ diff --git a/container/Dockerfile.trtllm b/container/Dockerfile.trtllm index 6776a67ce..acd10a362 100644 --- a/container/Dockerfile.trtllm +++ b/container/Dockerfile.trtllm @@ -77,6 +77,7 @@ RUN apt-get update && \ g++ \ ninja-build \ git \ + git-lfs \ # Python runtime - CRITICAL for virtual environment to work python${PYTHON_VERSION}-dev \ python3-pip \ @@ -242,14 +243,17 @@ RUN uv pip install \ /opt/dynamo/wheelhouse/ai_dynamo*any.whl \ /opt/dynamo/wheelhouse/nixl/nixl*.whl \ && cd /opt/dynamo/benchmarks \ - && uv pip install . \ + && UV_GIT_LFS=1 uv pip install --no-cache . \ && cd - \ && rm -rf /opt/dynamo/benchmarks # 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 \ - uv pip install --requirement /tmp/requirements.txt --requirement /tmp/requirements.test.txt + UV_GIT_LFS=1 uv pip install \ + --no-cache \ + --requirement /tmp/requirements.txt \ + --requirement /tmp/requirements.test.txt # Copy UCX libraries, libucc.so is needed by pytorch. May not need to copy whole hpcx dir but only /opt/hpcx/ucc/ COPY --from=framework /opt/hpcx /opt/hpcx diff --git a/container/Dockerfile.vllm b/container/Dockerfile.vllm index d23376379..163ad08f5 100644 --- a/container/Dockerfile.vllm +++ b/container/Dockerfile.vllm @@ -192,6 +192,7 @@ RUN apt-get update && \ # jq and curl for polling various endpoints and health checks jq \ git \ + git-lfs \ curl \ # Libraries required by UCX to find RDMA devices libibverbs1 rdma-core ibverbs-utils libibumad3 \ @@ -257,14 +258,17 @@ RUN uv pip install \ /opt/dynamo/wheelhouse/ai_dynamo*any.whl \ /opt/dynamo/wheelhouse/nixl/nixl*.whl \ && cd /opt/dynamo/benchmarks \ - && uv pip install . \ + && UV_GIT_LFS=1 uv pip install --no-cache . \ && cd - \ && rm -rf /opt/dynamo/benchmarks # 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 \ - uv pip install --requirement /tmp/requirements.txt --requirement /tmp/requirements.test.txt + UV_GIT_LFS=1 uv pip install \ + --no-cache \ + --requirement /tmp/requirements.txt \ + --requirement /tmp/requirements.test.txt # Copy benchmarks, examples, and tests for CI COPY . /workspace/ diff --git a/tests/planner/README.md b/tests/planner/README.md index e9fdcbe44..14a7112f7 100644 --- a/tests/planner/README.md +++ b/tests/planner/README.md @@ -10,7 +10,7 @@ This directory contains comprehensive testing tools for validating the SLA plann The SLA planner monitors metrics every 60 seconds (default adjustment interval) and scales prefill/decode workers based on TTFT, ITL, and request patterns. -To setup the environment, simply use the released docker images for any backends, or build your own docker image following the READMEs in `./components/backends//README.md`, or follow the `Developing Locally` section in [README.md](../../README.md) to setup the environment locally. If using the local environment, make sure to install dependencies by running `uv pip install -r container/deps/requirements.txt` +To setup the environment, simply use the released docker images for any backends, or build your own docker image following the READMEs in `./components/backends//README.md`, or follow the `Developing Locally` section in [README.md](../../README.md) to setup the environment locally. If using the local environment, make sure to install dependencies by running `UV_GIT_LFS=1 uv pip install --no-cache -r container/deps/requirements.txt` ## Pre-Requisite: Pre-Deployment Profiling Data diff --git a/tests/profiler/test_profile_sla_aiconfigurator.py b/tests/profiler/test_profile_sla_aiconfigurator.py index 154fe2ddd..7d21cefe1 100644 --- a/tests/profiler/test_profile_sla_aiconfigurator.py +++ b/tests/profiler/test_profile_sla_aiconfigurator.py @@ -97,7 +97,7 @@ class TestProfileSlaAiconfigurator: ("trtllm", "1.0.0rc3"), ], ) - @pytest.mark.parametrize("model_name", ["QWEN3_32B", "GPT_7B", "LLAMA3.1_405B"]) + @pytest.mark.parametrize("model_name", ["QWEN3_32B", "LLAMA3.1_405B"]) async def test_trtllm_aiconfigurator_many( self, trtllm_args, model_name, backend, aic_backend_version ):