手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉

OpenAtom openEuler 2026-08-26 17:48
手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图1

随着 OpenAtom openEuler(简称:“openEuler”或“开源欧拉”) 24.03 及更高版本原生支持 SGLang 等主流 AI 推理框架,系统的 AI 算力生态正逐步完善。


上一篇《文章中详细介绍了如何在 openEuler 24.03 上搭建 vllm环境,以及运行 benchmark。本篇文章将继续介绍在 openEuler 上搭建 SGLang 环境,并使用随机数据集执行 benchmark。





 一、环境准备



本次实测的宿主机环境为:

项目
版本信息
OS
openEuler release 24.03   (LTS-SP4)
内核
6.6.0
Docker
18.09.0
NPU 驱动
26.0.rc1
NPU 固件
7.7.0.10.220
CANN
9.0.1


▏1.确保宿主机使用 openEuler 国内加速 yum 源


🖥️ 宿主机执行


运行 cat /etc/yum.repos.d/openEuler.repo 检查,如果文件不存在或者使用的源不是 openEuler 国内镜像,可以按如下修改,提升 yum install 下载速度。


以下是 openEuler 24.03 LTS SP4 镜像源配置:

#generic-repos is licensed under the Mulan PSL v2.#You can use this software according to the terms and conditions of the Mulan PSL v2.#You may obtain a copy of Mulan PSL v2 at:#    http://license.coscl.org.cn/MulanPSL2#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR#PURPOSE.#See the Mulan PSL v2 for more details.
[OS]name=OSbaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/OS/$basearch/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/OS&arch=$basearchmetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler
[everything]name=everythingbaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/everything/$basearch/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/everything&arch=$basearchmetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/everything/$basearch/RPM-GPG-KEY-openEuler
[EPOL]name=EPOLbaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/EPOL/main/$basearch/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/EPOL/main&arch=$basearchmetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler
[debuginfo]name=debuginfobaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/debuginfo/$basearch/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/debuginfo&arch=$basearchmetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/debuginfo/$basearch/RPM-GPG-KEY-openEuler
[source]name=sourcebaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/source/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever&arch=sourcemetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/source/RPM-GPG-KEY-openEuler
[update]name=updatebaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/update/$basearch/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/update&arch=$basearchmetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler
[update-source]name=update-sourcebaseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS-SP4/update/source/#metalink=https://mirrors.openeuler.org/metalink?repo=$releasever&arch=sourcemetadata_expire=1henabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP4/source/RPM-GPG-KEY-openEuler


▏2. 安装 Docker


🖥️ 宿主机执行


openEuler 24.03 已经内置了 Docker 支持,只需通过包管理器即可一键安装并启动服务:

# 安装 Dockersudo dnf install -y docker
# 启动 Docker 并设置开机自启sudo systemctl enable --now docker
# 验证安装是否成功docker --version


▏3. 配置免 sudo 运行(可选)


🖥️ 宿主机执行


为了方便日常操作,建议将当前用户加入 docker 组,这样运行命令时无需每次都输入 sudo

# 将当前用户加入 docker 组sudo usermod -aG docker $USER
# 刷新组权限使配置立即生效newgrp docker

▏4. 拉取 openEuler 24.03与CANN 基础镜像


🖥️ 宿主机执行


本文使用基于 openEuler 24.03 SP4 与 Python 3.11 的华为官方 CANN 9.0.0 容器镜像:

docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel


▏5. 硬件与驱动


🖥️ 宿主机执行


确保宿主机已正确安装昇腾驱动,NPU 设备可见:

# 查看 NPU 设备ls /dev/davinci*# 预期输出:/dev/davinci0  /dev/davinci2  /dev/davinci_manager ...
# 查看 NPU 状态npu-smi info


运行 npu-smi info 确认 NPU 设备状态正常:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图2


▏6. 模型权重准备


🖥️ 宿主机执行


将模型权重放到宿主机统一目录,后续容器挂载使用:

