【MindSpore易点通】分布式并行经验总结

1 简单介绍

现如今数据的存储越来越多,想要提高算力的话,其实我们可以提高分布式计算。所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式并行训练,可以降低对内存、计算性能等硬件的需求,是进行训练的重要优化手段。

而我们昇思MindSpore的特性之一就是融合了数据并行、模型并行和混合并行,构建一种易用高效的分布式并行训练模式,让算法人员不再需要关注算法模型到底需要用哪种模式训练。可以简化分布式并行编程,串行代码实现分布式训练,对用户屏蔽并行细节,并且保持高性能;计算逻辑上保持和单卡串行流程一致;实现上统一数据并行和模型并行,一套框架支持多种并行模式;结合集群拓扑优化性能。

2 解决方案

介绍了这么多,现在就让我们具体来看看论坛中的小伙伴们在分布式并行方面遇到了哪些问题并且如何解决的吧~

同学A使用了BERT的masked language model预训练方法,使用数据并行和模型并行进行训练,训练过程中发现loss并不下降,定位问题发现dataset生成数据时有个随机mask的操作,在不同进程中间随机结果会不一致。

参考链接:BERT中的MASK预训练在模型并行下数据生成时随机问题的解决方法_MindSpore_昇腾_华为云论坛

同学B在docker内安装nccl时,由于一开始建立容器的时候没有设置允许共享内存,使用nccl-tests测试会进行报错。

参考链接:docker下运行分布式代码报nccl错误:connect returned Connection timed out,成功解决_MindSpore_昇腾_华为云论坛

同学C在Ascend上进行多机/多卡训练时遇到load task fail报错,首先可以查看其它卡的plog,然后设置延长每张卡的最大等待时长。

参考链接:Ascend多卡训练报错davinci_model : load task fail,return ret xxx_MindSpore_昇腾_华为云论坛

同学D 在MindSpore并行模式配置时,错误使用了semi_parallel模式。

参考链接:MindSpore并行模式配置报错解决:Parallel mode dose not support **_MindSpore_昇腾_华为云论坛

同学E 也遇到了上述类似问题,PyNative配置为semi_auto_parallel模式时遇到报错。

参考链接:PyNative Only support STAND_ALONE,DATA_PARALLEL..._MindSpore_昇腾_华为云论坛

同学F误认为并行支持非2的幂次方的并行切分进而报错。

参考链接:the value of strategy must be the power of 2,but get xx报错解决_MindSpore_昇腾_华为云论坛

3 实践分析

3.1 整体概述

当然用户们对MindSpore的分布式并行模块也有自己的整体认知和理解:分布式并行模块总结_MindSpore_昇腾_华为云论坛

MindSpore分布式并行训练—概述_MindSpore_昇腾_华为云论坛

3.2 并行特性

同时半自动并行和全自动并行这两大特性的使用方法也被用户们悉数掌握。

比如采用半自动并行模式,展示了一个从数据到模型的并行转换的案例。

MindSpore分布式并行训练—自动并行架构介绍(一)半自动并行_MindSpore_昇腾_华为云论坛

然后仅用一行代码实现了单机脚本的全自动分布式并行。

MindSpore分布式并行训练—自动并行架构介绍(二)全自动并行_MindSpore_昇腾_华为云论坛

 

3.3 分布式训练通信方法

有总体的认知,具体算子用法当然也不会少啦!

比如MindSpore分布式并行训练中的Broadcast、AllGather、ReduceScatter以及AllReduce分布式训练通信方法。

1.Broadcast——集合通信原语相关操作被封装py文件中,对该文件中涉及集合通信的内容进行具体查看解析:MindSpore分布式并行训练—分布式训练通信方法(一)Broadcast_MindSpore_昇腾_华为云论坛

2.AllGather——对于分发在所有进程上的一组数据来说,Allgather会收集所有数据到所有进程上:MindSpore分布式并行训练—分布式训练通信方法(二)AllGather_MindSpore_昇腾_华为云论坛

3.ReduceScatte——实现通信算子的自动微分,为AllGather提供反向算子:MindSpore分布式并行训练—分布式训练通信方法(三)ReduceScatter_MindSpore_昇腾_华为云论坛

4.AllReduce——Allreduce将归约值并将结果分配给所有进程:MindSpore分布式并行训练—分布式训练通信方法(四)AllReduce_MindSpore_昇腾_华为云论坛

3.4 硬件平台区分

这里有个知识点需要提醒大家注意!分布式并行由于其硬件平台的不同有的时候也会有点小改变。

比如在GPU硬件平台上,MindSpore分布式并行训练的通信使用的是NCCL,采用的多进程通信库是OpenMPI。

参考链接:MindSpore分布式并行训练—GPU平台通信方法_MindSpore_昇腾_华为云论坛

而对于Ascend AI处理器,MindSpore分布式并行训练的通信使用了华为集合通信库HCCL。

参考链接:MindSpore分布式并行训练—Ascend平台通信方法_MindSpore_昇腾_华为云论坛

3.5 大V博文

其实我们官方也有MindSpore并行特性介绍,同时首席构架师金雪锋大佬给出了更加全面的总结,欢迎大家多多关注。

AI框架的分布式并行能力的分析和MindSpore的实践一混合并行和自动并行:

【转载】MindSpore大V博文之架构系列(三)——AI框架的分布式并行能力的分析和MindSpore的实践一混合并行和自动并_MindSpore_昇腾_华为云论坛

盘古大模型的推理解决方案:增量推理+分布式推理:

【转载】盘古大模型的推理解决方案:增量推理+分布式推理_MindSpore_昇腾_华为云论坛

希望这期的干货汇总能够小小地帮助到大家,当然啦,遇到其他相关问题也欢迎来我们论坛一起交流解决,欢迎各位开发者们多多贡献~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值