From 575759d90af942eeff89f1c8c33a1fcdb2da4181 Mon Sep 17 00:00:00 2001 From: silencejade <222910030+silencejade@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:28:15 +0800 Subject: [PATCH] [NPU] Support nccl backend for --remote-instance-weight-loader (#39413) --- python/sglang/srt/connector/remote_instance.py | 3 ++- .../model_runner_components/weight_exporter.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/python/sglang/srt/connector/remote_instance.py b/python/sglang/srt/connector/remote_instance.py index 875063bd4..f28270368 100644 --- a/python/sglang/srt/connector/remote_instance.py +++ b/python/sglang/srt/connector/remote_instance.py @@ -9,6 +9,7 @@ import torch.distributed as dist from sglang.srt.connector import BaseConnector from sglang.srt.utils import init_custom_process_group +from sglang.srt.utils.common import is_npu logger = logging.getLogger(__name__) @@ -43,7 +44,7 @@ class RemoteInstanceConnector(BaseConnector): master_address = parsed_url.hostname master_port = parsed_url.port group_name = f"send_weights_{instance_ip}_{master_port}_{tp_rank}" - backend = "nccl" + backend = "nccl" if not is_npu() else "hccl" logger.info( f"init custom process group: master_address={master_address}, master_port={master_port}, " diff --git a/python/sglang/srt/model_executor/model_runner_components/weight_exporter.py b/python/sglang/srt/model_executor/model_runner_components/weight_exporter.py index d9f181e56..0d3983731 100644 --- a/python/sglang/srt/model_executor/model_runner_components/weight_exporter.py +++ b/python/sglang/srt/model_executor/model_runner_components/weight_exporter.py @@ -9,6 +9,7 @@ import torch.distributed as dist from sglang.srt.platforms import current_platform from sglang.srt.utils import init_custom_process_group +from sglang.srt.utils.common import is_npu from sglang.srt.utils.network import NetworkAddress logger = logging.getLogger(__name__) @@ -43,6 +44,8 @@ class WeightExporter: ) group_port = ports_list[self.tp_rank] group_name = f"{group_name}_{group_port}_{self.tp_rank}" + backend = "hccl" if backend == "nccl" and is_npu() else backend + device_type = "cuda" if not is_npu() else "npu" logger.info( f"init custom process group: tp_rank={self.tp_rank}, gpu_id={self.gpu_id}, master_address={master_address}, master_port={group_port}, " @@ -60,7 +63,7 @@ class WeightExporter: world_size=world_size, rank=group_rank, group_name=group_name, - device_id=torch.device("cuda", self.gpu_id), + device_id=torch.device(device_type, self.gpu_id), ) dist.barrier(group=self._weights_send_group[group_name]) success = True