相对应的视频教学可以在B站进行观看
https://www.bilibili.com/video/BV18a411S7pr
一、MindStudio简介与安装
Mind Studio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过Web的方式向开发者提供以下4项服务功能。
针对安装与部署,MindStudio提供多种部署方式,支持多种主流操作系统,为开发者提供最大便利。
针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。
针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。
针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。
MindStudio功能框架如图1所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。
MindStudio工具中的主要几个功能特性如下:
工程管理:为开发人员提供创建工程、打开工程、关闭工程、删除工程、新增工程文件目录和属性设置等功能。
SSH管理:为开发人员提供新增SSH连接、删除SSH连接、修改SSH连接、加密SSH密码和修改SSH密码保存方式等功能。
应用开发:针对业务流程开发人员,MindStudio工具提供基于AscendCL(Ascend Computing Language)和集成MindX SDK的应用开发编程方式,编程后的编译、运行、结果显示等一站式服务让流程开发更加智能化,可以让开发者快速上手。
自定义算子开发:提供了基于TBE和AI CPU的算子编程开发的集成开发环境,让不同平台下的算子移植更加便捷,适配昇腾AI处理器的速度更快。
离线模型转换:训练好的第三方网络模型可以直接通过离线模型工具导入并转换成离线模型,并可一键式自动生成模型接口,方便开发者基于模型接口进行编程,同时也提供了离线模型的可视化功能。
日志管理:MindStudio为昇腾AI处理器提供了覆盖全系统的日志收集与日志分析解决方案,提升运行时算法问题的定位效率。提供了统一形式的跨平台日志可视化分析能力及运行时诊断能力,提升日志分析系统的易用性。
性能分析:MindStudio以图形界面呈现方式,实现针对主机和设备上多节点、多模块异构体系的高效、易用、可灵活扩展的系统化性能分析,以及针对昇腾AI处理器的性能和功耗的同步分析,满足算法优化对系统性能分析的需求。
设备管理:MindStudio提供设备管理工具,实现对连接到主机上的设备的管理功能。
精度比对:可以用来比对自有模型算子的运算结果与Caffe、TensorFlow、ONNX标准算子的运算结果,以便用来确认神经网络运算误差发生的原因。
开发工具包的安装与管理:为开发者提供基于昇腾AI处理器的相关算法开发套件包Ascend-cann-toolkit,旨在帮助开发者进行快速、高效的人工智能算法开发。开发者可以将开发套件包安装到MindStudio上,使用MindStudio进行快速开发。Ascend-cann-toolkit包含了基于昇腾AI处理器开发依赖的头文件和库文件、编译工具链、调优工具等
下表表1为MindStudio版本配套关系
将MindStudio安装在Windows服务器上时,Windows服务器为本地环境,Linux服务器为远端环境。本地环境要求:Windows 10 x86_64操作系统。
安装python
1、MindStudio目前支持Python版本为3.7.0 ~3.9.7,下面以安装Python3.7.5依赖包为例。选择Windows x86-64 executable installer。
其他安装细节请参考链接:
昇腾社区-官网丨昇腾万里 让智能无所不及
2、打开系统命令行,输入python -V命令确认python版本是否为3.7.5。安装Python3相关依赖。
pip install xlrd==1.2.0
pip install absl-py
pip install numpy
pip install requests
如若返回如下信息,则表示安装成功。
Successfully installed xlrd-1.2.0
Successfully installed absl-py-0.12.0 six-1.15.0
Successfully installed numpy-1.20.1
Successfully installed requests-2.28.0
安装MinGW
1、请用户到下载最新的MinGW安装包,根据系统选择对应版本,例如windows64位选择x86_64-posix-seh。安装细节参见链接:
昇腾社区-官网丨昇腾万里 让智能无所不及
3、打开系统命令行,输入gcc -v命令。当界面提示“gcc version x.x.x (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project)”信息时,表示安装成功。若未提示该信息,请尝试重启计算机。
安装cMake
CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。
1、获取CMake,推荐安装的版本为3.16.5-win64-x64。安装细节请参考链接:
昇腾社区-官网丨昇腾万里 让智能无所不及
安装jdk11
1、请注意mindstudio不支持jdk8,请安装jdk11
安装细节参考链接:
https://gitee.com/ascend/docs-openmind/blob/master/guide/mindstudio/cases/tutorials/Windows安装MindStudio.md#安装java依赖
2、在cmd中输入javac –-version和java –version,得到如下输出,代表安装完成
安装mindstudio
1、软件安装前,请获取所需软件包和对应的数字签名文件。
(1) MindStudio_{version}_win.zip,MindStudio免安装压缩包,含有GUI的集成开发环境。获取链接:昇腾社区-官网丨昇腾万里 让智能无所不及
(2)MindStudio_{version}_win.exe,MindStudio安装包,含有GUI的集成开发环境。
获取链接:昇腾社区-官网丨昇腾万里 让智能无所不及
2、为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
3、安装MindStudio--两种方式
(1)以免安装压缩包形式,直接解压到相应文件目录即可
(2)下载exe文件以及对应的数字签名文件
安装参考链接:
昇腾社区-官网丨昇腾万里 让智能无所不及
启动MindStudio,如图即为启动成功
相关菜单介绍:
菜单区:
按键区:
工具区:
二、模型介绍及演示
本文以Textcnn模型为例,介绍使用MindStudio进行TensorFlow环境搭建和TensorFlow模型开发主流程。
1、论文名称:Convolutional Neural Networks for Sentence Classification
项目地址为:
Ascend/ModelZoo-TensorFlow - Gitee.com
2、使用卷积神经网络以及循环神经网络进行中文文本分类。 本文是基于TensorFlow在中文数据集上的简化实现,使用了字符级CNN对中文文本进行分类,达到了较好的效果。
3、模型架构
4、数据集:THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。我们在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。本文使用THUCNews的一个子集进行训练与测试,本次训练使用了其中的10个分类,每个分类6500条数据,类别如下:体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐。子集下载链接:百度网盘 请输入提取码 密码: qfud
在昇腾设备上使用TensorFlow环境,除了需要安装TensorFlow框架以外,还需要安装框架插件包tfplugin以及TF Adapter,详细安装过程可以参考官网:
1、准备软件包:准备软件包_CANN商用版(3.3.0) 环境部署_软件安装指南 (通过ascend-deployer工具)_命令行方式安装_安装开发环境_华为云
2、安装开发套件包:安装开发套件包_CANN商用版(3.3.0) 环境部署_软件安装指南 (通过ascend-deployer工具)_安装开发环境_命令行方式安装_在昇腾设备上安装_华为云
3、安装框架插件包:安装框架插件包_CANN商用版(3.3.0) 环境部署_软件安装指南 (通过ascend-deployer工具)_安装开发环境_命令行方式安装_在昇腾设备上安装_华为云
4、安装TensorFlow框架:安装深度学习框架_CANN商用版(3.3.0) 环境部署_软件安装指南 (通过ascend-deployer工具)_安装开发环境_命令行方式安装_在昇腾设备上安装_华为云
5、安装TF Adapter:tensorflow: Ascend TensorFlow Adapter
其中在执行脚本生成安装包前,还需执行chmod +x ./configure
并且需要安装swig:
1、sudo apt insall swig
安装位置默认在/usr/share/swig3.0
2、设置PATH环境变量
vi ~/.bashrc
# 添加以下两行到bashrc中
SWIG_PATH=/usr/share/swig3.0
PATH=$PATH:$SWIG_PATH
# 让配置文件生效
source ~/.bashrc
4、验证生效:
swig -version
1、启动MindStudio 5.0.rc1
2、点击Open按钮
3、选择项目所在位置,添加Textcnn项目,点击OK
4、项目结构如图所示
5、代码目录结构如图所示
6、连接远端python解释器
点击左上角File->Projects Structure,点击Add Python SDK,选择SSH Interpreter
点击Deploy右侧的按钮
点击左侧加号,添加连接
输入SSH相关信息,Test Connection确认连接成功,点击OK
接下来点击mapping配置映射关系,依次点击1,2选择。local path要求的是填入本地的项目名称路径,接下来的是部署到服务器上的项目名称,这两个可以保持一致,也可以不保持一致。
excluded paths(非必需)为配置忽略路径,表示忽略的项目文件不会上传到远程服务器。配置完成后,选中项目文件夹,然后按以下步骤将代码同步至服务器
点击OK,点击右侧按钮选择所需要的python解释器。Name的值可以随意取。
点击两次OK,完成配置,等待进度条结束。
当本地文件进行修改需要上传到服务器时,点击项目名称textcnn,再选择Tools->Deployment->Upload to上传项目。同理,Download选项可以下载服务器文件到本地。勾选Automatic Upload,可以在每次本地文件保存后,自动同步项目到服务器。上传和下载记录可以在最下方File Transfer选项卡中查看。至此,本地项目连接到远程服务器的步骤完成。
本部分简要介绍tensorflow模型开发的要点
4.1 数据预处理
data/cnews_loader.py为数据的预处理文件,代码大纲如下。
其中:
read_file(): 读取文件数据;
build_vocab(): 构建词汇表,使用字符级的表示,这一函数会将词汇表存储下来,避免每一次重复处理;
read_vocab(): 读取上一步存储的词汇表,转换为`{词:id}`表示;
read_category(): 将分类目录固定,转换为`{类别: id}`表示;
to_words(): 将一条由id表示的数据重新转换为文字;
process_file(): 将数据集从文字转换为固定长度的id序列表示;
batch_iter(): 为神经网络的训练准备经过shuffle的批次的数据。
4.2 实现CNN模型
cnn_model.py为cnn模型实现文件,代码大纲如下。
其中:
gather_npu方法实现了npu下的gather操作
TCNNConfig为CNN参数配置,各参数具体含义如下
TextCNN为文本分类的CNN模型实现,其中,各个name_scope分别完成:
with tf.device('/cpu:0'):将字符级文本映射为词向量
with tf.name_scope("cnn"):实现cnn层与最大池化层
with tf.name_scope("score"):实现全连接层,后面接dropout以及relu激活
with tf.name_scope("optimize"):损失函数选择交叉熵,优化器采用Adam
with tf.name_scope("accuracy"):计算准确率
4.3 实现RNN模型
rnn_model.py为rnn模型实现文件,代码大纲如下
TRNNConfig为RNN参数配置,各参数具体含义如下
TextRNN为文本分类的RNN模型实现,其中,各个name_scope分别完成:
with tf.device('/cpu:0'):将字符级文本映射为词向量
with tf.name_scope("cnn"):实现多层rnn网络
with tf.name_scope("score"):实现全连接层,后面接dropout以及relu激活
with tf.name_scope("optimize"):损失函数选择交叉熵,优化器采用Adam
with tf.name_scope("accuracy"):计算准确率
4.4 run_cnn.py
run_cnn.py为使用cnn训练/评估的文件,代码大纲如下
args设置了相关参数,dir设置了各个文件存放目录
data_load中实现了按batch读取数据
train与test为训练和评估的方法,具体而言:
train方法中依据model中设定的优化器,损失函数进行训练,并为tensor_board中收集loss与accuracy信息用于展示,另外还实现了验证集正确率长期不提升,提前结束训练功能。
test方法中依据预先保存好的模型,读取后对测试集进行测试,输出recall,acc,f1与困惑度矩阵。
4.5 run_cnn_modify.py和run_rnn.py
这两部分与run_cnn.py结构基本相同,因此不再赘述
5.1 将下载好的数据集,解压放入data/cnews目录下
5.2 添加运行配置
点击左上角Add Configuration,选择Python
name为该运行配置名称,只要不重复即可,Script path为被执行的python代码,Parameters为运行参数
5.3 执行训练和评估
Script path选择run_cnn.py,Parameters不填,即可同时进行训练和评估。在左上角,点击绿色三角形,执行训练。部分训练和评估结果如下图所示。
在第run_cnn.py第226行添加如下代码:
var_list = tf.trainable_variables()
constant_graph = graph_util.convert_variables_to_constants(session, session.graph_def, [var_list[i].name[:-2] for i in range(len(var_list))])
with tf.gfile.FastGFile(save_path + 'model.pb', mode='wb') as f:
f.write(constant_graph.SerializeToString())
注意需要导入相关依赖:
from tensorflow_core.python.framework import graph_util
即可在运行时保存精度最高的pb模型,此外本文还保存了checkpoint格式的模型,运行结果如图所示
三、FAQ
一、启动MindStudio时报错,提示如下错误。
解决方法:这是由于配置的jdk版本有误导致启动失败,MindStudio支持的版本为jdk11,正确安装和配置jdk11后即可启动成功
二、执行训练后,再执行评估时,File Transfer中显示将预处理后的数据集删除。或者是其他File Transfer中显示为了同步而将文件删除的情况,如图所示。
解决方法:请尝试以下解决方法
Mindstudio在会保证本地项目文件与服务器项目文件完全一致,在每次上传本地文件夹到服务器或运行代码时,将会删除服务器上存在但本地不存在的文件。因此,当执行的代码需要用到服务器中文件,却没有同步到本地时,请先同步到本地。
三、配置完远程python解释器后,本地代码提示导入包报错
解决方法:根据出错情况,请尝试以下几种解决方案
(1)服务器上未安装对应包,或者是python解释器选择错误,请安装对应包,或者是重新选择解释器。
(2)若确认包和解释器无误,选择File->lnvalidate Caches...,重启Mindstudio并刷新缓存。
(3)若刷新缓存后,依旧存在某些包未下载到本地的情况,请删除C:\Users\用户名\AppData\Local\Huawei\MindStudioMS-X.0\remote_sources\目录下的所有文件(参考路径,请根据使用的MindStudio版本进行选择),并重启MindStudio,等待包下载到本地完成即可。其中该目录依据安装情况可能有所出入,如果未找到该目录,在本地项目中选择一个导入成功的包,按Ctrl+B跳转,可以查看目录。如图所示。
四、执行训练出现如下错误,应该如何解决?
原因:这是libgomp在arm平台上的一个bug。libgomp gets the statically allocated TLS space that it needs, before the optimization of handing out that space to other libraries kicks in .即:libgomp-d22c30c5.so.1.0.0运行时占用了TLS部分内存。
解决方法:以下三种方法任选其一
(1)显示声明:
export LD_PRELOAD=$LD_PRELOAD:/usr/local/python3.7.5/lib/python3.7/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0
(2)在~/.bashrc文件末尾追加:
export LD_PRELOAD=$LD_PRELOAD:/usr/local/python3.7.5/lib/python3.7/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0
(3)升级glibc版本到2.32
四、从昇腾官方体验更多内容
更多的疑问和信息可以在昇腾论坛进行讨论和交流:昇腾论坛_开发者论坛-华为云论坛