diff --git a/python/sglang/srt/managers/scheduler.py b/python/sglang/srt/managers/scheduler.py index 6a4a0880a..ea281ee48 100644 --- a/python/sglang/srt/managers/scheduler.py +++ b/python/sglang/srt/managers/scheduler.py @@ -2080,7 +2080,10 @@ class Scheduler( min( max_new_tokens, self.max_req_len - input_len - 1, - self.max_total_num_tokens - paged_input_len - self.page_size - 1, + self.max_total_num_tokens * self.server_args.dcp_size + - paged_input_len + - self.page_size + - 1, ), ) # Clipping above can push max_new_tokens below min_new_tokens, which diff --git a/python/sglang/srt/managers/tp_worker.py b/python/sglang/srt/managers/tp_worker.py index 07f4c8df8..d3768d48a 100644 --- a/python/sglang/srt/managers/tp_worker.py +++ b/python/sglang/srt/managers/tp_worker.py @@ -385,7 +385,9 @@ class TpModelWorker(BaseTpWorker): assert self.model_runner.max_running_requests > 0, "max_running_request is zero" max_req_len = min( self.model_config.context_len - 1, - self.model_runner.effective_max_total_num_tokens - 1, + self.model_runner.effective_max_total_num_tokens + * self.model_runner.dcp_size + - 1, ) assert max_req_len > 0, "Memory pool size is too small" @@ -485,7 +487,9 @@ class TpModelWorker(BaseTpWorker): def get_worker_info(self): max_req_len = min( self.model_config.context_len - 1, - self.model_runner.effective_max_total_num_tokens - 1, + self.model_runner.effective_max_total_num_tokens + * self.model_runner.dcp_size + - 1, ) return ( self.model_runner.max_total_num_tokens,