[ROCm][CI] Add MTP and other spec-decode acceptance coverage (#53399)

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>

Andreas Karatzas committed Sep 2, 2026 at 03:27 UTC e52407ef4ce8400bbbb6d0a34d26e0456ce72cb3
2 files changed +30 -1
.buildkite/test-amd.yaml
+28
@@ -3929,6 +3929,34 @@ steps:
3929 commands:
3930 - pytest -v -s -m 'not slow_test' v1/spec_decode
3931
3932 +- label: ":amd: (MI355) Spec Decode AL MTP + Other Acceptance" # TBD
3933 + timeout_in_minutes: 180
3934 + mirror_hardwares: [amdexperimental, amdproduction, amdgfx950nightly, amdmi355]
3935 + dind: false
3936 + agent_pool: mi355_1
3937 + optional: true
3938 + working_dir: "/vllm-workspace/tests"
3939 + source_file_dependencies:
3940 + - vllm/v1/spec_decode/
3941 + - vllm/v1/sample/
3942 + - vllm/v1/worker/gpu/
3943 + - vllm/v1/worker/gpu_model_runner.py
3944 + - vllm/v1/worker/gpu_worker.py
3945 + - vllm/model_executor/model_loader/
3946 + - vllm/model_executor/models/gemma4.py
3947 + - vllm/model_executor/models/gemma4_mm.py
3948 + - vllm/model_executor/models/gemma4_mtp.py
3949 + - vllm/model_executor/models/llama.py
3950 + - vllm/model_executor/models/llama_eagle3.py
3951 + - vllm/model_executor/models/medusa.py
3952 + - vllm/model_executor/models/registry.py
3953 + - tests/evals/gsm8k/
3954 + - tests/utils.py
3955 + - tests/v1/e2e/spec_decode/
3956 + - vllm/platforms/rocm.py
3957 + commands:
3958 + - pytest -v -s v1/e2e/spec_decode/acceptance_rates/mtp_other/
3959 +
3960 #------------------------------------------------------ mi355 · weight_loading -------------------------------------------------------#
3961
3962 - label: ":amd: (MI355) Weight Loading Multi-GPU" # TBD
vllm/v1/spec_decode/gemma4.py
+2 -1
@@ -118,6 +118,7 @@ class Gemma4Proposer(SpecDecodeBaseProposer):
118 """Capture CUDA graphs for centroids get_top_tokens at key sizes."""
119 masked_emb = self.model.masked_embedding
120 lm_head_weight = self.model._get_full_lm_head_weight()
121 + capture_stream = current_stream()
122
123 for size in [1, 2, 4, 8, 16, 32, 64]:
124 static_input = torch.zeros(
@@ -131,7 +132,7 @@ class Gemma4Proposer(SpecDecodeBaseProposer):
132 torch.accelerator.synchronize()
133
134 g = torch.cuda.CUDAGraph()
134 - with torch.cuda.graph(g, stream=current_stream()):
135 + with torch.cuda.graph(g, stream=capture_stream):
136 static_output = masked_emb.get_top_tokens(
137 static_input,
138 lm_head_weight,