[Fix][Qwen]: fused shared-expert detection PP-safe protection (#34447)

This commit is contained in:
zijiec
2026-08-11 18:50:05 -07:00
committed by GitHub
parent 37c631ef23
commit 93e9db5eb8
2 changed files with 75 additions and 6 deletions
@@ -0,0 +1,69 @@
import unittest
from types import SimpleNamespace
from sglang.srt.layers.utils import PPMissingLayer
from sglang.srt.models.qwen3_5 import Qwen3_5MoeForConditionalGeneration
from sglang.test.ci.ci_register import register_cpu_ci
from sglang.test.test_utils import CustomTestCase
register_cpu_ci(est_time=2, suite="base-a-test-cpu")
class TestQwen3_5PipelineParallel(CustomTestCase):
@staticmethod
def _get_num_fused_shared_experts(layers, start_layer, end_layer):
model = SimpleNamespace(
model=SimpleNamespace(
layers=layers,
start_layer=start_layer,
end_layer=end_layer,
)
)
return Qwen3_5MoeForConditionalGeneration._get_num_fused_shared_experts(model)
def test_get_num_fused_shared_experts_returns_zero_without_layers(self):
model = SimpleNamespace(model=SimpleNamespace())
num_fused_shared_experts = (
Qwen3_5MoeForConditionalGeneration._get_num_fused_shared_experts(model)
)
self.assertEqual(num_fused_shared_experts, 0)
def test_get_num_fused_shared_experts_uses_local_pp_layers(self):
layers = [
PPMissingLayer(),
PPMissingLayer(),
SimpleNamespace(
mlp=SimpleNamespace(num_fused_shared_experts=1),
),
SimpleNamespace(
mlp=SimpleNamespace(num_fused_shared_experts=1),
),
]
num_fused_shared_experts = self._get_num_fused_shared_experts(
layers,
start_layer=2,
end_layer=4,
)
self.assertEqual(num_fused_shared_experts, 1)
def test_get_num_fused_shared_experts_returns_zero_without_local_fusion(self):
layers = [
PPMissingLayer(),
SimpleNamespace(mlp=SimpleNamespace()),
]
num_fused_shared_experts = self._get_num_fused_shared_experts(
layers,
start_layer=1,
end_layer=2,
)
self.assertEqual(num_fused_shared_experts, 0)
if __name__ == "__main__":
unittest.main()