[Distributed] Enable FlashInfer all-reduce by default (#52998)

Signed-off-by: Woosuk Kwon <woosuk@inferact.ai> Co-authored-by: OpenAI Codex <codex@openai.com>

Woosuk Kwon committed Aug 19, 2026 at 18:17 UTC 6a962071bdad41c2d739bb2e879e72bbe9df9e63
2 files changed +6 -3
vllm/distributed/device_communicators/cuda_communicator.py
+4 -1
@@ -58,7 +58,10 @@ class CudaCommunicator(DeviceCommunicatorBase):
58
59 use_custom_allreduce = _ENABLE_CUSTOM_ALL_REDUCE
60 use_torch_symm_mem = envs.VLLM_ALLREDUCE_USE_SYMM_MEM
61 - use_flashinfer_allreduce = envs.VLLM_ALLREDUCE_USE_FLASHINFER
61 + # FlashInfer all-reduce does not provide a fixed reduction order.
62 + use_flashinfer_allreduce = (
63 + envs.VLLM_ALLREDUCE_USE_FLASHINFER and not envs.VLLM_BATCH_INVARIANT
64 + )
65 use_aiter_allreduce = use_custom_allreduce and bool(
66 rocm_aiter_ops.is_custom_all_reduce_enabled()
67 )
vllm/envs.py
+2 -2
@@ -260,7 +260,7 @@ if TYPE_CHECKING:
260 VLLM_HAS_FLASHINFER_CUBIN: bool = False
261 VLLM_ROCM_FP8_MFMA_PAGE_ATTN: bool = False
262 VLLM_ALLREDUCE_USE_SYMM_MEM: bool = True
263 - VLLM_ALLREDUCE_USE_FLASHINFER: bool = False
263 + VLLM_ALLREDUCE_USE_FLASHINFER: bool = True
264 VLLM_TUNED_CONFIG_FOLDER: str | None = None
265 VLLM_ENABLE_STARTUP_PLAN: bool = False
266 VLLM_GPT_OSS_SYSTEM_TOOL_MCP_LABELS: set[str] = set()
@@ -1857,7 +1857,7 @@ environment_variables: dict[str, Callable[[], Any]] = {
1857 ),
1858 # Whether to use FlashInfer allreduce
1859 "VLLM_ALLREDUCE_USE_FLASHINFER": lambda: bool(
1860 - int(os.getenv("VLLM_ALLREDUCE_USE_FLASHINFER", "0"))
1860 + int(os.getenv("VLLM_ALLREDUCE_USE_FLASHINFER", "1"))
1861 ),
1862 # Experimental: use this to enable MCP tool calling for non harmony models
1863 "VLLM_USE_EXPERIMENTAL_PARSER_CONTEXT": lambda: bool(