HuggingFace镜像/DeepSeek-R1-ascend-A8W8
模型介绍文件和版本分析
下载使用量0

DeepSeek-R1 W8A8量化推理使用指南

目录

  • 模型介绍
  • 快速开始
  • 声明

模型介绍

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)服务器。

  1. 2台服务器的组网结构推荐使用直连模式,即服务器通过交换机直连,每张卡都可以ping通其他卡。
  2. 下载W8A8权重文件时,请确保机器内/挂载盘中有大于700G的存储空间。
  3. 请确保2台机器的权重文件存放在在相同路径下,并且能正常访问。
  4. 请确保CPU侧内存能够放下对应权重文件。 例:W8A8权重需要大约500G左右的内存,通过free -h指令查看空闲CPU内存(free_mem),建议满足: free_mem >= (权重大小 / 机器数) * 1.3 (该计算方式仅供参考,需要尽可能保障内存容量充足)
  5. 请确保权重文件的正确性,对比权重/tokenizer等文件与源文件的MD5或SHA256值。

固件和驱动版本

推荐从昇腾官方社区下载并安装如下版本的NPU驱动和固件:

部件版本号
Ascend HDK Driver24.1.0
Ascend HDK Firmware7.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,则不会创建软链接。

安装固件和驱动程序

1. 从昇腾社区下载如下版本的昇腾固件和驱动程序。

部件社区版
Ascend HDK Driver24.1.rc3
Ascend HDK Firmware7.5.0.1.129

2. 执行以下shell命令安装固件和驱动程序。

# 驱动安装
./Ascend-hdk-<chip_type>-npu-driver_<version>_linux-<arch>.run --full --install-for-all
# 固件安装
./Ascend-hdk-<chip_type>-npu-firmware_<version>.run --full
# 安装后需要重启

注意事项:如服务器已安装昇腾固件和驱动程序,可跳过该步骤。

部署推理服务

1. 执行以下shell命令,下载openEuler容器镜像

docker pull hub.oepkgs.net/oedeploy/openeuler/aarch64/mindspore:20250422

2.启动容器

在两台部署服务器上,分别执行以下命令创建并启动容器:

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命令查看。

3. 进入容器并配置环境变量

在两台部署服务器上,分别执行以下命令,进入容器配置环境变量:

# 进入容器
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

4. 启动Ray进程

在两台部署服务器的容器操作环境下,先执行以下命令,清楚残留的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'

5. 启动DeepSeek-R1 W8A8推理服务

在主节点服务器(案例中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 &

6. 发送服务请求验证

在主节点服务器(案例中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|>