一、
两种部署模式对比

基于以上对比信息,建议使用 SGLang 来搭建 DeepSeek R1 671B 大模型。
二、 环境准备
2.1 硬件配置
CPU:Intel 8480+ * 2
内存:64GB DDR5-4800 * 32
系统盘:960G SATA SSD * 2
数据盘:3.84T NVME SSD * 8
Raid 卡:2G 缓存,12Gb,配置超级电容,支持 RAID 0/1/5/6/10/50,支持直通 JBOD 模式*1
GPU:GPU_Nvidia H20 HGX * 8
网卡 1:400G 单口 NDR Infiniband * 4
网卡 2:200G 双口 HDR Infiniband * 1
网卡 3:双口 25G 网卡 * 1(配光模块)
系统检查与配置指南
以下步骤基于Ubuntu 22.04系统,涵盖驱动安装、CUDA配置、Docker环境部署及模型获取流程:
2.2 系统检查与配置
1. 操作系统确认
lsb_release -a
# 确保输出包含 "Ubuntu 22.04"
2. 安装NVIDIA驱动与CUDA 12.5
# 添加官方驱动仓库
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
# 安装驱动与CUDA工具包
sudo apt install -y nvidia-driver-550 cuda-12-5
3. 安装依赖库
sudo apt install -y python3.10 python3-pip build-essential cmake
2.3 Docker安装与配置
1. 安装基础工具
sudo apt update
sudo apt install -y ca-certificates curl gnupg
2. 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
3. 设置APT源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. 安装Docker组件
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.4 NVIDIA容器运行时配置
1. 添加nvidia-container-runtime源
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$(. /etc/os-release; echo $ID$VERSION_ID)/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/libnvidia-container.list
2. 安装并配置运行时
sudo apt update
sudo apt install -y nvidia-container-runtime
# 关联Docker运行时
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo systemctl restart docker
3. 验证GPU支持
docker run --rm --gpus all nvidia/cuda:12.5-base nvidia-smi
# 应显示与宿主机相同的GPU信息
三、模型获取与验证
1. 挂载NVMe高性能磁盘
# 查看可用磁盘
sudo fdisk -l
# 挂载NVMe磁盘(示例)
sudo mkdir /mnt/nvme
sudo mount /dev/nvme0n1 /mnt/nvme
2. 安装Git LFS并下载模型
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install -y git-lfs
# 克隆模型到NVMe磁盘
cd /mnt/nvme
git lfs install
git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1.git
注意事项
-
权重文件下载
- 1.3TB文件需保持网络稳定,建议使用
screen
或tmux
会话 - 内网传输建议:
# 从内网服务器同步(示例) rsync -avzP user@internal-server:/path/to/DeepSeek-R1 /mnt/nvme/
- 1.3TB文件需保持网络稳定,建议使用
-
Docker代理配置(如需要)
sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/proxy.conf
添加:
[Service] Environment="HTTP_PROXY=http://proxy-ip:port" Environment="HTTPS_PROXY=http://proxy-ip:port"
重启服务:
sudo systemctl daemon-reload sudo systemctl restart docker
故障排查
-
驱动问题:若
nvidia-smi
报错,尝试:sudo apt purge "nvidia*" sudo reboot # 重装后执行 nvidia-smi # 验证输出CUDA 12.5
-
容器权限问题:将用户加入docker组
sudo usermod -aG docker $USER newgrp docker
此流程严格遵循NVIDIA官方推荐配置,各组件版本均兼容DeepSeek-R1运行要求。实际部署时请根据硬件环境调整磁盘挂载路径。
多节点 NVMe 磁盘配置与 SGLang 分布式部署指南
四、多块 NVMe 磁盘挂载(8 块磁盘)
# 1. 查看磁盘列表(确认 NVMe 设备标识)
sudo fdisk -l
# 2. 格式化全部 8 块 NVMe 磁盘(警告:将彻底擦除数据!)
for i in {0..7}; do
sudo mkfs.ext4 /dev/nvme${i}n1
done
# 3. 创建挂载点并挂载
for i in {0..7}; do
sudo mkdir -p /data${i}
sudo mount /dev/nvme${i}n1 /data${i}
done
# 4. 验证挂载结果
df -h | grep nvme
# 5. 获取 UUID 并配置永久挂载(防止重启失效)
sudo blkid /dev/nvme0n1
echo "UUID=6df5e413-f038-4e7a-bba2-4dbcfd3d1412 /data0 ext4 defaults 0 1" | sudo tee -a /etc/fstab
# 对每块磁盘重复此操作(nvme1n1→/data1,以此类推)
3.2 模型文件分发到多节点
# 使用并行 scp 加速传输(需提前配置 SSH 免密登录)
sudo apt install -y parallel
seq 0 7 | parallel -j8 "scp -r -o 'StrictHostKeyChecking no' DeepSeek-R1 root@node{}:/data0/"
# 单节点传输示例
scp -r DeepSeek-R1 root@IP:/data0/
四、SGLang 分布式部署
4.1 获取 Docker 镜像
# 国内推荐使用阿里云镜像
docker pull registry.cn-hangzhou.aliyuncs.com/21/sglang:latest
4.2 启动容器(每台服务器执行)
# 主节点(IP)
docker run -itd --gpus all --shm-size=32g --network=host --privileged \
-v /data0:/root/.cache/huggingface \
--env NCCL_SOCKET_IFNAME=bond0 \
--env GLOO_SOCKET_IFNAME=bond0 \
--name sglang-master \
registry.cn-hangzhou.aliyuncs.com/21/sglang:latest
# 从节点(IP)
docker run -itd --gpus all --shm-size=32g --network=host --privileged \
-v /data0:/root/.cache/huggingface \
--env NCCL_SOCKET_IFNAME=bond0 \
--env GLOO_SOCKET_IFNAME=bond0 \
--name sglang-worker \
registry.cn-hangzhou.aliyuncs.com/21/sglang:latest
4.3 分布式服务启动
# 主节点容器内执行(16卡/节点,总32卡)
docker exec -it sglang-master python3 -m sglang.launch_server \
--model-path /root/.cache/huggingface/DeepSeek-R1 \
--tp 16 \
--dist-init-addr IP:5000 \
--nnodes 2 \
--node-rank 0 \
--trust-remote-code \
--port 30000 \
--host 0.0.0.0
# 从节点容器内执行
docker exec -it sglang-worker python3 -m sglang.launch_server \
--model-path /root/.cache/huggingface/DeepSeek-R1 \
--tp 16 \
--dist-init-addr ip:5000 \
--nnodes 2 \
--node-rank 1 \
--trust-remote-code
4.4 服务验证脚本
# deployment_test.py
import openai
client = openai.Client(base_url="http://IP:30000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="default",
messages=[
{"role": "system", "content": "你是 deepseek r1 671B 大模型人工智能助手"},
{"role": "user", "content": "介绍一下你自己,说说你是谁,你能做什么?"},
],
temperature=0.6,
max_tokens=10240
)
print(response.choices[0].message.content)
执行验证:
docker exec -it sglang-master python3 deployment_test.py
五、性能测试操作
5.1 进入容器
docker exec -it sglang-master /bin/bash
5.2 执行性能测试
python3 -m sglang.bench_serving \
--backend sglang \
--dataset-name random \
--num-prompt 1024 \
--random-input-len 32 \
--random-output-len 512 \
--random-range-ratio 1 \
--model /root/.cache/huggingface/DeepSeek-R1/ \
--host IP \
--port 30000
5.3 预期性能指标
测试参数 | 正常范围 | 优化建议 |
---|---|---|
并发请求数 | 1024 | 根据 GPU 内存调整 |
输入长度 | 32 tokens | 模拟真实场景 |
输出长度 | 512 tokens | 测试生成能力 |
总吞吐量 | 3000~6300 tokens/s | 检查网络带宽 |
高级优化技巧
- InfiniBand/RDMA 加速
# 启动容器时添加
--env NCCL_IB_DISABLE=0 \
--env NCCL_IB_HCA=mlx5_0,mlx5_3,mlx5_4,mlx5_7 \
-v /dev/infiniband:/dev/infiniband
- FlashAttention 加速
在启动命令中添加:
--enable-flash-attn
- 批量请求优化
# 测试脚本中增加批量处理
response = client.chat.completions.create(
...,
extra_body={"max_batch_size": 32} # 根据显存调整
)
- 监控工具
# 容器内安装监控
pip install nvitop
nvitop -m full # 实时监控 GPU 利用率