main
yaml 1,281 lines 61.5 KB
Raw
1 # CUDA architecture lists — following PyTorch RELEASE.md
2 # (https://github.com/pytorch/pytorch/blob/main/RELEASE.md)
3 # SM86 included for broader Ampere coverage; SM89 for marlin fp8 support
4 # These requested arches are filtered by CMake's CUDA_SUPPORTED_ARCHS before
5 # per-kernel arch selection. Do not add +PTX here: top-level +PTX is stripped
6 # during that filtering, so kernels that need PTX must request it locally.
7 env:
8 # for CUDA >=13, sm_100+ targets have family specifiers (see CMakeLists.txt)
9 # so targets like 10.3 and 12.1 are automatically supported with this list
10 CUDA_ARCH_X86: "7.5 8.0 8.6 8.9 9.0 10.0 12.0"
11 # aarch64-only targets: Orin (8.7), Thor (11.0, CUDA 13+)
12 CUDA_ARCH_AARCH64: "8.0 8.7 8.9 9.0 10.0 11.0 12.0"
13
14 # for CUDA <13, we need to specify all needed targets
15 # some targets (10.3, 12.1) are skipped to limit the wheel size (< 500MB)
16 # please use CUDA 13 wheels or compile yourself on these new devices
17 CUDA_ARCH_X86_CU129: "7.5 8.0 8.6 8.9 9.0 10.0 12.0"
18 CUDA_ARCH_AARCH64_CU129: "8.0 8.7 8.9 9.0 10.0 12.0"
19
20 steps:
21 - input: "Provide Release version here"
22 id: input-release-version
23 fields:
24 - text: "What is the release version?"
25 key: release-version
26
27 - group: "Build CUDA 13.0 Python wheels"
28 key: "build-wheels"
29 steps:
30 - label: "Build wheel - aarch64 - CUDA 13.0"
31 depends_on: ~
32 id: build-wheel-arm64-cuda-13-0
33 agents:
34 queue: arm64_cpu_queue_release
35 commands:
36 - "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.2 --build-arg torch_cuda_arch_list=\"${CUDA_ARCH_AARCH64}\" --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda13.0-b8b5f17a7d9ccfc25bbc5cf17b3fcea12964a042 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
37 - "mkdir artifacts"
38 - "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'"
39 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
40 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
41 env:
42 DOCKER_BUILDKIT: "1"
43
44 - label: "Build wheel - x86_64 - CUDA 13.0"
45 depends_on: ~
46 id: build-wheel-x86-cuda-13-0
47 agents:
48 queue: cpu_queue_release
49 commands:
50 - "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.2 --build-arg torch_cuda_arch_list=\"${CUDA_ARCH_X86}\" --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
51 - "mkdir artifacts"
52 - "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'"
53 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
54 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
55 env:
56 DOCKER_BUILDKIT: "1"
57
58 - block: "Unblock to build additional Python wheels"
59 depends_on: ~
60 key: block-build-additional-wheels
61 if: build.env("NIGHTLY") != "1"
62
63 - group: "Build additional Python wheels"
64 key: "build-additional-wheels"
65 depends_on: block-build-additional-wheels
66 allow_dependency_failure: true
67 steps:
68 - label: "Build wheel - aarch64 - CUDA 12.9"
69 depends_on: ~
70 id: build-wheel-arm64-cuda-12-9
71 agents:
72 queue: arm64_cpu_queue_release
73 commands:
74 - "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 torch_cuda_arch_list=\"${CUDA_ARCH_AARCH64_CU129}\" --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
75 - "mkdir artifacts"
76 - "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'"
77 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
78 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
79 env:
80 DOCKER_BUILDKIT: "1"
81
82 - label: "Build wheel - aarch64 - CPU"
83 depends_on: ~
84 id: build-wheel-arm64-cpu
85 agents:
86 queue: arm64_cpu_queue_release
87 commands:
88 - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --build-arg VLLM_BUILD_ACL=ON --tag vllm-ci:build-image --target vllm-build --progress plain -f docker/Dockerfile.cpu ."
89 - "mkdir artifacts"
90 - "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'"
91 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
92 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
93 env:
94 DOCKER_BUILDKIT: "1"
95
96 - label: "Build wheel - macOS arm64 - CPU"
97 depends_on: ~
98 id: build-wheel-macos-arm64-cpu
99 agents:
100 queue: macmini
101 timeout_in_minutes: 90
102 commands:
103 - "bash .buildkite/scripts/build-macos-wheel.sh"
104 - "mkdir -p artifacts/transfer"
105 - "basename artifacts/dist/*.whl > artifacts/transfer/wheel.name"
106 - "shasum -a 256 artifacts/dist/*.whl > artifacts/transfer/wheel.sha256"
107 - "split -b 1m artifacts/dist/*.whl artifacts/transfer/wheel.part."
108 env:
109 BUILDKITE_ARTIFACT_UPLOAD_CONCURRENCY: "1"
110 BUILDKITE_NO_HTTP2: "true"
111 artifact_paths:
112 - "artifacts/transfer/*"
113
114 - label: "Upload wheel - macOS arm64 - CPU"
115 depends_on: build-wheel-macos-arm64-cpu
116 id: upload-wheel-macos-arm64-cpu
117 agents:
118 queue: small_cpu_queue_release
119 timeout_in_minutes: 15
120 commands:
121 - 'buildkite-agent artifact download "artifacts/transfer/*" .'
122 - "mkdir -p artifacts/dist artifacts/reassembled"
123 - 'wheel_name=$$(cat artifacts/transfer/wheel.name)'
124 - '[[ "$$wheel_name" =~ ^[A-Za-z0-9][A-Za-z0-9._+-]*\.whl$$ && "$$wheel_name" != *..* ]]'
125 - 'expected_sha=$$(awk ''{print $$1}'' artifacts/transfer/wheel.sha256)'
126 - '[[ "$$expected_sha" =~ ^[0-9a-f]{64}$$ ]]'
127 - 'cat artifacts/transfer/wheel.part.* > artifacts/reassembled/wheel'
128 - 'actual_sha=$$(shasum -a 256 artifacts/reassembled/wheel | awk ''{print $$1}'')'
129 - '[[ "$$actual_sha" == "$$expected_sha" ]]'
130 - 'mv artifacts/reassembled/wheel "artifacts/dist/$$wheel_name"'
131 - "aws sts get-caller-identity"
132 - "VLLM_WHEEL_PLATFORM=macos bash .buildkite/scripts/upload-nightly-wheels.sh"
133 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
134 plugins:
135 - aws-assume-role-with-web-identity#v1.6.0:
136 role-arn: arn:aws:iam::936637512419:role/vllm-release-macos-wheel-uploader
137 region: us-west-2
138
139 - label: "Build wheel - x86_64 - CUDA 12.9"
140 depends_on: ~
141 id: build-wheel-x86-cuda-12-9
142 agents:
143 queue: cpu_queue_release
144 commands:
145 - "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 torch_cuda_arch_list=\"${CUDA_ARCH_X86_CU129}\" --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
146 - "mkdir artifacts"
147 - "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'"
148 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
149 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
150 env:
151 DOCKER_BUILDKIT: "1"
152
153 - label: "Build wheel - x86_64 - CPU"
154 depends_on: ~
155 id: build-wheel-x86-cpu
156 agents:
157 queue: cpu_queue_release
158 commands:
159 - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --build-arg VLLM_CPU_X86=true --tag vllm-ci:build-image --target vllm-build --progress plain -f docker/Dockerfile.cpu ."
160 - "mkdir artifacts"
161 - "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'"
162 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
163 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
164 env:
165 DOCKER_BUILDKIT: "1"
166
167 - label: "Build wheel - x86_64 - XPU"
168 depends_on: ~
169 id: build-wheel-x86-xpu
170 agents:
171 queue: cpu_queue_release
172 commands:
173 - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --tag vllm-ci:build-image --target vllm-build --progress plain -f docker/Dockerfile.xpu ."
174 - "mkdir artifacts"
175 - "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'"
176 - "bash .buildkite/scripts/upload-nightly-wheels.sh"
177 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "s3://vllm-wheels/$$BUILDKITE_COMMIT/$(cd artifacts/dist && echo *.whl)" release-wheels'
178 env:
179 DOCKER_BUILDKIT: "1"
180
181 - label: "Publish and stage XPU Triton shim"
182 key: publish-xpu-triton-shim
183 depends_on: ~
184 agents:
185 queue: cpu_queue_release
186 commands:
187 - "bash .buildkite/scripts/xpu/publish-triton-shim.sh"
188
189 - label: "Generate and upload wheel indices"
190 key: generate-wheel-indices
191 depends_on: "build-wheels"
192 allow_dependency_failure: true
193 if: build.env("NIGHTLY") != "1"
194 agents:
195 queue: cpu_queue_release
196 commands:
197 - "UPDATE_VERSION_INDEX=0 bash .buildkite/scripts/generate-and-upload-nightly-index.sh"
198
199 - label: "Regenerate indices with additional wheels"
200 key: generate-additional-wheel-indices
201 depends_on:
202 - build-wheels
203 - build-additional-wheels
204 - generate-wheel-indices
205 allow_dependency_failure: true
206 agents:
207 queue: cpu_queue_release
208 commands:
209 - 'UPDATE_NIGHTLY_INDEX="$${NIGHTLY:-0}" bash .buildkite/scripts/generate-and-upload-nightly-index.sh'
210
211 - block: "Unblock to build release Docker images"
212 depends_on: ~
213 key: block-build-release-images
214 if: build.env("NIGHTLY") != "1"
215
216 - group: "Build release Docker images"
217 key: "build-release-images"
218 depends_on: block-build-release-images
219 allow_dependency_failure: true
220 steps:
221 - label: "Build release image - x86_64 - CUDA 13.0"
222 depends_on: ~
223 id: build-release-image-x86
224 agents:
225 queue: cpu_queue_release
226 commands:
227 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
228 - |
229 DOCKER_BUILDKIT=1 docker build \
230 $(bash .buildkite/scripts/docker-build-metadata-args.sh) \
231 --build-arg max_jobs=16 \
232 --build-arg USE_SCCACHE=1 \
233 --build-arg GIT_REPO_CHECK=1 \
234 --build-arg CUDA_VERSION=13.0.2 \
235 --build-arg torch_cuda_arch_list="${CUDA_ARCH_X86}" \
236 --build-arg INSTALL_KV_CONNECTORS=true \
237 --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 \
238 --target vllm-openai \
239 --progress plain \
240 -f docker/Dockerfile .
241 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)"
242 # re-tag to default image tag and push, just in case arm64 build fails
243 - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m) public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT"
244 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT"
245 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)" release-images'
246
247 - label: "Build release image - aarch64 - CUDA 13.0"
248 depends_on: ~
249 id: build-release-image-arm64
250 agents:
251 queue: arm64_cpu_queue_release
252 commands:
253 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
254 - |
255 DOCKER_BUILDKIT=1 docker build \
256 $(bash .buildkite/scripts/docker-build-metadata-args.sh) \
257 --build-arg max_jobs=16 \
258 --build-arg USE_SCCACHE=1 \
259 --build-arg GIT_REPO_CHECK=1 \
260 --build-arg CUDA_VERSION=13.0.2 \
261 --build-arg torch_cuda_arch_list="${CUDA_ARCH_AARCH64}" \
262 --build-arg INSTALL_KV_CONNECTORS=true \
263 --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda13.0-b8b5f17a7d9ccfc25bbc5cf17b3fcea12964a042 \
264 --target vllm-openai \
265 --progress plain \
266 -f docker/Dockerfile .
267 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)"
268 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)" release-images'
269
270 - label: "Build release image - x86_64 - CUDA 12.9"
271 depends_on: ~
272 id: build-release-image-x86-cuda-12-9
273 agents:
274 queue: cpu_queue_release
275 commands:
276 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
277 - |
278 DOCKER_BUILDKIT=1 docker build \
279 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu129) \
280 --build-arg max_jobs=16 \
281 --build-arg USE_SCCACHE=1 \
282 --build-arg GIT_REPO_CHECK=1 \
283 --build-arg CUDA_VERSION=12.9.1 \
284 --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 \
285 --build-arg torch_cuda_arch_list="${CUDA_ARCH_X86_CU129}" \
286 --build-arg INSTALL_KV_CONNECTORS=true \
287 --target vllm-openai \
288 --progress plain \
289 -f docker/Dockerfile .
290 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129"
291 # re-tag to default image tag and push, just in case arm64 build fails
292 - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129"
293 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129"
294 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129" release-images'
295
296 - label: "Build release image - aarch64 - CUDA 12.9"
297 depends_on: ~
298 id: build-release-image-arm64-cuda-12-9
299 agents:
300 queue: arm64_cpu_queue_release
301 commands:
302 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
303 - |
304 DOCKER_BUILDKIT=1 docker build \
305 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu129) \
306 --build-arg max_jobs=16 \
307 --build-arg USE_SCCACHE=1 \
308 --build-arg GIT_REPO_CHECK=1 \
309 --build-arg CUDA_VERSION=12.9.1 \
310 --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 \
311 --build-arg torch_cuda_arch_list="${CUDA_ARCH_AARCH64_CU129}" \
312 --build-arg INSTALL_KV_CONNECTORS=true \
313 --target vllm-openai \
314 --progress plain \
315 -f docker/Dockerfile .
316 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129"
317 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129" release-images'
318
319 - label: "Build release image - x86_64 - Rubin CUDA 13.4"
320 depends_on: ~
321 id: build-release-image-x86-rubin-cuda-13-4
322 if: build.env("NIGHTLY") == "1"
323 agents:
324 queue: cpu_queue_release
325 commands:
326 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
327 - |
328 DOCKER_BUILDKIT=1 docker buildx build --load \
329 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu134) \
330 --platform linux/amd64 \
331 --build-arg max_jobs=16 \
332 --build-arg USE_SCCACHE=1 \
333 --build-arg GIT_REPO_CHECK=1 \
334 --build-arg CUDA_VERSION=13.4 \
335 --build-arg torch_cuda_arch_list="${CUDA_ARCH_X86}" \
336 --build-arg INSTALL_KV_CONNECTORS=true \
337 --build-arg INSTALL_RUBIN_PRERELEASE=true \
338 --build-arg TRITON_INSTALL_FROM_SOURCE_REPO=https://github.com/triton-lang/triton.git \
339 --build-arg TRITON_INSTALL_FROM_SOURCE_REVISION=3f6e41132b5edf639bfb872ad73d4688765e08b8 \
340 --build-arg RUN_WHEEL_CHECK=false \
341 --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda13.4 \
342 --build-arg FINAL_BASE_IMAGE=nvcr.io/nvidia/cuda-dl-base:26.08-cuda13.4-devel-ubuntu24.04 \
343 --target vllm-openai \
344 --progress plain \
345 -f docker/Dockerfile .
346 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu134"
347 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu134" release-images'
348
349 - label: "Build release image - aarch64 - Rubin CUDA 13.4"
350 depends_on: ~
351 id: build-release-image-arm64-rubin-cuda-13-4
352 if: build.env("NIGHTLY") == "1"
353 agents:
354 queue: arm64_cpu_queue_release
355 commands:
356 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
357 - |
358 DOCKER_BUILDKIT=1 docker buildx build --load \
359 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu134) \
360 --platform linux/arm64 \
361 --build-arg max_jobs=16 \
362 --build-arg USE_SCCACHE=1 \
363 --build-arg GIT_REPO_CHECK=1 \
364 --build-arg CUDA_VERSION=13.4 \
365 --build-arg torch_cuda_arch_list="${CUDA_ARCH_AARCH64}" \
366 --build-arg INSTALL_KV_CONNECTORS=true \
367 --build-arg INSTALL_RUBIN_PRERELEASE=true \
368 --build-arg TRITON_INSTALL_FROM_SOURCE_REPO=https://github.com/triton-lang/triton.git \
369 --build-arg TRITON_INSTALL_FROM_SOURCE_REVISION=3f6e41132b5edf639bfb872ad73d4688765e08b8 \
370 --build-arg RUN_WHEEL_CHECK=false \
371 --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda13.4 \
372 --build-arg FINAL_BASE_IMAGE=nvcr.io/nvidia/cuda-dl-base:26.08-cuda13.4-devel-ubuntu24.04 \
373 --target vllm-openai \
374 --progress plain \
375 -f docker/Dockerfile .
376 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu134"
377 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu134" release-images'
378
379 - label: "Build release image - x86_64 - CUDA 13.0 - Ubuntu 24.04"
380 depends_on: ~
381 id: build-release-image-x86-ubuntu2404
382 agents:
383 queue: cpu_queue_release
384 commands:
385 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
386 - |
387 DOCKER_BUILDKIT=1 docker build \
388 $(bash .buildkite/scripts/docker-build-metadata-args.sh ubuntu2404) \
389 --build-arg max_jobs=16 \
390 --build-arg USE_SCCACHE=1 \
391 --build-arg GIT_REPO_CHECK=1 \
392 --build-arg CUDA_VERSION=13.0.2 \
393 --build-arg UBUNTU_VERSION=24.04 \
394 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 \
395 --build-arg torch_cuda_arch_list="${CUDA_ARCH_X86}" \
396 --build-arg INSTALL_KV_CONNECTORS=true \
397 --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda13.0-78e737ad29420ffc4800e677c51e2a852caf8359 \
398 --target vllm-openai \
399 --progress plain \
400 -f docker/Dockerfile .
401 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404"
402 - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404"
403 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404"
404 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404" release-images'
405
406 - label: "Build release image - aarch64 - CUDA 13.0 - Ubuntu 24.04"
407 depends_on: ~
408 id: build-release-image-arm64-ubuntu2404
409 agents:
410 queue: arm64_cpu_queue_release
411 commands:
412 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
413 - |
414 DOCKER_BUILDKIT=1 docker build \
415 $(bash .buildkite/scripts/docker-build-metadata-args.sh ubuntu2404) \
416 --build-arg max_jobs=16 \
417 --build-arg USE_SCCACHE=1 \
418 --build-arg GIT_REPO_CHECK=1 \
419 --build-arg CUDA_VERSION=13.0.2 \
420 --build-arg UBUNTU_VERSION=24.04 \
421 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 \
422 --build-arg torch_cuda_arch_list="${CUDA_ARCH_AARCH64}" \
423 --build-arg INSTALL_KV_CONNECTORS=true \
424 --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda13.0-b8b5f17a7d9ccfc25bbc5cf17b3fcea12964a042 \
425 --target vllm-openai \
426 --progress plain \
427 -f docker/Dockerfile .
428 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404"
429 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-ubuntu2404" release-images'
430
431 - label: "Build release image - x86_64 - CUDA 12.9 - Ubuntu 24.04"
432 depends_on: ~
433 id: build-release-image-x86-cuda-12-9-ubuntu2404
434 agents:
435 queue: cpu_queue_release
436 commands:
437 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
438 - |
439 DOCKER_BUILDKIT=1 docker build \
440 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu129-ubuntu2404) \
441 --build-arg max_jobs=16 \
442 --build-arg USE_SCCACHE=1 \
443 --build-arg GIT_REPO_CHECK=1 \
444 --build-arg CUDA_VERSION=12.9.1 \
445 --build-arg BUILD_BASE_IMAGE=pytorch/manylinux2_28-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 \
446 --build-arg UBUNTU_VERSION=24.04 \
447 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 \
448 --build-arg torch_cuda_arch_list="${CUDA_ARCH_X86_CU129}" \
449 --build-arg INSTALL_KV_CONNECTORS=true \
450 --target vllm-openai \
451 --progress plain \
452 -f docker/Dockerfile .
453 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129-ubuntu2404"
454 - "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129-ubuntu2404"
455 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129-ubuntu2404"
456 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129-ubuntu2404" release-images'
457
458 - label: "Build release image - aarch64 - CUDA 12.9 - Ubuntu 24.04"
459 depends_on: ~
460 id: build-release-image-arm64-cuda-12-9-ubuntu2404
461 agents:
462 queue: arm64_cpu_queue_release
463 commands:
464 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
465 - |
466 DOCKER_BUILDKIT=1 docker build \
467 $(bash .buildkite/scripts/docker-build-metadata-args.sh cu129-ubuntu2404) \
468 --build-arg max_jobs=16 \
469 --build-arg USE_SCCACHE=1 \
470 --build-arg GIT_REPO_CHECK=1 \
471 --build-arg CUDA_VERSION=12.9.1 \
472 --build-arg BUILD_BASE_IMAGE=pytorch/manylinuxaarch64-builder:cuda12.9-78e737ad29420ffc4800e677c51e2a852caf8359 \
473 --build-arg UBUNTU_VERSION=24.04 \
474 --build-arg GDRCOPY_OS_VERSION=Ubuntu24_04 \
475 --build-arg torch_cuda_arch_list="${CUDA_ARCH_AARCH64_CU129}" \
476 --build-arg INSTALL_KV_CONNECTORS=true \
477 --target vllm-openai \
478 --progress plain \
479 -f docker/Dockerfile .
480 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129-ubuntu2404"
481 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu129-ubuntu2404" release-images'
482
483 - label: ":docker: Build release image - x86_64 - XPU"
484 depends_on: ~
485 id: build-xpu-release-image
486 agents:
487 queue: cpu_queue_release
488 commands:
489 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
490 - |
491 DOCKER_BUILDKIT=1 docker build \
492 $(bash .buildkite/scripts/docker-build-metadata-args.sh xpu) \
493 --build-arg GIT_REPO_CHECK=1 \
494 --target vllm-openai \
495 --progress plain \
496 -f docker/Dockerfile.xpu .
497 - "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-xpu"
498 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-xpu" release-images'
499 env:
500 DOCKER_BUILDKIT: "1"
501
502 # CPU release images follow the CUDA pattern: a single build label per arch
503 # pushes the arch-specific commit tag to ECR, consumed by both the nightly
504 # DockerHub publish and the release publish step. The block auto-skips in
505 # nightly (if NIGHTLY != "1") so the build runs unattended, mirroring
506 # block-build-release-images.
507 - block: "Build release image for x86_64 CPU"
508 key: block-cpu-release-image-build
509 depends_on: ~
510 if: build.env("NIGHTLY") != "1"
511
512 - label: "Build release image - x86_64 - CPU"
513 key: build-cpu-release-image-x86
514 depends_on:
515 - block-cpu-release-image-build
516 allow_dependency_failure: true
517 agents:
518 queue: cpu_queue_release
519 commands:
520 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
521 - "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg GIT_REPO_CHECK=1 --build-arg VLLM_CPU_X86=true --tag public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:$BUILDKITE_COMMIT-x86_64 --progress plain --target vllm-openai -f docker/Dockerfile.cpu ."
522 - "docker push public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:$BUILDKITE_COMMIT-x86_64"
523 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-cpu-release-repo:$BUILDKITE_COMMIT-x86_64" release-images'
524 env:
525 DOCKER_BUILDKIT: "1"
526
527 - block: "Build release image for arm64 CPU"
528 key: block-arm64-cpu-release-image-build
529 depends_on: ~
530 if: build.env("NIGHTLY") != "1"
531
532 - label: "Build release image - arm64 - CPU"
533 key: build-cpu-release-image-arm64
534 depends_on:
535 - block-arm64-cpu-release-image-build
536 allow_dependency_failure: true
537 agents:
538 queue: arm64_cpu_queue_release
539 commands:
540 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
541 - "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_COMMIT-arm64 --progress plain --target vllm-openai -f docker/Dockerfile.cpu ."
542 - "docker push public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$BUILDKITE_COMMIT-arm64"
543 - 'bash .buildkite/scripts/annotate-build-artifact.sh "$$BUILDKITE_LABEL" "public.ecr.aws/q9t5s3a7/vllm-arm64-cpu-release-repo:$BUILDKITE_COMMIT-arm64" release-images'
544 env:
545 DOCKER_BUILDKIT: "1"
546
547 - group: "Publish release images"
548 key: "publish-release-images"
549 steps:
550 - label: "Create multi-arch manifest - CUDA 13.0"
551 depends_on:
552 - build-release-image-x86
553 - build-release-image-arm64
554 id: create-multi-arch-manifest
555 agents:
556 queue: small_cpu_queue_release
557 commands:
558 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
559 - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64 --amend"
560 - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT"
561 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: CUDA 13.0" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT" release-manifests'
562
563 - label: "Create multi-arch manifest - CUDA 12.9"
564 depends_on:
565 - build-release-image-x86-cuda-12-9
566 - build-release-image-arm64-cuda-12-9
567 id: create-multi-arch-manifest-cuda-12-9
568 agents:
569 queue: small_cpu_queue_release
570 commands:
571 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
572 - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-cu129 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-cu129 --amend"
573 - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129"
574 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: CUDA 12.9" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129" release-manifests'
575
576 - label: "Create multi-arch manifest - Rubin CUDA 13.4"
577 depends_on:
578 - build-release-image-x86-rubin-cuda-13-4
579 - build-release-image-arm64-rubin-cuda-13-4
580 id: create-multi-arch-manifest-rubin-cuda-13-4
581 if: build.env("NIGHTLY") == "1"
582 agents:
583 queue: small_cpu_queue_release
584 commands:
585 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
586 - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu134 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-cu134 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-cu134 --amend"
587 - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu134"
588 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: Rubin CUDA 13.4" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu134" release-manifests'
589
590 - label: "Create multi-arch manifest - CUDA 13.0 - Ubuntu 24.04"
591 depends_on:
592 - build-release-image-x86-ubuntu2404
593 - build-release-image-arm64-ubuntu2404
594 id: create-multi-arch-manifest-ubuntu2404
595 agents:
596 queue: small_cpu_queue_release
597 commands:
598 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
599 - "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"
600 - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404"
601 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: CUDA 13.0 Ubuntu 24.04" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-ubuntu2404" release-manifests'
602
603 - label: "Create multi-arch manifest - CUDA 12.9 - Ubuntu 24.04"
604 depends_on:
605 - build-release-image-x86-cuda-12-9-ubuntu2404
606 - build-release-image-arm64-cuda-12-9-ubuntu2404
607 id: create-multi-arch-manifest-cuda-12-9-ubuntu2404
608 agents:
609 queue: small_cpu_queue_release
610 commands:
611 - "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
612 - "docker manifest create public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-x86_64-cu129-ubuntu2404 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-aarch64-cu129-ubuntu2404 --amend"
613 - "docker manifest push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129-ubuntu2404"
614 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: CUDA 12.9 Ubuntu 24.04" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu129-ubuntu2404" release-manifests'
615
616 - label: "Create manifest - XPU"
617 depends_on:
618 - build-xpu-release-image
619 id: create-manifest-xpu
620 agents:
621 queue: small_cpu_queue_release
622 commands:
623 - "bash .buildkite/scripts/xpu/create-xpu-ecr-manifest.sh"
624 - 'bash .buildkite/scripts/annotate-build-artifact.sh "Manifest: XPU" "public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-xpu" release-manifests'
625
626 - label: "Publish nightly multi-arch image to DockerHub"
627 depends_on:
628 - create-multi-arch-manifest
629 if: build.env("NIGHTLY") == "1"
630 agents:
631 queue: small_cpu_queue_release
632 commands:
633 - "bash .buildkite/scripts/push-nightly-builds.sh"
634 # Clean up old nightly builds (keep only last 14)
635 - "bash .buildkite/scripts/cleanup-nightly-builds.sh"
636 plugins:
637 - docker-login#v3.0.0:
638 username: vllmbot
639 password-env: DOCKERHUB_TOKEN
640 env:
641 DOCKER_BUILDKIT: "1"
642 DOCKERHUB_USERNAME: "vllmbot"
643
644 - label: "Publish nightly multi-arch image to DockerHub - CUDA 12.9"
645 depends_on:
646 - create-multi-arch-manifest-cuda-12-9
647 if: build.env("NIGHTLY") == "1"
648 agents:
649 queue: small_cpu_queue_release
650 commands:
651 - "bash .buildkite/scripts/push-nightly-builds.sh cu129"
652 # Clean up old nightly builds (keep only last 14)
653 - "bash .buildkite/scripts/cleanup-nightly-builds.sh cu129-nightly-"
654 plugins:
655 - docker-login#v3.0.0:
656 username: vllmbot
657 password-env: DOCKERHUB_TOKEN
658 env:
659 DOCKER_BUILDKIT: "1"
660 DOCKERHUB_USERNAME: "vllmbot"
661
662 - label: "Publish nightly multi-arch Rubin image to DockerHub - CUDA 13.4"
663 depends_on:
664 - create-multi-arch-manifest-rubin-cuda-13-4
665 if: build.env("NIGHTLY") == "1"
666 agents:
667 queue: small_cpu_queue_release
668 commands:
669 - "bash .buildkite/scripts/push-nightly-builds.sh cu134"
670 # Clean up old nightly builds (keep only last 14)
671 - "bash .buildkite/scripts/cleanup-nightly-builds.sh cu134-nightly-"
672 plugins:
673 - docker-login#v3.0.0:
674 username: vllmbot
675 password-env: DOCKERHUB_TOKEN
676 env:
677 DOCKER_BUILDKIT: "1"
678 DOCKERHUB_USERNAME: "vllmbot"
679
680 - label: "Publish nightly CPU multi-arch image to DockerHub"
681 depends_on:
682 - build-cpu-release-image-x86
683 - build-cpu-release-image-arm64
684 if: build.env("NIGHTLY") == "1"
685 agents:
686 queue: small_cpu_queue_release
687 commands:
688 - "bash .buildkite/scripts/push-nightly-builds-cpu.sh"
689 # Clean up old nightly builds (keep only last 14)
690 - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly- vllm/vllm-openai-cpu"
691 plugins:
692 - docker-login#v3.0.0:
693 username: vllmbot
694 password-env: DOCKERHUB_TOKEN
695 env:
696 DOCKER_BUILDKIT: "1"
697 DOCKERHUB_USERNAME: "vllmbot"
698
699 # =============================================================================
700 # ROCm Release Pipeline (x86_64 only)
701 # =============================================================================
702 #
703 # vLLM version is determined by the Buildkite checkout (like CUDA pipeline).
704 # To build a specific version, trigger the build from that branch/tag.
705 #
706 # Environment variables for ROCm builds (set via Buildkite UI or schedule):
707 #
708 # Note: ROCm version is determined by BASE_IMAGE in docker/Dockerfile.rocm_base
709 #
710 # =============================================================================
711
712 - group: "Build ROCm Wheel / Image "
713 key: "build-rocm-wheel-image"
714 depends_on: ~
715 steps:
716 # ROCm Job 1: Build ROCm Base Wheels (with S3 caching)
717 - label: ":rocm: Build ROCm Base Image & Wheels"
718 id: build-rocm-base-wheels
719 depends_on: ~
720 agents:
721 queue: cpu_queue_release
722 commands:
723 - |
724 set -euo pipefail
725
726 # Generate cache key
727 CACHE_KEY=$$(.buildkite/scripts/cache-rocm-base-wheels.sh key)
728 ECR_CACHE_TAG="public.ecr.aws/q9t5s3a7/vllm-release-repo:$${CACHE_KEY}-rocm-base"
729
730 echo "========================================"
731 echo "ROCm Base Build Configuration"
732 echo "========================================"
733 echo " CACHE_KEY: $${CACHE_KEY}"
734 echo " ECR_CACHE_TAG: $${ECR_CACHE_TAG}"
735 echo "========================================"
736
737 # Login to ECR
738 aws ecr-public get-login-password --region us-east-1 | \
739 docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
740
741 IMAGE_EXISTS=false
742 WHEELS_EXIST=false
743
744 # Check ECR for Docker image
745
746 if docker manifest inspect "$${ECR_CACHE_TAG}" > /dev/null 2>&1; then
747 IMAGE_EXISTS=true
748 echo "ECR image cache HIT"
749 fi
750
751 # Check S3 for wheels
752 WHEEL_CACHE_STATUS=$(.buildkite/scripts/cache-rocm-base-wheels.sh check)
753 if [ "$${WHEEL_CACHE_STATUS}" = "hit" ]; then
754 WHEELS_EXIST=true
755 echo "S3 wheels cache HIT"
756 fi
757
758
759 # Scenario 1: Both cached (best case)
760 if [ "$${IMAGE_EXISTS}" = "true" ] && [ "$${WHEELS_EXIST}" = "true" ]; then
761 echo ""
762 echo "FULL CACHE HIT - Reusing both image and wheels"
763 echo ""
764
765 # Download wheels
766 .buildkite/scripts/cache-rocm-base-wheels.sh download
767
768 # Save ECR tag for downstream jobs
769 buildkite-agent meta-data set "rocm-base-image-tag" "$${ECR_CACHE_TAG}"
770
771 # Scenario 2: Full rebuild needed
772 else
773 echo ""
774 echo " CACHE MISS - Building from scratch..."
775 echo ""
776
777 # Build full base image and push to ECR
778 DOCKER_BUILDKIT=1 docker buildx build \
779 --file docker/Dockerfile.rocm_base \
780 --tag "$${ECR_CACHE_TAG}" \
781 --build-arg USE_SCCACHE=1 \
782 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
783 --build-arg SCCACHE_REGION_NAME=us-west-2 \
784 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
785 --push \
786 .
787
788 # Build wheel extraction stage
789 DOCKER_BUILDKIT=1 docker buildx build \
790 --file docker/Dockerfile.rocm_base \
791 --tag rocm-base-debs:$${BUILDKITE_BUILD_NUMBER} \
792 --target debs_wheel_release \
793 --build-arg USE_SCCACHE=1 \
794 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
795 --build-arg SCCACHE_REGION_NAME=us-west-2 \
796 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
797 --load \
798 .
799
800 # Extract and upload wheels
801 mkdir -p artifacts/rocm-base-wheels
802 cid=$(docker create rocm-base-debs:$${BUILDKITE_BUILD_NUMBER})
803 docker cp $${cid}:/app/debs/. artifacts/rocm-base-wheels/
804 docker rm $${cid}
805
806 .buildkite/scripts/cache-rocm-base-wheels.sh upload
807
808 # Cache base docker image to ECR
809 docker push "$${ECR_CACHE_TAG}"
810
811 buildkite-agent meta-data set "rocm-base-image-tag" "$${ECR_CACHE_TAG}"
812
813 echo ""
814 echo " Build complete - Image and wheels cached"
815 fi
816
817 artifact_paths:
818 - "artifacts/rocm-base-wheels/*.whl"
819 env:
820 DOCKER_BUILDKIT: "1"
821 S3_BUCKET: "vllm-wheels"
822
823 # ROCm Job 2: Build vLLM ROCm Wheel
824 - label: ":python: Build vLLM ROCm Wheel - x86_64"
825 id: build-rocm-vllm-wheel
826 depends_on:
827 - step: build-rocm-base-wheels
828 allow_failure: false
829 agents:
830 queue: cpu_queue_release
831 timeout_in_minutes: 180
832 commands:
833 # Download artifacts and prepare Docker image
834 - |
835 set -euo pipefail
836
837 # Ensure git tags are up-to-date (Buildkite's default fetch doesn't update tags)
838 # This fixes version detection when tags are moved/force-pushed
839 echo "Fetching latest tags from origin..."
840 git fetch --tags --force origin
841
842 # Log tag information for debugging version detection
843 echo "========================================"
844 echo "Git Tag Verification"
845 echo "========================================"
846 echo "Current HEAD: $(git rev-parse HEAD)"
847 echo "git describe --tags: $(git describe --tags 2>/dev/null || echo 'No tags found')"
848 echo ""
849 echo "Recent tags (pointing to commits near HEAD):"
850 git tag -l --sort=-creatordate | head -5
851 echo "setuptools_scm version detection:"
852 pip install -q setuptools_scm 2>/dev/null || true
853 python3 -c "import setuptools_scm; print(' Detected version:', setuptools_scm.get_version())" 2>/dev/null || echo " (setuptools_scm not available in this environment)"
854 echo "========================================"
855
856 # Download wheel artifacts from current build
857 echo "Downloading wheel artifacts from current build"
858 buildkite-agent artifact download "artifacts/rocm-base-wheels/*.whl" .
859
860 # Get ECR image tag from metadata (set by build-rocm-base-wheels)
861 ECR_IMAGE_TAG="$$(buildkite-agent meta-data get rocm-base-image-tag 2>/dev/null || echo '')"
862 if [ -z "$${ECR_IMAGE_TAG}" ]; then
863 echo "ERROR: rocm-base-image-tag metadata not found"
864 echo "This should have been set by the build-rocm-base-wheels job"
865 exit 1
866 fi
867
868 echo "Pulling base Docker image from ECR: $${ECR_IMAGE_TAG}"
869
870 # Login to ECR
871 aws ecr-public get-login-password --region us-east-1 | \
872 docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
873
874 # Pull base Docker image from ECR
875 docker pull "$${ECR_IMAGE_TAG}"
876
877 echo "Loaded base image: $${ECR_IMAGE_TAG}"
878
879 # Prepare base wheels for Docker build context
880 mkdir -p docker/context/base-wheels
881 touch docker/context/base-wheels/.keep
882 cp artifacts/rocm-base-wheels/*.whl docker/context/base-wheels/
883 echo "Base wheels for vLLM build:"
884 ls -lh docker/context/base-wheels/
885
886 echo "========================================"
887 echo "Building vLLM wheel with:"
888 echo " BUILDKITE_COMMIT: $${BUILDKITE_COMMIT}"
889 echo " BUILDKITE_BRANCH: $${BUILDKITE_BRANCH}"
890 echo " BASE_IMAGE: $${ECR_IMAGE_TAG}"
891 echo "========================================"
892
893 # Build vLLM wheel using local checkout (REMOTE_VLLM=0)
894 DOCKER_BUILDKIT=1 docker build \
895 --file docker/Dockerfile.rocm \
896 --target export_vllm_wheel_release \
897 --output type=local,dest=rocm-dist \
898 --build-arg BASE_IMAGE="$${ECR_IMAGE_TAG}" \
899 --build-arg REMOTE_VLLM=0 \
900 --build-arg GIT_REPO_CHECK=1 \
901 --build-arg USE_SCCACHE=1 \
902 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
903 --build-arg SCCACHE_REGION_NAME=us-west-2 \
904 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
905 .
906 echo "Built vLLM wheel:"
907 ls -lh rocm-dist/*.whl
908 # Copy wheel to artifacts directory
909 mkdir -p artifacts/rocm-vllm-wheel
910 cp rocm-dist/*.whl artifacts/rocm-vllm-wheel/
911 echo "Final vLLM wheel:"
912 ls -lh artifacts/rocm-vllm-wheel/
913 artifact_paths:
914 - "artifacts/rocm-vllm-wheel/*.whl"
915 env:
916 DOCKER_BUILDKIT: "1"
917 S3_BUCKET: "vllm-wheels"
918
919 # ROCm Job 3: Upload Wheels to S3
920 - label: ":s3: Upload ROCm Wheels to S3"
921 id: upload-rocm-wheels
922 depends_on:
923 - step: build-rocm-vllm-wheel
924 allow_failure: false
925 agents:
926 queue: cpu_queue_release
927 timeout_in_minutes: 60
928 commands:
929 # Download all wheel artifacts and run upload
930 - |
931 set -euo pipefail
932
933 # Download artifacts from current build
934 echo "Downloading artifacts from current build"
935 buildkite-agent artifact download "artifacts/rocm-base-wheels/*.whl" .
936 buildkite-agent artifact download "artifacts/rocm-vllm-wheel/*.whl" .
937
938 # # Run upload script
939 bash .buildkite/scripts/upload-rocm-wheels.sh
940 env:
941 DOCKER_BUILDKIT: "1"
942 S3_BUCKET: "vllm-wheels"
943
944 # ROCm Job 4: Annotate ROCm Wheel Release
945 - label: ":memo: Annotate ROCm wheel release"
946 id: annotate-rocm-release
947 depends_on:
948 - upload-rocm-wheels
949 agents:
950 queue: cpu_queue_release
951 commands:
952 - "bash .buildkite/scripts/annotate-rocm-release.sh"
953 env:
954 S3_BUCKET: "vllm-wheels"
955
956 # ROCm Job 5: Generate Root Index for ROCm Wheels (for release only)
957 # This is the job to create https://wheels.vllm.ai/rocm/ index allowing
958 # users to install with `uv pip install vllm --extra-index-url https://wheels.vllm.ai/rocm/`
959 - block: "Generate Root Index for ROCm Wheels for Release"
960 key: block-generate-root-index-rocm-wheels
961 depends_on: upload-rocm-wheels
962
963 - label: ":package: Generate Root Index for ROCm Wheels for Release"
964 depends_on: block-generate-root-index-rocm-wheels
965 id: generate-root-index-rocm-wheels
966 agents:
967 queue: cpu_queue_release
968 commands:
969 - "bash tools/vllm-rocm/generate-rocm-wheels-root-index.sh"
970 env:
971 S3_BUCKET: "vllm-wheels"
972 VARIANT: "rocm723"
973
974 # ROCm Job 6: Build ROCm Release Docker Image
975 - label: ":docker: Build release image - x86_64 - ROCm"
976 id: build-rocm-release-image
977 depends_on:
978 - step: block-build-release-images
979 allow_failure: true
980 - step: build-rocm-base-wheels
981 allow_failure: false
982 agents:
983 queue: cpu_queue_release
984 timeout_in_minutes: 60
985 commands:
986 - |
987 set -euo pipefail
988
989 # Login to ECR
990 aws ecr-public get-login-password --region us-east-1 | \
991 docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
992
993 # Get ECR image tag from metadata (set by build-rocm-base-wheels)
994 ECR_IMAGE_TAG="$$(buildkite-agent meta-data get rocm-base-image-tag 2>/dev/null || echo '')"
995 if [ -z "$${ECR_IMAGE_TAG}" ]; then
996 echo "ERROR: rocm-base-image-tag metadata not found"
997 echo "This should have been set by the build-rocm-base-wheels job"
998 exit 1
999 fi
1000
1001 echo "Pulling base Docker image from ECR: $${ECR_IMAGE_TAG}"
1002
1003 # Pull base Docker image from ECR
1004 docker pull "$${ECR_IMAGE_TAG}"
1005
1006 echo "Loaded base image: $${ECR_IMAGE_TAG}"
1007
1008 # Pass the base image ECR tag to downstream steps (nightly publish)
1009 buildkite-agent meta-data set "rocm-base-ecr-tag" "$${ECR_IMAGE_TAG}"
1010
1011 echo "========================================"
1012 echo "Building vLLM ROCm release image with:"
1013 echo " BASE_IMAGE: $${ECR_IMAGE_TAG}"
1014 echo " BUILDKITE_COMMIT: $${BUILDKITE_COMMIT}"
1015 echo "========================================"
1016
1017 # Build vLLM ROCm release image using cached base
1018 DOCKER_BUILDKIT=1 docker build \
1019 --build-arg max_jobs=16 \
1020 --build-arg BASE_IMAGE="$${ECR_IMAGE_TAG}" \
1021 --build-arg USE_SCCACHE=1 \
1022 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
1023 --build-arg SCCACHE_REGION_NAME=us-west-2 \
1024 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
1025 --build-arg INSTALL_LMCACHE=true \
1026 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$${BUILDKITE_COMMIT}-rocm \
1027 --target vllm-openai \
1028 --progress plain \
1029 -f docker/Dockerfile.rocm .
1030
1031 # Push to ECR
1032 docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$${BUILDKITE_COMMIT}-rocm
1033
1034 echo ""
1035 echo " Successfully built and pushed ROCm release image"
1036 echo " Image: public.ecr.aws/q9t5s3a7/vllm-release-repo:$${BUILDKITE_COMMIT}-rocm"
1037 echo ""
1038 env:
1039 DOCKER_BUILDKIT: "1"
1040 S3_BUCKET: "vllm-wheels"
1041
1042 - label: "Publish nightly XPU image to DockerHub"
1043 depends_on:
1044 - create-manifest-xpu
1045 if: build.env("NIGHTLY") == "1"
1046 agents:
1047 queue: small_cpu_queue_release
1048 commands:
1049 - "bash .buildkite/scripts/xpu/push-nightly-builds-xpu.sh"
1050 - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly- vllm/vllm-openai-xpu"
1051 plugins:
1052 - docker-login#v3.0.0:
1053 username: vllmbot
1054 password-env: DOCKERHUB_TOKEN
1055 env:
1056 DOCKER_BUILDKIT: "1"
1057 DOCKERHUB_USERNAME: "vllmbot"
1058
1059 - label: "Publish nightly ROCm image to DockerHub"
1060 depends_on:
1061 - build-rocm-release-image
1062 if: build.env("NIGHTLY") == "1"
1063 agents:
1064 queue: small_cpu_queue_release
1065 commands:
1066 - "bash .buildkite/scripts/push-nightly-builds-rocm.sh"
1067 # Clean up old nightly builds (keep only last 14)
1068 - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly- vllm/vllm-openai-rocm"
1069 - "bash .buildkite/scripts/cleanup-nightly-builds.sh base-nightly- vllm/vllm-openai-rocm"
1070 plugins:
1071 - docker-login#v3.0.0:
1072 username: vllmbot
1073 password-env: DOCKERHUB_TOKEN
1074 env:
1075 DOCKER_BUILDKIT: "1"
1076 DOCKERHUB_USERNAME: "vllmbot"
1077
1078 # =============================================================================
1079 # ROCk Release Pipeline (x86_64 only)
1080 # =============================================================================
1081 #
1082 # Same shape as the ROCm pipeline above (Jobs 1 and 6 only), but built from
1083 # docker/Dockerfile.rock_base and docker/Dockerfile.rock, which install the
1084 # ROCm SDK from TheRock wheels instead of the ROCm apt repos.
1085 #
1086 # Note: ROCm SDK version is determined by ROCM_SDK_VERSION in
1087 # docker/Dockerfile.rock_base
1088 #
1089 # =============================================================================
1090
1091 - group: "Build ROCk Image"
1092 key: "build-rock-image"
1093 depends_on: ~
1094 steps:
1095 # ROCk Job 1: Build ROCk Base Image (with ECR caching)
1096 - label: ":rocm: Build ROCk Base Image"
1097 id: build-rock-base-image
1098 depends_on: ~
1099 agents:
1100 queue: cpu_queue_release
1101 timeout_in_minutes: 360
1102 commands:
1103 - |
1104 set -euo pipefail
1105
1106 # The SDK version, torch wheels and component branches all live in
1107 # the Dockerfile, so its hash is the cache key.
1108 CACHE_KEY=$$(sha256sum docker/Dockerfile.rock_base | cut -c1-16)
1109 ECR_CACHE_TAG="public.ecr.aws/q9t5s3a7/vllm-release-repo:$${CACHE_KEY}-rock-base"
1110
1111 echo "========================================"
1112 echo "ROCk Base Build Configuration"
1113 echo "========================================"
1114 echo " CACHE_KEY: $${CACHE_KEY}"
1115 echo " ECR_CACHE_TAG: $${ECR_CACHE_TAG}"
1116 echo "========================================"
1117
1118 # Login to ECR
1119 aws ecr-public get-login-password --region us-east-1 | \
1120 docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
1121
1122 if docker manifest inspect "$${ECR_CACHE_TAG}" > /dev/null 2>&1; then
1123 echo "ECR image cache HIT"
1124 else
1125 echo "CACHE MISS - Building from scratch..."
1126
1127 DOCKER_BUILDKIT=1 docker buildx build \
1128 --file docker/Dockerfile.rock_base \
1129 --tag "$${ECR_CACHE_TAG}" \
1130 --build-arg USE_SCCACHE=1 \
1131 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
1132 --build-arg SCCACHE_REGION_NAME=us-west-2 \
1133 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
1134 --push \
1135 .
1136 fi
1137
1138 # Save ECR tag for downstream jobs
1139 buildkite-agent meta-data set "rock-base-image-tag" "$${ECR_CACHE_TAG}"
1140 env:
1141 DOCKER_BUILDKIT: "1"
1142
1143 # ROCk Job 2: Build ROCk Release Docker Image
1144 - label: ":docker: Build release image - x86_64 - ROCk"
1145 id: build-rock-release-image
1146 depends_on:
1147 - step: block-build-release-images
1148 allow_failure: true
1149 - step: build-rock-base-image
1150 allow_failure: false
1151 agents:
1152 queue: cpu_queue_release
1153 timeout_in_minutes: 180
1154 commands:
1155 - |
1156 set -euo pipefail
1157
1158 # Login to ECR
1159 aws ecr-public get-login-password --region us-east-1 | \
1160 docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7
1161
1162 ECR_IMAGE_TAG="$$(buildkite-agent meta-data get rock-base-image-tag 2>/dev/null || echo '')"
1163 if [ -z "$${ECR_IMAGE_TAG}" ]; then
1164 echo "ERROR: rock-base-image-tag metadata not found"
1165 echo "This should have been set by the build-rock-base-image job"
1166 exit 1
1167 fi
1168
1169 docker pull "$${ECR_IMAGE_TAG}"
1170
1171 # Pass the base image ECR tag to downstream steps (nightly publish)
1172 buildkite-agent meta-data set "rock-base-ecr-tag" "$${ECR_IMAGE_TAG}"
1173
1174 echo "========================================"
1175 echo "Building vLLM ROCk release image with:"
1176 echo " BASE_IMAGE: $${ECR_IMAGE_TAG}"
1177 echo " BUILDKITE_COMMIT: $${BUILDKITE_COMMIT}"
1178 echo "========================================"
1179
1180 DOCKER_BUILDKIT=1 docker build \
1181 --build-arg max_jobs=16 \
1182 --build-arg BASE_IMAGE="$${ECR_IMAGE_TAG}" \
1183 --build-arg USE_SCCACHE=1 \
1184 --build-arg SCCACHE_BUCKET_NAME=vllm-build-sccache \
1185 --build-arg SCCACHE_REGION_NAME=us-west-2 \
1186 --build-arg SCCACHE_S3_NO_CREDENTIALS=0 \
1187 --build-arg INSTALL_LMCACHE=true \
1188 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$${BUILDKITE_COMMIT}-rock \
1189 --target vllm-openai \
1190 --progress plain \
1191 -f docker/Dockerfile.rock .
1192
1193 docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$${BUILDKITE_COMMIT}-rock
1194 env:
1195 DOCKER_BUILDKIT: "1"
1196
1197 - label: "Publish nightly ROCk image to DockerHub"
1198 depends_on:
1199 - build-rock-release-image
1200 if: build.env("NIGHTLY") == "1"
1201 agents:
1202 queue: small_cpu_queue_release
1203 commands:
1204 - "bash .buildkite/scripts/push-nightly-builds-rocm.sh rock rocm100"
1205 # Clean up old nightly builds (keep only last 14)
1206 - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly-rocm100- vllm/vllm-openai-rocm"
1207 - "bash .buildkite/scripts/cleanup-nightly-builds.sh base-nightly-rocm100- vllm/vllm-openai-rocm"
1208 plugins:
1209 - docker-login#v3.0.0:
1210 username: vllmbot
1211 password-env: DOCKERHUB_TOKEN
1212 env:
1213 DOCKER_BUILDKIT: "1"
1214 DOCKERHUB_USERNAME: "vllmbot"
1215
1216 # =============================================================================
1217 # Publish to DockerHub and PyPI (at the end so all builds complete first)
1218 # =============================================================================
1219
1220 - block: "Publish release images to DockerHub"
1221 key: block-publish-release-images
1222 depends_on:
1223 - create-multi-arch-manifest
1224 - create-multi-arch-manifest-cuda-12-9
1225 - create-multi-arch-manifest-ubuntu2404
1226 - create-multi-arch-manifest-cuda-12-9-ubuntu2404
1227 - create-manifest-xpu
1228 - build-rocm-release-image
1229 - input-release-version
1230 # Wait for CPU builds if their block steps were unblocked, so publish
1231 # doesn't race the in-progress CPU build. allow_failure lets publish
1232 # proceed when the operator legitimately leaves the CPU block steps
1233 # unblocked or the CPU build fails.
1234 - step: build-cpu-release-image-x86
1235 allow_failure: true
1236 - step: build-cpu-release-image-arm64
1237 allow_failure: true
1238
1239 - label: "Publish {{matrix}} release images to DockerHub"
1240 depends_on:
1241 - block-publish-release-images
1242 key: publish-release-images-dockerhub
1243 agents:
1244 queue: small_cpu_queue_release
1245 commands:
1246 - "bash .buildkite/scripts/publish-release-images.sh {{matrix}}"
1247 matrix:
1248 - "cuda-13-0"
1249 - "cuda-12-9"
1250 - "cuda-13-0-ubuntu-24-04"
1251 - "cuda-12-9-ubuntu-24-04"
1252 - "rocm"
1253 - "xpu"
1254 - "cpu"
1255 plugins:
1256 - docker-login#v3.0.0:
1257 username: vllmbot
1258 password-env: DOCKERHUB_TOKEN
1259 env:
1260 DOCKER_BUILDKIT: "1"
1261 DOCKERHUB_USERNAME: "vllmbot"
1262
1263 - group: "Publish wheels"
1264 key: "publish-wheels"
1265 steps:
1266 - block: "Confirm update release wheels to PyPI (experimental, use with caution)?"
1267 key: block-upload-release-wheels
1268 depends_on:
1269 - input-release-version
1270 - build-wheels
1271 - build-additional-wheels
1272 - generate-additional-wheel-indices
1273
1274 - label: "Upload release wheels to PyPI"
1275 depends_on:
1276 - block-upload-release-wheels
1277 id: upload-release-wheels
1278 agents:
1279 queue: small_cpu_queue_release
1280 commands:
1281 - "bash .buildkite/scripts/upload-release-wheels-pypi.sh"