MindStudio为用户提供在AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。通过依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助用户在一个工具上就能高效便捷地完成AI应用开发。另一方面,MindStudio采用插件化扩展机制,以支持开发者通过开发插件来扩展已有功能。MindStudio的功能包括:
MindStudio主要功能特性有以下几点,如图1所示。
图1
·X2MindSpore工具:将PyTorch/TensorFlow训练脚本迁移至可基于MindSpore运行的代码
·PyTorch GPU2Ascend工具:将PyTorch训练脚本从GPU平台迁移至昇腾NPU平台
·Tensorflow GPU2Ascend工具:将TensorFlow训练脚本从GPU平台迁移至昇腾NPU平台。
·基于MindX SDK开发应用:MindX SDK采用模块化设计理念,将业务流程中的各个功能单元封装成独立的插件,通过插件串联,快速构建业务
·MindStudio基于MindX SDK,提供可视化流程编排功能,通过画板拖动插件的方式,可视直观地组织插件,管理整体流程,最终生成pipline文件以供开发。
·UT测试:UT(Unit Test)即单元测试,MindStudio提供了基于gtest框架的新的UT测试方案,简化了开发者开发UT测试用例的复杂度。
·ST测试:ST(System Test)即系统测试,MindStudio提供了新的ST测试框架,可以自动生成测试用例,在真实的硬件环境中,验证算子功能的正确性和计算结果准确性,并生成运行测试报告。
·TIK算子调试:MindStudio支持TIK算子的可视化调试,可以实现断点设置、单步调试、连续运行直到结束或下一断点、查看变量信息、退出调试等功能。
使用MindStudio前,首先应确定其使用场景,包括纯开发场景和开发运行场景两种:
其中,不管哪种场景,都需要安装MindStudio、Ascend-cann-toolkit开发套件包:
MindStudio和Ascend-cann-toolkit可以使用Linux服务器上原生桌面自带的终端gnome-terminal进行安装,也可以在Windows服务器上通过SSH登录到Linux服务器进行安装。因为MindStudio是一款GUI程序,所以在Windows服务器上通过SSH登录到Linux服务器进行安装时,需要使用集成了X server的SSH终端(比如MobaXterm,该工具版本需要为v20.2及以上)。Linux环境下MindStudio安装方案有以下两种:
图2
图3
Linux环境下,MindStudio安装流程如图4所示。
图4
表1 MindStudio环境要求
类别 |
限制要求 |
说明 |
硬件 |
内存:最小4GB,推荐8GB 磁盘空间:最小6GB |
若Linux宿主机内存为4G,在MindStudio中进行模型转换时,建议Model文件大小不超过350M,如果超过此规格,操作系统可能会因为超过安全内存阈值而工作不稳定。 若Linux宿主机配置升级,比如8G内存,则相应支持的操作对象规格按比例提升。 例如,内存由4G升级到8G,则Model文件建议大小不超过700M。 |
系统语言 |
en_US.UTF-8 |
当前仅支持系统语言为英文。 请以任意用户使用locale命令在任意路径下查询编码格式,若系统返回“LANG=en_US.UTF-8”,则表示正确;否则,请以root用户使用“vim /etc/default/locale”命令修改“LANG=en_US.UTF-8”,重启(使用reboot命令)使之生效。 |
系统要求 |
操作系统可以通过ssh登录,同时打开ssh的X11Forwarding功能 glibc版本应大于或等于2.27 |
ssh服务的开启和X11Forwarding的配置请参见启动MindStudio时无法显示图形化界面。 对于Docker环境,启动容器时需要映射ssh端口,如 docker run -p {宿主机端口}:{容器内ssh端口} ... 若系统glibc版本小于2.27,请参见启动MindStudio时报glibc版本太低问题处理。 |
已验证支持的操作系统 |
Ubuntu 18.04-x86_64 Ubuntu 18.04-aarch64 Ubuntu 20.04-x86_64 Ubuntu 20.04-aarch64 EulerOS 2.8-aarch64 EulerOS 2.10-aarch64 OpenEuler 20.03-x86_64 OpenEuler 20.03-aarch64 CentOS 7.6/8.2-x86_64 CentOS 7.6/8.2-aarch64 银河麒麟OS V10 SP1-aarch64 中标麒麟OS 7.6-aarch64 |
- |
表2 软件包
软件包 |
说明 |
MindStudio_{version}_linux.tar.gz |
MindStudio软件包,含有GUI的集成开发环境。 MindStudio安装包解压后包含以下文件:
|
Ascend-cann-toolkit_{version}_linux-{arch}.run |
Ascend-cann-toolkit开发套件包,包含开发辅助工具和相关开发接口的开发套件包。 如果环境上已安装Ascend-cann-toolkit开发套件包,则无需再次获取。 |
接着,创建安装用户,可使用root或非root用户进行安装:
表3 参数说明
参数 |
说明 |
Projects页签(工程管理) |
|
New Project |
创建新工程,创建后工程保存在“$HOME/AscendProjects”目录。 |
Open |
打开已有工程。 |
System Profiler |
进入System Profiling界面。 |
Get from Version Control… |
用版本控制工具下载代码仓并打开。 |
Customize页签(定制化个性设置) |
|
Color theme |
设置颜色主题。 |
Accessibility |
设置辅助功能,包括设置IDE字体大小和针对红绿色视觉缺陷调整颜色。 |
Keymap |
设置键盘映射,MindStudio会根据您的环境自动建议预定义的键盘映射,请确保它与您正在使用的操作系统匹配,或者手动选择与您习惯使用的另一个IDE或编辑器中的快捷方式匹配的操作系统。 |
Import Settings… |
从自定义配置目录导入MindStudio个性化设置。 |
All Settings… |
进入设置界面。 |
Plugins页签(插件管理) |
|
Marketplace |
插件市场,可搜索并下载需要的插件。 |
Installed |
查看已安装的插件。 |
Learn MindStudio页签(MindStudio实用帮助) |
图5
图6
MindStudio可以单独安装在Windows上。在安装MindStudio前需要在Linux服务器上安装部署好Ascend-cann-toolkit开发套件包,之后在Windows上安装MindStudio,安装完成后通过配置远程连接的方式建立MindStudio所在的Windows服务器与Ascend-cann-toolkit开发套件包所在的Linux服务器的连接,实现全流程开发功能。Windows环境下MindStudio安装方案有以下三种:
图7
图8
图9
将MindStudio安装在Windows服务器上时,Windows服务器为本地环境,Linux服务器为远端环境。MindStudio安装流程如图10所示。
图10
表4 软件包
软件包 |
说明 |
MindStudio_{version}_win.zip |
MindStudio免安装压缩包,含有GUI的集成开发环境。 |
MindStudio_{version}_win.exe |
MindStudio安装包,含有GUI的集成开发环境。 |
图11
图12
图13
图14
图15
图16
图17
图18
模型自动生成和调优以昇腾910 AI处理器的搜索训练,昇腾310 AI处理器和昇腾310P AI处理器的推理验证为前提,覆盖MindSpore,PyTorch框架,面向分类、检测分割场景实现模型自动生成和调优。
模型自动生成的主要功能是基于数据集自动生成网络和基于预训练模型进行微调后自动生成模型,实现昇腾亲和模型的自动生成。
模型自动调优支持以用户的模型作为输入,自动解析模型结构,对模型进行剪枝或量化以达到性能调优的目的,支持以params(参数量)、latency(推理时延)等为主要目标的剪枝或量化压缩,能够有效地提升模型性能。
采用基于MindStudio的工具AutoML(Auto Machine Learning)来进行模型自动性能调优中的模型量化,支持对昇腾910或GPU搜索训练,覆盖MindSpore,PyTorch框架,能对CV领域分类、检测和分割等常用模型进行自动性能调优。
业务流程如图所示:
图19
获取noah_vega安装whl包,下载1.8.4版本的noah_vega-{version}-py3-none-any.whl安装包并放至IDE运行的服务器工作路径中,以便安装部署时选用该路径。
安装OpenSSL:首先要安装OpenSSL 1.1.1,从源码编译安装,或者直接安装编译后的发行包。然后安装OpenSSL的python接口,如下:
pip3 install --user pyOpenSSL==19.0.0
生成CA证书:执行如下命令生成CA证书
openssl genrsa -out ca.key 4096
openssl req -new -x509 -key ca.key -out ca.crt -subj "/C=
生成评估服务使用的证书:评估服务支持加密证书和普通证书
在此我们使用普通证书,执行如下脚本,生成评估服务器端和客户端使用的证书的私钥和证书:
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr -subj "/C=
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extfile ./openssl.cnf -extensions v3_req
rm server.csr
openssl genrsa -out client.key 4096
openssl req -new -key client.key -out client.csr -extensions v3_ca -subj "/C=
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -extfile ./openssl.cnf -extensions v3_req
rm client.csr
生成Dask使用的证书
执行如下脚本,生成Dask服务器端和客户端使用的证书的私钥和证书:
openssl genrsa -out server_dask.key 4096
openssl req -new -key server_dask.key -out server_dask.csr -subj "/C=
openssl x509 -req -in server_dask.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server_dask.crt -extfile ./openssl.cnf -extensions v3_req
rm server_dask.csr
openssl genrsa -out client_dask.key 4096
openssl req -new -key client_dask.key -out client_dask.csr -subj "/C=
openssl x509 -req -in client_dask.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client_dask.crt -extfile ./openssl.cnf -extensions v3_req
rm client_dask.csr
删除CA私钥:
rm ca.key
配置安全配置文件
请在当前用户的主目录下创建.vega目录,并将如上生成的秘钥、证书、加密材料等,拷贝到该目录下,并改变权限:
mkdir ~/.vega
mv * ~/.vega/
chmod 600 ~/.vega/*
在~/.vega目录下创建server.ini和client.ini。
在训练集群中,需要配置~/.vega/server.ini和~/.vega/client.ini:
server.ini:
[security] # 以下文件路径需要修改为绝对路径
ca_cert=<~/.vega/ca.crt>
server_cert_dask=<~/.vega/server_dask.crt>
server_secret_key_dask=<~/.vega/server_dask.key>
client_cert_dask=<~/.vega/client_dask.crt>
client_secret_key_dask=<~/.vega/client_dask.key>
client.ini:
[security] # 以下文件路径需要修改为绝对路径
ca_cert=<~/.vega/ca.crt>
client_cert=<~/.vega/client.crt>
client_secret_key=<~/.vega/client.key>
encrypted_password=<加密后的client端的口令> # 如果使用普通证书, 此项配置为空
key_component_1=<~/.vega/ksmaster_client.dat> # 如果使用普通证书, 此项配置为空
key_component_2=<~/.vega/ksstandby_client.dat> # 如果使用普通证书, 此项配置为空
在评估服务器上,需要配置~/.vega/vega.ini:
[security] # 以下文件路径需要修改为绝对路径
ca_cert=<~/.vega/ca.crt>
server_cert=<~/.vega/server.crt>
server_secret_key=<~/.vega/server.key>
encrypted_password=<加密后的server端的口令> # 如果使用普通证书, 此项配置为空
key_component_1=<~/.vega/ksmaster_server.dat> # 如果使用普通证书, 此项配置为空
key_component_2=<~/.vega/ksstandby_server.dat> # 如果使用普通证书, 此项配置为空
训练服务器:
source {Driver包安装路径}/driver/bin/setenv.bash
source {CANN包安装路径}/ascend-toolkit/set_env.sh
source {CANN包安装路径}/tfplugin/set_env.sh
export install_path={CANN包安装路径}/ascend-toolkit/latest
export LD_LIBRARY_PATH=${install_path}/compiler/lib64/:$LD_LIBRARY_PATH
export TBE_IMPL_PATH=${install_path}/opp/op_impl/built-in/ai_core/tbe
export JOB_ID=10087 #该项不建议改动
export DEVICE_ID=0 #单卡训练使用的device_id
#以下为多卡配置,视个人情况修改
export RANK_ID=0
export RANK_SIZE=8
export BATCH_TASK_INDEX=0
export RANK_TABLE_FILE=多卡环境组网信息json文件所在路径 #从多卡环境组网信息json文件中选择要使用的device_id
export NPU_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 #从多卡环境组网信息json文件中选择要使用的device_id
export TF_CPP_MIN_LOG_LEVEL=3 #该项可控制TF框架本身日志级别的打印,0-DEBUG,1-INFO,2-WARNING,3-ERROR
推理服务器
source {CANN包安装路径}/ascend-toolkit/set_env.sh
export install_path={CANN包安装路径}/ascend-toolkit/latest
export DDK_PATH=${install_path}
export PATH=${install_path}/compiler/bin:${install_path}/compiler/ccec_compiler/bin:${PATH}
export LD_LIBRARY_PATH=${install_path}/lib64:/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/stub:${LD_LIBRARY_PATH}
export PYTHONPATH=${install_path}/python/site-packages:${install_path}/compiler/python/site-packages:${install_path}/compiler/python/site-packages/auto_tune.egg:${install_path}/compiler/python/site-packages/schedule_search.egg:${install_path}/opp/op_impl/built-in/ai_core/tbe:${PYTHONPATH}
export ASCEND_OPP_PATH=${install_path}/opp
export SOC_VERSION=Ascend310
export NPU_HOST_LIB=${install_path}/acllib/lib64/stub/
export JOB_ID=10087 #该项不建议改动
创建新集群
在菜单栏选择“Ascend > AutoML > Cluster Manager”。进入“Cluster Manager”界面。
单击“+New Cluster”。进入“Add Cluster”界面,如图23所示。界面参数说明如表5所示。
图20
界面参数说明如表5所示。
表5 界面参数
参数 |
说明 |
Cluster Name |
集群名称,在所有集群里具有唯一性。只支持英文字母、数字或者下划线,以英文字母开头,且长度不超过32个字符。例如:Cluster_01。 |
Evaluation Service |
评估服务,通过下拉框选择已通过SSH配置好的远端环境。 |
Evaluation Service Port |
评估服务器端口,仅支持输入1~65535之间的数字,默认值为8888。 |
Training Service |
训练服务器,通过下拉框选择已通过SSH配置好的远端训练环境。 |
Primary |
训练服务集群主节点,通过下拉框选择已通过SSH配置好的远端训练环境。 |
Add |
添加训练服务。单击选择此项后,“Secondary”、“Data Sharing Service”和“NFS Server Path”参数才会在界面体现。 |
Secondary |
训练服务集群从节点,通过下拉框选择已通过SSH配置好的远端训练环境。单击可以删除从节点。
|
Data Sharing Service |
数据共享服务器,通过下拉框选择已通过SSH配置好的远端环境。 |
NFS Server Path |
NFS服务器路径。例如:/home/test/nfs_cache。 |
Workspace |
所有训练服务器的工作路径。例如:/home/test/nfs_folder。 |
单击“OK”,完成新集群创建。
删除集群
在菜单栏选择“Ascend > AutoML > Cluster Manager”。进入“Cluster Manager”界面。
单击需要删除的集群后方的,如图24所示。
图21
启动推理服务器
启动任务之前需要编译推理程序并启动推理服务。
编译推理程序步骤:
i) 安装配置Atlas300环境
首先需要配置Ascend 300环境,然后请安装评估服务,请执行如下命令安装:
pip3 install --user --upgrade evaluate-service
图22
安装完成后,将~/.local/lib/python3.7/site-packages/evaluate_service/hardwares/davin
nci/samples/atlas300拷贝到当前目录,执行如下操作,检查环境是否配置正确:
echo "[INFO] start check the enviroment..."
python3 -c "import te" && echo "[INFO] check te sucess"
python3 -c "import topi" && echo "[INFO] check topi sucess"
atc --version && echo "[INFO] check atc sucess "
echo "[INFO] start compile the example..."
cd ./atlas300/
mkdir -p build/intermediates/host
cd build/intermediates/host
cmake ../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
make && echo "[INFO] check the env sucess!"
ii) 编译推理程序
参考地址,下载代码并完成编译。 并把编译后的可执行文件拷贝到~/.local/lib/python3.7/site-packages/evaluate_service/hardwares/davinci/目录下。
iii)启动评估服务
使用如下命令启动评估服务:
vega-evaluate_service-service -i {your_ip_adress} -p {port} -w {your_work_path}
其中:
-i参数指定当前使用的服务器的ip地址
-p参数指定当前使用的服务器的的监听端口,默认值8888
-w参数指定工作路径, 程序运行时的中间文件将存储在该目录下,请使用绝对路径
启动推理服务
在推理服务器上运行命令vega-evaluate-service -i {your_ip_adress} -w {your_work_path} -p {port}启动。其中-i参数指定当前使用的服务器的ip地址。-w参数指定工作路径,程序运行时的中间文件将存储在该目录下,请使用绝对路径。-p参数指定推理服务器端口,启动推理服务器端口需要与创建集群时指定的端口一致,默认指定8888端口。其他参数的设置可查看该命令的帮助信息,一般情况下建议采用默认值。
图23
CANN Version:连接到的远程服务器上的CANN版本。
Templates:选择你将生成MindSpore/Tensorflow/Pytorch框架下的模型。
Samples:官方给出的各个框架下的ResNet50模型样例(可不选)。
图24
图25
图26
图27
Evaluation Service(Port):用户名@评估服务器IP地址:端口
Evaluation Service Port:评估服务器端口
Training Service Primary:用户名@训练服务器IP地址:端口
Workspace:工作目录文件存放地址(目录下需要有数据集)
图28
图29
(1)第一步基本设置,设置完点击Next
Task Name:任务名
AI Framework:任务所用到的AI框架
Hardware Platform:跑任务所在的硬件平台
Compute Nodes Cluster:集群选择上一步所新建的集群
图30
(2)第二步模型配置,完成后点击Next
Application Field应用领域目前仅有CV
Application Scenarios应用场景目前仅有Classification分类
Optimizing Method:Fine-Tune微调;Auto-Tun自动调优e;Nas神经结构搜索
Algorithm:默认算法
Batch Size:批处理批数
图31
(3)第三步数据集配置,完成后点击Finish则可开始训练
Devices:硬件平台(单卡则是0)(八卡0-7)
Dataset Type:数据集格式
Dataset Path:数据集文件夹路径
Class nums:数据集类别数(某些数据集无该选项)
Image size:图片统一大小(某些数据集无该选项)
图32
图33
Nas会有大概160个work,每个准确率都不一样
图34
会选中nas中五个准确率最高的work进行fully_train完整的训练流程。
图35
经过160次的迭代,准确率逐渐提高。
图36
图37
最后经过fully_train生成效果最好的四个work对应的模型。
图38
1. 出现vega-progress:command not found时
大概率是vega环境变量出现了问题,在安装vega的过程中,会提示vega以及vega-progress所在目录,也可以通过whereis vega-progress等命令寻找vega所在目录,然后修改用户目录下的.bashrc文件,添加如图39所示命令配置用户变量,进而问题得到解决。
图39
配置评估服务需要编译msame,参考网址https://gitee.com/ascend/tools/tree/master/msame,在评估服务启动时,需要保证评估服务器端口可访问,可以使用telnet x.x.x.x port来检查服务。
如果需要了解关于MindStudio更多的信息,请查阅昇腾社区中MindStudio的[用户手册](https://www.hiascend.com/document/detail/zh/mindstudio/304/progressiveknowledge/index.html),里面模型训练、脚本转换、模型开发、算子开发、精度对比、AI Core Error分析工具、AutoML工具(Beta)、Benchmark工具、专家系统工具等各种使用安装操作的详细介绍。
如果在使用MindStudio过程中遇到任何问题,也可以在昇腾社区中的[昇腾论坛](https://www.huaweicloud.com)进行提问,会有华为内部技术人员对其进行解答,如下图。
图40