DeepSeek-R1 是基于 6850 亿参数(含MTP模块)的 DeepSeek-V3 基础模型开发的优秀AI大模型。该模型通过多阶段训练流程,包括监督微调(SFT)和强化学习(RL),显著提升了逻辑推理能力和语言一致性。在数学、代码生成和自然语言推理等任务中,DeepSeek-R1 展现出与 OpenAI 的 o1 模型相当的性能。此外,通过知识蒸馏技术,DeepSeek-R1 生成了多个更小、更高效的子模型,这些子模型在推理任务中表现出色,部分性能指标甚至超越了 OpenAI 的 o1-mini。DeepSeek-R1 的训练过程和架构设计使其在推理任务中具备显著优势,同时保持了良好的通用性和可扩展性,为逻辑推理任务提供了强大的支持。
本模型仓托管的是DeepSeek-R1 671B大模型(不含MTP模块)的W8A8量化版本,可使用昇思MindSpore全场景全栈AI框架,配合vLLM和vLLM-MindSpore插件,进行服务化部署。
以下是采用昇思MindSpore社区联合openEuler社区联合开发的容器镜像,进行DeepSeek-R1 vLLM推理部署的流程。
注:除采用本文档所提供的部署流程外,开发者还可以选用openEuler社区提供的oedeploy工具包,参考《DeepSeek-V3&R1部署指南》,进行一键式部署。
部署DeepSeek-R1 671B (不含MTP模块) W8A8量化模型至少需要2台Atlas 800I A2(8*64G)服务器。
free -h指令查看空闲CPU内存(free_mem),建议满足:
free_mem >= (权重大小 / 机器数) * 1.3 (该计算方式仅供参考,需要尽可能保障内存容量充足)推荐从昇腾官方社区下载并安装如下版本的NPU驱动和固件:
| 部件 | 版本号 |
|---|---|
| Ascend HDK Driver | 24.1.0 |
| Ascend HDK Firmware | 7.5.0.3.220 |
执行以下命令为自定义下载路径/home/deepseek/DeepSeek-R1-W8A8/添加白名单:
export HUB_WHITE_LIST_PATHS=/home/deepseek/DeepSeek-R1-W8A8/执行以下 Python 脚本从魔乐社区下载昇思 MindSpore 版本的 DeepSeek-R1 W8A8量化模型权重文件至指定路径/home/deepseek/DeepSeek-R1-W8A8/。下载的文件包含权重、分词模型、配置文件,占用约 700GB 的磁盘空间:
from openmind_hub import snapshot_download
snapshot_download(
repo_id="MindSpore-Lab/DeepSeek-R1-ascend-W8A8",
local_dir="/home/deepseek/DeepSeek-R1-W8A8/",
local_dir_use_symlinks=False
)注意事项:
/home/deepseek/DeepSeek-R1-W8A8/可修改为自定义路径,确保该路径有足够的磁盘空间(约 700GB),且需修改后续容器镜像操作中的路径。- 下载时间可能因网络环境而异,建议在稳定的网络环境下操作。
- 将
local_dir_use_symlinks设置为False,则不会创建软链接。
| 部件 | 社区版 |
|---|---|
| Ascend HDK Driver | 24.1.rc3 |
| Ascend HDK Firmware | 7.5.0.1.129 |
# 驱动安装
./Ascend-hdk-<chip_type>-npu-driver_<version>_linux-<arch>.run --full --install-for-all
# 固件安装
./Ascend-hdk-<chip_type>-npu-firmware_<version>.run --full
# 安装后需要重启注意事项:如服务器已安装昇腾固件和驱动程序,可跳过该步骤。
docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:20250422在两台部署服务器上,分别执行以下命令创建并启动容器:
docker run -itd --name=deepseek-r1 --ipc=host --network=host --privileged=true \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/log/npu/:/usr/slog \
-v /etc/hccn.conf:/etc/hccn.conf \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /etc/vnpu.cfg:/etc/vnpu.cfg \
-v /mnt/disk1:/mnt/disk0 \
-v /mnt/disk0:/mnt/disk1 \
-v /mnt/nvme0n1:/mnt/nvme0n1 \
-v /home:/home \
--pids-limit 409600 \
--shm-size="250g" \
3ccb72ff7c99 \
/bin/bash注意事项:
3ccb72ff7c99是容器镜像的ID,可通过docker images命令查看。
在两台部署服务器上,分别执行以下命令,进入容器配置环境变量:
# 进入容器
docker exec -it deepseek-r1 /bin/bash
# 后续所有操作均在容器内操作
alias wget="wget --no-check-certificate"
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export ASCEND_CUSTOM_PATH=$ASCEND_HOME_PATH/../
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export MINDFORMERS_MODEL_CONFIG=/usr/local/Python-3.11/lib/python3.11/site-packages/research/deepseek3/deepseek3_671b/predict_deepseek3_671b_w8a8.yaml
export vLLM_MODEL_BACKEND=MindFormers
export vLLM_MODEL_MEMORY_USE_GB=53
export GLOO_SOCKET_IFNAME=enp189s0f0
export TP_SOCKET_IFNAME=enp189s0f0
export MS_ENABLE_LCCL=off
export ASCEND_TOTAL_MEMORY_GB=64
export HCCL_OP_EXPANSION_MODE=AIV
export MS_ALLOC_CONF=enable_vmm:true在两台部署服务器的容器操作环境下,先执行以下命令,清楚残留的Python和Ray进程:
# 清除残留进程(可选)
ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep ray | grep -v grep | awk '{print $2}' | xargs kill -9注意事项:如果是首次启动容器,或确认无残留进程,可省略清理残留进程的操作。
然后在主节点服务器(案例中IP地址为90.90.90.230)上先执行以下命令:
# 主节点服务器90.90.90.230
ray start --head --port=6371最后再从节点服务器(案例中IP地址为90.90.90.234)上执行以下命令:
# 从节点服务器90.90.90.234
ray start --address='90.90.90.230:6371'在主节点服务器(案例中IP地址为90.90.90.230)上执行以下命令:
# 启动推理服务(带vLLM Multi-step Scheduling特性)
python3 -m vllm_mindspore.entrypoints vllm.entrypoints.openai.api_server --model "/home/deepseek/DeepSeek-R1-W8A8/" --trust_remote_code --tensor_parallel_size=16 --max-num-seqs=192 --max_model_len=32768 --max-num-batched-tokens=16384 --block-size=32 --gpu-memory-utilization=0.93 --num-scheduler-steps=8 --distributed-executor-backend=ray > log12 2>&1 &在主节点服务器(案例中IP地址为90.90.90.230)输入以下命令,测试DeepSeek-R1 W8A8推理服务:
curl http://90.90.90.230:8000/v1/completions -H "Content-Type: application/json" -d '{"model": "/home/deepseek/DeepSeek-R1-W8A8/", "prompt": "You are a helpful assistant.<|User|>我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下 多少苹果?<|Assistant|>