转载自 OneFlow 大佬:【深度学习】— 分布式训练常用技术简介
文章目录
分布式框架采用的常见底层支撑库,可以归类为以下三类:
- 集合通信库:用于分布式训练时,多个计算设备之间的集合通信,常见的有 Open MPI、NCCL、Gloo等.
- 数据加载与预处理库:分布式训练需要处理海量数据,这使得单机单卡时代不需要考虑的数据加载问题,在分布式时代很容易成为瓶颈,为此,通常需要对分布式训练中的数据即预处理做相关优化。如:现在市面上比较流行的Nvidia提供的DALI库。
- 分布式通信调度库:虽然分布式深度学习框架的通信大都采用的是以上提及的NCCL、Open MPI一类的通信库,但是因为深度学习框架设计的历史包袱以及实现质量的参差不齐,各框架原生的通信接口的效果并不稳定,也不易上手。在实际应用中,反而是第三方的Horovod成为了各框架的“标配第三方库”。Horovod 对底层通信库(MPI、NCCL、Gloo等)进行了封装&