diff --git a/python/sglang/srt/grpc/scheduler_launcher.py b/python/sglang/srt/grpc/scheduler_launcher.py index 88356d7d3..a35dd0471 100644 --- a/python/sglang/srt/grpc/scheduler_launcher.py +++ b/python/sglang/srt/grpc/scheduler_launcher.py @@ -112,8 +112,26 @@ def launch_scheduler_process_only( + (tp_rank % tp_size_per_node) * server_args.gpu_id_step ) - # Calculate MoE expert parallel rank - moe_ep_rank = tp_rank // (server_args.tp_size // server_args.ep_size) + # Calculate parallelism ranks (matching engine.py logic) + attn_dp_size = ( + server_args.dp_size if server_args.enable_dp_attention else 1 + ) + attn_tp_size = ( + server_args.tp_size // attn_dp_size // server_args.attn_cp_size + ) + attn_cp_rank = (tp_rank // attn_tp_size) % server_args.attn_cp_size + moe_dp_rank = tp_rank // ( + server_args.tp_size // server_args.moe_dp_size + ) + moe_ep_rank = ( + tp_rank + % (server_args.tp_size // server_args.moe_dp_size) + // ( + server_args.tp_size + // server_args.moe_dp_size + // server_args.ep_size + ) + ) # Create scheduler process proc = mp.Process( @@ -123,6 +141,8 @@ def launch_scheduler_process_only( port_args, gpu_id, tp_rank, + attn_cp_rank, + moe_dp_rank, moe_ep_rank, pp_rank, None, # dp_rank