企业级部署实操: 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 错误。

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

文章首发地址

相关推荐
User_芊芊君子20 小时前
文科生封神!Python+AI 零门槛变现:3 天造 App,指令即收入(附脉脉 AI 沙龙干货)
开发语言·人工智能·python
MeowNeko20 小时前
为什么说程序员重命名时电脑不要带中文?记一次python manage.py runserver时UnicodeDecodeError的原因与解决方案
人工智能·python·chatgpt·中间件·django·utf8
宇擎智脑科技21 小时前
我用游戏引擎的思想,重新设计了 AI Agent 的记忆系统
人工智能·智能体·记忆系统
智算菩萨1 天前
【实战讲解】ChatGPT 5.4深度文献检索完全指南:提示词工程与学术实战策略
论文阅读·人工智能·gpt·搜索引擎·chatgpt·提示词·论文笔记
gutsyang1 天前
Google Stitch:最佳实践
人工智能·google·gemini·stitch
gloomyfish1 天前
【最新认知】2026 | 深度学习工业缺陷检测三种技术路线分析与趋势
人工智能·深度学习
Deepoch1 天前
Deepoc具身模型开发板:赋予机械狗“荒野求生”级VLA智能
人工智能·科技·开发板·具身模型·deepoc
阿里云大数据AI技术1 天前
阿里云大数据AI平台升级发布:构筑智能体时代的核心基石
人工智能
AI自动化工坊1 天前
DeerFlow 2.0实战指南:生产级AI Agent框架的Docker化部署与并行编排
人工智能·docker·ai·容器·开源
AI营销先锋1 天前
原圈科技GEO解密:AI营销变革下,如何抢占增长先机?
大数据·人工智能