企业级部署实操: SGLang 多节点集群部署 Qwen 系列大模型

目标

比起Ollama的方便,有些时候高并发更重要,因此这篇文章将实现在两台电脑(双节点)上部署 SGLang(当然如果你还有多余的也可以加进来当节点),运行 Qwen2.5-7B-Instruct 模型,实现本地资源的充分利用。

硬件

  • 节点 0:IP 192.168.0.12,1 个 英伟达显卡
  • 节点 1:IP 192.168.0.13,1 个 英伟达显卡
  • 总计:2 个 GPU

模型

Qwen2.5-7B-Instruct,FP16 下约需 14GB 显存,使用 --tp 2 后每 GPU 约 7GB (权重)+ 2-3GB ( KV 缓存)。

网络

两节点通过以太网( TCP )通信,网络接口为 eno1 。

这里根据自己电脑 ip addr 查询即可

不量化

使用 FP16 精度以保留最大精度,显存占用较高,需优化配置。

2. 前置条件

在开始安装和部署之前,确保以下条件满足:

操作系统

  • 推荐 Ubuntu 20.04/22.04 或其他 Linux 发行版( Windows 不推荐,需 WSL2 )
  • 两节点最好是一致的环境,当然 os 的环境不是必须,但是Python的环境需要一样

网络连通性

  • 节点 0 ( 192.168.0.12 )和节点 1 ( 192.168.0.13 )可互相 ping 通:
shell 复制代码
ping 192.168.0.12  # 从节点 1
ping 192.168.0.13  # 从节点 0
  • 端口 50000 (分布式初始化)和 30000 ( HTTP 服务器)未被防火墙阻挡:
bash 复制代码
sudo ufw allow 50000
sudo ufw allow 30000
  • 确认网络接口 eno1:
bash 复制代码
# 具体网卡根据实际调整
ip addr show eno1 

eno1 不存在,替换为实际接口(如 eth0enp0s3)。

GPU 驱动和 CUDA

  • 安装 NVIDIA 驱动(版本 ≥ 470 )和 CUDA Toolkit(推荐 12.x ):
bash 复制代码
nvidia-smi  # 确认驱动和 CUDA 版本

输出应显示 英伟达和 CUDA 版本(如 12.4 )。

若未安装,参考 NVIDIA 官网 自行安装即可:

Python 环境

  • Python 3.9+(推荐 3.10 )
  • 两节点需一致的 Python 版本:
bash 复制代码
python3 --version

磁盘空间

  • Qwen2.5-7B-Instruct 模型约需 15GB 磁盘空间
  • 确保 /opt/models/Qwen/Qwen2.5-7B-Instruct 路径有足够空间

3. 安装 SGLang

在两节点上分别安装 SGLang 和依赖。以下步骤在每台电脑上执行。

3.1 创建虚拟环境(conda)

bash 复制代码
conda create -n sglang_env python=3.10
conda activate  sglang_env

3.2 安装 SGLang

备注: 安装过程会自动安装 对应显卡相关的依赖,如 torchtransformersflashinfer

bash 复制代码
pip install --upgrade pip
pip install uv
uv pip install "sglang[all]>=0.4.5" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python

验证安装:

bash 复制代码
python -m sglang.launch_server --help

应显示 SGLang 的命令行参数帮助信息。

3.3 下载 Qwen2.5-7B-Instruct 模型

国外使用 huggingface,国内使用 modelscope

在两节点上下载模型到相同路径(如 /opt/models/Qwen/Qwen2.5-7B-Instruct):

bash 复制代码
pip install modelscope
modelscope download Qwen/Qwen2.5-7B-Instruct --local-dir /opt/models/Qwen/Qwen2.5-7B-Instruct

或手动从 Hugging Face 或者 modelscope 下载并解压到指定路径。确保两节点模型文件一致。

4. 配置双节点部署

使用张量并行(--tp 2 )将模型分布到 2 个 GPU (每节点 1 个)。以下是详细的部署步骤和命令。

4.1 部署命令

  • 节点 0 ( IP: 192.168.0.12 ):
bash 复制代码
NCCL_IB_DISABLE=1 NCCL_P2P_DISABLE=1 GLOO_SOCKET_IFNAME=eno1 NCCL_SOCKET_IFNAME=eno1 python3 -m sglang.launch_server \
  --model-path /opt/models/Qwen/Qwen2.5-7B-Instruct \
  --tp 2 \
  --nnodes 2 \
  --node-rank 0 \
  --dist-init-addr 192.168.0.12:50000 \
  --disable-cuda-graph \
  --host 0.0.0.0 \
  --port 30000 \
  --mem-fraction-static 0.7
  • 节点 1 ( IP: 192.168.0.13 ):
bash 复制代码
NCCL_IB_DISABLE=1 NCCL_P2P_DISABLE=1 GLOO_SOCKET_IFNAME=eno1 NCCL_SOCKET_IFNAME=eno1 python3 -m sglang.launch_server \
  --model-path /opt/models/Qwen/Qwen2.5-7B-Instruct \
  --tp 2 \
  --nnodes 2 \
  --node-rank 1 \
  --dist-init-addr 192.168.0.12:50000 \
  --disable-cuda-graph \
  --host 0.0.0.0 \
  --port 30000 \
  --mem-fraction-static 0.7

注意: 如果出现 OOM 的情况则调整 --mem-fraction-static 参数,默认是 0.9 ,改为 0.7 即可。0.9 调整到 0.7 时 当前 7B 模型 占用显存直接下降 2G 左右。 CUDA Graph 会额外分配少量显存(通常几百 MB )来存储计算图。如果显存接近上限,启用 CUDA Graph 可能触发 OOM 错误。

更多参数等说明见文章首发地址

文章首发地址

相关推荐
weixin_437497779 分钟前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
喝拿铁写前端16 分钟前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat16 分钟前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技27 分钟前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪30 分钟前
河南建站系统哪个好
大数据·人工智能·python
清月电子1 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z1 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人1 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
土豆12501 小时前
Claude Code Plan 模式完全指南:从入门到精通
ai编程·claude
橙汁味的风1 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习