[CI][ROCm] Deprecate DinD for MI250 test groups (#56162)

Signed-off-by: Andreas Karatzas <Andreas.Karatzas@amd.com>
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Andreas Karatzas
2026-09-18 14:13:35 -07:00
committed by GitHub
co-authored by OpenAI Codex
parent 49e0427ca5
commit 2c3fb4c545
18 changed files with 102 additions and 6 deletions
@@ -1612,6 +1612,13 @@ fi
echo "Final commands: $commands"
# Match native CPU jobs even when the container can see AMD devices.
cpu_platform_env=()
if [[ "${VLLM_CI_EXPECTED_GPU_COUNT:-1}" == "0" \
&& "$commands" != *python_only_compile.sh* ]]; then
cpu_platform_env=(-e "VLLM_TARGET_DEVICE=cpu")
fi
standalone_merge_base_env=()
if [[ "$commands" == *python_only_compile.sh* ]]; then
# The ROCm test image often ships /vllm-workspace without .git. Resolve the
@@ -1769,6 +1776,7 @@ else
-e "VLLM_CACHE_ROOT=${CONTAINER_CACHE_ROOT}/vllm" \
-e "XDG_CACHE_HOME=${CONTAINER_CACHE_ROOT}/xdg" \
-e "PYTORCH_ROCM_ARCH=" \
"${cpu_platform_env[@]}" \
"${standalone_merge_base_env[@]}" \
--name "${container_name}" \
"${image_name}" \
+21 -1
View File
@@ -114,6 +114,7 @@ steps:
- label: ":computer: (CPU) Basic Models Other" # TBD
timeout_in_minutes: 35
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -124,13 +125,15 @@ steps:
- tests/models/test_vision.py
- tests/models/test_adapters.py
- tests/models/transformers/fusers/
- tests/model_executor/layers/test_activation.py
- tests/models/test_qwen3_5_mtp_config.py
commands:
- pytest -v -s models/test_utils.py models/test_vision.py models/test_adapters.py models/test_qwen3_5_mtp_config.py models/transformers/fusers/
- pytest -v -s models/test_utils.py models/test_vision.py models/test_adapters.py models/test_qwen3_5_mtp_config.py models/transformers/fusers/ model_executor/layers/test_activation.py
- label: ":computer: (CPU) Multimodal Processor Shard %N" # TBD
timeout_in_minutes: 90
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
parallelism: 6
@@ -146,6 +149,7 @@ steps:
- label: ":computer: (CPU) V1 Others" # TBD
timeout_in_minutes: 45
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -166,6 +170,7 @@ steps:
- label: ":computer: (CPU) Async Engine, Inputs, Utils, Worker, Config" # TBD
timeout_in_minutes: 80
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -205,6 +210,7 @@ steps:
- label: ":computer: (CPU) Rust Frontend Cargo Style + Clippy" # TBD
timeout_in_minutes: 35
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -220,6 +226,7 @@ steps:
- label: ":computer: (CPU) Rust Frontend Cargo" # TBD
timeout_in_minutes: 35
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -235,6 +242,7 @@ steps:
- label: ":computer: (CPU) Docker Build Metadata" # TBD
timeout_in_minutes: 35
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
no_gpu: true
optional: true
@@ -265,6 +273,7 @@ steps:
- label: ":amd: (MI250) PyTorch Fullgraph Smoke" # TBD
timeout_in_minutes: 65
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -284,6 +293,7 @@ steps:
- label: ":amd: (MI250) Pipeline + Context Parallelism" # TBD
timeout_in_minutes: 90
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_4
num_gpus: 4
working_dir: "/vllm-workspace/tests"
@@ -311,6 +321,7 @@ steps:
timeout_in_minutes: 45
parallelism: 2
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -328,6 +339,7 @@ steps:
- label: ":amd: (MI250) Language Models (PPL)" # TBD
timeout_in_minutes: 65
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
working_dir: "/vllm-workspace/tests"
source_file_dependencies:
@@ -359,6 +371,7 @@ steps:
- label: ":amd: (MI250) Multimodal Models (Standard) 3: llava + qwen2_vl" # TBD
timeout_in_minutes: 55
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -374,6 +387,7 @@ steps:
- label: ":amd: (MI250) Batch Invariance" # TBD
timeout_in_minutes: 35
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -392,6 +406,7 @@ steps:
- label: ":amd: (MI250) CUDAGraph" # TBD
timeout_in_minutes: 55
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -412,6 +427,7 @@ steps:
- label: ":amd: (MI250) E2E Core" # TBD
timeout_in_minutes: 50
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -425,6 +441,7 @@ steps:
- label: ":amd: (MI250) E2E Scheduling" # TBD
timeout_in_minutes: 55
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -438,6 +455,7 @@ steps:
- label: ":amd: (MI250) V1 Engine" # TBD
timeout_in_minutes: 45
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -460,6 +478,7 @@ steps:
- label: ":amd: (MI250) Spec Decode Draft Model" # TBD
timeout_in_minutes: 60
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
@@ -477,6 +496,7 @@ steps:
- label: ":amd: (MI250) Spec Decode Speculators + MTP" # TBD
timeout_in_minutes: 75
mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
dind: false
agent_pool: mi250_1
optional: true
working_dir: "/vllm-workspace/tests"
+1
View File
@@ -49,6 +49,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) CUDAGraph"
dind: false
device: mi250_1
timeout_in_minutes: 55
depends_on:
+1
View File
@@ -416,6 +416,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Pipeline + Context Parallelism"
dind: false
device: mi250_4
timeout_in_minutes: 90
depends_on:
+1
View File
@@ -18,6 +18,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Docker Build Metadata"
dind: false
device: mi250_1
no_gpu: true
timeout_in_minutes: 35
+3
View File
@@ -52,6 +52,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) V1 Engine"
dind: false
device: mi250_1
timeout_in_minutes: 45
depends_on:
@@ -71,6 +72,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) E2E Scheduling"
dind: false
device: mi250_1
timeout_in_minutes: 55
depends_on:
@@ -90,6 +92,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) E2E Core"
dind: false
commands:
- pytest -v -s v1/e2e/general --ignore v1/e2e/general/test_async_scheduling.py
device: mi250_1
+2
View File
@@ -322,6 +322,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Mamba Kernels"
dind: false
device: mi250_1
timeout_in_minutes: 55
depends_on:
@@ -512,6 +513,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Helion Kernels Shard %N"
dind: false
device: mi250_1
timeout_in_minutes: 45
depends_on:
+1
View File
@@ -586,6 +586,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Batch Invariance"
dind: false
device: mi250_1
timeout_in_minutes: 35
depends_on:
+3 -1
View File
@@ -170,12 +170,14 @@ steps:
- tests/models/test_adapters.py
- tests/models/test_qwen3_5_mtp_config.py
- tests/models/transformers/fusers/
- tests/model_executor/layers/test_activation.py
device: cpu-small
commands:
- pytest -v -s models/test_utils.py models/test_vision.py models/test_adapters.py models/test_qwen3_5_mtp_config.py models/transformers/fusers/
- pytest -v -s models/test_utils.py models/test_vision.py models/test_adapters.py models/test_qwen3_5_mtp_config.py models/transformers/fusers/ model_executor/layers/test_activation.py
mirror:
amd:
label: ":amd: (MI250) Basic Models Other"
dind: false
device: mi250_1
no_gpu: true
working_dir: "/vllm-workspace/tests"
@@ -155,6 +155,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Language Models (PPL)"
dind: false
device: mi250_1
timeout_in_minutes: 65
depends_on:
@@ -214,6 +215,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Language Models (MTEB)"
dind: false
device: mi250_1
timeout_in_minutes: 60
depends_on:
@@ -57,6 +57,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Multimodal Models (Standard) 3: llava + qwen2_vl"
dind: false
device: mi250_1
timeout_in_minutes: 55
depends_on:
@@ -101,6 +102,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Multimodal Processor Shard %N"
dind: false
device: mi250_1
no_gpu: true
working_dir: "/vllm-workspace/tests"
+1
View File
@@ -53,6 +53,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Plugin Integration"
dind: false
device: mi250_2
timeout_in_minutes: 50
depends_on:
@@ -17,6 +17,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Rust Frontend Cargo Style + Clippy"
dind: false
device: mi250_1
no_gpu: true
working_dir: "/vllm-workspace"
@@ -40,6 +41,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Rust Frontend Cargo"
dind: false
device: mi250_1
no_gpu: true
working_dir: "/vllm-workspace"
+1
View File
@@ -20,6 +20,7 @@ steps:
mirror:
amd:
label: ":amd: (MI250) Samplers"
dind: false
device: mi250_1
timeout_in_minutes: 40
depends_on:
+1 -1
View File
@@ -241,7 +241,7 @@ def dist_init():
rank=0,
distributed_init_method=f"file://{temp_file}",
local_rank=0,
backend="nccl",
backend="gloo" if current_platform.is_cpu() else "nccl",
)
initialize_model_parallel(1, 1)
yield
@@ -0,0 +1,38 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
from functools import partial
import pytest
import torch
import torch.nn as nn
from vllm.model_executor.layers.activation import GeluAndMul, SiluAndMul
from vllm.platforms import CpuArchEnum, current_platform
@pytest.mark.skipif(
not current_platform.is_cpu()
or current_platform.get_cpu_architecture() == CpuArchEnum.POWERPC,
reason="Native CPU activations require a non-PowerPC CPU platform",
)
@pytest.mark.parametrize(
"activation_factory,reference",
[
(SiluAndMul, nn.SiLU()),
(GeluAndMul, nn.GELU()),
(partial(GeluAndMul, approximate="tanh"), nn.GELU(approximate="tanh")),
],
ids=["silu", "gelu", "gelu_tanh"],
)
def test_cpu_act_and_mul_without_compiled_ops(
default_vllm_config, monkeypatch, activation_factory, reference
):
"""CPU activations must construct and run without compiled wheel operators."""
default_vllm_config.compilation_config.custom_ops = ["all"]
monkeypatch.setattr(torch.ops, "_C", object())
x = torch.tensor([[-2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0]], device="cpu")
layer = activation_factory()
torch.testing.assert_close(layer(x), reference(x[:, :4]) * x[:, 4:])
@@ -155,10 +155,15 @@ def test_vllm_openai_image_embeds_metadata_contract() -> None:
def test_rust_build_cache_excludes_git_metadata() -> None:
import torch
from vllm.platforms import current_platform
dockerfile_names = ["Dockerfile", "Dockerfile.cpu"]
if not current_platform.is_rocm():
# CPU jobs can reuse ROCm artifacts, which omit the XPU Dockerfile.
if not current_platform.is_rocm() and (
not current_platform.is_cpu() or torch.version.hip is None
):
dockerfile_names.append("Dockerfile.xpu")
for name in dockerfile_names:
dockerfile = (REPO_ROOT / "docker" / name).read_text()
+8 -2
View File
@@ -129,8 +129,11 @@ class SiluAndMul(CustomOp):
super().__init__(compile_native=compile_native)
if (
current_platform.is_cuda_alike()
or current_platform.is_cpu()
or current_platform.is_xpu()
or (
current_platform.is_cpu()
and current_platform.get_cpu_architecture() == CpuArchEnum.POWERPC
)
):
self.op = torch.ops._C.silu_and_mul
@@ -424,8 +427,11 @@ class GeluAndMul(CustomOp):
raise ValueError(f"Unknown approximate mode: {approximate}")
if (
current_platform.is_cuda_alike()
or current_platform.is_cpu()
or current_platform.is_xpu()
or (
current_platform.is_cpu()
and current_platform.get_cpu_architecture() == CpuArchEnum.POWERPC
)
):
if approximate == "none":
self.op = torch.ops._C.gelu_and_mul