[Benchmark] Add SGLANG_SIMULATE_UNIFORM_EXPERTS for balanced expert routing with dummy weights (#25571)

Co-authored-by: Byron Hsu <byronhsu@Byrons-MacBook-Pro.local>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Byron Hsu
2026-05-18 09:16:12 -07:00
committed by GitHub
co-authored by Byron Hsu Cursor
parent 866793c502
commit d96e593fd0
2 changed files with 13 additions and 0 deletions
+1
View File
@@ -205,6 +205,7 @@ class Envs:
SGLANG_DISABLE_TP_MEMORY_INBALANCE_CHECK = EnvBool(False)
SGLANG_SIMULATE_ACC_LEN = EnvFloat(-1)
SGLANG_SIMULATE_ACC_METHOD = EnvStr("match-expected")
SGLANG_SIMULATE_UNIFORM_EXPERTS = EnvBool(False)
SGLANG_TORCH_PROFILER_DIR = EnvStr("/tmp")
SGLANG_OTLP_EXPORTER_SCHEDULE_DELAY_MILLIS = EnvInt(500)
SGLANG_OTLP_EXPORTER_MAX_EXPORT_BATCH_SIZE = EnvInt(64)
+12
View File
@@ -1465,6 +1465,18 @@ def select_experts(
renormalize=renormalize,
)
if envs.SGLANG_SIMULATE_UNIFORM_EXPERTS.get():
# Benchmark-only: override gating with uniform round-robin expert assignment
# to avoid expert imbalance from dummy/random weights. Do NOT use in production.
num_tokens, k = topk_ids.shape
num_experts = router_logits.shape[1]
offsets = torch.randint(0, num_experts, (num_tokens, 1), device=topk_ids.device)
steps = torch.arange(k, device=topk_ids.device).unsqueeze(0)
topk_ids = ((offsets + steps * (num_experts // k)) % num_experts).to(
topk_ids.dtype
)
topk_weights = torch.ones_like(topk_weights) / k
topk_ids, topk_weights = _post_process_topk_ids(
topk_ids=topk_ids,
topk_weights=topk_weights,