fix: fix the wrong return value type of draft model runner (#18105)

Co-authored-by: Liangsheng Yin <lsyincs@gmail.com>
This commit is contained in:
Yingchun Lai
2026-02-08 20:51:35 -08:00
committed by GitHub
co-authored by Liangsheng Yin
parent 68e31a3485
commit a1189068fa
3 changed files with 16 additions and 9 deletions
+2 -2
View File
@@ -16,7 +16,7 @@ from __future__ import annotations
import logging import logging
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, Optional from typing import TYPE_CHECKING, List, Optional
import torch import torch
@@ -236,7 +236,7 @@ class TpModelWorker(BaseTpWorker):
self.token_to_kv_pool_allocator = token_to_kv_pool_allocator self.token_to_kv_pool_allocator = token_to_kv_pool_allocator
# MTP model runners # MTP model runners
self.model_runner_list = [] self.model_runner_list: List[ModelRunner] = []
self._init_model_config() self._init_model_config()
self._init_model_runner() self._init_model_runner()
@@ -14,7 +14,7 @@
import logging import logging
import time import time
from typing import List, Optional, Tuple from typing import TYPE_CHECKING, List, Optional, Tuple
import torch import torch
@@ -56,6 +56,9 @@ from sglang.srt.speculative.spec_utils import (
) )
from sglang.srt.utils import empty_context, get_available_gpu_memory, is_cuda, is_npu from sglang.srt.utils import empty_context, get_available_gpu_memory, is_cuda, is_npu
if TYPE_CHECKING:
from sglang.srt.model_executor.model_runner import ModelRunner
_is_npu = is_npu() _is_npu = is_npu()
if is_cuda(): if is_cuda():
@@ -226,7 +229,7 @@ class MultiLayerEagleWorker(TpModelWorker):
f"Capture draft extend cuda graph end. Time elapsed: {time.perf_counter() - tic:.2f} s. mem usage={(before_mem - after_mem):.2f} GB. avail mem={after_mem:.2f} GB." f"Capture draft extend cuda graph end. Time elapsed: {time.perf_counter() - tic:.2f} s. mem usage={(before_mem - after_mem):.2f} GB. avail mem={after_mem:.2f} GB."
) )
def mtp_model_runner(self, layer_id: int): def mtp_model_runner(self, layer_id: int) -> ModelRunner:
return self.model_runner_list[layer_id] return self.model_runner_list[layer_id]
def forward_batch_generation(self, batch: ScheduleBatch) -> GenerationBatchResult: def forward_batch_generation(self, batch: ScheduleBatch) -> GenerationBatchResult:
@@ -613,7 +616,9 @@ class MultiLayerEagleWorker(TpModelWorker):
topk_p_list = [] topk_p_list = []
topk_index_list = [] topk_index_list = []
for step in range(self.speculative_num_steps): for step in range(self.speculative_num_steps):
logits_output, _ = self.mtp_model_runner(step).forward(forward_batch) logits_output = (
self.mtp_model_runner(step).forward(forward_batch).logits_output
)
if self.enable_nan_detection: if self.enable_nan_detection:
detect_nan(logits_output) detect_nan(logits_output)
probs = torch.softmax(logits_output.next_token_logits, dim=-1) probs = torch.softmax(logits_output.next_token_logits, dim=-1)
@@ -718,8 +723,10 @@ class MultiLayerEagleWorker(TpModelWorker):
self.mtp_model_runner(step).attn_backend.init_forward_metadata( self.mtp_model_runner(step).attn_backend.init_forward_metadata(
forward_batch forward_batch
) )
logits_output, _ = self.mtp_model_runner(step).forward( logits_output = (
forward_batch, skip_attn_backend_init=True self.mtp_model_runner(step)
.forward(forward_batch, skip_attn_backend_init=True)
.logits_output
) )
if self.enable_nan_detection: if self.enable_nan_detection:
@@ -45,7 +45,7 @@ from sglang.srt.speculative.spec_utils import (
from sglang.srt.utils.common import empty_context, fast_topk from sglang.srt.utils.common import empty_context, fast_topk
if TYPE_CHECKING: if TYPE_CHECKING:
from sglang.srt.model_executor.model_runner import ModelRunnerOutput from sglang.srt.model_executor.model_runner import ModelRunner, ModelRunnerOutput
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -125,7 +125,7 @@ class MultiLayerEagleDraftWorker(BaseDraftWorker):
) )
# Alias for better readability # Alias for better readability
self.draft_runner_list = self.draft_worker.model_runner_list self.draft_runner_list: List[ModelRunner] = self.draft_worker.model_runner_list
self.init_lm_head() self.init_lm_head()