diff --git a/python/sglang/srt/speculative/dflash_worker_v2.py b/python/sglang/srt/speculative/dflash_worker_v2.py index a95674399..391465d16 100644 --- a/python/sglang/srt/speculative/dflash_worker_v2.py +++ b/python/sglang/srt/speculative/dflash_worker_v2.py @@ -1777,6 +1777,7 @@ class DFlashWorkerV2(BaseSpecWorker): *, batch: ScheduleBatch, seq_lens_pre_verify: torch.Tensor, + seq_lens_post_verify: torch.Tensor, commit_lens: torch.Tensor, ) -> None: """Commit Mamba intermediate states for accepted verify steps. @@ -1796,10 +1797,10 @@ class DFlashWorkerV2(BaseSpecWorker): mamba_track_interval = mamba_track_grid(batch.tree_cache.page_size) to_track_mask = ( seq_lens_pre_verify // mamba_track_interval - != batch.seq_lens // mamba_track_interval + != seq_lens_post_verify // mamba_track_interval ) tracking_point = ( - batch.seq_lens // mamba_track_interval * mamba_track_interval + seq_lens_post_verify // mamba_track_interval * mamba_track_interval ) to_track_ith = torch.clamp(tracking_point - seq_lens_pre_verify - 1, min=0) can_track_mask = to_track_mask & ( @@ -2460,9 +2461,12 @@ class DFlashWorkerV2(BaseSpecWorker): if self._need_mamba_verify_commit: assert seq_lens_pre_verify is not None + if new_seq_lens is None: + new_seq_lens = prefix_lens + commit_lens.to(prefix_lens.dtype) self._update_target_mamba_state_after_verify( batch=batch, seq_lens_pre_verify=seq_lens_pre_verify, + seq_lens_post_verify=new_seq_lens, commit_lens=commit_lens, )