# 以 Qwen3-0.6B 为例ls/home/models/Qwen3-0.6B/# 预期包含:config.json  tokenizer.json  model*.safetensors ...


▏7. 国内镜像加速


在容器内操作前,先规划好镜像配置。以下镜像策略将在后续各框架步骤中逐一应用:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图3




二、SGLang 推理环境搭建



本次 SGLang 安装配置的环境是 openEuler 24.03 SP4,使用 Docker 启动该容器,容器内已经配置好昇腾驱动和 CANN,系统版本为 openEuler 24.03 SP4 aarch64。


SGLang 的 NPU 支持由官方源码内置,需要通过源码安装。与 vLLM 相比,额外需要:

  • sgl-kernel-npu(不在 PyPI,需从 GitHub Releases 下载预编译 zip)

  • constraints 文件锁版本(防止依赖链拉取 CUDA 包)

  • 仅支持 Python 3.11


本次实测版本配套表:


组件
版本
Python
3.11
PyTorch
2.10.0 (CPU)
torch_npu
2.10.0
triton-ascend
3.2.1.dev20260530 (nightly)
sgl-kernel-npu
2026.05.01.post3
SGLang
v0.5.16


▏Step 1:启动并进入容器


🖥️ 宿主机执行


启动容器并挂载 NPU 设备、模型目录、pip 缓存等:

docker run -d \    --name sglang-ascend-910\    --privileged \    --ipc=host \    --device=/dev/davinci2 \    --device=/dev/davinci_manager \    --device=/dev/devmm_svm \    --device=/dev/hisi_hdc \    -v /usr/local/sbin:/usr/local/sbin:ro \    -v /usr/local/dcmi:/usr/local/dcmi:ro \    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi:ro \    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \    -v /etc/ascend_install.info:/etc/ascend_install.info:ro \    -v /home/models:/models \    -v $(pwd)/sglang-workspace:/workspace/home \    -v $(pwd)/pip-cache:/root/.cache/pip \    -w /workspace \    -p 8002:8002 \    --shm-size=16\    --ulimit memlock=-1 \    --ulimit stack=67108864 \    -e OMP_NUM_THREADS=8 \    swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel \    sleep infinity


与 vLLM 的区别:额外挂载了 sglang-workspace 目录用于持久化源码和缓存,加速二次部署。


进入容器:

docker exec-it sglang-ascend-910b bash -l


▏Step 2:准备 Python 虚拟环境


📦 容器内执行


SGLang NPU 仅支持 Python 3.11,CANN 镜像自带 python3.11,创建虚拟环境即可:

# 容器内执行python3.11 -m venv --upgrade /workspace/home/venv311source /workspace/home/venv311/bin/activatepip install -U pip -i https://mirrors.huaweicloud.com/repository/pypi/simplepython --version# 预期输出:Python 3.11.x


虚拟环境创建成功后,确认 Python 版本为 3.11.x:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图4


▏Step 3:安装依赖


📦 容器内执行


以下命令均在激活虚拟环境后执行。


3.1 替换 openEuler 国内加速 yum 源

加速系统包安装,将默认源替换为华为云镜像:

sed -i -e 's|https://repo.openeuler.org/|https://mirrors.huaweicloud.com/openeuler/|' \       -e '/^metalink=/s/^/#/' /etc/yum.repos.d/openEuler.repo


3.2 创建 constraints 文件

这一步至关重要——锁住 torch 为 CPU 版本,防止 pip 解析 sglang 依赖链时拉取整套 NVIDIA CUDA 包:

printf 'torch==2.10.0+cpu\ntorch_npu==2.10.0\nnumpy==1.26.4\n' > /tmp/sglang_constraints.txtCONSTRAINTS='-c /tmp/sglang_constraints.txt'


3.3 安装基础依赖

安装 setuptools、PyTorch CPU 版本及昇腾 NPU 适配层:

