使用ray+docker+vllm多机多卡手动部署DeepSeek-R1/V3模型(Linux)
应用场景
DeepSeek-V3和DeepSeek-R1是深度求索(DeepSeek)推出的两款高性能大语言模型。DeepSeek-R1是推理专用模型,专为数学、代码生成和复杂逻辑推理任务设计,通过大规模强化学习(RL)提升推理能力。DeepSeek-V3是通用型模型,专注于自然语言处理、知识问答、内容创作等通用任务,目标是实现高性能与低成本的平衡,适用于智能客服、个性化推荐系统等场景。华为云为用户提供使用vllm来部署DeepSeek-R1/V3模型的详细步骤,帮助客户快速部署。
方案架构

方案优势
基于ray+docker+vllm多机多卡从0开始手动部署DeepSeek-R1/V3模型,深刻理解模型运行依赖,体验DeepSeek满血版模型带来的极致推理性能。
资源和成本规划
资源 |
资源说明 |
成本说明 |
---|---|---|
虚拟私有云VPC |
VPC网段:192.168.0.0/16 |
免费 |
虚拟私有云子网 |
|
免费 |
安全组 |
入方向规则:
|
免费 |
弹性云服务器 |
|
ECS涉及以下几项费用:
具体的计费方式及标准请参考计费模式概述。 |
编号 |
模型名称 |
最小所需规格 |
GPU卡 |
节点数量 |
---|---|---|---|---|
0 |
DeepSeek-R1 DeepSeek-V3 |
p2s.16xlarge.8 |
V100(32G)*8卡 |
8台 |
p2v.16xlarge.8 |
V100(16G)*8卡 |
16台 |
||
pi2.4xlarge.4 |
T4(16G)*8卡 |
16台 |

