华为开源自研AI框架MindSpore!自动微分、并行加持,一次训练,可多场景部署...

乾明 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

华为的开源AI框架,来了!

刚刚,华为宣布正式开源自研深度学习框架MindSpore,代码已经上线。

MindSpore是一款支持端边云全场景的深度学习训练推理框架,主要应用于计算机视觉、自然语言处理等AI领域,面向数据科学家、算法工程师等人群,提供设计友好、运行高效的开发体验。

作为华为整体AI解决方案的一部分,MindSpore在提供昇腾AI处理器原生支持及软硬件协同优化,也支持通用CPU和GPU。

2019年8月份,华为轮值董事长徐直军介绍,MindSpore可以实现统一架构,一次训练,多处部署。而且,通过实现AI算法即代码,MindSpore可以显著减少模型开发时间。

MindSpore为什么能够实现这些能力?伴随着开源,它更多的特性,正在显露出来。

MindSpore四大功能

华为MindSpore首席科学家、IEEE Fellow陈雷介绍,当前开源的MindSpore主要具备基于源码转换的通用自动微分、自动实现分布式并行训练、数据处理、以及图执行引擎等功能特性。

整体架构如下图所示:

首先说自动微分,它是指计算机借助程序自动求出一个函数导数的通用方法。在深度学习中,通常指对网络模型的自动求导,通过梯度指导对网络权重的优化。

当前主流深度学习框架中,主要有三种自动微分技术:

一是以TensorFlow为代表的基于静态数据流图的转换,可利用静态编译技术对网络进行性能优化,但受制于数据流图的表达形式,不能灵活表达控制流;

二是以Pytorch为代表的基于动态图的转换,虽然可以使用户可以灵活的使用控制流。而其缺点是运行时开销高,且不能运用静态编译技术对计算图进行性能优化。

第三种是基于源码转换的通用自动微分,也就是MindSpore采用的技术。

这种方法,源以函数式编程框架为基础,以即时编译(JIT)的方式在中间表达上做自动微分变换,支持复杂控制流场景、高阶函数和闭包。

由于支持对控制流的自动微分,技术可以兼得上面两种技术的优点,即支持灵活的原生的控制流表达,同时也可以在执行前对网络做静态编译优化,生成高效的计算图,从而提高执行性能。

自动并行方面,陈雷介绍说,MindSpore能够用串行算法代码,自动实现分布式并行训练,同样直击当前模型研发过程中的痛点。

一般来说,在模型研发过程中,除设计模型自身的逻辑外,还需设计分布式并行训练的配置。

这是一个辛苦活。

开发者不仅要分析数据量、参数量、集群群网络拓扑等因素来确定模型切分策略;还要考虑切分后的子模型设备绑定等,来达到性能较优的分布式并行训练效果。

但其实,这些并行训练的优化细节与模型要实现的业务目标无关,最后却让开发者费尽了心思,“掉光了头发”。

尤其是逻辑复杂、参数量巨大的模型,想要人工找到最优的并行策略基本不可能。

华为想要解决这个问题。MindSpore提出一种全新的分布式并行训练模式,融合了数据并行、模型并行和混合并行。

具体来说,MindSpore构建了基于数据量、模型参数量、网络集群拓扑带宽等信息的代价模型(Cost Model),自动选择一种代价最小的模型切分方式,并绑定模型到设备执行,实现自动分布式并行训练。

整个过程,几乎不需要开发者参与,他们只需要专注于模型逻辑的开发就行了。

MindSpore中的数据处理功能名为MindData,用于完成训练过程中数据的pipeline处理,具备数据加载、数据增强、导入训练等功能,并提供了简单易用的编程接口,以及覆盖CV/NLP等全场景的丰富数据处理能力。

在数据处理的过程中,MindSpore还加强了与昇腾芯片的协同,针对昇腾芯片计算过程中消耗数据的速度,提供了优化。

陈雷说,这是确保昇腾芯片发挥更大性能的关键。

此外,MindSpore也支持分布式训练。

在分布式数据并行模式下,在每个批量batch之后,计算和模型信息会被分布到工作对象中,并提供了“切片与重采样”两种调整迭代数和分割数据的方法。

最后,承担MindSpore前端与底层硬件交互任务的是图引擎模块

它是MindSpore内部进行图处理的模块,负责将管理引擎传下来的图进行一系列的图操作,最终转化为可以在底层硬件上直接运行的图,并对图中所用到的所有算子进行分配与管理。

