卷积神经网络的分布式训练(二)分布式训练相关理论
该专题是我本科毕设的各个知识点介绍和分析,以及一些实验结果展示。本科毕业了,研究生开学,又进入了一个新的学习阶段,那么趁着有时间就总结一下这个课题,分享给大家~
如果你觉得对你有帮助,给我点赞吧!小女子能力有限,也欢迎大家批评指正。
一、分布式类型
单机多卡分布式
单机多卡分布式是指在同一个机器上实现的分布式,一台机器上可以拥有多张GPU,每一张GPU卡可以看作一个进程,不用涉及到不同机器之间的通信问题,一般可以用机器上的共享内存来通信。
多机多卡分布式
将数据或者模型分布在多台机器上,这就是所谓的多机分布式,多机多卡分布式可以包括很多台机器,每台机器上又可以有多张GPU。一般来说,这些机器通过互连网络或者分布式共享文件系统通信,但是互连网络最重要的指标是延迟、带宽和消息速率。
二、训练方式
数据并行
数据并行是指将建立好的神经网络复制到每台机器上,每台机器上有相同的模型,但是每台机器使用不同的数据进行模型的训练。
模型并行
模型并行,这种方式是指将一个神经网络模型从逻辑上划分为几个部分,然后分布在不同的机器上,但是每台机器上使用同一批数据训练。
三、参数同步机制
在数据并行方式当中,会涉及到不同机器的参数进行同步的问题。目前使用比较多的是基于参数服务器架构的同步方法和基于Ring-Allreduce架构的同步方法。
Ring-Allreduce是一种同步通信方式,其算法原理是:所有的机器被组织成一个逻辑环,每个机器只从左邻居接受数据并发送数据给右邻居,即每次同步每个机器只获得部分参数来进行更新,当一个完整的环完成时,每个机器都获得了完整的参数。
参考资料
[1] https://jinzequn.github.io/2017/12/05/tensorflow-distribute/
[2] 李明. 基于Spark的分布式深度学习系统的研究与实现 [D]; 电子科技大学, 2019.
[3] 何马均. 深度学习框架TensorFlow的高效分布式并行算法研究 [D]; 电子科技大学, 2019.