[Fix] Route asymmetric-KV models to fa4 on SM100 and pin MiMoV2 FP8 MoE to flashinfer_trtllm (#32818)

This commit is contained in:
Liangsheng Yin
2026-07-29 16:37:43 -07:00
committed by GitHub
parent 3c1717d9b6
commit e5c46ff07d
6 changed files with 88 additions and 21 deletions
+51 -16
View File
@@ -348,24 +348,59 @@ class TestGoldenModelOverrides(_IsolatedPublish):
# so the declaration is pinned directly for both provider inputs.
from sglang.srt.arg_groups.overrides import _mimo_v2_overrides
self.assertEqual(
_mimo_v2_overrides(SimpleNamespace(speculative_algorithm="EAGLE"), None),
{"enable_multi_layer_eagle": True},
)
self.assertEqual(
_mimo_v2_overrides(SimpleNamespace(speculative_algorithm=None), None),
{},
)
def _args(**kw):
defaults = dict(speculative_algorithm=None, moe_runner_backend="auto")
defaults.update(kw)
return SimpleNamespace(**defaults)
# Non-SM100: the MoE pin must not fire, so hf_config is never inspected.
with patch.object(overrides_module, "is_sm100_supported", return_value=False):
self.assertEqual(
_mimo_v2_overrides(_args(speculative_algorithm="EAGLE"), None),
{"enable_multi_layer_eagle": True},
)
self.assertEqual(_mimo_v2_overrides(_args(), None), {})
def test_mimo_v2_sm100_fp8_pins_flashinfer_trtllm_moe(self):
"""Blackwell FP8 must not be left on the triton fused-MoE runner."""
from sglang.srt.arg_groups.overrides import _mimo_v2_overrides
def _args(**kw):
defaults = dict(speculative_algorithm=None, moe_runner_backend="auto")
defaults.update(kw)
return SimpleNamespace(**defaults)
with patch.object(overrides_module, "is_sm100_supported", return_value=True):
with patch.object(
overrides_module, "get_quantization_config", return_value="fp8"
):
self.assertEqual(
_mimo_v2_overrides(_args(), None),
{"moe_runner_backend": "flashinfer_trtllm"},
)
# An explicit user choice is never overwritten.
self.assertEqual(
_mimo_v2_overrides(_args(moe_runner_backend="triton"), None), {}
)
# FP4 checkpoints run through flashinfer_mxfp4, so they must not be
# pinned to flashinfer_trtllm.
with patch.object(
overrides_module, "get_quantization_config", return_value="mxfp4"
):
self.assertEqual(_mimo_v2_overrides(_args(), None), {})
def test_mimo_v2_family_is_registered(self):
self.assertEqual(
collect_model_override_declarations(
"MiMoV2FlashForCausalLM",
SimpleNamespace(speculative_algorithm="EAGLE"),
None,
),
[("_mimo_v2_overrides", {"enable_multi_layer_eagle": True})],
)
with patch.object(overrides_module, "is_sm100_supported", return_value=False):
self.assertEqual(
collect_model_override_declarations(
"MiMoV2FlashForCausalLM",
SimpleNamespace(
speculative_algorithm="EAGLE", moe_runner_backend="auto"
),
None,
),
[("_mimo_v2_overrides", {"enable_multi_layer_eagle": True})],
)
def test_step3p_hierarchical_cache_golden(self):
# SWA-hybrid arch: the mini config needs layer_types/sliding_window.