Unify think_end_id to model_config as single source of truth (#22148)
This commit is contained in:
@@ -204,6 +204,7 @@ def create_grammar_backend(
|
|||||||
tokenizer,
|
tokenizer,
|
||||||
vocab_size: int,
|
vocab_size: int,
|
||||||
eos_token_ids: Optional[set] = None,
|
eos_token_ids: Optional[set] = None,
|
||||||
|
think_end_id: Optional[int] = None,
|
||||||
) -> Optional[BaseGrammarBackend]:
|
) -> Optional[BaseGrammarBackend]:
|
||||||
name = server_args.grammar_backend
|
name = server_args.grammar_backend
|
||||||
|
|
||||||
@@ -258,13 +259,11 @@ def create_grammar_backend(
|
|||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid grammar backend: {name}")
|
raise ValueError(f"Invalid grammar backend: {name}")
|
||||||
|
|
||||||
if server_args.reasoning_parser and hasattr(tokenizer, "think_end_id"):
|
if server_args.reasoning_parser and think_end_id is not None:
|
||||||
from sglang.srt.constrained.reasoner_grammar_backend import (
|
from sglang.srt.constrained.reasoner_grammar_backend import (
|
||||||
ReasonerGrammarBackend,
|
ReasonerGrammarBackend,
|
||||||
)
|
)
|
||||||
|
|
||||||
grammar_backend = ReasonerGrammarBackend(
|
grammar_backend = ReasonerGrammarBackend(grammar_backend, think_end_id)
|
||||||
grammar_backend, tokenizer.think_end_id
|
|
||||||
)
|
|
||||||
|
|
||||||
return grammar_backend
|
return grammar_backend
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class GrammarManager:
|
|||||||
scheduler.tokenizer,
|
scheduler.tokenizer,
|
||||||
scheduler.model_config.vocab_size,
|
scheduler.model_config.vocab_size,
|
||||||
scheduler.model_config.hf_eos_token_id,
|
scheduler.model_config.hf_eos_token_id,
|
||||||
|
think_end_id=scheduler.model_config.think_end_id,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.grammar_backend = None
|
self.grammar_backend = None
|
||||||
|
|||||||
@@ -549,13 +549,9 @@ class Scheduler(
|
|||||||
reasoning_parser = ReasoningParser(
|
reasoning_parser = ReasoningParser(
|
||||||
model_type=self.server_args.reasoning_parser, stream_reasoning=False
|
model_type=self.server_args.reasoning_parser, stream_reasoning=False
|
||||||
)
|
)
|
||||||
self.tokenizer.think_end_id = self.tokenizer.encode(
|
self.model_config.think_end_id = self.tokenizer.encode(
|
||||||
reasoning_parser.detector.think_end_token, add_special_tokens=False
|
reasoning_parser.detector.think_end_token, add_special_tokens=False
|
||||||
)[0]
|
)[0]
|
||||||
self._think_end_id = self.tokenizer.think_end_id
|
|
||||||
self.model_config.think_end_id = self._think_end_id
|
|
||||||
else:
|
|
||||||
self._think_end_id = None
|
|
||||||
|
|
||||||
def init_mamba_backend(self) -> None:
|
def init_mamba_backend(self) -> None:
|
||||||
initialize_mamba_selective_state_update_backend(self.server_args)
|
initialize_mamba_selective_state_update_backend(self.server_args)
|
||||||
|
|||||||
@@ -558,8 +558,9 @@ class SchedulerOutputProcessorMixin:
|
|||||||
def _maybe_update_reasoning_tokens(
|
def _maybe_update_reasoning_tokens(
|
||||||
self: Scheduler, req: Req, next_token_id: Union[int, List[int]]
|
self: Scheduler, req: Req, next_token_id: Union[int, List[int]]
|
||||||
):
|
):
|
||||||
if req.require_reasoning and self._think_end_id is not None:
|
think_end_id = self.model_config.think_end_id
|
||||||
req.update_reasoning_tokens(next_token_id, self._think_end_id)
|
if req.require_reasoning and think_end_id is not None:
|
||||||
|
req.update_reasoning_tokens(next_token_id, think_end_id)
|
||||||
|
|
||||||
def _mamba_prefix_cache_update(
|
def _mamba_prefix_cache_update(
|
||||||
self: Scheduler,
|
self: Scheduler,
|
||||||
|
|||||||
Reference in New Issue
Block a user