[diffusion] fix: fix --warmup silently downgrading server-based warmup to request mode (#29514)

This commit is contained in:
Mick
2026-06-28 11:46:07 +08:00
committed by GitHub
parent e6cbc8f5fe
commit 4a76699dfc
2 changed files with 25 additions and 0 deletions
@@ -726,6 +726,8 @@ class ServerArgs(DisaggServerArgsMixin):
if mode_explicit or not legacy_explicit:
self.warmup = self.warmup_mode != "off"
self.server_warmup = self.warmup_mode == "server"
elif self.warmup:
self.server_warmup = self.server_warmup or self.warmup_mode == "server"
# Explicit resolutions imply warmup is on (request-based).
if self.warmup_resolutions is not None:
@@ -588,6 +588,29 @@ class TestWarmupModeNormalization(unittest.TestCase):
self.assertFalse(sa.server_warmup)
self.assertEqual(sa.warmup_mode, "request")
def test_legacy_warmup_on_uses_defaulted_server_mode(self):
# `serve --warmup` (legacy ON, mode defaulted to "server" but not
# explicit) must resolve to server-based warmup, not silently downgrade
# to request mode.
sa = self._resolve(warmup_mode="server", warmup=True, explicit=("warmup",))
self.assertEqual(sa.warmup_mode, "server")
self.assertTrue(sa.warmup)
self.assertTrue(sa.server_warmup)
def test_legacy_warmup_with_resolutions_runs_server_warmup(self):
# Dead-zone regression: `serve --warmup --warmup-resolutions X` must run
# server-based (synthetic) warmup, not end up with no warmup at all
# (request-based warmup bails out when warmup_resolutions is set).
sa = self._resolve(
warmup_mode="server",
warmup=True,
warmup_resolutions=["1024x1024"],
explicit=("warmup",),
)
self.assertTrue(sa.warmup)
self.assertTrue(sa.server_warmup)
self.assertEqual(sa.warmup_mode, "server")
def test_disagg_role_disables_server_warmup(self):
from sglang.multimodal_gen.runtime.disaggregation.roles import RoleType