From 466855a2bfc57e58f7e2d03ee2deba79ceab2617 Mon Sep 17 00:00:00 2001 From: PikaPikachu Date: Wed, 12 Aug 2026 08:55:10 +0800 Subject: [PATCH] [ROCm] Enable DeepSeek-V4 on gfx11 (#47017) This PR enables DeepSeek-V4 checkpoints on ROCm gfx11/RDNA devices. Signed-off-by: Letian Kang --- vllm/_aiter_ops.py | 17 ++++++++++++++++- .../layers/sparse_attn_indexer.py | 8 +++++++- vllm/platforms/rocm.py | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/vllm/_aiter_ops.py b/vllm/_aiter_ops.py index 982de32b0d..2721dec0be 100644 --- a/vllm/_aiter_ops.py +++ b/vllm/_aiter_ops.py @@ -2025,12 +2025,27 @@ class rocm_aiter_ops: @staticmethod def register_ops_once() -> None: + global _OPS_REGISTERED + if not ( is_aiter_found_and_supported() or is_aiter_found_and_supported_on_rdna4() ): + if not current_platform.is_rocm(): + return + + from vllm.platforms.rocm import on_gfx11 + + if on_gfx11() and not _OPS_REGISTERED: + direct_register_custom_op( + op_name="rocm_aiter_sparse_attn_indexer", + op_func=rocm_aiter_sparse_attn_indexer, + mutates_args=["topk_indices_buffer"], + fake_impl=rocm_aiter_sparse_attn_indexer_fake, + dispatch_key=current_platform.dispatch_key, + ) + _OPS_REGISTERED = True return - global _OPS_REGISTERED if not _OPS_REGISTERED: # register all the custom ops here direct_register_custom_op( diff --git a/vllm/model_executor/layers/sparse_attn_indexer.py b/vllm/model_executor/layers/sparse_attn_indexer.py index 4047d1a548..4081041198 100644 --- a/vllm/model_executor/layers/sparse_attn_indexer.py +++ b/vllm/model_executor/layers/sparse_attn_indexer.py @@ -850,7 +850,13 @@ class SparseAttnIndexer(CustomOp): assert isinstance(q_quant, torch.Tensor), ( "AMD sparse_attn_indexer expects a single FP8 q_quant tensor" ) - if rocm_aiter_ops.is_enabled() or rocm_aiter_ops.is_rdna_aiter_enabled(): + from vllm.platforms.rocm import on_gfx11 + + if ( + rocm_aiter_ops.is_enabled() + or rocm_aiter_ops.is_rdna_aiter_enabled() + or on_gfx11() + ): return torch.ops.vllm.rocm_aiter_sparse_attn_indexer( hidden_states, _encode_layer_name(self.k_cache.prefix), diff --git a/vllm/platforms/rocm.py b/vllm/platforms/rocm.py index 651c4cadbe..d7045a7431 100644 --- a/vllm/platforms/rocm.py +++ b/vllm/platforms/rocm.py @@ -520,6 +520,7 @@ class RocmPlatform(Platform): "deepseek_v4_fp8", "compressed-tensors", "fbgemm_fp8", + "inc", "quark", "mxfp4", "mxfp8",