下载
中文
注册
DeepSeek-R1-Distill-Qwen-14B

DeepSeek-R1-Distill-Qwen-14B

Usage

Using the reasoning data generated by DeepSeek-R1, DeepSeek AI fine-tuned several dense models that are widely used in the research community, slightly changing their configs and tokenizers. DeepSeek-R1-Distill-Qwen-14B is one of them.

权重

权重下载

权重转换 由于提供的是.safetensor权重,无需转换,可以直接使用。

加载镜像

前往昇腾社区/开发资源下载适配本模型的镜像包:1.0.0-800I-A2-py311-openeuler24.03-lts或1.0.0-300I-Duo-py311-openeuler24.03-lts

完成加载镜像后,请使用docker images命令确认查找具体镜像名称与标签。

docker load -i mindie:1.0.0-800I-A2-py311-openeuler24.03-lts(下载的镜像名称与标签)

or

docker load -i mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts(下载的镜像名称与标签)

镜像中各组件版本配套如下:

组件 版本
MindIE 1.0.0
CANN 8.0.0
PTA 6.0.0
MindStudio 7.0.0
HDK 24.1.0

约束条件

  • 部署DeepSeek-R1-Distill-Qwen-14B模型至少需要1台Atlas 800I A2服务器或者1台插1张Atlas 300I DUO卡的服务器
  • 在使用Atlas 300I DUO推理卡部署模型时,需要修改权重目录下的config.json文件,"torch_dtype"字段改为"float16"
  • 支持TP=2/4/8推理

新建容器

目前提供的MindIE镜像预置了DeepSeek-R1-Distill-Qwen-14B模型推理脚本,无需再额外下载魔乐仓库承载的模型适配代码,直接新建容器即可。

执行以下启动命令(参考): 如果您使用的是root用户镜像(例如从Ascend Hub上取得),并且可以使用特权容器,请使用以下命令启动容器:

docker run -it -d --net=host --shm-size=1g \
    --privileged \
    --name <container-name> \
    --device=/dev/davinci_manager \
    --device=/dev/hisi_hdc \
    --device=/dev/devmm_svm \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
    -v /usr/local/sbin:/usr/local/sbin:ro \
    -v /path-to-weights:/path-to-weights:ro \
    mindie:1.0.0-800I-A2-py311-openeuler24.03-lts bash

如果您希望使用自行构建的普通用户镜像,并且规避容器相关权限风险,可以使用以下命令指定用户与设备:

docker run -it -d --net=host --shm-size=1g \
    --name <container-name> \
    --device=/dev/davinci_manager \
    --device=/dev/hisi_hdc \
    --device=/dev/devmm_svm \
    --device=/dev/davinci0 \
    --device=/dev/davinci1 \
    --device=/dev/davinci2 \
    --device=/dev/davinci3 \
    --device=/dev/davinci4 \
    --device=/dev/davinci5 \
    --device=/dev/davinci6 \
    --device=/dev/davinci7 \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
    -v /usr/local/sbin:/usr/local/sbin:ro \
    -v /path-to-weights:/path-to-weights:ro \
    mindie:1.0.0-800I-A2-py311-openeuler24.03-lts bash

更多镜像使用信息请参考官方镜像仓库文档

进入容器

docker exec -it ${容器名称} bash

权重量化

Atlas 800I A2 w8a8量化

W8A8量化权重可通过msmodelslim(昇腾压缩加速工具)实现。

  • 注意该量化方式仅支持在Atlas 800I A2服务器上运行
  • 环境配置请参考使用说明
  • git clone下载msit仓代码; git clone https://gitee.com/ascend/msit.git
  • 进入到msit/msmodelslim的目录 cd msit/msmodelslim;并在进入的msmodelslim目录下,运行安装脚本 bash install.sh;
  • 进入到msit/msmodelslim/example/Qwen的目录 cd msit/msmodelslim/example/Qwen;并在进入的Qwen目录下,运行量化转换脚本
python3 quant_qwen.py --model_path {浮点权重路径} --save_directory {W8A8量化权重路径} --calib_file ../common/boolq.jsonl --w_bit 8 --a_bit 8 --device_type npu  
  • 请将{浮点权重路径}和{量化权重路径}替换为用户实际路径。
  • 如果需要使用npu多卡量化,请先配置环境变量,支持多卡量化,建议双卡执行量化:
export ASCEND_RT_VISIBLE_DEVICES=0,1
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False