PIP_INDEX="https://mirrors.huaweicloud.com/repository/pypi/simple"pip install 'setuptools<80' -i $PIP_INDEX# torch CPU 版 wheel(从 PyTorch 官方 CPU 索引安装)pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cpu# torch_npu(昇腾适配层)pip install torch_npu==2.10.0 -i $PIP_INDEX


3.4 安装 triton-ascend(nightly 源)

从华为云昇腾 nightly 仓库安装 triton-ascend 开发版:

pip install triton-ascend==3.2.1.dev20260530 \    --extra-index-url https://mirrors.huaweicloud.com/ascend/repos/pypi/nightly \    --trusted-host mirrors.huaweicloud.com \    -i $PIP_INDEX


3.5 安装 sgl-kernel-npu

sgl-kernel-npu 不在任何 PyPI 源上,需要从 GitHub Releases 下载预编译 zip 包(含 deep_ep / sgl_kernel_npu / attentions / torch_memory_saver 四个 wheel):

# 下载 zip(通过 GitHub 镜像代理加速)mkdir -p /workspace/homecurl -fL --retry 3 \    -o /workspace/home/sgl-kernel-npu.zip \    "https://ghfast.top/https://github.com/sgl-project/sgl-kernel-npu/releases/download/2026.05.01.post3/sgl-kernel-npu-2026.05.01.post3-torch2.10.0-py311-cann9.0.0-a3-aarch64.zip"
# 安装 unzip(容器内默认无此工具)command -v unzip >/dev/null 2>&1 || { dnf install -y unzip 2>/dev/null || yum install -y unzip; }
# 解压并安装mkdir -p /workspace/home/sgl-kernel-npuunzip -o /workspace/home/sgl-kernel-npu.zip -d /workspace/home/sgl-kernel-npucd /workspace/home/sgl-kernel-npupip install deep_ep*.whl sgl_kernel_npu*.whl attentions*.whl torch_memory_saver*.whlcd -
# 验证python -c 'import sgl_kernel_npu; print("sgl_kernel_npu import OK")'


安装完成后,验证 sgl_kernel_npu 可正常导入:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图5


3.6 源码安装 SGLang NPU 版

# 克隆源码(通过镜像代理加速,浅克隆节省空间)git clone --branch v0.5.16 --depth 1 \    https://ghfast.top/https://github.com/sgl-project/sglang.git \    /workspace/home/sglangcd /workspace/home/sglang
# NPU 版安装:用 pyproject_npu.toml 覆盖 pyproject.toml# 注意用 cp 而非 mv——保留 npu.toml 模板,二次部署时 git fetch 后仍可复用cp -f python/pyproject_npu.toml python/pyproject.toml
# 安装(constraints 防止拉 CUDA 包)pip install $CONSTRAINTS -e 'python[all_npu]' -i $PIP_INDEX


3.7 替换 opencv-python 为 headless 版

容器内无图形库(缺少 libGL.so.1),如果安装了 opencv-python 需要替换,否则 scheduler 子进程 import cv2 时会崩溃:

if pip list 2>/dev/null | grep -q '^opencv-python 'then    pip uninstall -y opencv-python    pip install $CONSTRAINTS opencv-python-headless -i $PIP_INDEXfi


3.8 预下载 benchmark 数据集

SGLang 的 random 数据集模式仍会从 HuggingFace 下载 ShareGPT 文件(~642MB),在无外网的容器环境中会失败。需要提前下载到本地:

pip install aiohttp -i $PIP_INDEX
export HF_ENDPOINT="https://hf-mirror.com"mkdir -p /workspace/home/sglang_bench_datacurl -fL --retry 3 \    -o /workspace/home/sglang_bench_data/ShareGPT_V3_unfiltered_cleaned_split.json \    "https://hf-mirror.com/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json"


3.9 验证版本信息

确认各组件版本正确:

python -c 'import torch, torch_npu, sglang, sgl_kernel_npu; print("torch:", torch.__version__); print("torch_npu:", torch_npu.__version__); print("sglang:", sglang.__version__)'


版本验证输出如下:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图6


