Tlntin / qwen-ascend-llm

Apache License 2.0
14 stars 1 forks source link

说明

准备工作

  1. 下载本项目

    git clone https://github.com/Tlntin/qwen-ascend-llm.git
  2. 下载qwen1.5/qwen2的模型,选择chat模型或者instruct模型,将其放到download文件夹,仅支持huggingface下载的模型,网络不好的可以用镜像站:https://hf-mirror.com/Qwen

Docker运行相关

详细运行步骤

步骤1:编译模型(以Qwen2-1.5B-Instruct)为例。
  1. 除了上面说的CANN环境安装外,还需额外安装一些python模块。当然,你也可以使用docker构建开发环境,但是注意你的芯片和对应的得是310B系列,如果不是,需要参考官方镜像文档做一些修改。

    cd qwen-ascend-llm
    pip install -r ./requirements.txt
  2. 导出onnx,默认kv-cache长度为1024,可以根据自己的内存、显存来设置更大参数。

    python3 export/export_onnx.py \
    --hf_model_dir="./download/Qwen2-1.5B-Instruct" \
    --onnx_model_path="./output/onnx/qwen2_1.5b_chat.onnx" \
    --kv_cache_length=1024
  3. 验证onnx,返回项目根目录,运行cli_chat.py,测试一下onnx对话是否正常(注意:由于是cpu运行,所以速度较慢,请耐心等待)。

    python3 ./cli_chat.py \
    --session_type=onnx \
    --hf_model_dir="./download/Qwen2-1.5B-Instruct" \
    --onnx_model_path="./output/onnx/qwen2_1.5b_chat.onnx"
  4. 改变onnx结构,目前导出的Trilu算子和Cast算子有些问题,atc命令无法识别,需要改一下结构。

    python3 export/change_node.py \
    --input_model_path="./output/onnx/qwen2_1.5b_chat.onnx" \
    --output_model_path="./output/onnx2/qwen2_1.5b_chat.onnx"
  5. 转onnx为om模型, 将修改后的onnx利用atc命令导出到onnx,注意此处的om_model_path不带.om后缀。运行过程可能会有一些警告,或者子图融合报错,只要结果是提示success就说明没啥问题。kv_cache_length长度和第一步导出onnx时的长度保持一致。--max_prefill_length为prefill阶段,单次能处理的最大长度,该数值越长则越能降低首字延迟,但是相应的onnx转om的时间也会变长。设置该数值时,一般为2的指数,例如2、4、8、16等等,推理时会利用递归自动匹配合适的prefill长度,例如输入12,会匹配[8, 4]。当前默认数值为8,如果设置为1,则不会开启动态shape推理功能。该脚本会自动检测你的NPU类型,如果你想手动指定,可以加上--soc_version=xxxx来指定,例如--soc_version=Ascend310B1

    python3 export/onnx2om.py \
    --hf_model_dir="./download/Qwen2-1.5B-Instruct" \
    --onnx_model_path="./output/onnx2/qwen2_1.5b_chat.onnx" \
    --om_model_path="./output/model/qwen2_1.5b_chat" \
    --kv_cache_length=1024 \
    --max_prefill_length=8
步骤2:在终端运行模型进行对话
步骤3:部署兼容OpenAI的api

当前功能