A Generic Communication Scheduler for Distributed DNN Training Acceleration 论文阅读
#1. 引言
训练 DNN 通常是一个耗时的过程,这主要是由于数据和模型的大小不断增加。为了加速训练,常用的方法是数据并行(Data Parallel)。然而,数据并行的性能提升并非线性增加,主要的原因是通信开销。
因此,研究者们提出了多种通信加速的方法。例如,使用 RDMA 替换 TCP,使用 Ring-AllReduce 替换 All-Reduce, 使用其他的 MPI 实现或者 NCCL 替换参数服务器等。
最近,一种新的方法被提出,称为通信调度。它的基本思想是改变不同 DNN 层的传输顺序,以更好地减少通信开销。在不影响计算结果的情况下,提高训练性能。
在本文中,我们展示了基于优先级的通信调度加上 Tensor 分区的方案。这不仅是理论上(在无系统开销的情况下)的最优策略,也很通用。可以加读大多数流行的深度学习框架,包括同/异步 PS 和 All-Reduce, 不同的网络传输协议(如 TCP 和 RDMA)。
然而,现有的设计由于以下两个原因,没有按照上述的方式进行调度:
- 对多种架构的排列组合支持有限: 存在很多不同的深度学习框架和网络协议的组合,现有的调度器通常只支持其中的一部分。例如 P3 是在 MXNet 上修改,TicTac 是基于 TensorFlow 的,要在另一个框架上使用,就需要重新实现。
- 对各种系统设置的适应性不强: 例如同一个参数在 PS 架构和 All-Reduce 架构下的最优值是不同的。