@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 1c691f4a71
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

AArch64 CPU Docker pipeline (#26931)

ioana ghiban committed Oct 20, 2025 at 13:09 UTC 1c691f4a714981bd90ce536cbd00041d3e0aa7bb
2 files changed +118
.buildkite/release-pipeline.yaml
+30
@@ -15,6 +15,20 @@ steps:
15 env:
16 DOCKER_BUILDKIT: "1"
17
18 + # aarch64 build.
19 + - label: "Build arm64 CPU wheel"
20 + depends_on: ~
21 + id: build-wheel-arm64-cpu
22 + agents:
23 + queue: arm64_cpu_queue_postmerge
24 + commands:
25 + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile.cpu ."
26 + - "mkdir artifacts"
27 + - "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
28 + - "bash .buildkite/scripts/upload-wheels.sh"
29 + env:
30 + DOCKER_BUILDKIT: "1"
31 +
32 - label: "Build wheel - CUDA 12.8"
33 depends_on: ~
34 id: build-wheel-cuda-12-8
@@ -142,6 +156,22 @@ steps:
156 env:
157 DOCKER_BUILDKIT: "1"
158
159 + - block: "Build arm64 CPU release image"
160 + key: block-arm64-cpu-release-image-build
161 + depends_on: ~
162 +
163 + - label: "Build and publish arm64 CPU release image"
164 + depends_on: block-arm64-cpu-release-image-build
165 + agents:
166 + queue: arm64_cpu_queue_postmerge
167 + commands:
168 + - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
169 + - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$(buildkite-agent meta-data get release-version) --tag public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:latest --progress plain --target vllm-openai -f docker/Dockerfile.cpu ."
170 + - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:latest"
171 + - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$(buildkite-agent meta-data get release-version)"
172 + env:
173 + DOCKER_BUILDKIT: "1"
174 +
175 - label: "Build and publish nightly multi-arch image to DockerHub"
176 depends_on:
177 - create-multi-arch-manifest
docker/Dockerfile.cpu
+88
@@ -106,6 +106,94 @@ RUN --mount=type=cache,target=/root/.cache/uv \
106 --mount=type=bind,source=.git,target=.git \
107 VLLM_TARGET_DEVICE=cpu python3 setup.py bdist_wheel
108
109 +#################### WHEEL BUILD IMAGE ####################
110 +FROM base AS build
111 +ARG TARGETPLATFORM
112 +
113 +ARG PIP_INDEX_URL UV_INDEX_URL
114 +ARG PIP_EXTRA_INDEX_URL UV_EXTRA_INDEX_URL
115 +
116 +# install build dependencies
117 +COPY requirements/build.txt requirements/build.txt
118 +
119 +# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
120 +# Reference: https://github.com/astral-sh/uv/pull/1694
121 +ENV UV_HTTP_TIMEOUT=500
122 +ENV UV_INDEX_STRATEGY="unsafe-best-match"
123 +# Use copy mode to avoid hardlink failures with Docker cache mounts
124 +ENV UV_LINK_MODE=copy
125 +
126 +RUN --mount=type=cache,target=/root/.cache/uv \
127 + uv pip install --python /opt/venv/bin/python3 -r requirements/build.txt
128 +
129 +COPY . .
130 +ARG GIT_REPO_CHECK=0
131 +RUN --mount=type=bind,source=.git,target=.git \
132 + if [ "$GIT_REPO_CHECK" != "0" ]; then bash tools/check_repo.sh ; fi
133 +
134 +# max jobs used by Ninja to build extensions
135 +ARG max_jobs=2
136 +ENV MAX_JOBS=${max_jobs}
137 +
138 +ARG USE_SCCACHE
139 +ARG SCCACHE_DOWNLOAD_URL=https://github.com/mozilla/sccache/releases/download/v0.8.1/sccache-v0.8.1-x86_64-unknown-linux-musl.tar.gz
140 +ARG SCCACHE_ENDPOINT
141 +ARG SCCACHE_BUCKET_NAME=vllm-build-sccache
142 +ARG SCCACHE_REGION_NAME=us-west-2
143 +ARG SCCACHE_S3_NO_CREDENTIALS=0
144 +
145 +# Flag to control whether to use pre-built vLLM wheels
146 +ARG VLLM_USE_PRECOMPILED=""
147 +
148 +# if USE_SCCACHE is set, use sccache to speed up compilation
149 +RUN --mount=type=cache,target=/root/.cache/uv \
150 + --mount=type=bind,source=.git,target=.git \
151 + if [ "$USE_SCCACHE" = "1" ]; then \
152 + echo "Installing sccache..." \
153 + && curl -L -o sccache.tar.gz ${SCCACHE_DOWNLOAD_URL} \
154 + && tar -xzf sccache.tar.gz \
155 + && sudo mv sccache-v0.8.1-x86_64-unknown-linux-musl/sccache /usr/bin/sccache \
156 + && rm -rf sccache.tar.gz sccache-v0.8.1-x86_64-unknown-linux-musl \
157 + && if [ ! -z ${SCCACHE_ENDPOINT} ] ; then export SCCACHE_ENDPOINT=${SCCACHE_ENDPOINT} ; fi \
158 + && export SCCACHE_BUCKET=${SCCACHE_BUCKET_NAME} \
159 + && export SCCACHE_REGION=${SCCACHE_REGION_NAME} \
160 + && export SCCACHE_S3_NO_CREDENTIALS=${SCCACHE_S3_NO_CREDENTIALS} \
161 + && export SCCACHE_IDLE_TIMEOUT=0 \
162 + && export CMAKE_BUILD_TYPE=Release \
163 + && export VLLM_USE_PRECOMPILED="${VLLM_USE_PRECOMPILED}" \
164 + && export VLLM_DOCKER_BUILD_CONTEXT=1 \
165 + && sccache --show-stats \
166 + && python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38 \
167 + && sccache --show-stats; \
168 + fi
169 +
170 +ARG vllm_target_device="cpu"
171 +ENV VLLM_TARGET_DEVICE=${vllm_target_device}
172 +ENV CCACHE_DIR=/root/.cache/ccache
173 +RUN --mount=type=cache,target=/root/.cache/ccache \
174 + --mount=type=cache,target=/root/.cache/uv \
175 + --mount=type=bind,source=.git,target=.git \
176 + if [ "$USE_SCCACHE" != "1" ]; then \
177 + # Clean any existing CMake artifacts
178 + rm -rf .deps && \
179 + mkdir -p .deps && \
180 + export VLLM_USE_PRECOMPILED="${VLLM_USE_PRECOMPILED}" && \
181 + export VLLM_DOCKER_BUILD_CONTEXT=1 && \
182 + python3 setup.py bdist_wheel --dist-dir=dist --py-limited-api=cp38; \
183 + fi
184 +
185 +# Check the size of the wheel if RUN_WHEEL_CHECK is true
186 +COPY .buildkite/check-wheel-size.py check-wheel-size.py
187 +# sync the default value with .buildkite/check-wheel-size.py
188 +ARG VLLM_MAX_SIZE_MB=450
189 +ENV VLLM_MAX_SIZE_MB=$VLLM_MAX_SIZE_MB
190 +ARG RUN_WHEEL_CHECK=true
191 +RUN if [ "$RUN_WHEEL_CHECK" = "true" ]; then \
192 + python3 check-wheel-size.py dist; \
193 + else \
194 + echo "Skipping wheel size check."; \
195 + fi
196 +
197 ######################### TEST DEPS #########################
198 FROM base AS vllm-test-deps
199