Add --speculative-moe-runner-backend server arg (#10183)

This commit is contained in:
Trevor Morris
2025-11-04 00:20:56 -08:00
committed by GitHub
parent 83804bc626
commit dbcf85b7f0
15 changed files with 109 additions and 68 deletions

View File

@@ -7,6 +7,7 @@ import torch
from sglang.srt.distributed import get_tp_group
from sglang.srt.layers.dp_attention import get_attention_tp_group
from sglang.srt.layers.logits_processor import LogitsProcessorOutput
from sglang.srt.layers.moe.utils import speculative_moe_backend_context
from sglang.srt.layers.sampler import get_token_ids_logprobs, get_top_logprobs
from sglang.srt.managers.schedule_batch import ScheduleBatch
from sglang.srt.managers.scheduler import GenerationBatchResult
@@ -125,7 +126,7 @@ class EAGLEWorker(TpModelWorker):
ctx = draft_tp_context(get_attention_tp_group())
else:
ctx = empty_context()
with ctx:
with ctx, speculative_moe_backend_context():
super().__init__(
server_args=server_args,
gpu_id=gpu_id,
@@ -174,7 +175,9 @@ class EAGLEWorker(TpModelWorker):
self.draft_tp_context = (
draft_tp_context if server_args.enable_dp_attention else empty_context
)
with self.draft_tp_context(self.draft_model_runner.tp_group):
with self.draft_tp_context(
self.draft_model_runner.tp_group
), speculative_moe_backend_context():
self.init_attention_backend()
self.init_cuda_graphs()
@@ -259,7 +262,9 @@ class EAGLEWorker(TpModelWorker):
logits_output, next_token_ids, seq_lens_cpu = self.forward_target_extend(
batch
)
with self.draft_tp_context(self.draft_model_runner.tp_group):
with self.draft_tp_context(
self.draft_model_runner.tp_group
), speculative_moe_backend_context():
self.forward_draft_extend(
batch, logits_output.hidden_states, next_token_ids, seq_lens_cpu
)
@@ -270,13 +275,17 @@ class EAGLEWorker(TpModelWorker):
can_run_cuda_graph=False,
)
else:
with self.draft_tp_context(self.draft_model_runner.tp_group):
with self.draft_tp_context(
self.draft_model_runner.tp_group
), speculative_moe_backend_context():
spec_info = self.draft(batch)
logits_output, verify_output, model_worker_batch, can_run_cuda_graph = (
self.verify(batch, spec_info)
)
with self.draft_tp_context(self.draft_model_runner.tp_group):
with self.draft_tp_context(
self.draft_model_runner.tp_group
), speculative_moe_backend_context():
# NOTE: We should use `check_forward_draft_extend_after_decode`
# when DP attention is enabled, but it is slow. Skip it for now.
if (

View File

@@ -6,6 +6,7 @@ from typing import List, Optional, Tuple
import torch
from sglang.srt.environ import envs
from sglang.srt.layers.moe.utils import speculative_moe_backend_context
from sglang.srt.managers.schedule_batch import ModelWorkerBatch
from sglang.srt.managers.scheduler import GenerationBatchResult
from sglang.srt.managers.tp_worker import TpModelWorker
@@ -101,7 +102,7 @@ class EagleDraftWorker(BaseDraftWorker):
self.req_to_token_pool, self.token_to_kv_pool_allocator = (
target_worker.get_memory_pool()
)
with empty_context():
with empty_context(), speculative_moe_backend_context():
# Init draft worker
self.draft_worker = TpModelWorker(
server_args=server_args,
@@ -127,7 +128,9 @@ class EagleDraftWorker(BaseDraftWorker):
self.draft_tp_context = (
draft_tp_context if server_args.enable_dp_attention else empty_context
)
with self.draft_tp_context(self.draft_runner.tp_group):
with self.draft_tp_context(
self.draft_runner.tp_group
), speculative_moe_backend_context():
self.init_attention_backend()
self.init_cuda_graphs()

View File

@@ -3,6 +3,7 @@ from typing import Optional
import torch
from sglang.srt.layers.moe.utils import speculative_moe_backend_context
from sglang.srt.managers.tp_worker import TpModelWorker
from sglang.srt.server_args import ServerArgs
from sglang.srt.speculative.eagle_worker import EAGLEWorker
@@ -66,7 +67,7 @@ class StandaloneWorker(EAGLEWorker):
self.hot_token_id = None
# Init draft worker
with empty_context():
with empty_context(), speculative_moe_backend_context():
TpModelWorker.__init__(
self,
server_args=server_args,
@@ -88,7 +89,9 @@ class StandaloneWorker(EAGLEWorker):
self.draft_tp_context = (
draft_tp_context if server_args.enable_dp_attention else empty_context
)
with self.draft_tp_context(self.draft_model_runner.tp_group):
with self.draft_tp_context(
self.draft_model_runner.tp_group
), speculative_moe_backend_context():
self.init_attention_backend()
self.init_cuda_graphs()