[Bugfix][Mamba] Clear deferred init metadata before speculative decode (#37165)

This commit is contained in:
Aurick Qiao
2026-09-07 12:41:03 -07:00
committed by GitHub
parent dcebe8c473
commit 8392c36bce
2 changed files with 24 additions and 1 deletions
@@ -3345,6 +3345,10 @@ class ScheduleBatch(ScheduleBatchDisaggregationDecodeMixin):
# prefill-time tensor so it doesn't leak into ForwardBatch.
self.input_embeds = None
self.mamba_cow_src_indices = None
self.mamba_cow_dst_indices = None
self.mamba_clear_indices = None
# Clear context parallel metadata - CP is only for prefill, not decode
if hasattr(self, "attn_cp_metadata") and self.attn_cp_metadata is not None:
self.attn_cp_metadata = None
@@ -6,7 +6,7 @@ import torch
from sglang.srt.runtime_context import get_context
from sglang.test.ci.ci_register import register_cpu_ci
from sglang.test.test_utils import maybe_stub_sgl_kernel
from sglang.test.test_utils import CustomTestCase, maybe_stub_sgl_kernel
maybe_stub_sgl_kernel()
@@ -39,6 +39,25 @@ def _make_decode_batch():
return batch
class TestPrepareForDecodeMambaInit(CustomTestCase):
def test_spec_decode_drops_extend_mamba_init_metadata(self):
batch = ScheduleBatch(reqs=[])
batch.spec_algorithm = types.SimpleNamespace(is_none=lambda: False)
batch.mamba_cow_src_indices = torch.tensor([1])
batch.mamba_cow_dst_indices = torch.tensor([2])
batch.mamba_clear_indices = torch.tensor([3])
with patch(
"sglang.srt.speculative.spec_utils.spec_prepare_for_decode"
) as prepare:
batch.prepare_for_decode()
prepare.assert_called_once_with(batch)
self.assertIsNone(batch.mamba_cow_src_indices)
self.assertIsNone(batch.mamba_cow_dst_indices)
self.assertIsNone(batch.mamba_clear_indices)
class TestPrepareForDecodeSeqLensOwnership(unittest.TestCase):
def test_decode_seq_lens_bump_is_out_of_place(self):
"""Each prepare_for_decode call rebinds seq-lens tensors to new +1 objects without mutating the old ones."""