{"record":{"id":"541f730a4b0b20c6","repo":"vllm-project/vllm","slug":"use-communication-streams-is-not-supported","errorCode":null,"errorMessage":"use_communication_streams is not supported","messagePattern":"use_communication_streams is not supported","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"vllm/distributed/device_communicators/ray_communicator.py","lineNumber":62,"sourceCode":"\n        Args:\n            world_size: The number of participating actors.\n            comm_id: A unique communicator ID. This is just to conform with\n                the Ray Communicator API and is not used.\n            rank: The rank of this actor. If None, then the caller is not a\n                participant of the RayPPCommunicator group (e.g., the Ray\n                driver).\n            actor_handles: A list of actor handles.\n            cuda_stream: A CUDA stream to dispatch communication ops to. This\n                is not supported.\n            use_communication_streams: Whether to use communication streams.\n                This is not supported.\n        \"\"\"\n        self._world_size = world_size\n        self._rank: int | None = None\n        self._actor_handles = actor_handles\n        if use_communication_streams:\n            raise NotImplementedError(\"use_communication_streams is not supported\")\n        if cuda_stream is not None and cuda_stream != current_stream():\n            raise ValueError(\n                \"cuda_stream other than the current stream is not supported\"\n            )\n\n        if rank is not None:\n            # Rank is not None, this is Ray worker\n            assert ray.get_gpu_ids(), \"RayPPCommunicator has no GPUs assigned\"\n\n            self._comm = get_pp_group().device_communicator\n            assert self._comm is not None\n\n            # Since we wrap around the vLLM _PP communicator, we use\n            # the rank from the vLLM communicator, and ignore the rank\n            # passed in from Ray.\n            # TODO(rui): refactor the Ray Communicator API so that\n            # it also supports no rank passed in.\n            self._rank = self._comm.rank_in_group","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/distributed/device_communicators/ray_communicator.py#L44-L80","documentation":"RayPPCommunicator implements the generic device-communicator interface on top of vLLM's pipeline-parallel group over Ray actors. It executes everything on the current CUDA stream, so the use_communication_streams flag (used by other backends to overlap comm and compute on separate streams) is explicitly rejected with NotImplementedError at construction time.","triggerScenarios":"Instantiating RayPPCommunicator(..., use_communication_streams=True), typically from generic launcher code that sets the flag based on --enable-symm-mem / comm-overlap options regardless of backend.","commonSituations":"Turning on communication/compute overlap in a Ray-based pipeline-parallel deployment; sharing config between a NCCL-based communicator and the Ray backend.","solutions":["Pass use_communication_streams=False (or omit it) when constructing RayPPCommunicator","If overlap is required, use a non-Ray communicator backend that supports communication streams"],"exampleFix":"# before\ncomm = RayPPCommunicator(world_size, rank, actor_handles, use_communication_streams=True)\n\n# after\ncomm = RayPPCommunicator(world_size, rank, actor_handles)  # default False","handlingStrategy":"validation","validationCode":"if isinstance(comm_cls, type) and comm_cls.__name__ == \"RayPPCommunicator\":\n    kwargs.pop(\"use_communication_streams\", None)  # backend only supports current-stream execution","typeGuard":null,"tryCatchPattern":"try:\n    RayPPCommunicator(..., use_communication_streams=flag)\nexcept NotImplementedError:\n    flag = False  # retry without comm streams","preventionTips":["Gate overlap flags on backend capability, not global config","Default constructor kwargs to backend-neutral values","Document per-backend flag support in one matrix"],"tags":["ray","pipeline-parallel","distributed","not-implemented"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}