本指南基于物理机的Galaxy镜像进行集群化快速部署,区别于传统的DeepSeek部署方式依赖于手动编写配置脚本并拉起服务,本指南支持了多节点分布式部署,集成了Slurm作业调度系统,优化了存储架构与高可用性设计。
一、环境准备
1.1 前置条件
基础要求:
节点类型 镜像要求 数量要求
管理节点 CentOS-7.9@GalaxyMaster-GPU镜像 1台
计算节点 CentOS-7.9@GalaxyCompute-GPU镜像 ≥2台
服务要求:Slurm作业调度系统已正常启动、所有节点间SSH免密互通、NTP时间同步服务已配置。
1.2 存储配置
查看磁盘设备:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 446.6G 0 disk
|-sda1 8:1 0 122M 0 part
|-sda2 8:2 0 976.6M 0 part /boot/efi
|-sda3 8:3 0 1.9G 0 part /boot
`-sda4 8:4 0 443.7G 0 part
|-system-lv_swap 253:0 0 16G 0 lvm [SWAP]
`-system-lv_root 253:1 0 427.7G 0 lvm /
loop0 7:0 0 58.6M 1 loop
nvme0n1 259:1 0 2.9T 0 disk
nvme1n1 259:0 0 2.9T 0 disk
执行一下脚本将两块NVME合并成一块并挂载在/mnt/data目录下,也可按需挂载:
$ more mount_nvme.sh
# 定义设备名称(请根据实际情况修改)
DISKS=(/dev/nvme0n1 /dev/nvme1n1)
VG_NAME="vg_data"
LV_NAME="lv_data"
MOUNT_POINT="/mnt/data"
# 创建 LVM 物理卷
pvcreate "${DISKS[@]}"
# 创建卷组
vgcreate "$VG_NAME" "${DISKS[@]}"
# 创建逻辑卷,使用整个卷组
lvcreate -l 100%FREE -n "$LV_NAME" "$VG_NAME"
# 格式化逻辑卷(使用 XFS,可改成 ext4)
mkfs.xfs "/dev/$VG_NAME/$LV_NAME"
# 创建挂载目录
mkdir -p "$MOUNT_POINT"
# 挂载逻辑卷
mount "/dev/$VG_NAME/$LV_NAME" "$MOUNT_POINT"
# 获取 UUID 并写入 fstab,确保开机自动挂载
UUID=$(blkid -s UUID -o value "/dev/$VG_NAME/$LV_NAME")
echo "UUID=$UUID $MOUNT_POINT xfs defaults 0 0" >> /etc/fstab
# 输出成功信息
echo "LVM 配置完成,已挂载到 $MOUNT_POINT"
执行部署脚本:sh mount_nvme.sh
,输入y进行确认。
验证挂载结果:df -hT /mnt/data
1.3 软件部署
1.3.1 获取部署包
cd /home
wget
https://jiangsu-10.zos.ctyun.cn/galaxy/deployment/deepseek-nv-nnode-v20250323.tar
tar xvf deepseek-nv-nnode-v20250323.tar
1.3.2 更新vLLM组件
cd /home/vllm
rm -f vllm-openai_v0.8.1.sif # 清理演示文件
wget
https://jiangsu-10.zos.ctyun.cn/galaxy/apptainer/vllm/vllm-openai_v0.8.1.sif
1.4 模型准备
通过Hugging Face或ModelScope下载模型文件。
所有计算节点需在相同路径存放模型:/mnt/data/hfcache/DeepSeek-R1
推荐使用并行文件系统或rsync保持节点间模型一致性。
二、服务管理
2.1 服务配置
2.1.1 调度参数配置
编辑/home/vllm/srun_deepseek.sh,如果是2台或者3台,需修改-N后面的数值:
!/bin/bash
#SBATCH -N 4
...
2.1.2 模型参数配置
编辑/home/vllm/node.sh:
export MODEL_DIR=/mnt/data/hfcache/DeepSeek-R1
export MODEL_NAME=DeepSeek-R1
export VLLM_IMAGE=vllm-openai_v0.8.1.sif
export VLLM_API_KEY="password"
其中:
- MODEL_DIR为模型具体位置
- MODEL_NAME为显示的模型名称
- VLLM_IMAGE为使用的vllm apptainer容器
- VLLM_API_KEY为模型密钥,默认为password
2.2 DeepSeek服务启动
cd /home/deepseek
sbatch srun_deepseek.sh
输出示例:Submitted batch job 403
查看log目录下的err文件,当出现如下信息时,表示服务启动:
INFO: Started server process [409]
INFO: Waiting for application startup.
INFO: Application startup complete.
2.3 查看DeepSeek状态
可通过slurm命令squeue,查看作业运行信息:
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
403 batch DS_L40S root R 8:19 4 compute[01-04]
注意可在/home/deepseek/log目录中查看当前作业的log文件。
2.4 DeepSeek服务停止
上述示例中,DeepSeek服务的JOB ID为403,如果需停止DeepSeek服务,命令为:
scancel 403` 或 `scancel --me