组件介绍
CANN
异构计算架构CANN(Compute Architecture for Neural Networks)是昇腾针对AI场景推出的异构计算架构,向上支持多种AI框架,包括MindSpore、PyTorch、TensorFlow等,向下服务AI处理器与编程,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台。同时针对多样化应用场景,提供多层次编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。
总体架构
MindIE
MindIE是什么:https://www.hiascend.com/document/detail/zh/mindie/10RC3/whatismindie/mindie_what_0001.html
MindIE(Mind Inference Engine,昇腾推理引擎)是华为昇腾针对AI全场景业务的推理加速套件。通过分层开放AI能力,支撑用户多样化的AI业务需求,使能百模千态,释放昇腾硬件设备算力。向上支持多种主流AI框架,向下对接不同类型昇腾AI处理器,提供多层次编程接口,帮助用户快速构建基于昇腾平台的推理业务。
总体架构
MindFormers
MindFormers是什么:https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.0/start/overview.html
MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。
总体架构
版本配套与安装指导
版本配套关系
MindIE |
MindFormers |
MindSpore |
CANN |
固件与驱动 |
镜像链接 |
|
版本 |
1.0.RC3 |
1.3.0 |
2.4.0 |
8.0.RC3.beta1 |
24.1.RC3 |
/ |
下载链接 |
https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.RC3.beta1 |
https://www.hiascend.com/hardware/firmware-drivers/community |
http://mirrors.cn-central-221.ovaijisuan.com/detail/154.html |
MindIE |
MindFormers |
MindSpore |
CANN |
固件与驱动 |
镜像链接 |
|
版本 |
1.0.RC2 |
1.2.0 |
2.3.0 |
8.0.RC2.beta1 |
24.1.RC2 |
/ |
下载链接 |
https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.RC2.beta1 |
https://www.hiascend.com/hardware/firmware-drivers/community |
http://mirrors.cn-central-221.ovaijisuan.com/detail/138.html |
安装指导
- MindIE安装指南(包括了固件与驱动、CANN、MindIE、pytorch等基础依赖的安装):
1.0.RC3安装:
https://www.hiascend.com/document/detail/zh/mindie/10RC3/envdeployment/instg/mindie_instg_0001.html
1.0.RC2安装:
https://www.hiascend.com/document/detail/zh/mindie/10RC2/envdeployment/instg/mindie_instg_0001.html
- MindFormers安装指南(包括了MindFormers、MindSpore的安装):https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.0/quick_start/install.html
使用指导
参考指导:
https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.0/usage/mindie_deployment.html
- 环境搭建
1)参考上面的安装指导完成软件安装
2)环境变量设置
# Ascend source /usr/local/Ascend/ascend-toolkit/set_env.sh # MindIE source /usr/local/Ascend/mindie/latest/mindie-llm/set_env.sh source /usr/local/Ascend/mindie/latest/mindie-service/set_env.sh # MindSpore export LCAL_IF_PORT=8129 # 组网配置 export MS_SCHED_HOST=127.0.0.1 # scheduler节点ip地址 export MS_SCHED_PORT=8090 # scheduler节点服务端口
- 权重转换
参考指导:https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.0/function/weight_conversion.html
以Qwen1.5-72B为例
# 1.拉取MindFormers代码仓(以1.3.0版本为例)
git clone -b r1.3.0 https://gitee.com/mindspore/mindformers.git
# 2.执行权重转换
cd mindformers # 以Qwen1.5-72B为例, input_path: 指的是从HuggingFace下载的权重目录;output_path: 转换成ms权重的存放路径 python convert_weight.py --model qwen --input_path /data/models/qwen1.5-72B/ --output_path /home/user/ms_weights/qwen1_5_72b/qwen1_5_72B.ckpt
转换后的模型权重目录结构如下:
mf_model └── qwen1_5_72b ├── config.json # 模型json配置文件 ├── vocab.json # 模型vocab文件,hf上对应模型下载 ├── merges.txt # 模型merges文件,hf上对应模型下载 ├── predict_qwen1_5_72b.yaml # 模型yaml配置文件, 从mindformers仓中research目录下找到 ├── qwen1_5_tokenizer.py # 模型tokenizer文件,从mindformers仓中research目录下找到对应模型复制 └── qwen1_5_72b_ckpt_dir # 模型分布式权重文件夹或单个权重文件
predict_qwen1_5_72b.yaml获取:mindformers/research/qwen1_5/predict_qwen1_5_72b.yaml
qwen1_5_tokenizer.py获取:mindformers/research/qwen1_5/qwen1_5_tokenizer.py
predict_qwen1_5_72b.yaml需要关注以下配置, 注释的地方根据实际情况修改:
load_checkpoint: '/mf_model/qwen1_5_72b/qwen1_5_72b_ckpt_dir' # 为存放模型分布式权重文件夹路径
load_checkpoint: '/mf_model/qwen1_5_72b/qwen1_5_72b_ckpt_dir' # 为存放模型分布式权重文件夹路径 use_parallel: True auto_trans_ckpt: False # 是否开启自动权重转换,离线切分设置为False parallel_config: data_parallel: 1 model_parallel: 4 # 多卡推理配置模型切分,一般与使用卡数一致 pipeline_parallel: 1 processor: tokenizer: vocab_file: "/mf_model/qwen1_5_72b/vocab.json" # vocab文件路径 merges_file: "/mf_model/qwen1_5_72b/merges.txt" # merges文件路径
- 推理服务化部署
1) 修改MindIE Service配置文件
# 1.打开mindie service配置文件 vim /usr/local/Ascend/mindie/1.0.RC3/mindie-service/conf/config.json # 2.修改backendType、modelWeightPath配置项 "backendType": "ms" "modelWeightPath": "/mf_model/qwen1_5_72b"
2) 启动服务
cd /usr/local/Ascend/mindie/1.0.RC3/mindie-service nohup ./bin/mindieservice_daemon > output.log 2>&1 & tail -f output.log # 打印如下信息,启动成功 Daemon start success!
- 请求测试
服务启动成功后,可使用curl命令发送请求验证,样例如下:
curl -w "\ntime_total=%{time_total}\n" -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"inputs": "I love Beijing, because","stream": false}' http://127.0.0.1:1025/generate
返回推理结果验证成功:
{"generated_text":" it is a city with a long history and rich culture....."}