下载
中文
注册
DeepSeek-R1-Distill-Qwen-7B-OrangePi
点击DeepSeek专区获取更多资源

DeepSeek-R1-Distill-Qwen-7B-OrangePi

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-7B is one of them.

约束条件

  • 在20t24g 香橙派aipro上部署DeepSeek-R1-Distill-Qwen-7B模型
  • 需要修改权重目录下的config.json文件,"torch_dtype"字段改为"float16", "max_position_embedding"字段改为4096
  • 由于此硬件为单卡,仅支持TP=1

权重

权重下载

量化权重生成(可选,二选一)

魔乐社区下载量化权重(推荐)

量化权重下载

本地部署w8a8量化

  • 使用此方法需要另外准备一台Atlas 800I A2或Atlas 300I DUO,转换成功后需把权重转移至香橙派上

  • 生成量化权重依赖msModelSlim工具,安装方式见此README

  • W8A8量化权重请使用以下指令生成

# 设置CANN包的环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 关闭虚拟内存
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
# 进入atb-models目录
cd ${ATB_SPEED_HOME_PATH}
# DeepSeek-R1-Distill-Qwen-7B量化,无回退层,antioutlier使用m1算法配置,使用min-max量化方式,校准数据集使用50条BoolQ数据,在NPU上进行运算
python3 msit/msmodelslim/example/Qwen/quant_qwen.py --model_path $ORG --save_directory $MODEL --calib_file msit/msmodelslim/example/common/boolq.jsonl --w_bit 8 --a_bit 8 --device_type npu --disable_names "lm_head" --anti_method m4
  • 再执行以下python脚本把deq_scale转换成int64
import os
import numpy as np
import torch
from safetensors.torch import load_file
from safetensors.torch import save_file

def deqscale2int64(scale):
    scale = scale.numpy()
    scale = np.frombuffer(scale.tobytes(), dtype=np.int32).astype(np.int64)
    scale = torch.tensor(scale)
    return scale

MODEL_PATH = "" # 在此处添加模型路径

safetensor_path = os.path.join(MODEL_PATH, 'quant_model_weight_w8a8.safetensors')
safetensor_weight = load_file(safetensor_path)

for key in safetensor_weight.keys():
    if 'deq_scale' in key:
        safetensor_weight[key] = deqscale2int64(safetensor_weight[key])

save_file(safetensor_weight, safetensor_path)
  • 把转换成功的权重转移至香橙派

新建环境

1.1 安装CANN

1.1.1 安装toolkit

  • 下载
cpu 包名(其中${version}为实际版本)
aarch64 Ascend-cann-toolkit_${version}_linux-aarch64.run
  • 安装
    # 安装toolkit  以arm为例
    chmod +x Ascend-cann-toolkit_${version}_linux-aarch64.run
    ./Ascend-cann-toolkit_${version}_linux-aarch64.run --install
    source /usr/local/Ascend/ascend-toolkit/set_env.sh

1.1.2 安装kernel

  • 下载
包名
Ascend-cann-kernels-310b*_${version}_linux.run
  • 根据芯片型号选择对应的安装包

  • 安装

    chmod +x Ascend-cann-kernels-*_${version}_linux.run
    ./Ascend-cann-kernels-*_${version}_linux.run --install

1.1.3 安装加速库

包名(其中${version}为实际版本)
Ascend-cann-nnal_${version}_linux-aarch64.run
  • 将文件放置在${working_dir}路径下

  • 安装

    chmod +x Ascend-cann-nnal_*_linux-*.run
    ./Ascend-cann-nnal_*_linux-*.run --install --install-path=${working_dir}
    source ${working_dir}/nnal/atb/set_env.sh
  • 可以使用uname -a指令查看服务器是x86还是aarch架构

  • 可以使用以下指令查看abi是0还是1

    python -c "import torch; print(torch.compiled_with_cxx11_abi())"
    • 若输出结果为True表示abi1,False表示abi0

1.2 安装PytorchAdapter

先安装torch 再安装torch_npu

1.2.1 安装torch

  • 下载

    包名
    torch-2.1.0-cp310-cp10-linux_aarch64.whl
    ...
    • 根据所使用的环境中的python版本以及cpu类型,选择对应版本的torch安装包。
  • 安装

    # 安装torch 2.1.0 的python 3.10 的arm版本为例
    pip install torch-2.1.0-cp310-cp310-linux_aarch64.whl

1.2.2 安装torch_npu

下载PyTorch Adapter,安装方法:

包名
pytorch_v2.1.0_py38.tar.gz
pytorch_v2.1.0_py39.tar.gz
pytorch_v2.1.0_py310.tar.gz
...
  • 安装选择与torch版本以及python版本一致的npu_torch版本
# 安装 torch_npu,以 torch 2.1.0,python 3.10 的版本为例
tar -zxvf pytorch_v2.1.0_py310.tar.gz
pip install torch*_aarch64.whl

1.3 安装开源软件依赖

| 默认依赖 | requirement.txt |

  • 开源软件依赖请使用下述命令进行安装:
    pip install -r ./requirements.txt

1.4 安装模型仓

使用编译好的包进行安装

  • 下载编译好的包

    包名
    Ascend-mindie-atb-models_1.0.RC1_linux-aarch64_torch1.11.0-abi0.tar.gz
    Ascend-mindie-atb-models_1.0.RC1_linux-aarch64_torch2.1.0-abi1.tar.gz
    ...
  • 将文件放置在${working_dir}路径下

  • 解压

    cd ${working_dir}
    mkdir MindIE-LLM
    cd MindIE-LLM
    tar -zxvf ../Ascend-mindie-atb-models_*_linux-*_torch*-abi*.tar.gz
  • 安装atb_llm whl包

    cd ${working_dir}/MindIE-LLM
    # 首次安装
    pip install atb_llm-0.0.1-py3-none-any.whl
    # 更新
    pip install atb_llm-0.0.1-py3-none-any.whl --force-reinstall

纯模型推理

对话测试

进入llm_model路径

cd $ATB_SPEED_HOME_PATH

执行对话测试

python   -m examples.run_fa_edge \
         --model_path ${权重路径} \
         --input_text 'What is deep learning?' \
         --max_output_length 20 \

声明

  • 本代码仓提到的数据集和模型仅作为示例,这些数据集和模型仅供您用于非商业目的,如您使用这些数据集和模型来完成示例,请您特别注意应遵守对应数据集和模型的License,如您因使用数据集或模型而产生侵权纠纷,华为不承担任何责任。
  • 如您在使用本代码仓的过程中,发现任何问题(包括但不限于功能问题、合规问题),请在本代码仓提交issue,我们将及时审视并解答。
使用模型资源和服务前,请您仔细阅读并理解透彻 《昇腾深度学习模型许可协议 3.0》