diff --git a/python/sglang/srt/server_args.py b/python/sglang/srt/server_args.py index 9dd74c114..e5fbcaa83 100644 --- a/python/sglang/srt/server_args.py +++ b/python/sglang/srt/server_args.py @@ -5548,8 +5548,16 @@ class ServerArgs: # Skip validation if disaggregation mode is decode. if self.chunked_prefill_size > 0 and self.disaggregation_mode != "decode": assert ( - self.chunked_prefill_size - ) <= envs.SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK.get(), "SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK (default 4096) must be larger or equal to chunked_prefill_size" + self._required_mori_dispatch_tokens_per_rank() + ) <= envs.SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK.get(), ( + "SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK (default 4096) " + "must be >= the per-rank MoRI dispatch tokens " + "(chunked_prefill_size by default)" + ) + + def _required_mori_dispatch_tokens_per_rank(self) -> int: + """Max tokens a single rank dispatches through MoRI in one forward.""" + return self.chunked_prefill_size def _handle_eplb_and_dispatch(self): if self.enable_eplb and (self.expert_distribution_recorder_mode is None):