DeepSeek-V3/R1 是一个专家混合(MoE)模型,拥有超过600B的参数量,模型参数的大小会影响计算资源的需求。量化优化后的模型可以大大减小存储需求。通过降低参数精度(如FP32到FP16或INT8),可以减小模型文件的大小。本文主要介绍在GPU实例上部署DeepSeek-R1-Distill模型推理服务。
一、预估DeepSeek模型所需配置
每个版本的DeepSeek-R1模型需要不同的硬件配置,选择合适的配置有助于降低成本和提升部署效率。
模型名称
|
模型版本
|
模型大小
|
vCPU
|
内存
|
GPU显存
|
系统盘
|
推荐实例规格
|
DeepSeek-R1-Distill-Qwen-1.5B
|
1.5B(15亿参数)
|
1.1 GB
|
4核或6核处理器
|
30 GB RAM
|
24 GB
|
至少50 GB空闲空间
|
ecs.gn7i-c8g1.2xlarge
|
DeepSeek-R1-Distill-Qwen-7B
|
7B(70亿参数)
|
4.7 GB
|
6核或8核处理器
|
32 GB RAM
|
24 GB
|
至少100 GB空闲空间
|
ecs.gn7i-c16g1.4xlarge
|
DeepSeek-R1-Distill-Llama-8B
|
8B(80亿参数)
|
4.9 GB
|
6核或8核处理器
|
32 GB RAM
|
24 GB
|
至少100 GB空闲空间
|
ecs.gn7i-c16g1.4xlarge
|
DeepSeek-R1-Distill-Qwen-14B
|
14B(140亿参数)
|
9 GB
|
8核以上处理器
|
64 GB RAM
|
2*24 GB
|
至少200 GB空闲空间
|
ecs.gn7i-2x.8xlarge
|
DeepSeek-R1-Distill-Qwen-32B
|
32B(320亿参数)
|
20 GB
|
8核以上处理器
|
128 GB RAM
|
4*24 GB
|
至少500 GB空闲空间
|
ecs.gn7i-4x.8xlarge
|
DeepSeek-R1-Distill-Llama-70B
|
70B(700亿参数)
|
43 GB
|
12核以上处理器
|
128 GB RAM
|
8*24 GB
|
至少1 TB空闲空间
|
ecs.gn7i-8x.16xlarge
|
二、核心工具
1、NVIDIA GPU驱动:需要驱动版本550.127.08或更高版本,以支持GPU加速。
2、vLLM:这是一个开源库,能够提高大语言模型推理的效率,推荐使用v0.6.4.post1版本。
3、Open WebUI:提供类似ChatGPT的用户体验,支持对话记录管理、多模型切换和插件扩展。
三、操作步骤
阿里云官网地址:点击访问
1、准备环境:在阿里云上创建GPU实例,并确保安装正确的GPU驱动和配置。
2、实例规格:根据模型需求选择合适的实例规格,确保能够支持所选择的DeepSeek-V3/R1版本。
3、操作系统与驱动:使用Alibaba Cloud Linux 3.2104 LTS 64位版本镜像,并安装适当的GPU驱动、CUDA和cuDNN库。

