从源码 安装sglang

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 版本"通常有两种含义,需要根据你的目的来区分:

  1. 开发/可编辑模式(Editable Install) :这就是 pip install -e "python" 的效果,修改源码后无需重装即可生效,便于断点调试和快速迭代。这是绝大多数"debug 源码"场景所需要的。

  2. 带调试符号的二进制扩展(Debug Symbols) :如果你需要深入调试 CUDA 内核或 C++ 扩展(例如用 cuda-gdb 或 gdb 追踪崩溃),则需要在构建时显式开启调试信息。这通常通过传递编译器标志实现,例如设置 CMAKE_BUILD_TYPE=Debug 或在编译选项中添加 -g。具体方式取决于 SGLang 构建系统对 CMAKE_ARGS 的支持程度:

    bash 复制代码
    CMAKE_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 配置正确。
相关推荐
Eloudy4 小时前
SGLang 的组成结构与基本工作原理
llm·gpu·sglang
Eloudy12 小时前
`ibv_get_device_list` 实现分析
网络·gpu·rdma
蒸鱼Yuzheng1 天前
移动端 Overdraw 治理:从单帧热图到屏幕空间预算
性能优化·gpu·renderdoc·overdraw·移动端渲染
Eloudy1 天前
MLNX_OFED 源码补齐、Debug/Release 构建命令与修改记录
gpu·rdma
Smoothcloud润云1 天前
远程纳管GPU怎么安全升级?驱动、组件灰度与回滚实战
人工智能·深度学习·安全·gpu算力·gpu·数据库管理员
鲨鱼辣钊1 天前
KVM显卡直通实战_RTX4090分时复用
gpu·kvm·vfio
Eloudy1 天前
从 huggingFace 下载大模型命令备忘
llm·gpu·rdma
Smoothcloud润云2 天前
GPU远程纳管安全吗?最小权限、网络边界与日志审计实战
服务器·网络·人工智能·安全·gpu算力·gpu
小毕超2 天前
从推理到训练:Intel Ultra 核显 GPU 加速 YOLO 模型训练
pytorch·yolo·gpu·intel