Skip to content

SGLang 部署与使用

本文介绍如何在丹摩 GPU 云实例中安装 SGLang、使用平台内置模型启动推理服务,并通过 OpenAI 兼容接口验证服务。

丹摩平台已内置多种主流开源模型,实例创建后即可通过公开数据盘使用,无需重复下载模型文件。可以前往丹摩公开数据查看平台当前提供的模型资源。

选择模型

本文以公开数据盘中的 Qwen3.5-2B 为例,模型目录为:

text
/root/public-storage/model/Qwen/Qwen3.5-2B

公开数据盘默认挂载在 /root/public-storage/。如果需要部署其他模型,可以先在丹摩公开数据中查找所需模型,再将后续命令中的模型路径和服务模型名称替换为实际值。

提示

平台内置模型可直接用于部署,既能减少模型下载等待时间,也能避免重复占用实例存储空间。公开数据盘为共享只读资源,请勿直接修改其中的模型文件。

准备环境

开始前,请确认实例满足以下条件:

  • 已安装 NVIDIA 驱动,执行 nvidia-smi 可以正常显示 GPU 信息。
  • 操作系统为 Ubuntu 或 Debian,且当前用户为 root,或具有 sudo 权限。
  • 实例中可以正常访问 /root/public-storage/ 公开数据盘及所需模型。

配置 NVIDIA PyPI 访问代理

需关注

机房网络已封禁 pypi.nvidia.com。SGLang 安装依赖时可能访问该域名,因此必须先在 /etc/hosts 中加入平台提供的代理地址映射,否则可能出现依赖下载超时或安装失败。

执行以下命令,将 pypi.nvidia.com 指向代理地址 10.17.250.250

bash
echo "10.17.250.250 pypi.nvidia.com" >> /etc/hosts

该命令就是为 NVIDIA PyPI 配置机房内可用的访问代理。可以通过以下命令确认配置已经写入:

bash
grep "pypi.nvidia.com" /etc/hosts

预期输出如下:

text
10.17.250.250 pypi.nvidia.com

提示

以上命令需要 root 权限。如果当前不是 root 用户,可以执行 echo "10.17.250.250 pypi.nvidia.com" | sudo tee -a /etc/hosts

安装 SGLang

更新软件包索引并安装 Python 虚拟环境和 FFmpeg:

bash
apt update
apt install -y python3.12-venv
apt install -y ffmpeg

创建 Python 虚拟环境,升级 pip,并通过华为云 PyPI 镜像安装 SGLang:

bash
python3 -m venv /root/sglang-env
source /root/sglang-env/bin/activate
pip install -U pip
pip install sglang -i https://repo.huaweicloud.com/repository/pypi/simple

安装完成后,可以清理 pip 缓存以释放磁盘空间:

bash
pip cache purge

将虚拟环境激活命令写入 Shell 配置,以便后续登录实例时自动进入 SGLang 环境:

bash
echo "source /root/sglang-env/bin/activate" >> ~/.bashrc

验证 SGLang 是否安装成功:

bash
python -c "import sglang; print(sglang.__version__)"

启动模型服务

激活虚拟环境:

bash
source /root/sglang-env/bin/activate

启动 SGLang 服务:

bash
python -m sglang.launch_server \
  --model-path /root/public-storage/model/Qwen/Qwen3.5-2B \
  --served-model-name Qwen3.5-2B \
  --host 0.0.0.0 \
  --port 30000

参数说明:

参数说明
--model-path模型文件所在目录
--served-model-nameAPI 请求中使用的模型名称
--host 0.0.0.0监听所有网络接口,便于通过访问策略或端口映射调用
--port 30000服务监听端口

服务启动后,当前终端会持续输出运行日志。看到类似以下内容,表示接口已成功处理请求:

text
INFO:     127.0.0.1:38244 - "POST /v1/chat/completions HTTP/1.1" 200 OK

日志中的 gen throughput (token/s) 表示模型生成吞吐量。例如:

text
Decode batch, #running-req: 1, gen throughput (token/s): 217.67, #queue-req: 0

需关注

直接关闭当前终端会停止服务。如需让服务在后台持续运行,请使用 tmuxscreen 或平台提供的后台运行方式。

调用模型接口

SGLang 提供 OpenAI 兼容接口。保持模型服务运行,打开另一个终端并执行:

bash
curl http://127.0.0.1:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen3.5-2B",
    "stream": true,
    "messages": [
      {"role": "user", "content": "SGLang 的最佳实践"}
    ],
    "max_tokens": 1000
  }'

接口将以流式方式返回模型生成结果。请求参数中的 model 必须与启动服务时设置的 --served-model-name 保持一致。

对外提供服务

如果需要从本地电脑或其他应用调用模型,请在实例控制台中为 30000 端口配置访问策略或端口映射,然后将请求地址中的 127.0.0.1:30000 替换为控制台提供的访问地址。

需重点关注

SGLang 接口默认没有访问认证。请限制访问来源,不要将未经保护的接口直接暴露到公网。生产环境建议在服务前增加身份认证、HTTPS 和访问频率限制。

常见问题

安装依赖时无法访问 pypi.nvidia.com

确认代理地址映射已经写入 /etc/hosts

bash
grep "pypi.nvidia.com" /etc/hosts

如果没有输出,请重新执行:

bash
echo "10.17.250.250 pypi.nvidia.com" >> /etc/hosts

提示找不到 sglang 模块

确认已经激活虚拟环境:

bash
source /root/sglang-env/bin/activate

然后重新验证安装:

bash
python -c "import sglang; print(sglang.__version__)"

模型路径不存在

检查模型目录:

bash
ls -lah /root/public-storage/model/Qwen/Qwen3.5-2B

如果使用其他模型,请同步修改 --model-path--served-model-name 和 API 请求中的 model

无法连接 30000 端口

检查服务是否正在监听:

bash
ss -lntp | grep 30000

如果在实例外调用,还需要确认控制台中的访问策略或端口映射已经生效。