昇思 MindSpore 全场景 AI 框架 1.6 版本,更高的开发效率,更好地服务开发者
全新的昇思 MindSpore 全场景 AI 框架 1.6 版本已发布,此版本中昇思 MindSpore 全场景 AI 框架易用性不断改进,提升了开发效率,控制流性能提升并支持副作用训练,与此同时,昇思 MindSpore 全场景 AI 框架发布高效易用的图学习框架昇思 MindSpore Graph Learning,高性能可扩展的强化学习计算框架昇思 MindSporeReinforcement,提供支持第三方框架模型迁移工具,让用户即时体验的开发套件昇思 MindSpore Dev ToolKit,同时升级自定义算子能力支持高效添加算子,丰富 MindQuantum 量子模块支持可快速上手,持续提升框架的训练与推理性能,下面就带大家快速浏览昇思 MindSpore 全场景 AI 框架 1.6 版本的关键特性。
1 服务开发者,改进易用性提升开发效率
针对开发者诉求,昇思 MindSpore 全场景 AI 框架与开发者开展了系统、深入的交流,组织一系列用户调研和访谈,对开发者反馈较多的 API 问题进行整改优化,并打造系列教程,帮助开发者上手;同时,昇思 MindSpore 全场景 AI 框架积极吸纳开发者参与内容建设,累计吸引 142 名外部开发者贡献 610+技术干货案例,覆盖安装、开发调优等关键场景,为开发者提供经验指导。
在调试、调优等功能特性上,昇思 MindSpore 全场景 AI 框架进行了系统的改进,帮助开发者提升开发效率:
l 在功能调试方面,支持静态图模式的问题代码堆栈打印、优化错误描述提升报错准确性,为用户提供更好的问题处理体验。
l 昇思 MindSpore Insight 提供集群性能数据一键收集、并行策略分析、图码联动可视化调优等功能,提升开发者性能和精度调优效率。
l 在 ModelZoo 模型方面,提供 300+线上线下一致、覆盖 CV/NLP/推荐等领域、支持跨平台部署的模型,并满足人工智能计算中心、金融、制造、终端等行业需求。基于新版本高效语法,重构 Yolo v5 等 ModelZoo 模型,为开发者提供昇思 MindSpore 全场景 AI 框架模型最佳实践。
2 控制流支持副作用训练,持续优化性能
在之前发布的昇思 MindSpore 全场景 AI 框架版本中,控制流训练场景下存在复制子图的问题,该问题会导致执行网络性能变差、副作用训练场景结果不对等问题。最新的昇思 MindSpore 全场景 AI 框架 1.6.1 版本,我们对控制流的 IR 表达设计进行了重构,消除了不必要的图复制,对控制流场景下各方面进行了较大的优化。
1.支持训练场景使用 Assign 等副作用算子。
2.优化控制流子图数量,反向网络可直接复用正向图算子结果,不需要重复计算正向图,提升了执行性能和编译性能。
例如:AirNet 网络子图数量由原来的 162 个降低至 46 个,减少了大量冗余计算,执行性能由 12.3s/epoch 优化至 5.8s/epoch。
AirNet 网络优化前后子图数量与执行性能对比
BFGS 网络子图数量由原来的 3236 个降低至 91 个,执行性能由 4.9s/epoch 优化至 0.6s/epoch。
BFGS 网络优化前后子图数量与执行性能对比
3.支持数据无依赖子图并行执行,同时优化了空子图执行流程,整体上提升控制流场景执行性能。
例如:Mappo(Agent3)网络优化前后子图数量无变化,但是由于我们优化了无数据依赖的子图的并行执行能力和空子图执行过程,网络最终执行性能由 2.5s/epoch 提升至 1.8s/epoch。
Mappo(Agent3)网络优化前后子图数量与执行性能对比
3 昇思 MindSpore Graph Learning:公式即代码,训练加速 3 到 4 倍
图数据能自然表达真实世界对象之间的关系,表征能力和可解释性强,图学习也逐步广泛应用于电商推荐、金融风控、药物分子分析和控制优化等场景,图关系大都错综复杂,数据规模较大,通常有数十亿点,数百亿边,点边类型有几百种,图神经网络计算更加复杂耗时,因此迫切需要高效的图神经网络系统。同时,GNN 算法的快速发展,需要易用的系统允许自由扩展。
昇思 MindSpore Graph Learning 是由 James Cheng 课题组(香港中文大学)、华为昇思 MindSpore 团队联合研发的图学习框架,具有高效性、易用性等特点。
3.1 易用性:公式即代码
通过创新性的提出以节点为中心的编程范式,相较于消息传递范式,更贴近 GNN 算法逻辑和 Python 语言风格,昇思 MindSpore Graph Learning 可以做到公式到代码的直接映射,如下图 GAT 网络代码所示。基于此,用户无需进行任何函数封装,即可快速直接地实现自定义的 GNN 算法/操作。
3.2 高效性:训练加速 3 到 4 倍
基于昇思 MindSpore 全场景 AI 框架的图算融合和自动算子编译技术(AKG)特性,创新提出基于索引的非规则内存访问算子融合,自动识别 GNN 模型运行任务特有执行 pattern 并进行融合和 kernel level 优化。相较于其他框架对常用算子进行定制优化的方案更加灵活,更具扩展性,能够覆盖现有框架中已有的算子和新组合算子的融合优化。以昇思 MindSpore 全场景 AI 框架作为后端,昇思 MindSpore GraphLearning 能使 GNN 网络训练获得 3 到 4 倍的性能加速。
3.3 丰富性:覆盖业界典型图学习网络
框架中已经自带实现十三种图网络学习模型,涵盖同构图、异构图、随机游走等类型的应用网络。
详情请参考这里https://gitee.com/mindspore/graphlearning/tree/research/model_zoo
4 高性能可扩展的强化学习计算框架:昇思 MindSporeReinforcement
强化学习(RL)是近年来 AI 领域的研究热点之一,伴随昇思 MindSpore 全场景 AI 框架 1.6 版本推出了独立的强化学习计算框架昇思 MindSpore Reinforcement,通过框架中的 Python 编程 API 以及算法与执行分离的设计使其具有易编程,可扩展等特点,期望带给用户一个全新的开发体验。
在昇思 MindSpore Reinforcement 0.2 版本中提供了一套面向强化学习领域的 Python 编程 API,例如 Actor 用于环境交互获得奖励,Learner 学习并更新策略,以及 Trainer 用于控制算法逻辑等抽象,使整个算法结构更加清晰、简洁,有助于高效的算法开发和模块复用;另外在仓库中内置了一些经典的强化学习算法,如 DQN、PPO 等(后续版本中将会持续更新),用户可直接运行其中的算法,或者基于 PythonAPI 开发新的单智能体以及多智能体强化学习算法。
昇思 MindSpore Reinforcement 在架构设计上采用了算法表达和编译执行分离的设计思路,用户仅需要专注于强化学习算法逻辑的 Python 实现,依托于昇思 MindSpore 全场景 AI 框架强大的编译优化以及多硬件异构加速能力,可以实现强化学习算法的多硬件协同计算加速。
在计算设备上,昇思 MindSpore Reinforcement 支持包括 Ascend、GPU、CPU 在内的多硬件计算,当前 0.2 版本已支持单机训练,后续版本将提供更强大的多智能体分布式训练能力,以及更加丰富的特性支持,敬请大家持续关注。
查看文档:https://www.mindspore.cn/reinforcement
5 自定义算子能力全面升级,统一 Custom 接口帮助用户高效添加算子
随着 AI 模型的迭代,昇思 MindSpore 全场景 AI 框架内置的静态的算子库可能无法满足用户的需求,之前版本的昇思 MindSpore 全场景 AI 框架的自定义算子功能也存在着平台覆盖不到位,开发过程繁琐及第三方算子接入困难的问题。为了提供更好的自定义算子体验,昇思 MindSpore 全场景 AI 框架 1.6 版本全面升级了自定义算子的能力,提供支撑包括 Ascend,GPU 和 CPU 在内的多平台的统一算子开发接口 Custom,帮助用户在昇思 MindSpore 全场景 AI 框架方便快捷地进行不同类型自定义算子的定义和使用,可以满足包括快速验证,实时编译和第三方算子接入等不同场景下的用户需求。
查看文档:https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.6/custom_operator_custom.html
5.1 多场景、多平台的统一算子开发接口
昇思 MindSpore 全场景 AI 框架 1.6 版本提供统一的算子开发接口 Custom,实现了不同方式自定义算子的接口和使用统一。其提供的模式包括基于 JIT 编译的算子编译器开发模式、针对极致性能的 aot 模式和针对快速验证的 pyfunc 模式,方便网络开发者根据需要灵活选用不同的自定义方式。
此外统一的算子开发接口整合了当前昇思 MindSpore 全场景 AI 框架支持的不同平台,包括 Ascend,GPU 和 CPU,以及新增的 AICPU 平台,减少了用户针对不同平台算子开发的学习成本。
5.2 自定义算子一键接入,方便快捷
昇思 MindSpore 全场景 AI 框架 1.6 版本提供的自定义算子可以帮助用户在昇思 MindSpore 全场景 AI 框架的 Python 端快速的定义算子,把算子作为网络表达的一部分,无需对昇思 MindSpore 全场景 AI 框架进行侵入式修改和重新编译。此外提供了自动生成注册信息的能力,实现自定义算子一键接入网络,极大的简化了自定义算子的开发流程。用户在使用时完全不感知框架相关的设定,让用户更加关注计算本身。
5.3 新的自定义算子类型支持:AICPU
昇思 MindSpore 全场景 AI 框架 1.6 版本新增了 AICPU 类型算子的支持,该类算子对应的硬件架构为 ARM 架构,采用 aot 模式编译,可以快捷地部署到主流嵌入式平台上。AICPU 算子相对于 TBE 算子,擅长逻辑类操作,采用 C/C++开发,类似于 CPU 算子开发,对于一些难以向量化的算子,有较大的性能收益。
查看文档:https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.6/custom_operator_custom.html#aicpu
6 模型迁移工具 MindConverter:支持第三方框架模型的一键迁移
从第三方框架切换到昇思 MindSpore 全场景 AI 框架,如果不能复用原框架的存量主流模型,则需要重新编写模型训练脚本,并花费周级甚至月级的时间进行重训。目前大量开源模型基于 PyTorch/TensorFlow 实现,如果想基于昇思 MindSpore 全场景 AI 框架进行研究,则可能因为预训练数据无法获取或者训练资源有限,难以在昇思 MindSpore 全场景 AI 框架下复现模型。
在昇思 MindSpore 全场景 AI 框架 1.6 版本中提供的模型迁移工具 MindConverter,可以帮助用户快速实现第三方框架主流模型的一键迁移。
工具采用了主流 AI 框架 IR 到昇思 MindSpore IR 的转换方案,转换后的模型可推理可重训,模型脚本可读性较好。模型迁移工具支持以下两种转换方式:
6.1 基于 ONNX IR 转换
ONNX 是一种开放式模型定义格式,业界主流 AI 框架均已支持将模型导出为 ONNX 格式。借助 ONNX 通用性,模型迁移工具可实现多种 AI 框架到昇思 MindSpore 全场景 AI 框架的转换。已验证支持 ResNet 系列、RegNet 系列,HRNet 系列,DeepLabV3 系列,YOLO 系列等模型。
如上图所示,将第三方框架模型导出成 ONNX 格式,然后使用模型迁移工具,映射转换成昇思 MindSpore 全场景 AI 框架模型。
6.2 基于 TorchScript IR 转换
TorchScript 是 PyTorch 模型的中间表达,借助 TorchScript IR 的泛化性,模型迁移工具可覆盖绝大部分的 PyTorch 模型。已验证支持 HuggingFaceTransformer 预训练模型 200+个。
如上图所示,将 PyTorch 框架模型转换成 TorchScript 计算图,然后使用模型迁移工具,映射转换成昇思 MindSpore 全场景 AI 框架模型。
更多可支持转换的模型,有待用户发现与验证。使用模型迁移工具时如有问题,请参考官网的使用手册,也欢迎在开源社区中进行反馈。
使用手册:https://www.mindspore.cn/mindinsight/docs/zh-CN/r1.6/migrate_3rd_scripts_mindconverter.html
开源社区:https://gitee.com/mindspore/mindinsight/issues
7 使能用户即时体验的开发套件昇思 MindSporeDev ToolKit
昇思 MindSpore 全场景 AI 框架功能丰富且强大,如何一键上手,快速试用?由昇思 MindSpore 团队推出的昇思 MindSpore Dev ToolKit 开发套件包含运行管理,智能知识搜索与智能代码补全功能,致力于让所有用户丝滑地摆脱环境干扰,学习人工智能,让人工智能回归算法本身。
7.1 一键环境管理,5 分钟完成环境搭建上手昇思 MindSpore 全场景 AI 框架实践
基于 Conda 提供科学的昇思 MindSpore 全场景 AI 框架环境管理方式,能快速将昇思 MindSpore 全场景 AI 框架及依赖安装在独立环境中并部署最佳实践。该能力兼容 Ascend、GPU、CPU 多平台,隐蔽不同环境适配的繁琐细节,让用户在打开 IDE 后一键运行 AI 算法。最快能在 5 分钟内体验用昇思 MindSpore 全场景 AI 框架学 AI 的乐趣,内测数据显示 80%的 AI 零基础用户使用该功能可在 20 分钟内完成环境配置与算法运行。
7.2 沉浸式昇思 MindSpore 全场景 AI 框架生态知识智能搜索,用户零压力接入昇思 MindSpore 生态
基于语义搜索等能力,在 Dev Toolkit 内提供全面的昇思 MindSpore 全场景 AI 框架知识内容检索,对算子而言,PyTorch/TensorFlow 框架用户只需在 IDE 内查询相应算子,即可快速准确找到昇思 MindSpore 全场景 AI 框架中的对应实现并获得详细文档支持,从而无压力切换到昇思 MindSpore 全场景 AI 框架生态中。
7.3 基于深度学习的智能代码补全,单模型开发键盘敲击次数可减少 30%
Dev Toolkit 基于昇思 MindSpore ModelZoo 等最佳实践数据集构造的智能代码补全模型实现的智能代码补全功能,让用户在编写昇思 MindSpore 全场景 AI 框架相关代码时获取实时提示,补全达 80%的高准确性将加速用户编码,目前内测数据显示编码时键盘敲击次数可减少 30%以上。
详情参考:https://gitee.com/mindspore/ide-plugin
8 昇思 MindSpore Lite 持续提升推理性能
8.1 通过异构并行技术,深度挖掘硬件算力提升推理性能
此版本中,昇思 MindSpore Lite 新增异构并行功能,该功能感知异构硬件能力,使能多个底层硬件并行执行推理,最大限度利用端侧有限的硬件资源,提升推理效率。
异构并行功能会在构图阶段,根据异构硬件的能力进行构图操作。构图操作分为切分算子与构造异构图两部分。切分算子会将原本不适合异构并行的模型重构成适合异构并行的,且并行分支的运算量能够严格匹配异构硬件的执行能力。构造异构图操作会根据模型现有的图结构进行并行子图搜索,最终确定异构并行图。构图的整体解决方案不局限于模型原始结构,使得异构并行可以应用于泛化模型。
昇思 MindSpore Lite 在当前版本实现了 GPU 与 CPU 的异构并行,使用 Mobilenet-V1 网络实测验证,有 5%左右的性能提升。
8.2 优化 GPU 推理性能,支持将 OpenGL 纹理数据作为输入和输出数据
此版本中,昇思 MindSpore Lite 支持将 OpenGL 纹理数据作为推理模型的输入,推理输出结果也为 OpenGL 纹理,实现端到端推理过程中,减少 CPU 和 GPU 间的数据拷贝,从而达到提升推理性能降低功耗的目的;相比上一版本,能够减少四次设备间的内存拷贝,示意如下图:
查看文档:https://www.mindspore.cn/lite/docs/zh-CN/r1.6/use/runtime_cpp.html#opengl
9 MindQuantum:快速上手量子模拟与量子机器学习
MindQuantum 最新 0.5 版本中提供独立的量子模拟模块 Simulator,用户可快速对自定义量子线路进行模拟演化并对量子态进行采样,极大方便开发者在 MindQuantum 环境中设计和验证自己的量子算法。此外我们新增了量子线路和量子态采样的展示模块,开发者也能直观的对量子算法进行修改。
新增量子线路绘制功能演示如下:
新增模拟器模块及其线路采样功能演示如下:
此版本的第二大特性是新增了多种量子神经网络算子,开发者根据这些算子可以快速开发量子经典混合的机器学习模型,助力量子人工智能算法突破。
查看文档:https://www.mindspore.cn/mindquantum/docs/zh-CN/r1.6/index.html
10 昇思 MindSpore Science 蛋白质结构预测性能提升 2-3 倍
昇思 MindSpore Science 开源了基于 AlphaFold2【1】算法的蛋白质结构预测推理工具,该预测推理工具由昇思 MindSpore【2】团队、昌平实验室、北京大学生物医学前沿创新中心(BIOPIC)和化学与分子工程学院、深圳湾实验室高毅勤教授课题组联合推出,MindSpore +Ascend910 单卡端到端性能优于原版 AlphaFold2 达 2-3 倍。
传统的药物设计研发周期长、费用高,而了解蛋白质的空间结构后可大幅缩短研发周期。因此,准确、快速的蛋白质结构预测不仅可以快速获得或验证关键蛋白结构,而且在医疗健康和生物工程领域也能作为有力的工具。但传统蛋白质结构预测方法存在计算精度不足的缺陷,而 AlphaFold2 的蛋白质结构预测工具精度可与实验方法相媲美。
该工具可对氨基酸序列长度 2000+的蛋白质结构解析,能覆盖约 99%以上的蛋白序列【3】。其中模型部分与 AlphaFold2 相同,在多序列比对阶段,采用了 MMseqs2 进行序列检索【4】,相比于原版算法端到端运算速度有 2-3 倍的提升。
图 1 昇思 MindSpore 全场景 AI 框架模型与 AlphaFold2 精度对比
图 2 通过昇思 MindSpore 全场景 AI 框架预测的 T1079
针对蛋白质结构预测及折叠问题,联合团队未来还会发布创新的全栈(算法+软件+硬件)敬请期待。
详情请参考:https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/mindsponge/fold
参考文献
【1】Jumper J, Evans R,Pritzel A, et al. Applying and improving AlphaFold at CASP14[J]. Proteins:Structure, Function, and Bioinformatics, 2021
【2】Chen L. DeepLearning and Practice with MindSpore[M]. Springer Nature, 2021.
【4】Mirdita M,Ovchinnikov S, Steinegger M. ColabFold-Making protein folding accessible toall[J]. BioRxiv, 2021.
评论