▏Step 4:启动推理服务


📦 容器内执行

启动 SGLang 推理服务,后台运行并将日志写入文件:

source /usr/local/Ascend/ascend-toolkit/set_env.shexport ASCEND_RT_VISIBLE_DEVICES=0
sglang serve /models/Qwen3-0.6B \    --host 0.0.0.0 \    --port 8002 \    --attention-backend ascend \    --device npu \    --tp-size 1 \x    --mem-fraction-static 0.9 \    --trust-remote-code \    > /workspace/logs/sglang_server.log 2>&1 &


参数说明:

  • --attention-backend ascend:使用昇腾原生 Attention 实现

  • --device npu:指定 NPU 设备

  • --mem-fraction-static 0.9:静态显存占比


▏Step 5:验证服务


等到 /workspace/logs/sglang_server.log 输出 "The server is fired up and ready to roll!" 说明服务启动成功了。


5.1 等待就绪

export HF_ENDPOINT="https://hf-mirror.com"
while ! curl -fsS http://127.0.0.1:8002/health 2>/dev/null; do    echo "等待服务就绪..."    sleep 10doneecho "服务已就绪!"


5.2 curl 推理验证

发送一条测试请求,验证推理服务是否正常响应:

curl -sS http://127.0.0.1:8002/v1/chat/completions \    -H "Content-Type: application/json" \    -d '{        "model""/models/Qwen3-0.6B",        "messages": [{"role""user""content""请用一句话介绍华为昇腾。"}],        "max_tokens"64,        "temperature"0,        "chat_template_kwargs": {"enable_thinking"false}    }'


推理验证返回结果如下:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图7


▏Step 6:运行 Benchmark


📦 容器内执行

export HF_ENDPOINT="https://hf-mirror.com"export HF_DATASETS_OFFLINE=0
# 如果硬件算力足够,适当增加输入输出的长度和并发python -m sglang.benchmark.serving \    --backend sglang \    --model /models/Qwen3.5-9\    --dataset-name random \    --dataset-path /workspace/home/sglang_bench_data/ShareGPT_V3_unfiltered_cleaned_split.json \    --random-input-len  2048 \    --random-output-len 512 \    --num-prompts 200 \    --max-concurrency 64 \    --port 8002 \    --output-file /workspace/logs/sglang_benchmark.json


注意: --dataset-name 这个参数跟 vLLM 的有些不同:--dataset-name random 表示用 random 分布采样输入长度,它实际上指的是使用 ShareGPT 数据集作为输入,随机取输入长度,随机的是“长度”,不是“token”,所以 --dataset-path 必须指向本地已下载的 ShareGPT 文件,否则仍自动尝试联网下载 ShareGPT 数据集。


Benchmark 测试结果:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图8


如果想做类似 vLLM 的随机“token” Benchmark,用以下命令跑 random-ids 模式:

python -m sglang.benchmark.serving \    --backend sglang \    --model /models/Qwen3.5-9\    --dataset-name random-ids \    --random-input-len  2048 \    --random-output-len 512 \    --num-prompts 200 \    --max-concurrency 64 \    --port 8002 \    --output-file /workspace/logs/sglang_benchmark_random-ids.json


random-ids 模式 Benchmark 测试结果:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图9


▏Step 7:清理


📦 容器内 + 🖥️ 宿主机

测试完成后,停止服务并清理容器:

# 优雅退出(SGLang 官方推荐 SIGINT)kill -SIGINT $(pgrep -f 'sglang')
# 退出容器后删除exitdocker stop sglang-ascend-910bdocker rm sglang-ascend-910b




三、关键指标解读



以下是 Benchmark 输出中各项指标的含义:

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图10





四、常见问题与踩坑



5.1 yum install 慢

  • 现象: yum install xxx 软件包时,下载速度缓慢。

  • 原因: 系统默认的 yum 源可能是 repo.openeuler.org,速度较慢。

  • 修复: 替换 openEuler 国内加速 yum 源:

