11.7. 总结¶
大型机器学习模型的出现带来了对于算力和内存需求的快速增长,催生了分布式训练系统的出现。
分布式训练系统的设计往往遵循“分而治之”的设计思路。
利用分布式训练系统,人们可以显著提升训练性能,体现经济性,并且帮助防范硬件故障。
分布式训练系统可以通过数据并行增加设备来提升算力。
当单节点内存不足时,可以通过模型并行解决单设备内存不足。模型并行有两种实现方式:算子内并行和算子间并行。
大型模型并行系统容易出现设备使用气泡,而这种气泡可以通过流水线并行解决。
分布式训练系统往往运行在计算集群之中,集群网络无法提供充足的网络带宽来传输大量训练中生成的梯度。
为了提供海量的通信带宽,机器学习集群拥有异构的高性能网络,包括以太网、加速器高速互连技术NVLink和高带宽网络InfiniBand。
为了解决单节点瓶颈,可以使用AllReduce算法来分摊梯度聚合过程中产生的计算和通信操作,同时实现负载均衡。
参数服务器可以帮助实现灵活的梯度同步和异步训练,从而防范集群中可能出现的落后者服务器。
参数服务器常用数据副本技术解决数据热点问题和防范硬件故障。