{"record":{"id":"f74c9d00c6273706","repo":"vllm-project/vllm","slug":"unknown-all2all-backend-self-all2all-backend","errorCode":null,"errorMessage":"Unknown all2all backend: {self.all2all_backend}","messagePattern":"Unknown all2all backend: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/distributed/device_communicators/cuda_communicator.py","lineNumber":201,"sourceCode":"                or self.all2all_backend == \"flashinfer_nvlink_two_sided\"\n            ):\n                if self.all2all_backend == \"flashinfer_all2allv\":\n                    logger.warning_once(\n                        \"'flashinfer_all2allv' is deprecated and has been renamed to\"\n                        \"'flashinfer_nvlink_two_sided'. It will be removed in a future\"\n                        \"release.\"\n                    )\n                from .all2all import FlashInferNVLinkTwoSidedManager\n\n                self.all2all_manager = FlashInferNVLinkTwoSidedManager(\n                    self.cpu_group, tcp_store_group\n                )\n            elif self.all2all_backend == \"flashinfer_nvlink_one_sided\":\n                from .all2all import FlashInferNVLinkOneSidedManager\n\n                self.all2all_manager = FlashInferNVLinkOneSidedManager(self.cpu_group)\n            else:\n                raise ValueError(f\"Unknown all2all backend: {self.all2all_backend}\")\n\n            logger.info_once(\n                \"Using %s all2all manager.\",\n                self.all2all_manager.__class__.__name__,\n                scope=\"global\",\n            )\n\n    def _log_all_reduce_backend_selection(self) -> None:\n        \"\"\"Log the all-reduce backends that are active for this group.\n\n        The dispatch chain in ``all_reduce`` tries backends in this order and\n        falls through to the next one if the current backend rejects the\n        input (size/dtype gates) or is disabled. The list of \"enabled\"\n        backends below is the subset of potential backends that may be\n        chosen at dispatch time for this group; the actual per-call choice\n        depends on the input tensor.\n        \"\"\"\n        all_potential_ar_backends = [","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/distributed/device_communicators/cuda_communicator.py#L183-L219","documentation":"Raised by CudaCommunicator when the configured all2all_backend string matches none of the known options (the if/elif chain for flashinfer_nvlink_two_sided / flashinfer_nvlink_one_sided / etc. falls through). The backend name comes from distributed config, so an unrecognized value fails fast at communicator construction.","triggerScenarios":"Passing a misspelled or version-mismatched all2all backend (e.g. 'flashinfer-nvlink', 'one_sided', or a name introduced in another vLLM version) via --distributed-config / VLLM_ALL2ALL_BACKEND equivalent settings while creating a CudaCommunicator with all2all enabled.","commonSituations":"Copying configs between vLLM versions where backend names changed; typos in YAML/JSON distributed config; plugins expecting to inject custom names that core does not know.","solutions":["Use one of the exact names handled in cuda_communicator.py (e.g. flashinfer_nvlink_two_sided, flashinfer_nvlink_one_sided).","Clear the all2all backend setting if you did not intend to configure it, letting the default path apply.","Align vLLM version with the config source (names are per-version); check the current file for the accepted values."],"exampleFix":"# before\n--distributed-config '{\"all2all_backend\":\"flashinfer-nvlink-2s\"}'\n# after\n--distributed-config '{\"all2all_backend\":\"flashinfer_nvlink_two_sided\"}'","handlingStrategy":"validation","validationCode":"VALID = {\"flashinfer_nvlink_two_sided\", \"flashinfer_nvlink_one_sided\"}\nname = dist_cfg.all2all_backend\nif name is not None and name not in VALID:\n    raise SystemExit(f\"unknown all2all backend {name!r}; valid: {sorted(VALID)}\")","typeGuard":"def all2all_backend_known(name: str) -> bool:\n    return name in {\"flashinfer_nvlink_two_sided\", \"flashinfer_nvlink_one_sided\"}","tryCatchPattern":"try:\n    comm = CudaCommunicator(group, all2all_backend=name)\nexcept ValueError as e:\n    if \"Unknown all2all backend\" in str(e):\n        name = None  # fall back to default dispatch\n        comm = CudaCommunicator(group)\n    else:\n        raise","preventionTips":["Validate all2all backend strings against the names in the deployed vLLM's cuda_communicator.py before launch.","Regenerate config templates on vLLM upgrades — backend names change between versions."],"tags":["vllm","distributed","all2all","config","typo"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}