Support Waterfill with MegaMoE backend (#27350)

This commit is contained in:
xutizhou
2026-07-13 03:56:46 -07:00
committed by GitHub
parent 874fc07d9b
commit eb31b5310c
14 changed files with 87 additions and 83 deletions
@@ -1,4 +1,4 @@
"""Unit tests for DeepEP Waterfill and EPLB updater compatibility."""
"""Unit tests for Waterfill and EPLB updater compatibility."""
from sglang.test.ci.ci_register import register_cpu_ci
@@ -30,7 +30,7 @@ class _FakeExpertParam(nn.Module):
self.global_scale._sglang_require_global_experts = True
class TestDeepEPWaterfillEPLB(CustomTestCase):
class TestWaterfillEPLB(CustomTestCase):
def test_deepseek_moe_get_moe_weights_excludes_fused_shared_slot(self):
experts = _FakeExpertParam()
moe = SimpleNamespace(num_fused_shared_experts=1, experts=experts)
@@ -973,12 +973,12 @@ class TestAdaptiveSpecArgs(CustomTestCase):
self.assertEqual(args.speculative_num_draft_tokens, 4)
class TestDeepEPWaterfillArgs(CustomTestCase):
class TestWaterfillArgs(CustomTestCase):
def test_waterfill_enforces_shared_experts_fusion(self):
server_args = ServerArgs(
model_path="dummy",
moe_a2a_backend="deepep",
enable_deepep_waterfill=True,
enable_waterfill=True,
disable_shared_experts_fusion=True,
)
# dummy-model path short-circuits __post_init__; invoke the handler directly.
@@ -995,7 +995,7 @@ class TestDeepEPWaterfillArgs(CustomTestCase):
server_args = ServerArgs(
model_path="dummy",
moe_a2a_backend="none",
enable_deepep_waterfill=True,
enable_waterfill=True,
)
# dummy-model path short-circuits __post_init__; invoke the handler directly.
server_args._handle_a2a_moe()
@@ -1006,11 +1006,27 @@ class TestDeepEPWaterfillArgs(CustomTestCase):
self.assertEqual(resolved_view(server_args).moe_a2a_backend, "deepep")
self.assertTrue(server_args.enforce_shared_experts_fusion)
def test_waterfill_keeps_megamoe_backend(self):
server_args = ServerArgs(
model_path="dummy",
moe_a2a_backend="megamoe",
enable_waterfill=True,
disable_shared_experts_fusion=True,
)
# dummy-model path short-circuits __post_init__; invoke the handler directly.
server_args._handle_a2a_moe()
from sglang.srt.arg_groups.overrides import resolved_view
self.assertEqual(resolved_view(server_args).moe_a2a_backend, "megamoe")
self.assertFalse(resolved_view(server_args).disable_shared_experts_fusion)
self.assertTrue(server_args.enforce_shared_experts_fusion)
def test_waterfill_supports_deepep_low_latency_mode(self):
server_args = ServerArgs(
model_path="dummy",
moe_a2a_backend="deepep",
enable_deepep_waterfill=True,
enable_waterfill=True,
deepep_mode="low_latency",
)
# dummy-model path short-circuits __post_init__; invoke the handler directly.
@@ -1452,7 +1468,7 @@ class TestTwoBatchOverlapBackend(CustomTestCase):
SGLANG_ENABLE_DP_TBO env: enabling DP TBO now needs no extra flag.
dummy-model short-circuits __post_init__, so the guard handler is invoked
directly (same pattern as TestDeepEPWaterfillArgs)."""
directly (same pattern as TestWaterfillArgs)."""
def _args(self, **overrides):
args = ServerArgs(model_path="dummy")
+2 -6
View File
@@ -1824,9 +1824,7 @@ class TestGoldenModelOverrides(_IsolatedPublish):
self.assertEqual(
_a2a_backend_overrides(
ResolvedView(
SimpleNamespace(
enable_deepep_waterfill=True, moe_a2a_backend="none"
)
SimpleNamespace(enable_waterfill=True, moe_a2a_backend="none")
)
),
{"moe_a2a_backend": "deepep"},
@@ -1836,9 +1834,7 @@ class TestGoldenModelOverrides(_IsolatedPublish):
self.assertEqual(
_a2a_backend_overrides(
ResolvedView(
SimpleNamespace(
enable_deepep_waterfill=True, moe_a2a_backend="none"
)
SimpleNamespace(enable_waterfill=True, moe_a2a_backend="none")
)
),
{"moe_a2a_backend": "megamoe"},