Files
sgl-project--sglang/python/sglang/srt/model_executor/mindspore_runner.py
T
wehub-resource-sync 94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:16 +08:00

121 lines
4.1 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the SGLang project
"""ms_runner launch MindSpore distributed modules."""
import logging
import multiprocessing as mp
import os
import sys
from pathlib import Path
import mindspore as ms
import torch
from mindspore._c_expression import GroupOptions
from mindspore.communication import create_group
from sglang.srt.distributed.parallel_state import _groups
logger = logging.getLogger(__name__)
class _Tmp:
def __init__(self):
self.sched_p = None
def set_sched_process(self, p):
self.sched_p = p
def __del__(self):
if self.sched_p:
self.sched_p.kill()
_tmp = _Tmp()
def _get_host_and_ip(distributed_init_method):
try:
_, ip_str, port_str = distributed_init_method.split(":")
ip = ip_str.split("/")[-1]
port = int(port_str)
except Exception as e:
raise RuntimeError(
"Cannot get host and port information from %s, error: %s!"
% (distributed_init_method, str(e))
)
return ip, port
def run_scheduler_init(rank, local_rank, world_size, master_addr, master_port):
with open(str(Path() / "schedule.log"), "w") as scheduler_f:
# For Python outputs.
sys.stdout = scheduler_f
sys.stderr = scheduler_f
# For C++ outputs.
os.dup2(scheduler_f.fileno(), 1)
os.dup2(scheduler_f.fileno(), 2)
os.environ["DEVICE_ID"] = str(local_rank)
os.environ["MS_WORKER_NUM"] = str(world_size)
os.environ["MS_ROLE"] = "MS_SCHED"
os.environ["MS_NODE_ID"] = str(rank)
os.environ["MS_SCHED_HOST"] = str(master_addr)
os.environ["MS_SCHED_PORT"] = str(master_port)
# This function is blocked until the whole cluster exits.
ms.communication.init()
def set_ms_parallel_env(rank, local_rank, world_size, init_method):
master_addr, master_port = _get_host_and_ip(init_method)
# change port avoiding port conflicts with torch
master_port = master_port + 35 if master_port < 65500 else master_port - 35
if not os.getenv("MS_ROLE"):
if rank == 0:
# Create a subprocess for scheduler of MindSpore, just for internal collaboration, not for collective communication
sched_p = mp.Process(
target=run_scheduler_init,
args=(rank, local_rank, world_size, master_addr, master_port),
)
sched_p.start()
global _tmp
_tmp.set_sched_process(sched_p)
os.environ["DEVICE_ID"] = str(local_rank)
os.environ["MS_WORKER_NUM"] = str(world_size)
os.environ["MS_ROLE"] = "MS_WORKER"
os.environ["MS_NODE_ID"] = str(rank)
os.environ["MS_SCHED_HOST"] = str(master_addr)
os.environ["MS_SCHED_PORT"] = str(master_port)
def reuse_hccl_comm():
for group_name, group in _groups.items():
# Torch ProcessGroupHccl
device_group = group().device_group
hccl_comm_handle = device_group._get_backend(torch.device("npu")).get_hccl_comm(
group().local_rank
)
logger.info(
f"MindSpore reuse torch group: {device_group}, group_name: {group_name}, local rank: {group().local_rank},"
f"hccl communicator handle: {hex(hccl_comm_handle)}",
)
# Create MS communication group by hccl comm handle to reuse Torch group.
group_options = GroupOptions()
group_options.hccl_config = {"hccl_comm": hccl_comm_handle}
create_group(group_name, group().ranks, group_options)
def init_ms_distributed(world_size, rank, local_rank, server_args, port):
if server_args.dist_init_addr:
dist_init_method = f"tcp://{server_args.dist_init_addr}"
else:
dist_init_method = f"tcp://{server_args.host}:{port}"
set_ms_parallel_env(rank, local_rank, world_size, dist_init_method)
ms.set_context(infer_boost="on", jit_level="O0")
ms.set_context(mode=ms.context.PYNATIVE_MODE)
ms.set_device("Ascend", local_rank)
ms.communication.init("hccl")
# After distributed job is initialized, reuse hccl comms for MindSpore.
reuse_hccl_comm()