Advertisement

PyTorch 训练:Ring-Allreduce 分布式训练模式

阅读量:

在多块GPU上实现神经网络的并行训练时,需要确定如何将不同操作分配到可用的GPU上。本研究聚焦于一种称为数据并行随机梯度下降(SGD)的技术,在该方法中每次迭代中使用小批量样本进行计算。类似于标准SGD的方法,在每次迭代过程中各块GPU各自运行模型的不同部分,并在此过程中执行前向传播过程。随后执行误差反向传播计算以获得损失相对于模型参数的梯度值,并对各块GPU所计算出的部分梯度取平均值用于更新权重参数。值得注意的是,在单个GPU环境下也能完成类似的优化过程,在多块GPU环境下通过并行处理能够显著提升运算效率。

在仅有两块GPU且参数规模用兆字节衡量时,在这种情况下这些GPU之间的通信方式变得不那么关键;然而,在当你的模型拥有数十亿个参数时,在这种情况下每个参数都需要存储一个梯度值,在这种情况下所需的存储空间将达几十亿字节(这是因为每个单独的梯度都需要被计算并存储)。此时你必须协调几十块GPU之间的通信机制以便完成训练任务

例如,在考虑最基本或最直接采用的通信机制时

在该机制中直接实现的数据传输过程是:每个GPU不仅需要接收来自其他所有 GPU 的全部参数信息,并且还需要将自身计算得到的所有参数信息传递给其他 GPU节点完成汇总计算。随着系统中使用的 GPU 数量逐渐增多,在这种全连接式的通信模式下会导致整体通信开销也随之上升。

评估该通信策略在真实模型中的运行情况

Rin

全部评论 (0)

还没有任何评论哟~