MindIE大模型推理套件
MindIE(Mind Inference Engine,昇腾推理引擎)是华为公司针对AI全场景推出的整体解决方案,包含丰富的推理加速套件。通过开放各层次AI能力,支撑客户多样化的AI业务需求,使能百模千态,释放昇腾设备的澎湃算力。向上支持多种主流AI框架,向下服务昇腾AI处理器,提供多层次编程接口,帮助用户快速构建基于昇腾平台的推理业务。昇腾推理引擎,基于昇腾硬件的运行加速、调试调优、快速迁移部署的高性能深度学习推理框架,分层开放满足各类需求,统一接口使能极简开发,沉淀能力构筑极致性能。
官方地址:MindIE-昇腾社区 (hiascend.com)
运行硬件环境要求:
推理服务器 | Atlas 800I A2推理产品 |
加速卡 | Atlas 300I Duo 推理卡+Atlas 800 推理服务器(型号:3000) |
一、准备数据以及启动docker环境
1.1 下拉docker
镜像地址:镜像仓库网
查看最新的mindie的镜像:
参考上面的连接进行docker下拉:
举个例子,拉取docker:
docker pull swr.cn-central-221.ovaijisuan.com/wh-aicc-fae/mindie-ascend_24.1.rc2-cann_8.0.t13-py_3.10-ubuntu_22.04-aarch64:v1.0.t59.03 (其中swr.cn-central-221.ovaijisuan.com/wh-aicc-fae/mindie-ascend_24.1.rc2-cann_8.0.t13-py_3.10-ubuntu_22.04-aarch64:v1.0.t59.03为你选择的docker镜像)
创建容器并启动
docker run -itd --ipc=host --network=host --name mindie \
--privileged \
-p 1025:1025 \
--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/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf \
-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 /home/:/home \
d07bfd46c4fa #这个是镜像的id
注:其中卡的id可根据自己的环境进行修改。
查看已创建的容器 docker ps
启动容器并进入:
docker exec -it -u 0 2c5 /bin/bash
备注:不同的版本显示不一样的环境,可根据自己所选的环境查看相关的mindie版本。
二、Qwen1.5 7B推理测试
2.1下载到modelscope社区下载Qwen1.5 7B Chat的模型
ModelScope:魔搭社区
下载模型及相关文件
启动python终端:
Python
依次输入如下命令。
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen1.5-7B-Chat',cache_dir='/home')
如果modelscope没安装,记得先pip安装,cache_dir表示会把模型文件下载到该路径下。
注:如果模型下载报错,请继续执行download操作。
2.2修改下载的模型配置文件
进入/home/qwen/Qwen1___5-7B-Chat,编辑目录下的config.json 修改成"torch_dtype": "float16"
2.3执行推理性能测试
执行如下命令切换到mindie代码仓目录
cd /usr/local/Ascend/atb-models/tests/modeltest
安装下依赖:pip install –r requirements.txt
执行如下命令进行推理性能测试。具体参数请根据实际修改。
bash run.sh pa_fp16 performance [[512,512]] 16 qwen /home/qwen/Qwen1___5-7B-Chat 2
参数说明:
[[512,512]]:输入输出长度
16:batchsize大小
qwen:模型名称
/home/qwen/Qwen1___5-7B-Chat 2:权重所在目录
2:npu卡数量
测试结果存放在回显提示路径:
/usr/local/Ascend/atb-models/tests /tests/modeltest/result/
注:性能测试或者是精度测试可参考:/usr/local/Ascend/atb-models/readme.md文件或至少/usr/local/Ascend/atb-models/test/readme.md
2.4执行推理测试
- 切换到mindie-server所在目录。
cd /usr/local/Ascend/mindie/latest/mindie-service/
修改config.json文件中的如下内容。
vim conf/config.json
步骤2、启动mindie-server。
cd bin
./mindieservice_daemon
回显提示如下说明服务启用成功:
注:如果启动报错,可以查看/usr/local/Ascend/mindie/1.*/mindie-service/logs下的log文件。
步骤3、调用接口
使用curl调用接口(示例一):
time curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"prompt": "我有五天假期,我想去海南玩,请给我一个攻略","max_tokens": 512,"repetition_penalty": 1.03,"presence_penalty": 1.2,"frequency_penalty": 1.2,"temperature": 0.5,"top_k": 10,"top_p": 0.95,"stream": false}' http://127.0.0.1:1025/generate #其中127.0.0.1以实际ip地址为准
使用curl调用接口(示例二):
time curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"model": "qwen","messages": [{"role": "user","content": "我有五天假期,我想去海南玩,请给我一个攻略"}],"max_tokens": 512,"presence_penalty": 1.03,"frequency_penalty": 1.0,"seed": null,"temperature": 0.5,"top_p": 0.95,"stream": false}' http://127.0.0.1:1025/v1/chat/completions #其中127.0.0.1以实际ip地址为准
使用curl调用接口(示例三):
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"model": "qwen","messages": [{"role": "system","content": "You are a student who is good at math."},{"role": "user","content": "事业单位职工食堂食材采购资金部分来自职工福利基金补助,适用《政府采购法》吗?"}],"max_tokens": 512,"presence_penalty": 1.03,"frequency_penalty": 1.0,"seed": null,"temperature": 0.5,"top_p": 0.95,"stream": true}' http://127.0.0.1:1025/v1/chat/completions #其中127.0.0.1以实际ip地址为准