A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 6, 09:30 UTC
[MoE Refactor] Rename "naive" all2all backend (#36294)
Signed-off-by: Bill Nell <bnell@redhat.com>
bnellnm committed
Mar 19, 2026 at 15:50 UTC
91be5f9be3e5bf44fd00b696bf47f0e41edae3bf
6 files changed
+15
-16
docs/design/moe_kernel_features.md
+1
-1
@@ -103,7 +103,7 @@ To be used with a particular `FusedMoEPrepareAndFinalizeModular` subclass, MoE k
103
104
## Modular Kernel "families"
105
106
-The following table shows "families" of modular kernels that are intended to work together. There are some combinations which may work but have not yet been tested, e.g. flashinfer with other fp8 experts. Note that the "naive" backend will work with any non-modular experts.
106
+The following table shows "families" of modular kernels that are intended to work together. There are some combinations which may work but have not yet been tested, e.g. flashinfer with other fp8 experts.
107
108
| backend | `FusedMoEPrepareAndFinalizeModular` subclasses | `FusedMoEExpertsModular` subclasses |
109
| ------- | ---------------------------------------------- | ----------------------------------- |
docs/serving/expert_parallel_deployment.md
-1
@@ -23,7 +23,6 @@ vLLM provides multiple communication backends for EP. Use `--all2all-backend` to
23
| `deepep_low_latency` | Multi-node decode | CUDA graph support, masked layout, optimized for decode | Decode-dominated workloads, low-latency scenarios |
24
| `flashinfer_nvlink_one_sided` | MNNVL systems | FlashInfer's one-sided A2A strategy for multi-node NVLink | High-throughput workloads |
25
| `flashinfer_nvlink_two_sided` | MNNVL systems | FlashInfer's two-sided A2A strategy for multi-node NVLink | Systems with NVLink across nodes |
26
-| `naive` | Testing/debugging | Simple broadcast-based implementation | Debugging, not recommended for production |
26
27
## Single Node Deployment
28
vllm/config/parallel.py
+5
-6
@@ -162,7 +162,6 @@ class ParallelConfig:
162
all2all_backend: All2AllBackend = "allgather_reducescatter"
163
"""All2All backend for MoE expert parallel communication. Available options:
164
165
- - "naive": Naive all2all implementation using broadcasts\n
165
- "allgather_reducescatter": All2all based on allgather and reducescatter\n
166
- "deepep_high_throughput": Use deepep high-throughput kernels\n
167
- "deepep_low_latency": Use deepep low-latency kernels\n
@@ -344,10 +343,11 @@ class ParallelConfig:
343
f"but found: {self._api_process_rank}"
344
)
345
347
- if self.all2all_backend == "pplx":
346
+ if self.all2all_backend in ["pplx", "naive"]:
347
logger.warning(
349
- "The 'pplx' all2all backend has been removed. "
350
- "Falling back to 'allgather_reducescatter'."
348
+ "The '%s' all2all backend has been removed. "
349
+ "Falling back to 'allgather_reducescatter'.",
350
+ self.all2all_backend,
351
)
352
self.all2all_backend = "allgather_reducescatter"
353
@@ -534,7 +534,6 @@ class ParallelConfig:
534
self.all2all_backend
535
in (
536
"allgather_reducescatter",
537
- "naive",
537
"deepep_high_throughput",
538
"deepep_low_latency",
539
"mori",
@@ -764,7 +763,7 @@ class ParallelConfig:
763
)
764
765
if (
767
- self.all2all_backend in ("allgather_reducescatter", "naive")
766
+ self.all2all_backend in ("allgather_reducescatter")
767
and self.eplb_config.use_async
768
):
769
logger.warning(
vllm/model_executor/layers/fused_moe/all2all_utils.py
+1
-1
@@ -229,7 +229,7 @@ def maybe_make_prepare_finalize(
229
num_dispatchers=all2all_manager.world_size,
230
)
231
232
- elif moe.use_naive_all2all_kernels and allow_new_interface:
232
+ elif moe.use_ag_rs_all2all_kernels and allow_new_interface:
233
prepare_finalize = make_moe_prepare_and_finalize_naive_dp_ep(
234
use_monolithic=use_monolithic,
235
is_sequence_parallel=moe.moe_parallel_config.is_sequence_parallel,
vllm/model_executor/layers/fused_moe/config.py
+7
-6
@@ -975,9 +975,10 @@ class FusedMoEParallelConfig:
975
return self.use_deepep_ll_kernels
976
977
@property
978
- def use_naive_all2all_kernels(self):
979
- return self.use_all2all_kernels and (
980
- self.all2all_backend in ["naive", "allgather_reducescatter"]
978
+ def use_ag_rs_all2all_kernels(self):
979
+ return (
980
+ self.use_all2all_kernels
981
+ and self.all2all_backend == "allgather_reducescatter"
982
)
983
984
@property
@@ -1143,7 +1144,7 @@ class FusedMoEParallelConfig:
1144
ep_rank=0,
1145
sp_size=1,
1146
use_ep=False,
1146
- all2all_backend="naive",
1147
+ all2all_backend="allgather_reducescatter",
1148
enable_eplb=False,
1149
)
1150
@@ -1256,8 +1257,8 @@ class FusedMoEConfig:
1257
return self.moe_parallel_config.use_fi_nvl_one_sided_kernels
1258
1259
@property
1259
- def use_naive_all2all_kernels(self):
1260
- return self.moe_parallel_config.use_naive_all2all_kernels
1260
+ def use_ag_rs_all2all_kernels(self):
1261
+ return self.moe_parallel_config.use_ag_rs_all2all_kernels
1262
1263
@property
1264
def use_nixl_ep_kernels(self):
vllm/model_executor/layers/fused_moe/experts/trtllm_fp8_moe.py
+1
-1
@@ -79,7 +79,7 @@ class TrtLlmFp8ExpertsBase:
79
"""Monolithic kernel so only use with naive DP/EP and TP."""
80
return (
81
not moe_parallel_config.use_all2all_kernels
82
- or moe_parallel_config.use_naive_all2all_kernels
82
+ or moe_parallel_config.use_ag_rs_all2all_kernels
83
) and not moe_parallel_config.enable_eplb
84
85
def supports_chunking(self) -> bool: