From 3a4929e9ce4022ec2496ffae61c6364f1e9ea873 Mon Sep 17 00:00:00 2001 From: chaunceyjiang Date: Wed, 24 Dec 2025 03:05:37 +0000 Subject: [PATCH 1/2] [Speculators][Speculative Decoding] Fix Kimi K2 Eagle3 Support Signed-off-by: chaunceyjiang --- vllm/model_executor/models/deepseek_v2.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/vllm/model_executor/models/deepseek_v2.py b/vllm/model_executor/models/deepseek_v2.py index 22d43a4bae18a..635c496f500a8 100644 --- a/vllm/model_executor/models/deepseek_v2.py +++ b/vllm/model_executor/models/deepseek_v2.py @@ -85,7 +85,13 @@ from vllm.v1.attention.backends.mla.indexer import ( from vllm.v1.kv_cache_interface import KVCacheSpec, MLAAttentionSpec from vllm.v1.worker.workspace import current_workspace_manager -from .interfaces import MixtureOfExperts, SupportsEagle, SupportsLoRA, SupportsPP +from .interfaces import ( + MixtureOfExperts, + SupportsEagle, + SupportsEagle3, + SupportsLoRA, + SupportsPP, +) from .utils import ( PPMissingLayer, is_pp_missing_parameter, @@ -1378,7 +1384,12 @@ class DeepseekV2MixtureOfExperts(MixtureOfExperts): class DeepseekV2ForCausalLM( - nn.Module, SupportsPP, DeepseekV2MixtureOfExperts, SupportsLoRA, SupportsEagle + nn.Module, + SupportsPP, + DeepseekV2MixtureOfExperts, + SupportsLoRA, + SupportsEagle, + SupportsEagle3, ): packed_modules_mapping = { "gate_up_proj": ["gate_proj", "up_proj"], @@ -1460,6 +1471,13 @@ class DeepseekV2ForCausalLM( def embed_input_ids(self, input_ids: torch.Tensor) -> torch.Tensor: return self.model.embed_input_ids(input_ids) + def set_aux_hidden_state_layers(self, layers: tuple[int, ...]) -> None: + self.model.aux_hidden_state_layers = layers + + def get_eagle3_aux_hidden_state_layers(self) -> tuple[int, ...]: + num_layers = len(self.model.layers) + return (2, num_layers // 2, num_layers - 3) + def forward( self, input_ids: torch.Tensor, From 5ce77694018bd9b17d82318b8fe8b84f5453fe78 Mon Sep 17 00:00:00 2001 From: chaunceyjiang Date: Wed, 24 Dec 2025 03:09:11 +0000 Subject: [PATCH 2/2] [Speculators][Speculative Decoding] Fix Kimi K2 Eagle3 Support Signed-off-by: chaunceyjiang --- vllm/config/speculative.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vllm/config/speculative.py b/vllm/config/speculative.py index bf533bf14e55c..3d06d60105af2 100644 --- a/vllm/config/speculative.py +++ b/vllm/config/speculative.py @@ -618,7 +618,7 @@ class SpeculativeConfig: f"{self.disable_by_batch_size=}" ) - eagle3_target_supported = ["llama", "qwen", "minicpm", "gpt_oss"] + eagle3_target_supported = ["llama", "qwen", "minicpm", "gpt_oss", "kimi_k2"] if ( self.method == "eagle3" and self.target_model_config