问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/qq_36803941/article/details/142660747

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

1. 概览

  • 数据并行(Data Parallelism):在不同的GPU上运行同一批数据的不同子集;
  • 流水并行(Pipeline Parallelism):在不同的GPU上运行模型的不同层;
  • 模型并行(Model Parallelism):将单个数学运算(如矩阵乘法)拆分到不同的GPU上运行;

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=X∣A1 ,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_nXA=∣X1 ,X2 ,...,Xn ∣∣A1 ,A2 ,...,An ∣T=X1 A1 +X2 A2 +...+Xn An

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

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

图中表示 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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号