[ROCm][CI] Bump ROCk base to ROCm 10.0 (#55246)
Signed-off-by: Rohan Potdar <rohan.potdar@amd.com> Co-authored-by: Randall Smith <Randall.Smith@amd.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Rohan Potdar committed
Sep 3, 2026 at 22:38 UTC
156050598eea0bb1124b9c106b22ba4a8c56f82a
2 files changed
+26
-53
.buildkite/release-pipeline.yaml
+3
-3
@@ -1085,10 +1085,10 @@ steps:
1085
agents:
1086
queue: small_cpu_queue_release
1087
commands:
1088
- - "bash .buildkite/scripts/push-nightly-builds-rocm.sh rock rocm714"
1088
+ - "bash .buildkite/scripts/push-nightly-builds-rocm.sh rock rocm100"
1089
# Clean up old nightly builds (keep only last 14)
1090
- - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly-rocm714- vllm/vllm-openai-rocm"
1091
- - "bash .buildkite/scripts/cleanup-nightly-builds.sh base-nightly-rocm714- vllm/vllm-openai-rocm"
1090
+ - "bash .buildkite/scripts/cleanup-nightly-builds.sh nightly-rocm100- vllm/vllm-openai-rocm"
1091
+ - "bash .buildkite/scripts/cleanup-nightly-builds.sh base-nightly-rocm100- vllm/vllm-openai-rocm"
1092
plugins:
1093
- docker-login#v3.0.0:
1094
username: vllmbot
docker/Dockerfile.rock_base
+23
-50
@@ -1,13 +1,12 @@
1
ARG BASE_IMAGE=ubuntu:22.04
2
ARG PYTHON_VERSION=3.12
3
-ARG TORCH_VERSION=2.12.0+rocm7.14.0
4
-ARG TORCHVISION_VERSION=0.27.0+rocm7.14.0
5
-ARG TORCHAUDIO_VERSION=2.11.0+rocm7.14.0
6
-ARG TRITON_BRANCH="f0b55c07da61c71775bef6d1a15ebf846430ac75" # release/internal/3.7.x as of 08/13
7
-ARG TRITON_REPO="https://github.com/ROCm/triton.git"
3
+ARG TORCH_VERSION=2.12.0+rocm10.0.0
4
+ARG TORCHVISION_VERSION=0.27.0+rocm10.0.0
5
+ARG TORCHAUDIO_VERSION=2.11.0+rocm10.0.0
6
+ARG TRITON_VERSION=3.8.0+git4cff872c.rocm10.0.0
7
ARG FA_BRANCH="0e60e394"
8
ARG FA_REPO="https://github.com/Dao-AILab/flash-attention.git"
10
-ARG AITER_BRANCH="v0.1.19"
9
+ARG AITER_BRANCH="v0.1.21.post1"
10
ARG AITER_REPO="https://github.com/ROCm/aiter.git"
11
ARG MORI_BRANCH="f95cd5e0ca7b730f92f9ffdfb358484d6965d9f7" # TheRock compatible v1.1.0
12
ARG MORI_REPO="https://github.com/ROCm/mori.git"
@@ -15,9 +14,9 @@ ARG MORI_REPO="https://github.com/ROCm/mori.git"
14
15
# TheRock configuration
16
ARG SITE_PACKAGES=/usr/local/lib/python${PYTHON_VERSION}/dist-packages
18
-ARG ROCM_RELEASE_WHEELS_MULTIARCH_URL="https://repo.amd.com/rocm/whl-multi-arch/" # For pre-built GPU images, packages, etc.
19
-ARG ROCM_NIGHTLY_WHEELS_MULTIARCH_URL="https://rocm.nightlies.amd.com/whl-multi-arch/" # For torch, triton, etc. wheels with latest fixes.
20
-ARG ROCM_SDK_VERSION=7.14.0
17
+ARG ROCM_RELEASE_WHEELS_MULTIARCH_URL="https://stable.repo.amd.com/rocm/whl-next/" # For pre-built GPU images, packages, etc.
18
+ARG ROCM_NIGHTLY_WHEELS_MULTIARCH_URL="https://nightly.repo.amd.com/rocm/whl-next/" # For torch, triton, etc. wheels with latest fixes.
19
+ARG ROCM_SDK_VERSION=10.0.0
20
21
# Build configuration
22
ARG PYTORCH_ROCM_ARCH="gfx90a;gfx942;gfx950;gfx1100;gfx1101;gfx1200;gfx1201;gfx1150;gfx1151"
@@ -89,16 +88,19 @@ RUN pip install --index-url ${ROCM_RELEASE_WHEELS_MULTIARCH_URL} \
88
&& rocm-sdk init
89
90
# Install PyTorch wheels (nightly for latest torch, release as fallback)
91
+# Triton is pinned here rather than left to torch's Requires-Dist, so a wheel bump that
92
+# moves the triton torch wants fails resolution instead of quietly changing compilers.
93
ARG TORCH_VERSION
94
ARG TORCHAUDIO_VERSION
95
ARG TORCHVISION_VERSION
96
+ARG TRITON_VERSION
97
RUN pip install \
98
--index-url ${ROCM_RELEASE_WHEELS_MULTIARCH_URL} \
99
--extra-index-url ${ROCM_NIGHTLY_WHEELS_MULTIARCH_URL} \
100
"torch==${TORCH_VERSION}" \
101
"torchaudio==${TORCHAUDIO_VERSION}" \
100
- "torchvision==${TORCHVISION_VERSION}"
101
-RUN python3 -c "import torch; print(f'torch={torch.__version__}, hip={torch.version.hip}')"
102
+ "torchvision==${TORCHVISION_VERSION}" \
103
+ "triton==${TRITON_VERSION}"
104
105
# Install the AMD-compiled device kernels corresponding to PYTORCH_ROCM_ARCH:
106
@@ -185,20 +187,6 @@ ENV SCCACHE_S3_NO_CREDENTIALS=${USE_SCCACHE:+${SCCACHE_S3_NO_CREDENTIALS}}
187
ENV SCCACHE_IDLE_TIMEOUT=${USE_SCCACHE:+0}
188
189
188
-###
189
-### Triton Build
190
-###
191
-FROM base AS build_triton
192
-ARG TRITON_BRANCH
193
-ARG TRITON_REPO
194
-RUN git clone ${TRITON_REPO}
195
-RUN cd triton \
196
- && git checkout ${TRITON_BRANCH} \
197
- && if [ ! -f setup.py ]; then cd python; fi \
198
- && python3 setup.py bdist_wheel --dist-dir=dist \
199
- && mkdir -p /app/install && cp dist/*.whl /app/install
200
-
201
-
190
###
191
### MORI Build
192
###
@@ -245,8 +233,8 @@ RUN git clone --recursive --branch ${AITER_BRANCH} ${AITER_REPO}
233
RUN cd aiter \
234
&& git submodule update --init --recursive \
235
&& pip install -r requirements.txt
248
-# AITER_USE_SYSTEM_TRITON keeps setup.py off the index triton, which would
249
-# otherwise displace the one we built.
236
+# AITER_USE_SYSTEM_TRITON keeps setup.py from resolving its own triton, which would
237
+# displace the pinned one already installed in base.
238
RUN pip install pyyaml && cd aiter \
239
&& if [ "$USE_SCCACHE" = "1" ]; then \
240
export HIP_CLANG_PATH=/opt/sccache-wrappers \
@@ -262,12 +250,10 @@ RUN mkdir -p /app/install && cp /app/aiter/dist/*.whl /app/install
250
### Final Build
251
###
252
265
-# Wheel release stage -
253
+# Wheel release stage -
254
# only includes dependencies used by wheel release pipeline
255
FROM base AS debs_wheel_release
256
RUN mkdir /app/debs
269
-RUN --mount=type=bind,from=build_triton,src=/app/install/,target=/install \
270
- cp /install/*.whl /app/debs
257
RUN --mount=type=bind,from=build_fa,src=/app/install/,target=/install \
258
cp /install/*.whl /app/debs
259
RUN --mount=type=bind,from=build_aiter,src=/app/install/,target=/install \
@@ -275,8 +261,6 @@ RUN --mount=type=bind,from=build_aiter,src=/app/install/,target=/install \
261
262
FROM base AS debs
263
RUN mkdir /app/debs
278
-RUN --mount=type=bind,from=build_triton,src=/app/install/,target=/install \
279
- cp /install/*.whl /app/debs
264
RUN --mount=type=bind,from=build_fa,src=/app/install/,target=/install \
265
cp /install/*.whl /app/debs
266
RUN --mount=type=bind,from=build_aiter,src=/app/install/,target=/install \
@@ -286,22 +270,15 @@ RUN --mount=type=bind,from=build_mori,src=/app/install/,target=/install \
270
271
FROM base AS final
272
289
-# Remove the torch wheel's Requires-Dist: triton entry in METADATA and the SHA
290
-# hash (its optional) from RECORD. These will cause Python to reinstall
291
-# Triton and a constraints file can't fix it. This doesn't exist for source
292
-# builds, so it wasn't needed there.
293
-RUN TORCH_DIST_INFO=$(ls -d ${SITE_PACKAGES}/torch-*.dist-info) \
294
- && grep -q '^Requires-Dist: triton' "$TORCH_DIST_INFO/METADATA" \
295
- && sed -i '/^Requires-Dist: triton/d' "$TORCH_DIST_INFO/METADATA" \
296
- && sed -i "s|^\(${TORCH_DIST_INFO##*/}/METADATA\),.*|\1,,|" "$TORCH_DIST_INFO/RECORD"
297
-
298
-# Other wheels first, so they resolve against the index triton. Ours goes in last
299
-# with --no-deps, where it can't pull the resolver anywhere.
273
+# torch 2.12 implicitly attaches rocprofiler-sdk; its queue interposition hangs at HSA
274
+# teardown, so disable it. TODO: drop once ROCm's stock rocprofiler carries the fix.
275
+ENV ROCPROFILER_QUEUE_INTERPOSITION=0
276
+
277
+ARG TRITON_VERSION
278
RUN --mount=type=bind,from=debs,src=/app/debs,target=/install \
301
- pip install $(ls /install/*.whl | grep -v '/triton-') \
302
- && pip install --no-deps --force-reinstall /install/triton-*.whl \
303
- # With the pin gone this must be clean, so any complaint is real.
279
+ pip install /install/*.whl \
280
&& ! pip check 2>&1 | grep -iE '^(torch|triton) ' \
281
+ && test "$(pip show triton | awk '/^Version:/ {print $2}')" = "${TRITON_VERSION}" \
282
# Create a constraints file to protect the versions we need, especially
283
# triton, requirements will try to reinstall repeatedly.
284
&& pip list --format=freeze \
@@ -321,8 +298,6 @@ ARG TORCHAUDIO_VERSION
298
ARG TORCHVISION_VERSION
299
ARG PYTORCH_ROCM_ARCH
300
ARG AITER_ROCM_ARCH
324
-ARG TRITON_BRANCH
325
-ARG TRITON_REPO
301
ARG FA_BRANCH
302
ARG FA_REPO
303
ARG AITER_BRANCH
@@ -338,8 +313,6 @@ RUN echo "BASE_IMAGE: ${BASE_IMAGE}" > /app/versions.txt \
313
&& echo "TORCHVISION_VERSION: ${TORCHVISION_VERSION}" >> /app/versions.txt \
314
&& echo "PYTORCH_ROCM_ARCH: ${PYTORCH_ROCM_ARCH}" >> /app/versions.txt \
315
&& echo "AITER_ROCM_ARCH: ${AITER_ROCM_ARCH}" >> /app/versions.txt \
341
- && echo "TRITON_BRANCH: ${TRITON_BRANCH}" >> /app/versions.txt \
342
- && echo "TRITON_REPO: ${TRITON_REPO}" >> /app/versions.txt \
316
&& echo "FA_BRANCH: ${FA_BRANCH}" >> /app/versions.txt \
317
&& echo "FA_REPO: ${FA_REPO}" >> /app/versions.txt \
318
&& echo "AITER_BRANCH: ${AITER_BRANCH}" >> /app/versions.txt \