sed -i -e 's|https://repo.openeuler.org/|https://mirrors.huaweicloud.com/openeuler/|' \       -e '/^metalink=/s/^/#/' /etc/yum.repos.d/openEuler.repo


5.2 sgl-kernel-npu 不在 PyPI(SGLang)

  • 现象: pip install sgl-kernel-npu 报找不到包。

  • 原因: sgl-kernel-npu 未发布到任何 PyPI 源,只能从 GitHub Releases 下载预编译 zip。

  • 修复: 手动下载 zip 并解压安装四个 wheel(详见 SGLang Step 3.5)。


5.3 pip 拉取 CUDA 包(SGLang)

  • 现象: 安装 SGLang 时 pip 尝试下载 torch CUDA 版本。

  • 原因: sglang 的依赖链(如 outlines)会间接依赖 torch,pip 默认解析到 CUDA 版。

  • 修复:使用 constraints 文件锁住 torch==2.10.0+cpu(详见 SGLang Step 3.2)。


5.4 国内网络镜像配置汇总

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图11




五、总结



本次实测从环境构建到性能验证,以 openEuler 24.03 LTS SP4 为统一的操作系统底座,逐步完成了 Docker 部署以及 SGLang 的安装与配置,并利用随机数据集跑通了 Benchmark 测试,输出了包括 TTFT、TPOT 及 Throughput在内的关键性能指标,验证了整套环境的可用性与稳定性。


本次本地编译,总时长约 1 分钟(不同系统、硬件资源、编译工具对速度影响很大),为方便开发者使用,openEuler社区后续将引入SGLang。后续在openEuler上直接使用系统的包管理器即可一键安装配置,开箱即用,请持续关注 openEuler 社区动态。


>>预告

下一篇文章将继续基于 openEuler24.03,实测安装 llama.cpp,以及运行 benchmark 验证性能。


手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图12



关于 openEuler AI 北向框架适配优化专项

    本专项聚焦 openEuler 系统 AI 北向软件生态适配与性能优化,围绕大、中、小模型全场景推理、训练需求,完成 SGLang、Ollama、vLLM、PaddleOCR 等主流 AI 框架及工具链的适配兼容与性能调优,覆盖大模型推理加速、轻量化模型部署、向量语义编码、语义重排、多场景 OCR 识别等核心AI能力。专项打通系统层与 AI 应用框架的适配壁垒,解决 openEuler 环境下 AI 模型框架部署兼容差、运行低效、适配碎片化等问题,搭建标准化、高性能、全适配的北向 AI 软件栈,充分释放系统异构算力,为开发者提供开箱即用的大模型开发、微调与部署环境,完善从底层算力到上层 AI 应用的全链路生态支撑。



-END-


供稿 | 欧阳庆

编辑 | 丘云

校审 | 赵家麒、郑振宇、刘彦飞



往期推荐



关注我们,了解更多

手把手实测!openEuler 24.03 部署 SGLang,Benchmark 数据出炉图13

关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
AR openEuler
more
拆解报告:SATECHI ChargeView 240W 6C氮化镓桌充
DeepSeek Harness 大起底:这一次,重新定义「插件」
字节跳动、歌尔股份、歌尔光学、中国移动等企业寻求供应商,2026深圳国际AI+AR智能眼镜产业展采购需求等您接单
明基ScreenBar Max上市:双屏用户的“光”之解药,售价1999元
数据如何变成能力?WRC 2026具身智能开发者 AFTER PARTY首场回顾
带摄像头AirPods或2027年推出/DeepSeek Harness更新多模态能力/豆包正式入驻特斯拉车机
2026 Startup Battlefield 200名单揭晓:从车库到旧金山,谁在定义下一个十年?
昨夜,DeepSeek Harness首发新版本:14项更新,多模态能力拉满!
openEuler 技术 Online | 在 openEuler 玩转 DeepSeek Harness,体验智能运维
震撼!OpenAI全面开源Codex Harness
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号