近期,国内开源界发生了不少大事件,清华开源了计图框架,旷视开源了天元框架,随后,华为开源了自研的深度学习框架MindSpore。
目前其代码已经上线,首先发布的是0.1.0-alpha版本,接下来将逐步完善。
MindSpore作为华为整体AI解决方案的一部分,支持端边云全场景的深度学习训练推理框架,主要应用于计算机i R { e n ` % ] T视觉、自然语言处理等AI领域,面向数据科学家、算法工程D T O K ?师S G I 1 S p N 2 r等人群,提供设计友好、运行高效的开发体验。
同时,MindSy / O 9 ~ R t * /pore不但提供m P O s {昇腾AI处理器原生支持及软硬件协同优化,也支持通用CPU和GPU。
MindSpore框架解读
目前,人工智能的研究o i B和生产之间存在巨大的鸿沟。
一方面,学术界AI相关的研究持续升温,各种模型算法、诉求层出 8 R + D . E # F不求;另一方面,工业界的AI模型应用也在不断推出。各种} ) Z & j ^不同场景,如平安城市、指挥交通、医疗生物等,都需要巨大的数据集和完备的功能来适应特定的需求。, | b e 5 7 v k
现有的框架多数开发门槛高,{ y 7 f Z j { 同时全场景能力不足,异构性不强。MindSpore可以实现统一架构,一次训练,多处部署。通过实现AI算法即代码,MindSpore可以显著减少模型的开发时间。
从整体架构来看,MindSp4 K wore具备基于源码转换的通用自动微分、自动实现分布式并行训练、数据处理、以及图执行引擎等功能特性。
1、自动微分系统
MindSM A % 6 S g :pore第一大特点是其自动微分系统。7 ! c Y在深度学习中,自动微分通常L D } m 1 B指对网络模型自动求导,通过梯度指导对网络权重的优化。
在当前主流的深度学习框架当中,有三种自动微分技术:
第一种是基于静态数据流图的转换,以TensoS % v n vrF] U k H 7 low为代表,可利用静态编译技术对网络性能优化。但是这种方法受制于数据流图的表达形式,不能灵活地表达控制流。
第二种是以PyTorch为代表的基于动态图的转换。虽然这种方法可以使用户灵活地使用控z ( ~ X y C *制流,但其也存在运行时资源开销高的弊端,且不能运用静态编译技术对计算图进行性能优化。
最后J [ 4 S j一种是MindSpore采用的技术,基于源码转换的通用自动微分技术。
这种方法的好处在于,Y 0 h源以函数式编程框架为基础,以即时编译的方式在中间表达上做自动微分变化,支持复杂控制流场景、高阶函数和闭包。
由于支持对控制流的自动微分,技术上可以兼得前两种微分技术的优点,既支持| l v灵活的原生的控制流表达,同时也可以在执行前对网络做静态编译优化,生成j v . J R {高效的计算图,从而提高执行性能。
2、自动并行
第二大特性,是MindSpore具备自动实现分布式并行训练的能力。在模型研发过程当中,除设计模型自身的逻辑,还需要设计分布式并行训练的d i # g e D 3 . c逻辑。
开发者不仅要分析数据量、[ } C x z M m m =参数量、集群网络拓扑等因素来确定模型切分策略,还要考虑切分后的子模型设备绑定等问题,从而达到性能良好的并行训练效果。
对于逻辑复杂、_ w - # 6 y j # U参数大的模型,人工寻找最B p ] l n . 4 +优的并行策略与实现业务目标并无直接关系,但是却需要耗费大量的精力。MinX $ WdSpore针对此问题,提出了全新的b 4 h I p m分布式并行训练模式,融合了数据并行、模型并行和混合并行模式。
MindSpore实现自动分布式并行训练是通过构建基于数据量、模型参数量、网络集群拓扑带宽等信息的代价模型,自动选择h O M n 6 P o 代价最小的模型进行切分,并绑定模型到设备执行。整个过程几乎不需要开发者参与,可以使开发者更专注于模型逻辑的开发。
3、数据处理功能
MindSpore中的数据处理功能名为MindData,用于完成训练过程中数据的pipeline处理,具备数据加载、数据增强、导入训练等功能,并提供了简单易用的编程接口,以及覆盖CV/z _ g 1 2 TNLP等全场景的丰富数据处理能力。
此外,MindSpore也支持分布式训练。在分布式数据并行模式下,在每个批量batch之后,计算和模型信息会被分布到工作对象中,并提供了“切片与重采样”两种调整迭代数和分割数据的方法。
4、图引擎模块
图引擎模块` 7 h p c ! z .负责MindSpore前端与底层硬件的交互任务,是Min Y @ H J w yndSpore内部进行图处理的模块,负责将管理引擎传下来的图进行一系列= ? 1 N ` N的图操作,最终转化为可以在底层硬件上直接运行的图,并对图中所用到的所有算子进行分配6 [ j n @ = ;与管理。
在图处理过程中,图引擎会统一定义各插件模块需要提供@ ! L x X Z W的接口,具体的插件由不同的{ O U K O p P T功能模块根据自己的能力G 7 -提供,它会根据不同的插件提供的能力,实现r v , y 7 V y W最优的执行选择,c r I m来保证性能。
框架开源之争
MindSpo+ _ x I M ; m l Yre的开源并不意外,a # + o m `在2019年8月华为全联接大会上,华为正式发布昇腾910芯片时,同期发布了全7 B x ~ n N x h场景AI计算框架MindSpore,并透露了MindSpore将在202d M i0年一季度开源。
华为轮值总裁徐直军在发布会上表示,MindS 6 E Q r Y s )pore标志着华为全场景全栈AI解决方案的构成,也标志着华为AI战略的执行进入了新的阶段。
除了MindSpore以外,现在市面上存在多个开源框架,呈多种框架共存发展的d l o $状态:
国际开源框架:
- 谷歌TensoP U C ( KrFlow
- 加州伯克利Caffe
- Facebook的PyTorch
- 微软CNTK
- 谷歌Keras
- 亚马逊MXNet
国内开源框架:
- 百度PaddlePaddle
- 旷视天元Brai[ K - . b Jn++
- 华为MindSpore
- 清华计图Jittor
- 腾讯优图NCNN
- 阿里X-DeepLearning
人工智能技术发展过程中,神经网络层级不断加深,模型更加庞大精准,应用逐渐丰富,其底层框j 4 P R N * u架成为了科技巨头的布局重% u I a , z q点。
目前市面上的AI框架众多,究其原因,开G P [ ? ; e l源框架是推进Z U j人工智能技术发展的; g ] p重要动力,开源项目允许开发者查看、使用、复制和修改其源代码,具有更新速度快、可二次开发、可扩展性强等特点,对于降低企业开& P f [ @ 9 * e m发AI应用的投入具有很好的效果。
因此,目前开源框架在人工智能发展大潮中被广泛用于快速搭建AI开发环境,促进企业加速技术的产品化过程。
近期诸多的框架相继开H 4 m I ` _ )源,一方面证明了国内技术厂商、院校对于基础性研究增加;另一方面,也显示出国内厂商在人工智能发展和应用过程中对于底层基础设施的重视程度的提高。
众多的框架相继开源,也将为开发者提供更多的选择,对于人工智能社区和生态都有所裨益。
放眼全球,更多的人. = / L G G 工智能开源框架必将带来各7 D b Y M q v个框架与标准之间的竞争,同时这些基础设施之间竞争也将提升人工智能的底层基础性能,从而为人工智能上层应用创新带来更多的可能性。