From 0c1809c8065f51646c9ca6ce7911831a763a5d18 Mon Sep 17 00:00:00 2001 From: amey asgaonkar <160177341+aasgaonkar@users.noreply.github.com> Date: Tue, 24 Mar 2026 13:34:44 -0700 Subject: [PATCH] Add Ubuntu 24.04 support for Docker builds (#35386) Signed-off-by: aasgaonkar --- .buildkite/release-pipeline.yaml | 68 ++++++++++++++++++++++++++++++++ docker/Dockerfile | 9 ++++- docker/docker-bake.hcl | 30 ++++++++++++++ docker/versions.json | 3 ++ 4 files changed, 108 insertions(+), 2 deletions(-) diff --git a/.buildkite/release-pipeline.yaml b/.buildkite/release-pipeline.yaml index e02165ad2..1367fa10f 100644 --- a/.buildkite/release-pipeline.yaml +++ b/.buildkite/release-pipeline.yaml @@ -140,6 +140,50 @@ steps: - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0 12.1' --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 --target vllm-openai --progress plain -f docker/Dockerfile ." - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130" + - label: "Build release image - x86_64 - CUDA 12.9 - Ubuntu 24.04" + depends_on: ~ + id: build-release-image-x86-ubuntu2404 + agents: + queue: cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.9.1 --build-arg UBUNTU_VERSION=24.04 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 --build-arg FLASHINFER_AOT_COMPILE=true --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0' --build-arg INSTALL_KV_CONNECTORS=true --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404 --target vllm-openai --progress plain -f docker/Dockerfile ." + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404" + - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404" + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404" + + - label: "Build release image - aarch64 - CUDA 12.9 - Ubuntu 24.04" + depends_on: ~ + id: build-release-image-arm64-ubuntu2404 + agents: + queue: arm64_cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=12.9.1 --build-arg UBUNTU_VERSION=24.04 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 --build-arg FLASHINFER_AOT_COMPILE=true --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0' --build-arg INSTALL_KV_CONNECTORS=true --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404 --target vllm-openai --progress plain -f docker/Dockerfile ." + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404" + + - label: "Build release image - x86_64 - CUDA 13.0 - Ubuntu 24.04" + depends_on: ~ + id: build-release-image-x86-cuda-13-0-ubuntu2404 + agents: + queue: cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg UBUNTU_VERSION=24.04 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 --build-arg FLASHINFER_AOT_COMPILE=true --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0 12.1' --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu24.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130-ubuntu2404 --target vllm-openai --progress plain -f docker/Dockerfile ." + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130-ubuntu2404" + - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130-ubuntu2404" + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130-ubuntu2404" + + - label: "Build release image - aarch64 - CUDA 13.0 - Ubuntu 24.04" + depends_on: ~ + id: build-release-image-arm64-cuda-13-0-ubuntu2404 + agents: + queue: arm64_cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg UBUNTU_VERSION=24.04 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 --build-arg FLASHINFER_AOT_COMPILE=true --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0 12.1' --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu24.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130-ubuntu2404 --target vllm-openai --progress plain -f docker/Dockerfile ." + - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130-ubuntu2404" + - block: "Build release image for x86_64 CPU" key: block-cpu-release-image-build depends_on: ~ @@ -212,6 +256,30 @@ steps: - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-cu130 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-cu130 --amend" - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130" + - label: "Create multi-arch manifest - CUDA 12.9 - Ubuntu 24.04" + depends_on: + - build-release-image-x86-ubuntu2404 + - build-release-image-arm64-ubuntu2404 + id: create-multi-arch-manifest-ubuntu2404 + agents: + queue: small_cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-ubuntu2404 --amend" + - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404" + + - label: "Create multi-arch manifest - CUDA 13.0 - Ubuntu 24.04" + depends_on: + - build-release-image-x86-cuda-13-0-ubuntu2404 + - build-release-image-arm64-cuda-13-0-ubuntu2404 + id: create-multi-arch-manifest-cuda-13-0-ubuntu2404 + agents: + queue: small_cpu_queue_postmerge + commands: + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7" + - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-cu130-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-cu130-ubuntu2404 --amend" + - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130-ubuntu2404" + - label: "Publish nightly multi-arch image to DockerHub" depends_on: - create-multi-arch-manifest diff --git a/docker/Dockerfile b/docker/Dockerfile index 2abf03515..c1a5fbe18 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -24,6 +24,7 @@ ARG CUDA_VERSION=12.9.1 ARG PYTHON_VERSION=3.12 +ARG UBUNTU_VERSION=22.04 # By parameterizing the base images, we allow third-party to use their own # base images. One use case is hermetic builds with base images stored in @@ -38,7 +39,7 @@ ARG PYTHON_VERSION=3.12 # version are not backwards compatible with OSes that use an earlier version. ARG BUILD_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04 # Using cuda base image with minimal dependencies necessary for JIT compilation (FlashInfer, DeepGEMM, EP kernels) -ARG FINAL_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-base-ubuntu22.04 +ARG FINAL_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-base-ubuntu${UBUNTU_VERSION} # By parameterizing the Deadsnakes repository URL, we allow third-party to use # their own mirror. When doing so, we don't benefit from the transparent @@ -111,6 +112,10 @@ RUN apt-get update -y \ gcc-10 \ g++-10 \ && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 110 --slave /usr/bin/g++ g++ /usr/bin/g++-10 \ + # Install python dev headers if available (needed for cmake FindPython on Ubuntu 24.04 + # which ships cmake 3.28 and requires Development.SABIModule; silently skipped on + # Ubuntu 20.04/22.04 where python3.x-dev is not available without a PPA) + && (apt-get install -y --no-install-recommends python${PYTHON_VERSION}-dev 2>/dev/null || true) \ && rm -rf /var/lib/apt/lists/* \ && curl -LsSf https://astral.sh/uv/install.sh | sh \ && $HOME/.local/bin/uv venv /opt/venv --python ${PYTHON_VERSION} \ @@ -507,7 +512,6 @@ RUN apt-get update -y \ software-properties-common \ curl \ sudo \ - python3-pip \ ffmpeg \ libsm6 \ libxext6 \ @@ -535,6 +539,7 @@ RUN apt-get update -y \ && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 \ && update-alternatives --set python3 /usr/bin/python${PYTHON_VERSION} \ && ln -sf /usr/bin/python${PYTHON_VERSION}-config /usr/bin/python3-config \ + && rm -f /usr/lib/python${PYTHON_VERSION}/EXTERNALLY-MANAGED \ && curl -sS ${GET_PIP_URL} | python${PYTHON_VERSION} \ && python3 --version && python3 -m pip --version diff --git a/docker/docker-bake.hcl b/docker/docker-bake.hcl index daf0d62a6..e1c2fbba6 100644 --- a/docker/docker-bake.hcl +++ b/docker/docker-bake.hcl @@ -33,6 +33,10 @@ group "default" { targets = ["openai"] } +group "all" { + targets = ["openai", "openai-ubuntu2404"] +} + # Base targets target "_common" { @@ -74,3 +78,29 @@ target "openai" { tags = ["vllm:openai"] output = ["type=docker"] } + +# Ubuntu 24.04 targets + +target "test-ubuntu2404" { + inherits = ["_common", "_labels"] + target = "test" + tags = ["vllm:test-ubuntu24.04"] + args = { + UBUNTU_VERSION = "24.04" + GDRCOPY_OS_VERSION = "Ubuntu24_04" + FLASHINFER_AOT_COMPILE = "true" + } + output = ["type=docker"] +} + +target "openai-ubuntu2404" { + inherits = ["_common", "_labels"] + target = "vllm-openai" + tags = ["vllm:openai-ubuntu24.04"] + args = { + UBUNTU_VERSION = "24.04" + GDRCOPY_OS_VERSION = "Ubuntu24_04" + FLASHINFER_AOT_COMPILE = "true" + } + output = ["type=docker"] +} diff --git a/docker/versions.json b/docker/versions.json index 74a974a35..582d1bd54 100644 --- a/docker/versions.json +++ b/docker/versions.json @@ -7,6 +7,9 @@ "PYTHON_VERSION": { "default": "3.12" }, + "UBUNTU_VERSION": { + "default": "22.04" + }, "BUILD_BASE_IMAGE": { "default": "nvidia/cuda:12.9.1-devel-ubuntu20.04" },