前情提要:华为910b部署训练推理大模型,本人之前并没有接触过,所以,写此文档进行记录。
(注意:版本适配很重要!!不然就像我一样走了好多坑~~~)
首先,看一张图片
要训练推理大模型,MindFormers库是关键,而这个库依赖MindSpore,所以安装顺序如下:
1.第三方依赖(python,昇腾AI处理器配套软件包,gcc)
2.MindSpore
3.MindFormers
安装过程:
根据Mindsporehttps://www.mindspore.cn/install/#guide官方文档,在安装MindSpore之前,需要安装第三方依赖:
(说明:官方文档好好看,按照步骤来一般都可以安装成功!)
以下是我的踩坑记录:
1.安装python
本人在910b服务器上安装这些环境,为了方便操作,安装的conda环境,命令如下:
#注意:不要装高版本的python,会不兼容,此处我装的python3.9
conda create --name myenv python=3.9
2.安装昇腾AI处理器配套软件包
在安装之前,一定要看好自己的系统版本以及是否已经安装了固件与驱动,注意安装的版本与CANN版本的匹配
本人服务器信息:
#查看操作系统版本
cat /etc/os-release
操作系统版本:CentOS Linux 7 (AltArch)
#查看固件和驱动信息
npu-smi info -l #查看设备ID: NPU ID
npu-smi info -t board -i NPU ID #NPU驱动和固件版本
NPU驱动版本:23.0.3 NPU固件版本:7.1.0.5.220
安装的CANN版本(社区版:8.0.RC1.beta1
版本)
下载包链接:https://www.hiascend.com/developer/download/community/result?module=cann
我的显卡是910b的,所以我选的这两个(注意:一定要选择toolkit和kernels)[不太理解为什么要分开.....]
安装教程参考:
快速安装CANN-快速上手-CANN社区版8.0.RC1.alpha002开发文档-昇腾社区
一定要运行命令:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
每次重新进入虚拟环境,也最好输入一下这个命令
至此,CANN安装成功~
3.安装GCC-7.3.0
(踩了好多坑)
我的gcc版本是4.8.5,需要更新。
不知道为什么运行Mindspore官网的命令一直报错,说找不到这个文件
yum install devtoolset-7
我刚开始以为是源的问题,更新源参考https://blog.csdn.net/smart9527_zc/article/details/84976097
结果不是,仍然报错,找不到文件,后来发现只能源码安装,参考链接:
鲲鹏(ARM64)升级GCC-7.3.0【CentOS-7.6 GCC升级(网络环境+脱机环境)】-云社区-华为云
GCC-7.3.0安装成功~
4.安装mindspore
对照官方文档pip install xxx 或者conda 都可以,然后验证:安装成功~
5.安装MindFormers 一定要拉取r1.0分支
教程:https://gitee.com/mindspore/mindformers/blob/r1.0/research/qwen/qwen.md
(我之前拉取别的分支,一直报错~~)
推理大模型qwen1.5-72b
-
1.下载通过sdk下载:downmodels.py--路径要更改一下
https://www.modelscope.cn/models/qwen/Qwen1.5-72B/files
(通过git 下载模型文件容易不完整)
-
2.torch权重转mindspore权重
https://gitee.com/mindspore/mindformers/blob/r1.0/research/qwen/qwen.md
运行这个转换文件的报错分析:
①.numpy报错,请降至2.0.0以下
②.找不到xxx.io这种包,请把那句话提上来,参考链接https://www.cnblogs.com/jefferyeven/articles/15651734.html
-
3.模型权重切分:ckpt单机--》分布式
-
bash run_singlenode.sh "python qwen1_5/run_qwen1_5.py \ --config qwen1_5/run_qwen1_5_72b_infer.yaml \ --run_mode predict \ --use_parallel True \ --auto_trans_ckpt True \ --predict_data 帮助我制定一份去上海的旅游攻略" ../rank_table_8.json [0,8] 8
可以查看npu是否占用,来看程序是否跑起来了