在图处理过程中,图引擎会统一定义各插件模块需要提供的接口,具体的插件由不同的功能模块根据自己的能力提供,它会根据不同的插件提供的能力,实现最优的执行选择,来保证性能。

除了上述功能之外,MindSpore中还有深度优化的模型集市Model Zoo,可视化工具、模型评估工具等。

Model Zoo模型集市在今年第四季度,将会上线30+模型,支持昇腾和MindSpore协同,也会对模型个性化深度优化。

可视化工具提供单次训练过程可视化,以及多次训练的模型溯源对比功能,让开发者炼丹更加便利。

模型评估工具支持多种对抗样本生成算法,包括13种白盒、7种黑盒攻击算法,帮助开发者评估对抗 样本攻防能力。

在这些功能的加持下,MindSpore实现模型开发能力提升的同时,使用起来也颇为方便。

借助自动微分,轻松训练神经网络

易用性直接体现在操作上。

陈雷说,MindSpore为用户提供Python编程范式,用户可以用模块化形式对神经网络进行描述。

借助基于SCT的自动微分,用户还可以使用原生Python控制语法和其他一些高级API,如元组(Tuple)、列表(List)和Lambda表达。

他说,为了避免产生混淆,MindSpore尽可能减少引入新的接口和概念。在单机平台上训练简单的神经网络时,用户只需要了解张量、算子、单元、模型等就行了。

具体的过程是这样的:

从输入张量开始,它可以是常量输入张量或参数张量。然后用MindSpore提供的不同算子构造一个单元。最后,使用模型封装这个单元来训练神经网络。

或者,用户可以直接将输入数据传递给单元执行推理任务。

所以徐直军去年宣布MindSpore将要开源时说,MindSpore面向的不仅仅是深度学习开发者,也面向领域专家、数学家、算法专家等等在AI中角色越来越重要的人群。

同时,易用性不仅仅体现在模型开发上,在模型部署过程中也很方便——一次训练后,可多处部署,这也是为什么说MindSpore是一个全场景框架。

训练推理上,MindSpore不仅支持CPU、GPU,更针对华为昇腾芯片进行了优化。同时,MindSpore也是唯一支持昇腾芯片的框架。

这就意味着,在华为昇腾系列芯片的设备上部署AI应用,用MindSpore是一个比其他框架都更好的选择。

框架开源,华为培育AI开发生态

2018年,华为在全联接大会上,首次披露了完整的AI解决方案,MindSpore是其中重要一环。

2019年8月,华为正式发布昇腾910,同时推出全场景AI计算框架MindSpore,并表示要在2020年第一季度开源。

徐直军在发布会上说,这标志着华为已完成全栈全场景AI解决方案的构建,华为AI战略的执行进入了新的阶段。

今天华为兑现开源,并构建开发者社区,也是华为培育华为AI生态、推进AI战略执行的重要举措。

据陈雷介绍,MindSpore当前发布的是首个开源0.1.0-alpha版本,许可证是Apache 2.0,接下来将逐步完善。

同时,华为也披露了MindSpore开源社区的治理结构——由技术治理委员会、特别兴趣组以及工作组等社区组织组成。

其中,技术治理委员会由来自14名来自不同公司/学校/机构的代表组成,会依照社区章程开放治理,推动社区健康有序发展。

特别兴趣组,由主要特性模块的开发者自发组成,负责开发MindSpore相关开发工作。

工作组需要多个特别兴趣组的成员合作的工作,由开发者自发组成,并负责相关开发工作。

现在,MindSpore的代码已经上线,开源社区已经开放。

如果你有兴趣,不妨收好下面的传送门,体验一番,再给出评价:

MindSpore开源社区:
https://www.mindspore.cn
MindSpore代码托管:
https://gitee.com/mindspore

作者系网易新闻·网易号“各有态度”签约作者

如何关注、学习、用好人工智能? 

每个工作日,量子位AI内参精选全球科技和研究最新动态,汇总新技术、新产品和新应用,梳理当日最热行业趋势和政策,搜索有价值的论文、教程、研究等。

同时,AI内参群为大家提供了交流和分享的平台,更好地满足大家获取AI资讯、学习AI技术的需求。扫码即可订阅:

了解AI发展现状,抓住行业发展机遇

AI社群 | 与优秀的人交流

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 ! 

发布了223 篇原创文章 · 获赞 288 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/QbitAI/article/details/105171861