随着模型参数规模与数据规模的不断扩展,如何在有限的计算资源下高效地训练模型已经成为制约大语言模型研发的关键技术挑战。其中,主要面临着两个技术问题:一是如何提高训练效率;二是如何将庞大的模型有效地加载到不同的处理器中。
3D 并行训练
3D 并行策略实际上是三种常用的并行训练技术的组合,即数据并行(Data Parallelism)、流水线并行(Pipeline Parallelism)和张量并行(Tensor Parallelism)。有的工作也会使用模型并行一词,它同时包括了张量并行和流水线并行。
![图片名称](https://i-blog.csdnimg.cn/direct/5adeb89153084d03bb5ee2ca0b840651.png)
数据并行,数据并行是一种提高训练吞吐量的方法,它将模型参数和优化器状态复制到多个 GPU 上,然后将训练数据平均分配到这些 GPU 上。这样,每个 GPU 只需要处理分配给它的数据,然后执行前向传播和反向传播以获取梯度。当所有 GPU 都执行完毕后,该策略会将不同 GPU 的梯度进行平均,以得到整体的梯度来统一更新所有 GPU 上的模型参数。如上图所示,四条数据被分成两份,由两张卡进行分别计算,然后我们会将两张卡的梯度进行平均后再更新模型,这样便等效于执行了批次为 4 的梯度更新。鉴于梯度计算在不同 GPU 上的独立性,数据并行机制展现出高度的可扩