Skip to content

[CI][ROCm] Add opt-in TheRock builds for AMD CI - #56351

Merged
AndreasKaratzas merged 7 commits into
mainfrom
ci/rock-opt-in
Sep 16, 2026
Merged

AndreasKaratzas merged 7 commits into
mainfrom
ci/rock-opt-in

Conversation

@AndreasKaratzas

@AndreasKaratzas AndreasKaratzas commented Sep 10, 2026 •

Copy link
Copy Markdown
Member
  • Add CI_ROCM_DOCKERFILE_BASE and CI_ROCM_DOCKERFILE to select alternative Dockerfiles in the normal AMD Buildkite pipeline.
  • Reuse existing image builds, wheel artifacts, and test groups, with NIGHTLY=1 enabling the full configured nightly suite.
  • Keep native and Docker-based tests on the selected runtime, using the full CI image when custom base-image metadata is missing.
  • Adapt dependency builds and smoke checks for Rock while protecting standard ROCm stable tags and registry caches.

For a Rock nightly, set these Buildkite build environment variables:

CI_ROCM_DOCKERFILE_BASE=docker/Dockerfile.rock_base
CI_ROCM_DOCKERFILE=docker/Dockerfile.rock
NIGHTLY=1

The regular ROCm Dockerfiles remain the defaults. This extends the existing AMD CI build path in this PR and lets other compatible Dockerfile pairs use the same maintained jobs.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
@mergify mergify Bot added ci/build rocm Related to AMD ROCm labels Sep 10, 2026
@github-project-automation github-project-automation Bot moved this to Todo in AMD Sep 10, 2026
@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/amd-ci run nightly

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite AMD CI #12855 for commit 582487c55f3d.

@AndreasKaratzas
AndreasKaratzas marked this pull request as ready for review September 10, 2026 22:32

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

AndreasKaratzas and others added 2 commits September 11, 2026 00:21
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #88220 for commit df17e6945b65.

pytorch_arg="$(extract_arg_default PYTORCH_BRANCH)"
pytorch_vision_arg="$(extract_arg_default PYTORCH_VISION_BRANCH)"
pytorch_audio_arg="$(extract_arg_default PYTORCH_AUDIO_BRANCH)"
triton_arg="${triton_arg:-$(extract_arg_default TRITON_VERSION)}"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does this come from? Could it end up being empty?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It comes from ARG TRITON_VERSION in the selected base Dockerfile. Dockerfile.rock_base currently pins it to 3.8.0+git4cff872c.rocm10.0.0. The script first looks for TRITON_BRANCH, then falls back to TRITON_VERSION. Neither current recipe leaves the result empty.

@rasmith

rasmith commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

So, we could use this to trigger a nightly with the rock without the need to pull the usual shenanigans, i.e. no need for doing git stuff and forced pushing, yadda, yadda? Is that right @AndreasKaratzas?

rocm_version="$(rocm_version_from_base_image "${base_image_arg}")"
rocm_version="$(extract_arg_default ROCM_SDK_VERSION)"
rocm_version="${rocm_version:-$(rocm_version_from_base_image "${base_image_arg}")}"
triton_arg="$(extract_arg_default TRITON_BRANCH)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, we have both of these (TRITON_BRANCH and TRITON_VERSION)? Does it matter if it ends up empty? Maybe we always need to have it in the dockerfile?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They belong to different recipes: regular ROCm uses TRITON_BRANCH for its source build, while Rock uses TRITON_VERSION for its wheel installation. Each Dockerfile already declares its corresponding pin. Here, an empty extracted value would leave the dependency metadata blank; it isn’t passed back into the build or used to select the cached image. Keeping the actual dependency pinned in each Dockerfile is still necessary.

@AndreasKaratzas

Copy link
Copy Markdown
Member Author

So, we could use this to trigger a nightly with the rock without the need to pull the usual shenanigans, i.e. no need for doing git stuff and forced pushing, yadda, yadda? Is that right @AndreasKaratzas?

Yes, that’s the intent. On a commit containing this change, we can launch the normal AMD pipeline with VLLM_USE_ROCK=1, RUN_ALL=1, and NIGHTLY=1 to run its full configured suite against TheRock without editing Dockerfiles or force-pushing. /amd-ci run nightly currently sets only the coverage flags, so Rock still needs to be selected in the Buildkite environment.

VLLM_CI_REQUIRE_WORKSPACE_MOUNT \
VLLM_TEST_COMMANDS \
VLLM_CI_BRANCH \
VLLM_USE_ROCK \

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need VLLM_USE_ROCK, or can we make the behavior that we just set CI_ROCM_DOCKERFILE_BASE and CI_ROCM_DOCKERFILE to the ROCk dockerfiles to override Dockerfile.rocm and Dockerfile.rocm_base?

Basically, I am wondering if we can boil this PR down to just two additional env vars (CI_ROCM_DOCKERFILE_BASE and CI_ROCM_DOCKERFILE) to override the Dockerfiles. This would be nice in case we want to support multiple dockerfiles/ROCm versions in the future (e.g. then we could also use this PR directly when we want to start testing Dockerfile.rocm_base_gfx1250 and Dockerfile.rocm_gfx1250 in CI).

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #88370 for commit c33bf9768bd6.

@micah-wil micah-wil left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! This would be useful in running CI on candidate images and such moving forward (like the gfx1250 images, or new ROCm previews).

I'm going to kick off an AMD CI build with the following env vars to make sure it works, will post the results here

CI_ROCM_DOCKERFILE_BASE=docker/Dockerfile.rock_base
CI_ROCM_DOCKERFILE=docker/Dockerfile.rock
NIGHTLY=1

Edit: Seems to have run successfully here https://buildkite.com/vllm/amd-ci/builds/12883

@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #88424 for commit 6cf11d1418c1, running 1 failed step(s) from Buildkite CI #88370.

@mergify

mergify Bot commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

This pull request has merge conflicts that must be resolved before it can be
merged. Please rebase the PR, @AndreasKaratzas.

https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase label Sep 15, 2026
Resolve the Rock Dockerfile overlap using main's identical smoke-test
stages. Preserve upstream Rock profiler library fixes alongside the PR's
custom AMD CI Dockerfile selection, cache isolation, and runtime handoffs.

Validation: pre-commit checks on all PR files, seven existing ROCm CI
metadata/smoke tests, and shell configuration behavior checks.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #89140 for commit 6233a5b66f7e.

@AndreasKaratzas

Copy link
Copy Markdown
Member Author

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #89185 for commit 28951513514a, running 1 failed step(s) from Buildkite CI #89140.

@mergify mergify Bot removed the needs-rebase label Sep 15, 2026
@tjtanaa tjtanaa added the ready ONLY add when PR is ready to merge/full CI is needed label Sep 16, 2026
@AndreasKaratzas
AndreasKaratzas merged commit 711768f into main Sep 16, 2026
25 checks passed
@AndreasKaratzas
AndreasKaratzas deleted the ci/rock-opt-in branch September 16, 2026 05:09
@github-project-automation github-project-automation Bot moved this from Todo to Done in AMD Sep 16, 2026
aarushjain29 added a commit to ROCm/vllm that referenced this pull request Oct 5, 2026
Opt the AMD image steps into the TheRock Dockerfiles from vllm-project#56351 so the
MI355 Elastic EP job runs on ROCm SDK 10.0.0 (HIP, RCCL, PyTorch) and we
can see whether the HIP IPC failure is fixed in the newer ROCm userspace.

Signed-off-by: aarushjain29 <aarushi.jain2@amd.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/build ready ONLY add when PR is ready to merge/full CI is needed rocm Related to AMD ROCm

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants