diff --git a/python/sglang/multimodal_gen/runtime/server_args.py b/python/sglang/multimodal_gen/runtime/server_args.py index 4fc29be1c..8c3db7bf8 100644 --- a/python/sglang/multimodal_gen/runtime/server_args.py +++ b/python/sglang/multimodal_gen/runtime/server_args.py @@ -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: diff --git a/python/sglang/multimodal_gen/test/unit/test_server_args.py b/python/sglang/multimodal_gen/test/unit/test_server_args.py index d839bc141..c7c72337f 100644 --- a/python/sglang/multimodal_gen/test/unit/test_server_args.py +++ b/python/sglang/multimodal_gen/test/unit/test_server_args.py @@ -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