DeepSeek-V3/R1是一个具有超过600亿参数的专家混合(MoE)模型,且已开源其模型权重。本文将介绍如何利用vllm作为DeepSeek模型的推理框架,在两台ebmgn8v实例上构建DeepSeek-V3/R1的推理服务。您无需进行额外配置,即可实现开箱即用。
创建GPU实例并正确安装驱动。具体操作,请参见创建GPU实例。关键参数说明如下。 实例规格:目前可选的实例规格为 镜像:选择公共镜像,本文以Alibaba Cloud Linux 3.2104 LTS 64位版本的镜像为例。 在GPU实例上部署DeepSeek-V3/R1模型,需要提前在该实例上安装GPU驱动且驱动版本应为550及以上版本,建议您通过ECS控制台购买GPU实例时,同步选中安装GPU驱动。实例创建完成后,会自动安装Tesla驱动、CUDA、cuDNN库等,相比手动安装方式更快捷。 系统盘:建议系统盘大小设置200 GiB以上。 数据盘:由于模型体积较大,DeepSeek-R1模型和DeepSeek-V3模型的文件大小分别约为1.3 TiB。建议数据盘的大小预留为模型大小的1.5倍。因此,建议您单独购买用于存储下载模型的数据盘,推荐选择2 TiB以上的数据盘。 公网IP:选中分配公网IPv4地址,带宽计费方式选择按使用流量,建议带宽峰值选择100 Mbps,以加快模型下载速度。 安全组:开放22端口。 远程连接GPU实例。 具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。 执行以下命令,安装Docker环境。此处以Alibaba Cloud Linux 3系统为例,其他系统安装方式请参见安装Docker。 通过查看Docker版本命令,验证Docker是否安装成功。 如下图回显信息所示,表示Docker已安装成功。 安装NVIDIA容器工具包。 Alibaba Cloud Linux/CentOS Ubuntu/Debian 执行以下命令,查看Docker是否已启动。 如下图回显所示,表示Docker已启动。 如果购买GPU实例时未选择添加数据盘,您需要购买数据盘并完成挂载。 由于模型体积较大,DeepSeek-R1模型和DeepSeek-V3模型的文件大小分别约为1.3 TiB。建议数据盘的大小预留为模型大小的1.5倍。因此,建议您单独购买用于存储下载模型的数据盘,推荐选择2 TiB以上的数据盘,并以 执行以下命令,拉取推理镜像。 下载模型文件,您可以访问阿里云魔搭社区Modelscope选择模型,在模型详情页获取名称。 执行以下命令,实时监控下载进度,等待下载结束。 下载模型耗时较长,请您耐心等待。当下载任务完成后,会停止输出新的日志,您可以随时按下 启动模型推理服务。 执行以下命令,进入 执行以下命令,安装Ray并在两台机器间创建Ray集群。 在node1上会出现类似下述回显信息。 然后在node2上运行上述图红框中的命令,即可创建Ray集群,可以通过在任何一台机器上运行 在任何一台机器的容器中运行如下命令启动DeepSeek-V3或DeepSeek-R1的推理serving服务。 说明 其中 如下所示,表示vllm推理服务已启动。 等待推理server完成初始化正常运行后,在运行上述命令的机器的容器中另一个终端窗口中运行如下命令发送推理请求并显示模型推理返回结果。 为了避免在每次运行过程中都去下载评估数据集,最好提前将评估数据集下载并存放在服务器本地。 通过以下命令,克隆名为 DeepSeek-V3/R1模型性能评估支持离线和在线两种方式: 离线性能评估 获取vllm源码。 在容器中运行如下命令进行DeepSeek-V3或DeepSeek-R1离线性能评估。 说明 其中 在线性能评估 在容器中运行如下命令启动模型serving,进行DeepSeek-V3或DeepSeek-R1的在线性能评估。 等待server完成初始化正常运行后,在容器中另一个终端中运行如下命令进行serving模式性能测试。 获取vllm源码。 启用serving模式性能评估。 说明 其中 计算巢一键部署方式(GPU双机版) 计算巢基于ROS模板可以实现云资源与大模型的一键部署,您仅需在创建服务实例时添加几个参数,即可在30分钟内通过GPU实例(双机)部署并使用满血版DeepSeek模型,快速体验DeepSeek-R1/V3的推理性能,具体请点击部署链接进行一键部署操作。 命令执行部署方式(GPU单机版) 利用SGLang作为DeepSeek模型的推理框架,通过执行命令方式基于GPU实例单机部署满血版DeepSeek模型,您也无需进行额外配置,即可实现DeepSeek-R1/V3的推理性能。操作步骤
步骤一:准备环境
ecs.ebmgn8v.48xlarge
(内存1024 GiB、GPU显存8*96 GB以及192 vCPU)。更多信息,请参见GPU计算型(gn/ebm/scc系列)。#添加Docker软件包源sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo#Alibaba Cloud Linux3专用的dnf源兼容插件sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin#启动Dockersudo systemctl start docker#设置Docker守护进程在系统启动时自动启动sudo systemctl enable docker
sudo docker -v
#配置生产存储库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#重启dockersudo systemctl restart docker
sudo systemctl status docker
/mnt
作为挂载点。具体操作,请参见挂载数据盘。步骤二:部署和运行DeepSeek模型
sudo docker pull egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.7.2-pytorch2.5.1-cuda12.4-ubuntu22.04
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例MODEL_NAME="DeepSeek-V3"# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/V3为例LOCAL_SAVE_PATH="/mnt/V3"# 如果/mnt/V3目录不存在,则创建它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.7.2-pytorch2.5.1-cuda12.4-ubuntu22.04 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
sudo docker logs -f download
Ctrl+C
退出,这不会影响容器的运行,即使退出终端也不会中断下载。# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例MODEL_NAME="DeepSeek-V3"# 设置本地存储路径。确保该路径有足够的空间来存放模型文件,此处以/mnt/V3为例LOCAL_SAVE_PATH="/mnt/V3"# 确保当前用户对该目录有读写权限,根据实际情况调整权限sudo chmod ugo+rw ${LOCAL_SAVE_PATH}# 启动Docker容器docker run -t -d \
--name="vllm-test" \
--ipc=host \
--cap-add=SYS_PTRACE \
--network=host \
--gpus all \
--privileged \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v /mnt:/mnt \
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.7.2-pytorch2.5.1-cuda12.4-ubuntu22.04
步骤三:模型运行测试
vllm-test
容器。docker exec -it vllm-test bash
pip3 install ray# running on node1ray start --head --dashboard-host 0.0.0.0
ray status
命令来检查是否创建成功。如果出现下述回显信息即表明创建成功。vllm serve /path/to/DeepSeek-V3 \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2 \
--trust-remote-code \
--enable-chunked-prefill \
--host 0.0.0.0
/path/to/DeepSeek-V3
需要替换为本地DeepSeek-V3或DeepSeek-R1的存放目录。curl http://localhost:8000/v1/chat/completions \
-H "Content-Type:application/json" \
-d '{
"model":"/path/to/DeepSeek-V3",
"messages":[{"role": "user", "content": "写一首20字的月亮诗"}],
"stream":false}'
(可选)DeepSeek-V3/R1模型性能评估
ShareGPT_V3_unfiltered_cleaned_split
的数据集仓库。git lfs clone https://www.modelscope.cn/datasets/gliang1001/ShareGPT_V3_unfiltered_cleaned_split.git
git lfs clone https://github.com/vllm-project/vllm.git
python3 ./vllm/benchmarks/benchmark_throughput.py \
--backend vllm \
--model /path/to/DeepSeek-V3 \
--trust-remote-code \
--tensor-parallel-size 8 \
--output-len 4096 \
--input-len 512 \
--num-prompts 10 \
--dataset /path/to/ShareGPT_V3_unfiltered_cleaned_split.json
/path/to/DeepSeek-V3
需要替换为本地DeepSeek-V3或DeepSeek-R1的存放目录;/path/to/ShareGPT_V3_unfiltered_cleaned_split.json
需要替换为本地评估数据集仓库的存放路径。vllm serve /path/to/DeepSeek-V3 \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2 \
--trust-remote-code \
--enable-chunked-prefill \
--host 0.0.0.0 \
--port 12345
git lfs clone https://github.com/vllm-project/vllm.git
python3 ./vllm/benchmarks/benchmark_serving.py \
--backend vllm \
--model /path/to/DeepSeek-V3 \
--dataset-name random \
--random-output-len 4096 \
--random-input-len 512 \
--num-prompts 10 \
--max-concurrency 1 \
--port 12345 \
--dataset-path /path/to/ShareGPT_V3_unfiltered_cleaned_split/ShareGPT_V3_unfiltered_cleaned_split.json
/path/to/DeepSeek-V3
需要替换为本地DeepSeek-V3或DeepSeek-R1的存放目录;/path/to/ShareGPT_V3_unfiltered_cleaned_split.json
需要替换为本地评估数据集仓库的存放路径。相关文档