Bilibili视频教程链接:【经验分享】使用MindStudio进行Jasper模型开发_哔哩哔哩_bilibili
目录
一、MindSpore环境搭建和配置介绍
1、MindSpore简介
MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景覆盖三大目标,其中易开发表现为API友好、调试难度低,高效执行包括计算效率、数据预处理效率和分布式训练效率,全场景则指框架同时支持云、边缘以及端侧场景。
MindSpore总体架构如下图所示,其中:
ModelZoo(网络样例):ModelZoo提供可用的深度学习算法网络,也欢迎更多开发者贡献新的网络。
MindSpore Extend(扩展层):MindSpore的扩展包,支持拓展新领域场景,如GNN/深度概率编程/强化学习等,期待更多开发者来一起贡献和构建。
MindScience(科学计算):MindScience是基于MindSpore融合架构打造的科学计算行业套件,包含了业界领先的数据集、基础模型、预置高精度模型和前后处理工具,加速了科学行业应用开发。
MindExpression(表达层):基于Python的前端表达与编程接口。同时未来计划陆续提供C/C++、华为自研编程语言前端-仓颉(目前还处于预研阶段)等第三方前端的对接工作,引入更多的第三方生态。
MindData(数据处理层):提供高效的数据处理、常用数据集加载等功能和编程接口,支持用户灵活的定义处理注册和pipeline并行优化。
MindCompiler(编译优化层):图层的核心编译器,主要基于端云统一的MindIR实现三大功能,包括硬件无关的优化(类型推导、自动微分、表达式化简等)、硬件相关优化(自动并行、内存优化、图算融合、流水线执行等)、部署推理相关的优化(量化、剪枝等)。
MindRT(全场景运行时):MindSpore的运行时系统,包含云侧主机侧运行时系统、端侧以及更小IoT的轻量化运行时系统。
MindInsight(可视化调试调优工具):提供MindSpore的可视化调试调优等工具,支持用户对训练网络的调试调优。
MindArmour(安全增强包):面向企业级运用时,安全与隐私保护相关增强功能,如对抗鲁棒性、模型安全测试、差分隐私训练、隐私泄露风险评估、数据漂移检测等技术。
MindSpore源于全产业的最佳实践,向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口,支持端、边、云等不同场景下的灵活部署,推动深度学习和科学计算等领域繁荣发展。
MindSpore提供了Python编程范式,用户使用Python原生控制逻辑即可构建复杂的神经网络模型,AI编程变得简单。
目前主流的深度学习框架的执行模式有两种,分别为静态图模式和动态图模式。静态图模式拥有较高的训练性能,但难以调试。动态图模式相较于静态图模式虽然易于调试,但难以高效执行。
MindSpore提供了动态图和静态图统一的编码方式,大大增加了静态图和动态图的可兼容性,用户无需开发多套代码,仅变更一行代码便可切换动态图/静态图模式,例如设置 context.set_context(mode=context.PYNATIVE_MODE)
切换成动态图模式,设置context.set_context(mode=context.GRAPH_MODE)即可切换成静态图模式,用户可拥有更轻松的开发调试及性能体验。
神经网络模型通常基于梯度下降算法进行训练,但手动求导过程复杂,结果容易出错。MindSpore的基于源码转换(Source Code Transformation,SCT)的自动微分(Automatic Differentiation)机制采用函数式可微分编程架构,在接口层提供Python编程接口,包括控制流的表达。用户可聚焦于模型算法的数学原生表达,无需手动进行求导。
随着神经网络模型和数据集的规模不断增加,分布式并行训练成为了神经网络训练的常见做法,但分布式并行训练的策略选择和编写十分复杂,这严重制约着深度学习模型的训练效率,阻碍深度学习的发展。MindSpore统一了单机和分布式训练的编码方式,开发者无需编写复杂的分布式策略,在单机代码中添加少量代码即可实现分布式训练,例如设置
context.set_auto_parallel_context(parallel_mode=ParallelMode.AUTO_PARALLEL)
便可自动建立代价模型,为用户选择一种较优的并行模式,提高神经网络训练效率,大大降低了AI开发门槛,使用户能够快速实现模型思路。
2、MindSpore环境安装配置
选择适合自己的环境条件后,获取命令并按照指南进行安装,或使用云平台创建和部署模型
安装细节参见链接:https://www.mindspore.cn/install
验证是否成功安装
python -c “import mindspore;mindspore.run_check()”
如果输出:
MindSpore version: 版本号
The result of multiplication calculation is correct, MindSpore has been installed successfully!
说明MindSpore安装成功了。
二、MindStudio简介与安装
1、MindStudio简介
Mind Studio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,包括基于芯片的算子开发、以及自定义算子开发,同时还包括网络层的网络移植、优化和分析,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,极大的降低了AI引擎的开发门槛,全平台通过IDE的方式向开发者提供以下4项服务功能。
①针对安装与部署,MindStudio提供多种部署方式,为开发者提供最大便利。
②针对算子开发,MindStudio提供包含UT测试、ST测试、TIK算子调试等的全套算子开发流程。支持TensorFlow、PyTorch、MindSpore等多种主流框架的TBE和AI CPU自定义算子开发。
针对网络模型的开发,MindStudio支持TensorFlow、Pytorch、MindSpore框架的模型训练,支持多种主流框架的模型转换。集成了训练可视化、脚本转换、模型转换、精度比对等工具,提升了网络模型移植、分析和优化的效率。
③针对应用开发,MindStudio集成了Profiling性能调优、编译器、MindX SDK的应用开发、可视化pipeline业务流编排等工具,为开发者提供了图形化的集成开发环境,通过MindStudio能够进行工程管理、编译、调试、性能分析等全流程开发,能够很大程度提高开发效率。
MindStudio功能框架下图所示,目前含有的工具链包括:模型转换工具、模型训练工具、自定义算子开发工具、应用开发工具、工程管理工具、编译工具、流程编排工具、精度比对工具、日志管理工具、性能分析工具、设备管理工具等多种工具。
![](https://i-blog.csdnimg.cn/blog_migrate/cc58f65e021cd1979e0568b4e9d998d6.png)
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处理器开发依赖的头文件和库文件、编译工具链、调优工具等。
将MindStudio安装在Windows服务器上时,Windows服务器为本地环境,Linux服务器为远端环境。本地环境要求:Windows 10 x86_64操作系统。
2、MindStudio安装
第一步:安装python
1、MindStudio目前支持Python版本为3.7.0 ~3.9.7,下面以安装Python3.7.5依赖包为例。将Python3.7.5安装到本地。
其他安装细节请参考链接:
https://www.hiascend.com/document/detail/zh/mindstudio/304/instg/atlasms_02_0022.html
2、打开系统命令行,输入python -V命令确认python版本是否为3.7.5。安装Python3相关依赖。
pip install xlrd==1.2.0
pip install absl-py
pip install numpy
如若返回如下信息,则表示安装成功。
Successfully installed xlrd-1.2.0
Successfully installed absl-py-0.12.0 six-1.15.0
Successfully installed numpy-1.20.1
第二步:安装MinGW
1、请用户到下载最新的MinGW安装包,根据系统选择对应版本,例如windows64位选择x86_64-posix-seh。安装细节参见链接:
https://www.hiascend.com/document/detail/zh/mindstudio/304/instg/atlasms_02_0022.html
2、打开系统命令行,输入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。安装细节请参考链接:
https://www.hiascend.com/document/detail/zh/mindstudio/304/instg/atlasms_02_0022.html
第四步:安装jdk11
1、请注意mindstudio不支持jdk8,请安装jdk11
安装细节参考链接:
https://gitee.com/ascend/docs-openmind/blob/master/guide/mindstudio/cases/tutorials/Windows安装MindStudio.md#安装java依赖
在cmd中输入javac –-version和java –version,得到如下输出,代表安装完成。
第五步:安装mindstudio
1、软件安装前,请获取所需软件包和对应的数字签名文件。
(1) MindStudio_{version}_win.zip,MindStudio免安装压缩包,含有GUI的集成开发环境。获取链接:https://www.hiascend.com/software/mindstudio/download
(2)MindStudio_{version}_win.exe,MindStudio安装包,含有GUI的集成开发环境。
获取链接:https://www.hiascend.com/software/mindstudio/download
2、为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
3、安装MindStudio--两种方式
(1)以免安装压缩包形式,直接解压到相应文件目录即可
(2)下载exe文件以及对应的数字签名文件
安装参考链接:
https://www.hiascend.com/document/detail/zh/mindstudio/304/instg/atlasms_02_0023.html
三、训练工程创建及其相关配置
1、启动MindStudio
2、本文以Jasper模型为例,介绍使用MindStudio进行MindSpore训练脚本开发流程。下载Jasper项目代码,项目地址
https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/contrib/audio/Jasper
3、点击Open图标
4、选择项目所在位置,添加jasper项目,点击OK
5、项目结构如图所示
6、开始项目
①点击File->Projects Structure
②点击Add Python SDK
③选择SSH Interpreter,点击Deploy后的按钮
④点击左上角+号,输入服务器IP地址,点击OK
⑤Python解释器自动选为服务器远程解释器,点击OK
⑥在主界面点击File->settings->tools->Deployment,配置映射。点击左上角加号,输入连接名称。点击OK。
connection选项是基本的连接配置,类型一般选用SFTP,点击右侧按钮,输入服务器ip地址和端口号,然后可以点击Test Connection按钮测试连接是否通畅。
下拉选择刚才配置好的ssh连接
接下来点击Mappings配置映射关系。Local Path要求的是填入本地的项目名称路径,Deployment Path的是部署到服务器上的项目路径。
点击OK
⑦当本地文件进行修改需要上传到服务器时,点击项目名称Jasper,再选择Tools->Deployment->Upload to上传项目。同理,Download项目可以下载服务器文件到本地。勾选Automatic Upload,可以在每次本地文件保存后,自动同步项目到服务器。至此,本地项目连接到远程服务器的步骤完成。
7、点击工具栏Ascend,将项目转化为昇腾项目,如图所示:
然后选择Ascend Training,点击OK
若提示没有CANN,在File->Setting下搜索CANN,点击Install配置,等待同步完成
9、相关菜单介绍:
四、使用MindStudio运行Jasper模型演示
1、介绍模型及数据集
(1)参考论文
Li, Jason, et al. "Jasper: An End-to-End Convolutional Neural Acoustic Model}}." Proc. Interspeech 2019 (2019): 71-75.
项目地址为: https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/contrib/audio/Jasper
(2)介绍模型
Jasper语音识别网络是基于注意力机制的编码器-解码器架构,如 Listen、Attend 和 Spell(LAS)可以将传统自动语音识别(ASR)系统上的声学、发音和语言模型组件集成到单个神经网络中。在结构上,我们证明了词块模型可以用来代替字素。我们引入了新型的多头注意力架构,它比常用的单头注意力架构有所提升。在优化方面,我们探索了同步训练、定期采样、平滑标签(label smoothing),也应用了最小误码率优化,这些方法都提升了准确度。我们使用一个单向 LSTM 编码器进行串流识别并展示了结果。
(3)数据集
LibriSpeech该数据集为包含文本和语音的有声读物数据集,由Vassil Panayotov编写的大约1000小时的16kHz读取英语演讲的语料库。数据来源于LibriVox项目的阅读有声读物,并经过细致的细分和一致。经过切割和整理成每条10秒左右的、经过文本标注的音频文件,非常适合入门使用。数据集的下载路径为:openslr.org
2、执行数据预处理
(1)在服务器上安装第三方库
切换到工作目录: cd Jasper
命令:pip install -r requirements.txt
(2)下载数据集
执行数据集下载。点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Training。Name为该运行配置名称,不能重复。Executable填入本地被执行脚本文件位置,选择download_librispeech.sh文件,点击绿色三角运行。
参数配置说明如下:
参数 | 说明 |
Run Mode | 本地或远程运行 |
Deployment | 需要使用的远程服务环境 |
Executable | 需要执行的脚本文件路径 |
Command Arguments | 脚本执行所需的参数 |
Environment Variables | 配置环境变量,这不需要配置 |
(3)执行数据预处理
执行数据预处理。点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Training。Name为该运行配置名称,不能重复。Executable填入本地被执行脚本文件位置,选择preprocess_librispeech.sh文件,点击绿色三角运行。
参数配置说明如下:
参数 | 说明 |
Run Mode | 本地或远程运行 |
Deployment | 需要使用的远程服务环境 |
Executable | 需要执行的脚本文件路径 |
Command Arguments | 脚本执行所需的参数 |
Environment Variables | 配置环境变量,这不需要配置 |
3、执行训练/评估
【重要】在每次训练完成后,请将服务器中output目录下的文件同步到本地,否则再次运行时这些文件将会被删除,导致不能评估
(1)执行训练,点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Training,如下图。Name为该运行配置名称,不能重复。Executable填入本地被执行脚本文件位置,选择train.sh文件。Command Aarguments为运行所需的参数。点击绿色三角运行。
参数配置说明如下:
参数 | 说明 |
Run Mode | 本地或远程运行 |
Deployment | 需要使用的远程服务环境 |
Executable | 需要执行的脚本文件路径 |
Command Arguments | 脚本执行所需的参数 |
Environment Variables | 配置环境变量,这不需要配置 |
(2)执行评估:点击Run->Edit Configurations,在弹出的配置页面中,点击左上角“+”按钮,选择Ascend Training,如下图。Name为该运行配置名称,不能重复。Executable填入本地被执行脚本文件位置,选择inference.sh文件。Command Aarguments为运行所需的参数。点击绿色三角运行。
五、FAQ
1、执行预处理后,再执行训练时,File Transfer中显示将预处理后的数据集删除。或者是其他File Transfer中显示为了同步而将文件删除的情况
解决方法:请尝试以下两种解决方法
(1)Mindstudio在会保证本地项目文件与服务器项目文件完全一致,在每次上传本地文件夹到服务器或运行代码时,将会删除服务器上存在但本地不存在的文件。因此,当执行的代码需要用到服务器中文件,却没有同步到本地时,请先同步到本地。
(2)请将项目转换为Ascend项目,此时同步策略将转为增量上传/下载,不会删除那些本地和服务器上不一致的文件
六、从昇腾官方中体验更多内容
mindspore模型开发教程与API可参考mindspore官网:https://www.mindspore.cn/,
也可以在昇腾论坛进行讨论和交流:
https://bbs.huaweicloud.com/forum/forum-726-1.html
总结
以上就是本文要讲的内容,本文详细介绍了MindSpore深度学习框架的环境搭建和配置介绍、MindStudio开发平台的安装与使用、Jasper模型的介绍与迁移、使用MindStudio进行训练评估。
欢迎大家提出意见与反馈,谢谢!