✍内容

项目地址: 第8章 分布式训练

这一章主要讲了分布式训练常见的并行策略,为什么使用分布式训练是因为随着模型规模的扩大,对硬件(算力、内存)的发展提出要求。单一设备的算力及容量,受限于物理定律,持续提高芯片的集成越来越困难,难以跟上模型扩大的需求。为了解决算力增速不足的问题,人们考虑用多节点集群进行分布式训练,以提升算力,分布式训练势在必行。

🖊总结

1.什么是分布式训练?

分布式训练是指将模型放置在多台机器上,并在每台机器上的多个GPU上进行训练。这种训练方法的原因主要有两个:一是模型在一块GPU上放不下,二是使用多块GPU进行并行计算能够加速训练。然而,随着使用的GPU数量增加,各个设备之间的通信会变得复杂,导致训练速度下降。

分布式训练主要分为两种类型:数据并行(Data Parallel)模型并行(Model Parallel)。数据并行在于将数据集切分放到各计算节点,每个计算节点的计算内容完全一致,并在多个计算节点之间同步模型参数。而模型并行则是将模型单个算子计算分治到多个硬件设备上并发计算,以达到计算单个算子计算速度的目的。

在实际应用中,对训练任务的拆分方法是比较有限的,通常有如下几种:数据并行:将数据集切分放到各计算节点,每个计算节点的计算内容完全一致,并在多个计算节点之间同步模型参数,我们通常称这种并行训练方法为数据并行。数据并行可以解决数据集过大无法在单机高效率训练的问题,也是工业生产中最常用的并行方法。模型并行:通常指将模型单个算子计算分治到多个硬件设备上并发计算以达到计算单个算子计算速度的目的。我们一般会将单个算子的计算,利用模型并行的方式分配在配置相同的几个硬件上进行模型存储和计算,以保证计算步调一致。

2.什么是内存墙?

内存墙是指内存性能严重限制CPU性能发挥的现象。内存的性能指标主要有“带宽”(Bandwidth)和“等待时间”(Latency)。具体来说,在过去的20多年中,处理器的性能以每年大约55%速度快速提升,而内存性能的提升速度则只有每年10%左右。长期累积下来,不均衡的发展速度造成了当前内存的存取速度严重滞后于处理器的计算速度,内存瓶颈导致高性能处理器难以发挥出应有的功效,这对日益增长的高性能计算(High Performance Computing,HPC)形成了极大的制约。

3.常见的并行策略有哪些?

  1. 数据并行(Data Parallelism):将数据集切分并分配到多个节点上,每个节点使用本地数据对模型进行训练。训练过程中,各节点独立进行计算,并定期同步模型参数。数据并行可以充分利用计算资源,提高训练速度。

  2. 模型并行(Model Parallelism):当模型过大无法在一台机器上存储和计算时,可以将模型的不同部分分配到不同的节点上进行训练。每个节点只负责模型的一部分,并独立进行计算。模型并行需要精确地协调节点间的计算,以避免数据依赖性和通信开销。

  3. 流水线并行(Pipeline Parallelism):将模型的不同层或阶段分配到不同的节点上进行训练。每个节点负责模型的特定部分,并处理输入数据的一部分。流水线并行可以同时处理多个输入数据,提高训练速度。

  4. 混合并行(Hybrid Parallelism):结合数据并行、模型并行和流水线并行的策略。在混合并行中,数据被切分并分配到多个节点上,同时模型的不同部分和/或阶段也被分配到不同的节点上进行训练。这种策略可以充分利用计算资源,提高训练速度和模型的性能。

这里面的提到的并行策略可以根据项目地址加深自己的理解。