上海交大招生办解读最新高招如同OpenAI训练大型神经网络的四种基本方法展现了教育领域的智慧与力量
来源:上海交大招生办
编译:张伟
编辑:李明
在当前的人工智能领域,大型神经网络是热门话题之一。那么,如何有效地训练这些巨大的模型呢?近期,曾推出GPT-3的大规模预训练模型的OpenAI发布了一篇文章,详细介绍了基于GPU的四种节省内存并行训练方法。这四种方法分别是:
数据并行——不同GPU上同时处理不同的数据子集。
流水线并行——不同GPU上分担模型各个层次的计算。
张量并行——将单一运算拆分到多个GPU上进行。
专家混合(MOE)——每层只通过一小部分参数来处理每个示例。
图注:展示了三层模型在各种并行策略下的执行情况,每一种颜色代表一个层级,用虚线隔开不同的GPU。
数据并行需要确保所有工作都有相同的参数副本,这意味着存储参数副本带来了额外成本,但可以通过一些策略来增加可用RAM,如在两次使用之间将参数卸载到CPU内存。在同步梯度更新时,每个worker独立计算梯度、平均后再更新新参数,而步骤2中阻塞通信可能会影响吞吐量,有异步同步方案可以消除这一损耗但会影响学习效率,因此通常采用同步方式。
流水线并行则是将模型水平分割成连续块,每个块仅保存一部分参数,因而每个GPU所需内存按比例减少。由于顺序依赖性,在worker等待前一个机器输出作为其输入时,将产生大量空闲时间,这被称为“泡沫”。我们可以重用数据并行思想,将批次拆分为微批次,使得每个worker只处理微批次的一部分,以降低泡沫成本,并使新计算与等待时间重叠。梯度在微批次间进行平均,并且只有所有微批次完成后才更新参数。
张量并排列垂直和水平拆分,可以提高矩阵乘法操作,比如Transformer中的自注意力和MLP层使用Megatron-LM中的这种技术;或像PTD-P那样跨维度平滑通信以减少泡沫损失;还有序列並平直接利用输入序列按时间轴拆分以减少峰值内存消耗。
最后,还有专家混合(MoE)方法,它通过选择性激活重新计算来节省内存,但也能扩展到数万亿级别的大型网络。此外,还有一些其他设计,如检查点、混合精度训练和零复制技术(ZeRO),它们也有助于更好地管理设备资源,从而实现对越来越大的神经网络培训。