sgl-project/sglang · info
get_num_tokens_per_bs_for_target_verify is deprecated; use g
Error message
get_num_tokens_per_bs_for_target_verify is deprecated; use get_num_tokens_per_req_for_target_verify instead.
What it means
Same deprecation as in spec_info.py but on the registry-based entry point in python/sglang/srt/speculative/spec_registry.py. The method get_num_tokens_per_bs_for_target_verify now warns (DeprecationWarning) and delegates to get_num_tokens_per_req_for_target_verify, which uses per-request token accounting for target-verify batches in speculative decoding.
Source
Thrown at python/sglang/srt/speculative/spec_registry.py:145
self.name,
)
return self.factory(server_args)
def get_num_tokens_per_req_for_target_verify(
self, num_draft_tokens: int, is_draft_worker: bool
) -> int:
# FIXME: Remove this after the forward mode refactor. Target verify is
# essentially a fixed sequence length prefill/extend with full cuda
# graph support. We can use it for target verify, or we can use it for
# other cases which is not target verify but fixed length prefill.
# Here, we expose this interface to allow the other use cases.
return num_draft_tokens
def get_num_tokens_per_bs_for_target_verify(
self, num_draft_tokens: int, is_draft_worker: bool
) -> int:
# Deprecated alias; remove together with the FIXME above.
warnings.warn(
"get_num_tokens_per_bs_for_target_verify is deprecated; use "
"get_num_tokens_per_req_for_target_verify instead.",
DeprecationWarning,
stacklevel=2,
)
return self.get_num_tokens_per_req_for_target_verify(
num_draft_tokens, is_draft_worker
)
def build_disagg_draft_input(
self,
batch: ScheduleBatch,
last_tokens_tensor: torch.Tensor,
future_map: FutureMap,
) -> Optional[SpecInput]:
"""Build the disaggregation draft input for ``batch``, or ``None``.
The speculative config comes from ``runtime_context.get_spec()``, whichView on GitHub (pinned to 0132848349)
Solutions
- Switch call sites to get_num_tokens_per_req_for_target_verify — same args (num_draft_tokens, is_draft_worker), same int return
- Silence temporarily with PYTHONWARNINGS=ignore::DeprecationWarning while you migrate
- grep your codebase for '_per_bs_for_target_verify' to catch all occurrences
Example fix
# before num = algo.get_num_tokens_per_bs_for_target_verify(k, is_draft_worker) # after num = algo.get_num_tokens_per_req_for_target_verify(k, is_draft_worker)
Defensive patterns
Strategy: validation
Validate before calling
fn = getattr(algo, "get_num_tokens_per_req_for_target_verify", None) or getattr(algo, "get_num_tokens_per_bs_for_target_verify") n = fn(k, is_draft)
Type guard
callable(getattr(algo, "get_num_tokens_per_req_for_target_verify", None))
Prevention
- Version-pin SGLang between the API producer and consumers
- Feature-detect the new name before calling
When it happens
Trigger: Calling the registered speculative-algorithm object's get_num_tokens_per_bs_for_target_verify (e.g. via SpecAlgorithm registry lookups during target-verify batch construction in the scheduler).
Common situations: Custom or out-of-tree speculative algorithm implementations built against an older SGLang spec registry; upgrade of SGLang introduces the rename and old call sites start warning.
Related errors
- get_num_tokens_per_bs_for_target_verify is deprecated; use g
- VisionAttention(head_size=...) is deprecated; use head_dim=.
- This browser cannot encode H.264 MP4
- scalar_type_id {scalar_type_id} doesn't exists.
- head_first is deprecated and will be removed in a future ver
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/e423a5404c9b5233.
Report an issue: GitHub.