4、安装Docker与NVIDIA容器工具包:确保GPU驱动和容器支持,以便容器化部署模型。
(1)Alibaba Cloud Linux/CentOS
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
sudo systemctl restart docker
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
(2)Ubuntu/Debian
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
sudo systemctl restart docker
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
5、数据盘挂载(可选):建议购买数据盘(如1 TiB以上)来存储下载的模型,确保系统盘容量足够。
四、性能优化
1、GPU驱动与Docker支持:通过NVIDIA容器工具包和Docker的结合,可以显著提升推理效率。
2、带宽和网络配置:为提升下载模型的速度,建议设置较高的公网带宽峰值。
五、部署和运行DeepSeek模型
1、执行以下命令,拉取推理镜像。
sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04
sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04
sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04
2、下载模型文件,可以访问阿里云魔搭社区Modelscope选择模型,在模型详情页获取名称。
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
# 如果/mnt/7B目录不存在,则创建它
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动下载,下载完成后自动销毁
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
# 如果/mnt/7B目录不存在,则创建它
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动下载,下载完成后自动销毁
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
3、执行以下命令,实时监控下载进度,等待下载结束。
sudo docker logs -f download
3、执行以下命令,实时监控下载进度,等待下载结束。
sudo docker logs -f download
3、执行以下命令,实时监控下载进度,等待下载结束。
sudo docker logs -f download
当下载任务完成后,会停止输出新的日志,可以随时按下Ctrl+C退出,这不会影响容器的运行,即使退出终端也不会中断下载。
4、启动模型推理服务。
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 创建目录并设置权限。如果目录不存在,则创建它,并确保当前用户对该目录有读写权限。
sudo mkdir -p ${LOCAL_SAVE_PATH}
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
sudo docker run -d -t --network=host --gpus all \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "vllm serve /data \
--served-model-name ${MODEL_NAME} \
--tensor-parallel-size ${TENSOR_PARALLEL_SIZE} \
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
PORT="30000"
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 这里假设使用4个GPU
TENSOR_PARALLEL_SIZE="4"
# 创建目录并设置权限。如果目录不存在,则创建它,并确保当前用户对该目录有读写权限。
sudo mkdir -p ${LOCAL_SAVE_PATH}
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动Docker容器并运行服务
sudo docker run -d -t --network=host --gpus all \
--privileged \
--ipc=host \
--name ${MODEL_NAME} \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "vllm serve /data \
--port ${PORT} \
--served-model-name ${MODEL_NAME} \
--tensor-parallel-size ${TENSOR_PARALLEL_SIZE} \
--max-model-len=16384 \
--enforce-eager \
--dtype=half"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-R1-Distill-Qwen-7B为例
MODEL_NAME="DeepSeek-R1-Distill-Qwen-7B"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/7B为例
LOCAL_SAVE_PATH="/mnt/7B"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
PORT="30000"
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 这里假设使用4个GPU
TENSOR_PARALLEL_SIZE="4"
# 创建目录并设置权限。如果目录不存在,则创建它,并确保当前用户对该目录有读写权限。
sudo mkdir -p ${LOCAL_SAVE_PATH}
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动Docker容器并运行服务
sudo docker run -d -t --network=host --gpus all \
--privileged \
--ipc=host \
--name ${MODEL_NAME} \
-v ${LOCAL_SAVE_PATH}:/data \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "vllm serve /data \
--port ${PORT} \
--served-model-name ${MODEL_NAME} \
--tensor-parallel-size ${TENSOR_PARALLEL_SIZE} \
--max-model-len=16384 \
--enforce-eager \
--dtype=half"
5、运行以下命令,检查服务是否正常启动。
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}
在日志输出中寻找类似以下的消息:
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
这表示服务已经成功启动并在端口30000上监听。
六、启动Open WebUI
1、拉取Open WebUI镜像。
sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1
sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1
sudo docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1
2、启动Open WebUI服务。
OPENAI_API_BASE_URL=http://127.0.0.1:30000/v1
# 创建数据目录,确保数据目录存在并位于/mnt下
sudo mkdir -p /mnt/open-webui-data
sudo docker run -d -t --network=host --name open-webui \
-e ENABLE_OLLAMA_API=False \
-e OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL} \
-e DATA_DIR=/mnt/open-webui-data \
-v /mnt/open-webui-data:/mnt/open-webui-data \
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1 \
/bin/bash -c "pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/ && \
pip config set install.trusted-host mirrors.cloud.aliyuncs.com && \
pip install --upgrade pip && \
pip install open-webui && \
mkdir -p /usr/local/lib/python3.11/site-packages/google/colab && \
#设置模型服务地址
OPENAI_API_BASE_URL=http://127.0.0.1:30000/v1
# 创建数据目录,确保数据目录存在并位于/mnt下
sudo mkdir -p /mnt/open-webui-data
#启动open-webui服务
sudo docker run -d -t --network=host --name open-webui \
-e ENABLE_OLLAMA_API=False \
-e OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL} \
-e DATA_DIR=/mnt/open-webui-data \
-e HF_HUB_OFFLINE=1 \
-v /mnt/open-webui-data:/mnt/open-webui-data \
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1 \
/bin/bash -c "pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/ && \
pip config set install.trusted-host mirrors.cloud.aliyuncs.com && \
pip install --upgrade pip && \
pip install open-webui && \
mkdir -p /usr/local/lib/python3.11/site-packages/google/colab && \
open-webui serve"
#设置模型服务地址
OPENAI_API_BASE_URL=http://127.0.0.1:30000/v1
# 创建数据目录,确保数据目录存在并位于/mnt下
sudo mkdir -p /mnt/open-webui-data
#启动open-webui服务
sudo docker run -d -t --network=host --name open-webui \
-e ENABLE_OLLAMA_API=False \
-e OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL} \
-e DATA_DIR=/mnt/open-webui-data \
-e HF_HUB_OFFLINE=1 \
-v /mnt/open-webui-data:/mnt/open-webui-data \
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/python:3.11.1 \
/bin/bash -c "pip config set global.index-url http://mirrors.cloud.aliyuncs.com/pypi/simple/ && \
pip config set install.trusted-host mirrors.cloud.aliyuncs.com && \
pip install --upgrade pip && \
pip install open-webui && \
mkdir -p /usr/local/lib/python3.11/site-packages/google/colab && \
open-webui serve"
3、执行以下命令,实时监控下载进度,等待下载结束。
sudo docker logs -f open-webui
sudo docker logs -f open-webui
sudo docker logs -f open-webui
在日志输出中寻找类似以下的消息:
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
这表示服务已经成功启动并在端口8080上监听。
4、在本地物理机上使用浏览器访问http://<ECS公网IP地址>:8080,首次登录时,请根据提示创建管理员账号。

在Open WebUI界面中进行问答测试。

-
广告合作
-
QQ群号:707632017