请联系华为云技术支持来选择适合你的部署的GPU资源。
基于ray+docker+vllm多机多卡手动部署DeepSeek-R1/V3模型步骤
Linux实例基于ray+docker+vllm多机多卡手动部署DeepSeek-R1/V3模型操作步骤如下:
实施步骤
- 创建GPU弹性云服务器。
- 镜像选择:建议选择华为云提供的GPU实例的未安装驱动的Huawei Cloud EulerOS 2.0/Ubuntu 22.04公共镜像,以下一些依赖安装都是基于Ubuntu 22.04系统的,其他系统请自行参考安装。
图2 GPU实例镜像选择
- 需要创建EIP,方便依赖环境下载,方便调用模型接口进行推理。
- 镜像选择:建议选择华为云提供的GPU实例的未安装驱动的Huawei Cloud EulerOS 2.0/Ubuntu 22.04公共镜像,以下一些依赖安装都是基于Ubuntu 22.04系统的,其他系统请自行参考安装。
- 驱动和CUDA的前置条件检查。
请参考手动安装GPU加速型ECS的Tesla驱动安装535版本驱动,12.2版本CUDA。
- 安装ray。
- 执行以下命令,更新pip。
apt-get install -y python3 python3-pip
- 执行以下命令,安装ray。
pip install -U ray
- 执行以下命令,验证安装。
python3 -c "import ray; ray.init()"
- 执行以下命令,更新pip。
- 安装docker。
- 执行以下命令,更新包索引并安装依赖项。
apt-get update apt-get install -y ca-certificates curl gnupg lsb-release
- 执行以下命令,添加docker的官方GPG密钥。
mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 执行以下命令,设置Docker的APT源。
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 执行以下命令,安装docker引擎。
apt update apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 执行以下命令,配置docker-hub。
cat <<EOF > /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://registry.cn-hangzhou.aliyuncs.com" ] } EOF systemctl restart docker
- 执行以下命令,验证docker安装是否正常。
docker --version
- 执行以下命令,更新包索引并安装依赖项。
- 安装nvidia-container-toolkit。
- 执行以下命令,添加nvidia的官方GPG密钥。
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- 执行以下命令,设置NVIDIA Container Toolkit的APT源。
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
- 执行以下命令,更新索引包并安装NVIDIA Container Toolkit。
apt update apt install -y nvidia-container-toolkit
- 执行以下命令,配置docker以使用NVIDIA Container Toolkit。
nvidia-ctk runtime configure --runtime=docker systemctl restart docker
- 执行以下命令,添加nvidia的官方GPG密钥。
- 安装modelscope等依赖包。
- 执行以下命令,更新升级pip。
python -m pip install --upgrade pip -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
- 执行以下命令,安装modelscope。
pip install modelscope -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
modelscope是国内开源模型平台,国内下载会更快,如果在国外,请使用hugging Face进行下载。
- 执行以下命令,更新升级pip。
- 下载docker镜像。
下载vllm提供的最新容器镜像,或下载华为云hgcs异构团队制作的镜像。
- 执行以下命令,下载vllm官网镜像。
docker pull vllm.vllm-openai:latest
- 执行以下命令,下载hgcs团队制作的镜像。
docker pull swr.cn-north-4.myhuaweicloud.com/hgcs/vllm0.7.3-pt312-ray2.43-cuda12.2:latest
vllm版本当前使用v0.7.3,后续会持续更新。
- 执行以下命令,下载vllm官网镜像。
- 下载run_cluster.sh脚本文件。
从https://github.com/vllm-project/vllm/blob/main/examples/online_serving/run_cluster.sh下载run_cluster.sh文件用来启动ray集群。
- 下载DeepSeek-R1/V3模型文件。
- 执行以下命令,创建下载模型脚本。
vim download_models.py
插入以下内容:
from modelscope import snapshot_download model_dir = snapshot_download('deepseek-ai/DeepSeek-R1', cache_dir='/root', revision='master')
模型名称以DeepSeek-R1为例,可切换成DeepSeek-V3,模型存储的本地路径以/root为例,可以更换自己的目录。
- 执行以下命令,下载模型。
python3 download_models.py
等待模型下载完成,模型总大小642G,和当前设置的EIP带宽有关,下载时间最长可能超过24小时。
- 执行以下命令,创建下载模型脚本。
- 启动ray集群head节点和全部worker节点。
- 执行以下命令,启动ray集群的head节点。
bash run_cluster.sh ${镜像名} ${head节点IP} --head ${模型路径} -e VLLM_HOST_IP=${head节点IP} -e ${通信库环境变量}
示例如下:
bash run_cluster.sh swr.cn-north-4.myhuaweicloud.com/hgcs/vllm0.7.3-pt312-ray2.43-cuda12.2 192.168.200.249 --head /root/deepseek-ai/DeepSeek-R1 -e VLLM_HOST_IP=192.168.200.249 -e GLOO_SOCKET_IFNAME=eth0 &
- 命令执行成功后可以看到已经有一个容器启动了,可通过执行以下命令进入容器。
docker exec -it ${容器名} /bin/bash
- 执行以下命令,查看ray cluster运行状态。
ray status
- 执行以下命令,启动ray集群的全部worker节点。
bash run_cluster.sh ${镜像名} ${head节点IP} --worker ${模型路径} -e VLLM_HOST_IP=${当前节点IP} -e ${通信库环境变量}
样例:
bash run_cluster.sh swr.cn-north-4.myhuaweicloud.com/hgcs/vllm0.7.3-pt312-ray2.43-cuda12.2 192.168.200.249 --worker /root/deepseek-ai/DeepSeek-R1 -e VLLM_HOST_IP=192.168.200.211 -e GLOO_SOCKET_IFNAME=eth0 &
- 命令执行成功后可以看到已经有一个容器启动了,可通过执行以下命令进入容器。
docker exec -it ${容器名} /bin/bash
- 执行以下命令,查看ray cluster运行状态。
ray status
- 执行以下命令,启动ray集群的head节点。
- 在head节点容器中,启动vllm.server运行大模型。
- 进入head节点的容器。
- 执行以下命令,运行大模型。
vllm serve ${模型映射地址} --served_model_name ${model名称} --tensor-parallel-size ${GPU_NUM} --gpu_memory_utilization 0.9 --max_model_len 20480 --dtype float16 --enforce-eager
${模型映射地址} 可以修改为run_cluster.sh脚本中映射的地址,默认是/root/.cache/huggingface/。
- 调用模型接口测试。
- 调用以下API进行聊天对话。
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-R1", "messages": [{"role": "user", "content": "hello\n"}] }'
- 如果需要流式对话,则需要加上stream参数。
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "DeepSeek-R1", "messages": [{"role": "user", "content": "hello\n"}], "stream": true }'
您可以在本地postman或者自己的服务里面使用EIP调用对应的API接口来对话。
- 调用以下API进行聊天对话。