赞
踩
如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号“圆圆的算法笔记”,更多算法笔记和世间万物的学习记录~
随着深度学习模型尺寸逐渐扩大、训练数据量显著上升,目前工业界的大多数场景都需要使用分布式的方式进行模型训练。今天来跟大家聊聊Tensorflow、Pytorch分布式训练的底层实现逻辑。有的算法同学可能会想,我只要深入研究模型就可以了,为什么还要了解这些工程上的东西,有专门的人搭好架子直接用不就行了?正是因为要用这些架子,才更应该了解这些架子的底层逻辑,这样才能在实验中快速排查运行效率低、数据读取错误、效果不符合预期等问题,上述问题和分布式的工程实现逻辑是息息相关的。
本文将对分布式训练原理,以及常见的Parameter Server分布式架构和Ring Allreduce分布式架构进行简单介绍。
当我们模型尺寸及训练数据量大幅增加时,如果还有一个GPU跑速度会非常慢,因此分布式训练被越来越多的应用。分布式训练,即在多个机器上一起训练模型,提高训练效率。主要有两种思路,一种思路是模型并行,即将一个模型分拆成多个小模型,分别放在不同的设备上,每个设备跑模型的一部分。由于模型各个部分关系很大,这种方式效率很低,需要不同设备模型之间的频繁通信,一般不会使用这种方法。另一种思路是数据并行,完整的模型在每个机器上都有,但是把数据分成多份给每个模型,每个模型输入不同的数据进行训练。数据并行是目前最常用的分布式实现方法。
下面我们介绍两种分布式框架,分别是Tensorflow中采用的Parameter Server架构和Pytorch中采用的Ring AllReduce架构。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。