sgl-project/sglang · warning

skip_attn_backend_init is deprecated and will be removed; pr

Error message

skip_attn_backend_init is deprecated and will be removed; pre-planners should call ForwardBatch.mark_forward_metadata_ready() after planning instead. The flag is mapped onto the marker for now.

What it means

DeprecationWarning (warned once per process) from ForwardBatch helper: the skip_attn_backend_init flag is deprecated. Pre-planning code should instead call ForwardBatch.mark_forward_metadata_ready() after planning; for now the flag is mapped onto that marker.

Source

Thrown at python/sglang/srt/model_executor/forward_batch_info.py:675

        )

    def apply_deprecated_skip_attn_backend_init(
        self, skip_attn_backend_init: Optional[bool]
    ) -> None:
        """Map the deprecated ``skip_attn_backend_init`` kwarg onto the marker.

        Mapped, not ignored: callers passing True relied on planning being
        skipped — ignoring the flag would silently re-plan and corrupt
        pre-planned multi-step draft metadata. Warns once per process (a
        module flag, not the warnings filter, so the hot decode loop never
        pays warnings.warn per forward).
        """
        if skip_attn_backend_init is None:
            return
        global _skip_attn_backend_init_warned
        if not _skip_attn_backend_init_warned:
            _skip_attn_backend_init_warned = True
            warnings.warn(
                "skip_attn_backend_init is deprecated and will be removed; "
                "pre-planners should call "
                "ForwardBatch.mark_forward_metadata_ready() after planning "
                "instead. The flag is mapped onto the marker for now.",
                DeprecationWarning,
                stacklevel=3,
            )
        if skip_attn_backend_init:
            self.mark_forward_metadata_ready()

    def init_mlp_sync_metadata(
        self, batch: ScheduleBatch, device: Union[str, torch.device]
    ) -> None:
        """Populate per-rank token counts for DP-attention MLP synchronization."""
        if batch.global_num_tokens is None:
            return

        assert batch.global_num_tokens_for_logprob is not None

View on GitHub (pinned to 0132848349)

Solutions

  1. Stop passing skip_attn_backend_init and call ForwardBatch.mark_forward_metadata_ready() once planning completes
  2. Remove the argument entirely (None skips the warning path)
  3. Search for skip_attn_backend_init in scheduler/planner code and refactor

Example fix

# before
batch.forward(skip_attn_backend_init=True)
# after
plan(batch)
batch.mark_forward_metadata_ready()
batch.forward()
Defensive patterns

Strategy: validation

Validate before calling

assert "skip_attn_backend_init" not in kwargs, "deprecated; use mark_forward_metadata_ready()"

Prevention

When it happens

Trigger: Calling forward_batch_generation/forward with skip_attn_backend_init=True/False (not None); each process warns once via the module-level _skip_attn_backend_init_warned latch.

Common situations: Custom schedulers or lookahead/pre-planning code that suppressed attention backend metadata init with the old flag; TBO/overlap-scheduler forks using the flag.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/a8f80e268b5dbec8. Report an issue: GitHub.