1. 拉取 image
bash
sudo docker pull nvidia/cuda:12.8.0-cudnn-devel-ubuntu22.04
2. 启动 容器
bash
sudo docker run --gpus all -it \
--name sglang_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. 安装依赖
bash
apt install python3
apt install build-essential
apt-get install git vim libssl-dev ninja-build wget python3 python3-dev pybind11-dev gfortran
apt install build-essential
sudo apt-get install -y gcc-12 g++-12
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
apt-get install python3-pip
pip install --upgrade pip
4.升级 setuptools
bash
pip install --upgrade "setuptools>=70.0.0"
5. 编译安装 sglang
bash
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
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
参考:
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),用于查看依赖解析、构建后端调用等底层细节。
bash
# 基础可编辑安装,并显示详细日志
pip install -e "python" -v
# 或叠加更多详细级别
pip install -e "python" -vvv
如果构建的是 SGLang 的 C++/CUDA 内核(如 sgl-kernel),单纯 pip -v 可能还不够,因为内核编译是由 CMake 或构建后端控制的。这时需要同时开启构建系统的 verbose 模式,并禁用构建隔离,以便复用当前环境的依赖:
bash
# 针对需要编译扩展的场景,开启构建系统详细输出
CMAKE_VERBOSE_MAKEFILE=1 pip install -e "python" -v --no-build-isolation
部分构建后端也支持通过环境变量 DISTUTILS_DEBUG=1 输出更底层的编译命令。
🐞 关于"Debug 版本"
在 SGLang 的语境中,"debug 版本"通常有两种含义,需要根据你的目的来区分:
-
开发/可编辑模式(Editable Install) :这就是
pip install -e "python"的效果,修改源码后无需重装即可生效,便于断点调试和快速迭代。这是绝大多数"debug 源码"场景所需要的。 -
带调试符号的二进制扩展(Debug Symbols) :如果你需要深入调试 CUDA 内核或 C++ 扩展(例如用
cuda-gdb或gdb追踪崩溃),则需要在构建时显式开启调试信息。这通常通过传递编译器标志实现,例如设置CMAKE_BUILD_TYPE=Debug或在编译选项中添加-g。具体方式取决于 SGLang 构建系统对CMAKE_ARGS的支持程度:bashCMAKE_ARGS="-DCMAKE_BUILD_TYPE=Debug" pip install -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配置正确。