ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从源码 安装sglang

从源码 安装sglang

两张 4080显卡

1. 拉取 image

sudodockerpull nvidia/cuda:12.8.0-cudnn-devel-ubuntu22.04

2. 启动 容器

sudodockerrun--gpusall-it\--namesglang_src_LHL_01\-v/home/ruler/ex_sglang/tmp01:/root/tmp01\-v/home/ruler/.ssh:/root/.ssh\nvidia/cuda:12.8.0-cudnn-devel-ubuntu22.04

3. 安装依赖

aptinstallpython3aptinstallbuild-essentialapt-getinstallgitvimlibssl-dev ninja-buildwgetpython3 python3-dev pybind11-dev gfortranaptinstallbuild-essentialsudoapt-getinstall-ygcc-12 g++-12 update-alternatives--install/usr/bin/gcc gcc /usr/bin/gcc-12100update-alternatives--install/usr/bin/g++ g++ /usr/bin/g++-12100apt-getinstallpython3-pip pipinstall--upgradepip

4.升级 setuptools

pipinstall--upgrade"setuptools>=70.0.0"

5. 编译安装 sglang

pipinstall-e"python"--index-url https://download.pytorch.org/whl/cu128 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple --no-build-isolation-v

pip install -e “python” --index-url https://download.pytorch.org/whl/cu128 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple --no-build-isolation -v

pipinstall-e"python"--index-url https://download.pytorch.org/whl/cu128 --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple --no-build-isolation-v

6. 启动运行

6.1. 启动大模型

CUDA_VISIBLE_DEVICES=0,1python3-msglang.launch_server --model-path /data/models/Qwen2.5-14B-Instruct-AWQ--tp2--dtypefloat16--host127.0.0.1--port30000--context-length8192--mem-fraction-static0.80

6.2. 测试

重新打开一个docker 入口:

sudodockerexec-itsglang_src_LHL_01 /bin/bash

请求大模型服务回答问题:

curl-sShttp://127.0.0.1:30000/generate\-H'Content-Type: application/json'\-d'{ "text": "请介绍中国年的来历", "sampling_params": { "max_new_tokens": 512, "temperature": 0 } }'

效果图:

参考:
https://docs.sglang.io/docs/get-started/install#method-2-from-source

7. 附录:构建信息显示与 debug

pip install -e "python"本身就是 SGLang 的可编辑(开发)安装,代码修改会立即生效,通常所说的“debug 版本”在源码开发场景下就是指这种模式。如果你希望看到详细的安装过程信息(尤其是编译内核时),或者需要构建带调试符号的版本,可以通过以下方式控制输出和构建选项。

🔍 显示详细安装过程

pip自带的-v或--verbose参数可以逐级增加日志详细程度,最多可叠加 3 次(-v、-vv、-vvv),用于查看依赖解析、构建后端调用等底层细节。

# 基础可编辑安装,并显示详细日志pipinstall-e"python"-v# 或叠加更多详细级别pipinstall-e"python"-vvv

如果构建的是 SGLang 的 C++/CUDA 内核(如sgl-kernel),单纯pip -v可能还不够,因为内核编译是由 CMake 或构建后端控制的。这时需要同时开启构建系统的 verbose 模式,并禁用构建隔离,以便复用当前环境的依赖:

# 针对需要编译扩展的场景,开启构建系统详细输出CMAKE_VERBOSE_MAKEFILE=1pipinstall-e"python"-v--no-build-isolation

部分构建后端也支持通过环境变量DISTUTILS_DEBUG=1输出更底层的编译命令。

🐞 关于“Debug 版本”

在 SGLang 的语境中,“debug 版本”通常有两种含义,需要根据你的目的来区分:

  1. 开发/可编辑模式(Editable Install):这就是pip install -e "python"的效果,修改源码后无需重装即可生效,便于断点调试和快速迭代。这是绝大多数“debug 源码”场景所需要的。
  2. 带调试符号的二进制扩展(Debug Symbols):如果你需要深入调试 CUDA 内核或 C++ 扩展(例如用cuda-gdb或gdb追踪崩溃),则需要在构建时显式开启调试信息。这通常通过传递编译器标志实现,例如设置CMAKE_BUILD_TYPE=Debug或在编译选项中添加-g。具体方式取决于 SGLang 构建系统对CMAKE_ARGS的支持程度:
    CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug"pipinstall-e"python"-v--no-build-isolation
    并非所有 SGLang 的构建路径都完全兼容CMAKE_ARGS,如果上述命令无效,可以尝试在sgl-kernel目录下手动执行 CMake 构建,并在 CMake 配置阶段设置-DCMAKE_BUILD_TYPE=Debug。

📋 补充建议

  • 优先用--no-build-isolation:从源码构建时,构建隔离(build isolation)会创建一个临时环境,导致日志被吞掉或难以复现。加上--no-build-isolation并使用当前环境中的编译工具链,日志会更完整,构建速度也更快。
  • 分步安装便于定位:SGLang 的完整源码安装可能涉及sgl-kernel(C++/CUDA 扩展)和python包两部分。如果一次性安装失败且日志杂乱,可以先单独构建sgl-kernel(cd sgl-kernel后手动执行构建命令),成功后再执行pip install -e "python",这样能清楚看到是哪一步出错。
  • 版本派生问题:可编辑安装依赖setuptools_scm从 Git 标签派生版本号,如果你的仓库没有完整的 Git 历史或标签,可能需要参考相关 PR 确保git_describe_command配置正确。
返回列表