昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性。
全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改进,提升了开发效率,控制流性能提升并支持副作用训练,与此同时,昇思MindSpore全场景AI框架发布高效易用的图学习框架昇思MindSpore Graph Learning,高性能可扩展的强化学习计算框架昇思MindSpore Reinforcement,提供支持第三方框架模型迁移工具,让用户即时体验的开发套件昇思MindSpore Dev ToolKit,同时升级自定义算子能力支持高效添加算子,丰富MindQuantum量子模块支持可快速上手,持续提升框架的训练与推理性能,下面就带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性。
一、服务开发者,改进易用性提升开发效率
针对开发者诉求,昇思MindSpore全场景AI框架与开发者开展了系统、深入的交流,组织一系列用户调研和访谈,对开发者反馈较多的API问题进行整改优化,并打造系列教程,帮助开发者上手;同时,昇思MindSpore全场景AI框架积极吸纳开发者参与内容建设,累计吸引142名外部开发者贡献610+技术干货案例,覆盖安装、开发调优等关键场景,为开发者提供经验指导。
在调试、调优等功能特性上,昇思MindSpore全场景AI框架进行了系统的改进,帮助开发者提升开发效率:
- 在功能调试方面,支持静态图模式的问题代码堆栈打印、优化错误描述提升报错准确性,为用户提供更好的问题处理体验。
- 昇思MindSpore Insight提供集群性能数据一键收集、并行策略分析、图码联动可视化调优等功能,提升开发者性能和精度调优效率。
- 在ModelZoo模型方面,提供300+线上线下一致、覆盖CV/NLP/推荐等领域、支持跨平台部署的模型,并满足人工智能计算中心、金融、制造、终端等行业需求。基于新版本高效语法,重构Yolo v5等ModelZoo模型,为开发者提供昇思MindSpore全场景AI框架模型最佳实践。
二、控制流支持副作用训练,持续优化性能
在之前发布的昇思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)网络优化前后子图数量与执行性能对比
三、昇思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 Graph Learning能使GNN网络训练获得3到4倍的性能加速。
3.3 丰富性:覆盖业界典型图学习网络
框架中已经自带实现十三种图网络学习模型,涵盖同构图、异构图、 随机游走等类型的应用网络。
详情请参考这里https://gitee.com/mindspore/graphlearning/tree/research/model_zoo
四、高性能可扩展的强化学习计算框架:昇思MindSpore Reinforcement
强化学习(RL)是近年来AI领域的研究热点之一,伴随昇思MindSpore全场景AI框架 1.6版本推出了独立的强化学习计算框架昇思MindSpore Reinforcement,通过框架中的Python 编程API以及算法与执行分离的设计使其具有易编程,可扩展等特点,期望带给用户一个全新的开发体验。
在昇思MindSpore Reinforcement 0.2版本中提供了一套面向强化学习领域的Python编程API,例如Actor用于环境交互获得奖励,Learner学习并更新策略,以及Trainer用于控制算法逻辑等抽象,使整个算法结构更加清晰、简洁,有助于高效的算法开发和模块复用;另外在仓库中内置了一些经典的强化学习算法,如DQN、PPO等(后续版本中将会持续更新),用户可直接运行其中的算法,或者基于Python API开发新的单智能体以及多智能体强化学习算法。
昇思MindSpore Reinforcement在架构设计上采用了算法表达和编译执行分离的设计思路,用户仅需要专注于强化学习算法逻辑的Python实现,依托于昇思MindSpore全场景AI框架强大的编译优化以及多硬件异构加速能力,可以实现强化学习算法的多硬件协同计算加速。
在计算设备上,昇思MindSpore Reinforcement支持包括Ascend、GPU、CPU在内的多硬件计算,当前0.2版本已支持单机训练,后续版本将提供更强大的多智能体分布式训练能力,以及更加丰富的特性支持,敬请大家持续关注。
查看文档:https://www.mindspore.cn/reinforcement
五、自定义算子能力全面升级,统一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
六、模型迁移工具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模型。已验证支持HuggingFace Transformer预训练模型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
七、使能用户即时体验的开发套件昇思MindSpore Dev 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
八、昇思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
九、MindQuantum:快速上手量子模拟与量子机器学习
MindQuantum 最新0.5版本中提供独立的量子模拟模块Simulator,用户可快速对自定义量子线路进行模拟演化并对量子态进行采样,极大方便开发者在MindQuantum环境中设计和验证自己的量子算法。此外我们新增了量子线路和量子态采样的展示模块,开发者也能直观的对量子算法进行修改。
新增量子线路绘制功能演示如下:
新增模拟器模块及其线路采样功能演示如下:
此版本的第二大特性是新增了多种量子神经网络算子,开发者根据这些算子可以快速开发量子经典混合的机器学习模型,助力量子人工智能算法突破。
查看文档:https://www.mindspore.cn/mindquantum/docs/zh-CN/r1.6/index.html
十、昇思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. Deep Learning and Practice with MindSpore[M]. Springer Nature, 2021.
【3】https://ftp.uniprot.org/pub/databases/uniprot/previous_releases/release-2021_02/knowledgebase/UniProtKB_TrEMBL-relstat.html
【4】Mirdita M, Ovchinnikov S, Steinegger M. ColabFold-Making protein folding accessible to all[J]. BioRxiv, 2021.
昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者的更多相关文章
- 全场景AI推理引擎MindSpore Lite, 助力HMS Core视频编辑服务打造更智能的剪辑体验
移动互联网的发展给人们的社交和娱乐方式带来了很大的改变,以vlog.短视频等为代表的新兴文化样态正受到越来越多人的青睐.同时,随着AI智能.美颜修图等功能在图像视频编辑App中的应用,促使视频编辑效率 ...
- Laravel 和 Spring Boot 两个框架比较创业篇(一:开发效率)
我个人是比较不喜欢去正儿八经的比较两个框架的,这样没有意义,不过欲善其事先利其器! 技术是相通的,但是在某个特定的领域的某个阶段肯定有相对最适合的一个工具! 这里比较不是从技术角度比较,而是从公司技术 ...
- 全栈工程师-史上最强VSCODE插件-提高开发效率
当你点进来的时候 ,你可能是被标题吸引进来的,也有可能是 偶然间,看到的,首先恭喜你,已经准备好向全栈开发工程师靠近 ,那我们不说废话,直接开始,咱们先从安装步骤开始讲起 ,因为有些人连插件在哪都不知 ...
- 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
摘要:针对企业AI开发应用中面临的痛点和难点,为大家带来从实践出发帮助企业构建成熟高效的AI开发流程解决方案. 在数字化转型浪潮席卷全球的今天,AI技术已经成为行业公认的升级重点,正在越来越多的领域为 ...
- AI框架精要:设计思想
AI框架精要:设计思想 本文主要介绍飞桨paddle平台的底层设计思想,可以帮助用户理解飞桨paddle框架的运作过程,以便于在实际业务需求中,更好的完成模型代码编写与调试及飞桨paddle框架的二次 ...
- AI框架中图层IR的分析
摘要:本文重点分析一下AI框架对IR有什么特殊的需求.业界有什么样的方案以及MindSpore的一些思考. 本文分享自华为云社区<MindSpore技术专栏 | AI框架中图层IR的分析> ...
- 针对深度学习(神经网络)的AI框架调研
针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...
- 中国人工智能AI框架自主研发
中国人工智能AI框架自主研发 中国AI界争相构建AI开源框架的背后,技术和业务层面的考量因素当然重要,但也不应忽视国家层面的政策支持.对于AI基础设施的建设,中国政府在<新一代人工智能发展规划& ...
- 释放至强平台 AI 加速潜能 汇医慧影打造全周期 AI 医学影像解决方案
基于英特尔架构实现软硬协同加速,显著提升新冠肺炎.乳腺癌等疾病的检测和筛查效率,并帮助医疗科研平台预防"维度灾难"问题 <PAGE 1 LEFT COLUMN: CUSTOM ...
随机推荐
- 「BalkanOI 2018 Day1」Election
「BalkanOI 2018 Day1」Election 记C为1,T为-1,\(sum[i]\)为\(i\)点的前缀和. 对于询问\([l,r]\),分两步计算答案. 要求所有点的\(sum[i]- ...
- Linux中Swap与Memory内存简单介绍 (转)
https://blog.csdn.net/zwan0518/article/details/12059213 一.背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇 ...
- 使用C++开发PHP扩展
目前,PHP编程语言也是相当成熟,各种文档,各种问题,只要Google一下,总有你想要的答案.当然"如何开发PHP扩展"的文章也不少,但是很少有专门来介绍使用C++开发PHP扩展的 ...
- 编译PHP扩展的方式
编译的两种方式其实很简单,这里记录只是为了以后遇到这种情况时不加思索地运用上,而不是花费一些时间去回忆. C/C++程序编译有两种方式:动态编译.静态编译.PHP 是使用 C/C++程序开发的一门脚本 ...
- 2022寒假集训day6
day6上午还是做四道题T1区域[上机练习]1.编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目.如下图所示,在 10*10 ...
- 浅谈.net core如何使用EFCore为一个上下文注类型注入多个实例用于连接主从数据库
在很多一主多从数据库的场景下,很多开发同学为了复用DbContext往往采用创建一个包含所有DbSet<Model>父类通过继承派生出Write和ReadOnly类型来实现,其实可以通过命 ...
- JavaWeb项目中斜杠(/)表示web工程、webapps的场景
"/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 /** * 1.ServletCont ...
- swpu新生赛ctf wp
WEB:gift_F12 没啥好说的 直接F12得了 NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} RE 简简单单的解密 import base64, url ...
- 用python的turtle作图(一)静态图
最近,花了点时间,用python画图. 主要包括三部分,简单的静态图形,复杂的组合图形,图形动画. (一)画静态图形 长方形, 圆, 三角形, 平行四边形, 五角星 (二)图形的组合 笑脸, 国旗, ...
- ☆☆如何学习MATLAB☆☆
大多数朋友第一次接触MATLAB一般都是在大学里面开设的MATLAB课程,第一次真正使用MATLAB是在自己的毕业论文中用到.所以对于MATLAB可以说是既爱又恨.爱,是因为使用MATLAB几乎可以实 ...