4*910B1のDeepSeek-R1部署

硬件要求

部署DeepSeek-R1模型用BF16权重进行推理至少需要4台Atlas 800I A2(864G)服务器,用W8A8量化权重进行推理则至少需要2台Atlas 800I A2 (864G)

权重下载

modelscope download --model cognitivecomputations/DeepSeek-R1 --local_dir ./DeepSeek-R1
高峰期不中断情况大概需要下一天
权重转换

git clone https://gitee.com/ascend/ModelZoo-PyTorch.git
cd ModelZoo-PyTorch\MindIE\LLM\DeepSeek\DeepSeek-V2\NPU_inference
python fp8_cast_bf16.py --input-fp8-hf-path /home/weight/DeepSeek-R1 --output-bf16-hf-path /home/weight/deepseek-R1-bf16

DeepSeek官方没有针对DeepSeek-R1提供新的权重转换脚本,所以复用DeepSeek-V3的权重转换脚本

  • 由于模型权重较大,请确保您的磁盘有足够的空间放下所有权重,例如DeepSeek-R1在转换前权重约为640G左右,在转换后权重约为1.3T左右
    准备镜像
    mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts-aarch64
    各组件版本配套如下:
    暂时无法在飞书文档外展示此内容
    启动容器
docker run -itd --privileged  --name=容器名称 --net=host \
   --shm-size 500g \
   --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/hisi_hdc \
   --device /dev/devmm_svm \
   -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
   -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
   -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
   -v /usr/local/sbin:/usr/local/sbin \
   -v /etc/hccn.conf:/etc/hccn.conf \
   -v /权重路径:/权重路径 \
   mindie:1.0.0-XXX-800I-A2-arm64-py3.11(根据加载的镜像名称修改) \
   bash

纯模型测试

精度测试

cd /usr/local/Ascend/atb_llm/tests/modeltest/
bash run.sh pa_bf16 full_CEval 5 16 deepseekv2 /path/to/weights/DeepSeek-R1 /path/to/xxx/ranktable.json 32 4 0 {主节点IP}
# 0 代表从0号卡开始推理,之后的机器依次从8,16,24。

性能测试

bash run.sh pa_bf16 performance [[256,256]] 16 deepseekv2 /path/to/weights/DeepSeek-R1 /path/to/xxx/ranktable.json 32 4 0 {主节点IP}
# 0 代表从0号卡开始推理,之后的机器依次从8,16,24。

服务化测试

# 配置服务化环境变量
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export MIES_CONTAINER_IP=容器ip地址
export RANKTABLEFILE=rank_table_file.json路径

修改服务化参数

cd /usr/local/Ascend/mindie/latest/mindie-service/


————————————————————————————————————————————————————————

### 拉起服务

# 解决权重加载过慢问题
export OMP_NUM_THREADS=1
# 设置显存比
export NPU_MEMORY_FRACTION=0.95
# 拉起服务化
cd /usr/local/Ascend/mindie/latest/mindie-service/
./bin/mindieservice_daemon

注意:
1、关闭防火墙
2、正确配置权重及rank_table的权限
3、驱动固件、toolkit、镜像等注意版本配套
4、rank_table_file.json的正确性,务必每台机器一致
5、MindIE-Service的conf/config.json的配置,通过该json文件调参

Curl测试

curl http://172.16.0.21:1025/v1/completions     -H "Content-Type: application/json"     -d '{
         "model": "deepseekr1",
         "prompt": "你是谁",
         "max_tokens": 100,
         "temperature": 0.9
     }'

性能测试数据

context   batch       TTFT ms    TPS (without prefill)  TPS (with prefill)
128+1024   1          131.173       15.044                     15.029
128+1024   8          237.365       14.309                     14.274
128+1024   16         256.646       11.083                      7.35
128+1024   32         426.948        7.771                      3.70
128+1024   64         762.593        4.925                      1.81

appendix

rank_table_file设置
功能描述:此环境变量用于控制是否通过ranktable file进行集合通信域建链。
· 未配置时,通过默认的协商流程进行集合通信域建链。
· 配置且文件全路径有效时,通过ranktable file进行集合通信域建链。
配置方法:
首先在每台机器下载生成rank_table_file的和merge的脚本
生成json文件的脚本

wget https://gitee.com/mindspore/mindformers/raw/r1.0/mindformers/tools/hccl_tools.py
merge 脚本
wget https://gitee.com/mindspore/mindformers/raw/r1.0/mindformers/tools/merge_hccl.py

在两台机器上分别执行 python hccl_tools.py 会分别生成当前机器的npu信息的json脚本。
将json文件传入一台机器后使用python merge_hccl $1.json $2.json 生成两台机器的json脚本,随后传分发到两台机器中,执行export RANKTABLEFILE=/home/ranktable.json 加入环境变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值