第九章:分布式训练

参考链接:https://github.com/datawhalechina/so-large-lm/tree/main

一、为什么分布式训练越来越流行

近年来,深度学习被⼴泛应⽤到各个领域,包括计算机视觉、语⾔理解、语⾳识别、⼴告推荐等。在这些不同的领域中,⼀个共同的特点就是模型规模越来越⼤,⽐如 GPT-3 模型的参数量达到1750亿。即使⽤1024张 80 GB 的 A100,那么完整训练 GPT-3 的时⻓都需要1个⽉。
模型规模的扩⼤,对硬件(算⼒、内存)的发展提出要求。然⽽,因为内存墙的存在,单⼀设备的算⼒及容量,受限于物理定律,持续提⾼芯⽚的集成越来越困难,难以跟上模型扩⼤的需求。
为了解决算⼒增速不⾜的问题,⼈们考虑⽤多节点集群进⾏分布式训练,以提升算⼒,分布式训练势在必⾏。

二、常见的并行策略

2.1 数据并行

数据并行,就是将数据进⾏切分,⽽每个设备上的模型是相同的,在两台设备上,分别得到的输出,都只是逻辑上输出的⼀半,将两个设备上的输出拼接到⼀起,才能得到逻辑上完整的输出。
当数据集较⼤,模型较⼩时,选择数据并⾏⼀般⽐较有优势,常⻅的视觉分类
模型,如 ResNet50,⽐较适合采⽤数据并⾏。

2.2 模型并行

当神经⽹络⾮常巨⼤,数据并⾏同步梯度的代价就会很⼤,甚⾄⽹络可能巨⼤到⽆法存放到单⼀计算设备中,这时候,可以采⽤模型并⾏策略解决问题。
模型并行,就是每个设备上的数据是完整的、⼀致的,⽽模型被切分到了各个设备上,每个设备只拥有模型的⼀部分,所有计算设备上的模型拼在⼀起,才是完整的模型。
模型并⾏的好处是,省去了多个设备之间的梯度 AllReduce;但是,由于每个设备都需要完整的数据输⼊,因此,数据会在多个设备之间进⾏⼴播,产⽣通信代价。

2.3 流水并行

当神经⽹络过于巨⼤,⽆法在⼀个设备上存放时,除了上述的模型并⾏的策略外,还可以选择流⽔并⾏。
流水并行 指将⽹络切为多个阶段,并分发到不同的计算设备上,各个计算设备之间以“接⼒”的⽅式完成训练。

2.4 混合并行

⽹络的训练中,也可以将多种并⾏策略混⽤。

三、总结

随着数据量的不断增加,若只使用单一模型对所有数据进行训练,那么模型运行的速度过慢,而且结果不是很精准,这就需要想其他方法来解决,分布式处理就是一个比较好的方案。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值