分布式训练基础与环境配置
来源:【手把手带你实战HuggingFace Transformers-分布式训练篇】分布式训练与环境配置
什么是分布式训练
- 分布式(Distributed)是指系统或计算任务被分布到多个独立的节点或计算资源上进行处理,而不是集中在单个节点或计算机上。
- 分布式模型训练是一种机器学习和深度学习领域中的训练方法,它通过将计算任务分发到多个计算资源或设备上来加速模型的训练过程。分布式训练通过并行计算的方式,将数据和计算任务分配到多个节点上,从而提高训练速度和处理大规模数据的能力。
数据并行
- 每个GPU上都复制一份完整模型,但是每个GPU上训练的数据不同
- 要求每张卡内都可以完整执行训练过程
流水并行
- 将模型按层拆开,每个GPU上包含部分的层,保证能够正常训练
- 不要求每张卡内都可以完整执行训练过程
张量并行
- 将模型每层的权重拆开,对于一份权重,每个GPU上各包含一部分,保证能够正常
- 训练不要求每张卡内都可以完整执行训练过程
如何进行分布式模型训练
- 单卡可以完成训练流程的模型
- 每个GPU上都复制一份完整模型,但是每个GPU上训练的数据不同(数据并行,Data Parrallel,DP)
- 单卡无法完成训练流程的模型
- 将模型按层拆开,每个GPU上包含部分的层,保证能够正常训练(流水并行,Pipeline Parrallel,PP)
- 将模型每层的权重拆开,对于一份权重,每个GPU上各包含一部分,保证能够正常训练(张量并行,Tensor Parrallel, TP)
- 混合策略
- 数据并行 +流水并行 +张量并行(3D并行)
3D并行示例图:
白色框两个数据并行(拆分数据),浅橙色框四个流水并行(拆分模型),浅橙色框内四个颜色小框张量并行(拆分权重)