模型并行(Model Parallelism)原理详解


1. 概览

数据并行(Data Parallelism):在不同的GPU上运行同一批数据的不同子集;

流水并行(Pipeline Parallelism):在不同的GPU上运行模型的不同层;

模型并行(Model Parallelism):将单个数学运算(如矩阵乘法)拆分到不同的GPU上运行;

数据并行参考:
《训练中的数据并行DP详细讲解》
流水线并行参考:
《流水线并行(Pipeline Parallelism)原理详解》

模型并行(Model Parallelism)是一种将深度学习模型的不同部分分布到多个计算设备(如GPU)上的技术,以提高训练和推理的效率。模型并行特别适合于大型模型,因为这些模型的参数可能超出单个设备的内存容量。

SMP 库如何将模型拆分为四层以实现双向张量并行(“tensor_parallel_degree”:2)的最简单示例。

2. 张量并行

张量并行(Tensor Parallelism)最初在 Megatron-LM 论文中提出的,它是一种训练大规模 Transformer 模型的有效模型并行技术。 张量并行是一种模型并行,其中特定模型权重、梯度和优化器状态在设备之间进行分割。

在张量并行中,每个 GPU 仅处理张量的一部分,并且仅为需要整个张量的操作聚合整个张量。

在这里插入图片描述

2.1 列划分

将 A 矩阵垂直化为 n 列,则 X 与 A 的矩阵的乘法可以转换为:
X A = X ∣ A 1 , A 2 , . . . , A n ∣ = ∣ X A 1 , X A 2 , . . . , X A n ∣ XA=X|A_1,A_2,...,A_n|=|XA_1,XA_2,...,XA_n| XA=XA1,A2,...,An=XA1,XA2,...,XAn

2.2 行划分

对 A 矩阵水平划分为 n 行,则矩阵 X 则需要垂直划分为 n 列,则 X 与 A 的矩阵的乘法可以转换为:
X A = ∣ X 1 , X 2 , . . . , X n ∣ ∣ A 1 , A 2 , . . . , A n ∣ T = X 1 A 1 + X 2 A 2 + . . . + X n A n XA=|X_1,X_2,...,X_n||A_1,A_2,...,A_n|^T=X_1A_1+X_2A_2+...+X_nA_n XA=X1,X2,...,Xn∣∣A1,A2,...,AnT=X1A1+X2A2+...+XnAn

利用这一原理,我们可以更新任意深度的 MLP,而无需 GPU 之间进行任何同步:

在这里插入图片描述

并行化多头注意力层因为它们具有多个独立的头,本质上已经是并行的!
image

图中表示 Transformer 模型的 MLP 和 Self-Attention 层上 Tensor Parallel 样式的分片,其中 Self-Attention/MLP 中的矩阵乘法通过分片计算进行。

3. 总结

应用场景

  • 超大规模模型:当模型的参数量非常大(例如,数十亿参数)时,单个设备无法承载,模型并行能够帮助解决这个问题。
  • 复杂模型结构:某些模型的结构可能使得模型并行成为一种合理的选择,例如分层的卷积神经网络(CNN)或变压器(Transformer)模型。

优点

  1. 能够处理超大规模模型。

  2. 提高计算资源的利用率。

缺点

  1. 增加了实现的复杂性。

  2. 可能导致较高的通信延迟,影响性能。

模型并行是一种重要的技术,特别是在处理复杂和大型深度学习模型时。通过合理地划分模型并优化设备之间的通信,可以显著提高训练和推理的效率。

参考

[1] https://docs.aws.amazon.com/sagemaker/latest/dg/model-parallel-intro-v2.html

[2] https://siboehm.com/articles/22/pipeline-parallel-training

[3] https://pytorch.org/tutorials/intermediate/TP_tutorial.html

[4] https://huggingface.co/docs/transformers/v4.15.0/parallelism


欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

欢迎关注知乎/CSDN:SmallerFL

也欢迎关注我的wx公众号(精选高质量文章):一个比特定乾坤

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值