公开课1:MindSpore分布式自动并行训练

蓝色背景白色的字 
描述已自动生成4 月 23 日,机器之心联合华为昇腾学院开设的线上公开课《轻松上手开源框架 MindSpore》第一课正式开讲,MindSpore 前端开发工程师龚子妍为大家带来了主题分享《MindSpore 分布式自动并行训练》,第一课回顾视频如下:


在第一课《MindSpore分布式自动并行训练》中,我们主要介绍了几种相关的并行模式,包括数据并行,通过分发数据集的方式来提升训练效率;模型并行,通过拆分模型参数来突破单卡的内存瓶颈;混合并行是融合了数据并行和模型并行的一种并行模式。

这以上的并行模式在 MindSpore中 都是依赖集合通信来完成多卡间数据同步的。而自动并行特性主要的特点有:通过算子自动切分,推导张量的排布模型;利用构建代价模型的方式,自动搜索了切分策略;并将自动微分扩展到了分布式的领域,可以自动求导通信算子的反向梯度。

MindSpore的分布式训练,支持数字并行、模型并行、自动并行的多层次接口,其中,自动并行更加易用,可以有效的帮助网络提升性能。

在第一课的 QA 环节中,有一些问题被大家广泛提到,我们再次做了精选与编辑,供大家参考。

Q1:切分是平均切分吗? 如果是 5 个分四份会怎样?

首先就是在切分方式这里,其实是有并行切分的约束的,比如说它的维度的数据和计算资源其实是需要均匀切分,是以 2 为基,也就是说指定的切分策略中的数字必须都是 2 的倍数。另外像刚刚提到的,如果无法均分的问题,其实在框架中我们是会做校验的,如果是出现了没有办法均分的张量排布模型,我们会在校验中直接报错。

Q2:需要什么硬件支持呢?自己的笔记本电脑是否可以来执行网络?

目前来说的话笔记本电脑或者有 GPU 的环境都可以通过 docker 镜像来简单试用,至于自动并行的特性,对 CPU 和 GPU 的支持还在完善中。我们推荐用户在昇腾芯片上使用自动并行,作为普通用户的话,可以关注我们的开源社区,可以去申请 MindSpore 开发者体验环境进行试用。

Q3:效率具体上有多大提升?有对照数据吗

在开源社区我们公布了 Cifar10 数据集的训练性能数据。对于自动并行特性的话,和业界横向对比的数据还在测试收集中,目前公布的性能数据,是基于 mindspore+昇腾芯片,和其他的并行模式做的比较。从刚刚展示的表格中其实可以看到,自动并行在大分类数的情况下相比数据并行模式性能有比较大的提升。

Q4:讲一下 pipeline 并行?

在我们的框架规划图上是可以看到是有提到 pipeline 并行这个概念的,是自动并行特性其中的一个规划方向。pipeline 并行,也就是我们刚刚提到的层间模型并行的概念,需要把模型按层切分到多个卡上,如果让用户手动实现对开发者来说难度非常大,需要考虑性能、内存、通信、训练效果等问题,我们期望通过框架完成模型按层自动切分到卡上的目标。

Q5:请问数据并行是 allreduce 实现吗?

数据并行,在 MindSpore 中是用集合通信这个方式来实现的。利用到了 AllReduce 操作完成的梯度聚合部分,BroadCast 完成的是参数初始化的广播操作。

第一课PPT如下:

轻松上手开源框架MindSpore
轻松上手开源框架MindSpore

3 周时间,6 次课程,全面掌握 MindSpore的使用方法。

入门华为MindSpore
2
暂无评论
暂无评论~