300I DUO 稀疏量化

  • Step 1

    • 注意该量化方式仅支持在Atlas 300I DUO推理卡上运行
    • 修改模型权重config.json中torch_dtype字段为float16
    • 环境配置请参考使用说明
    • git clone下载msit仓代码; git clone https://gitee.com/ascend/msit.git
    • 进入到msit/msmodelslim的目录 cd msit/msmodelslim;并在进入的msmodelslim目录下,运行安装脚本 bash install.sh;
    • 进入python环境下的site_packages包管理路径 cd {python环境路径}/site-packages/msmodelslim/pytorch/weight_compression/compress_graph/ 可使用find查找: find /usr/ -name compress_graph; 以下是以/usr/local/为用户所在目录,以3.7.5为python版本的样例代码: cd usr/local/lib/python3.7/site-packages/msmodelslim/pytorch/weight_compression/compress_graph/
    • 编译weight_compression组件 sudo bash build.sh {CANN包安装路径}/ascend-toolkit/latest
    • 上一步编译操作会得到bulid文件夹,给build文件夹相关权限 chmod -R 550 build
    • 进入到msit/msmodelslim/example/Qwen的目录 cd msit/msmodelslim/example/Qwen;并在进入的Qwen目录下,运行量化转换脚本 注: 安装完cann后 需要执行source set_env.sh 声明ASCEND_HOME_PATH值 后续安装msmodelslim前需保证其不为空
    export ASCEND_RT_VISIBLE_DEVICES=0
    export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
    python3 quant_qwen.py --model_path {浮点权重路径} --save_directory {W8A8S量化权重路径} --calib_file ../common/cn_en.jsonl --w_bit 4 --a_bit 8 --fraction 0.011 --co_sparse True --device_type npu --use_sigma True --is_lowbit True --sigma_factor 4.0 --anti_method m4
  • Step 2:量化权重切分及压缩

    # 执行"jq --version"查看是否安装jq,若返回"bash:jq:command not found",则依次执行"apt-get update"和"apt install jq"
    jq --version
    export IGNORE_INFER_ERROR=1
    cd ${llm_path}
    torchrun --nproc_per_node {TP数} -m examples.convert.model_slim.sparse_compressor --model_path {W8A8S量化权重路径} --save_directory {W8A8SC量化权重路径}
    • TP数为tensor parallel并行个数
    • 注意:若权重生成时以TP=4进行切分,则运行时也需以TP=4运行
    • 示例
        torchrun --nproc_per_node 4 -m examples.convert.model_slim.sparse_compressor --model_path /data1/weights/model_slim/Qwen-14b_w8a8s --save_directory /data1/weights/model_slim/Qwen-14b_w8a8sc

纯模型推理

对话测试

进入llm_model路径

cd $ATB_SPEED_HOME_PATH

执行对话测试

torchrun --nproc_per_node 2 \
         --master_port 20037 \
         -m examples.run_pa \
         --model_path {权重路径} \
         --max_output_length 20

性能测试

进入ModelTest路径

cd $ATB_SPEED_HOME_PATH/tests/modeltest/

运行测试脚本

bash run.sh pa_[data_type] performance [case_pair] [batch_size] ([prefill_batch_size]) [model_name] ([is_chat_model]) (lora [lora_data_path]) [weight_dir] ([trust_remote_code]) [chip_num] ([parallel_params]) ([max_position_embedding/max_sequence_length])

具体执行batch=1, 输入长度256, 输出长度256用例的2卡并行性能测试命令为:

bash run.sh pa_bf16 performance [[256,256]] 1 qwen ${weight_path} 2

注:ModelTest为大模型的性能和精度提供测试功能。使用文档请参考${ATB_SPEED_HOME_PATH}/tests/modeltest/README.md

服务化推理

  • 打开配置文件
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
  • 更改配置文件
{
...
"ServerConfig" :
{
...
"port" : 1040, #自定义
"managementPort" : 1041, #自定义
"metricsPort" : 1042, #自定义
...
"httpsEnabled" : false,
...
},

"BackendConfig": {
...
"npuDeviceIds" : [[0,1]],
...
"ModelDeployConfig":
{
"truncation" : false,
"ModelConfig" : [
{
...
"modelName" : "qwen",
"modelWeightPath" : "/data/datasets/DeepSeek-R1-Distill-Qwen-14B",
"worldSize" : 2,
...
}
]
},
}
}
  • 拉起服务化
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemon
  • 新建窗口测试(VLLM接口)
curl 127.0.0.1:1040/generate -d '{
"prompt": "What is deep learning?",
"max_tokens": 32,
"stream": false,
"do_sample":true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "qwen"
}'

注: 服务化推理的更多信息请参考MindIE Service用户指南

常见问题

  1. ImportError: cannot import name 'shard_checkpoint' from 'transformers.modeling_utils'. 降低transformers版本可解决。
pip install transformers==4.46.3 --force-reinstall
pip install numpy==1.26.4 --force-reinstall
使用模型资源和服务前,请您仔细阅读并理解透彻 《昇腾深度学习模型许可协议 3.0》