大模型分布式训练并行技术(四)张量并行

引言

在Transformer架构里,有两块主要的计算量较大的部分,一是Self-Attention,二是MLP。在前面的文章中,我们已经介绍了模型并行和数据并行,本文将介绍张量并行,这是一种更加细粒度的并行方式,可以进一步提高模型的训练效率。

张量并行使用了矩阵乘法可以并行计算的特性,将模型的参数划分为多个部分,每个部分在不同的设备上进行计算,最后将结果进行汇总。下面,我们分别看FFN和Self-Attention的张量并行实现。

MLP

MLP的主要构建块都是完全连接的 nn.Linear,后跟非线性激活 GeLU。

按照 Megatron[2] 的论文符号,我们可以将其点积部分写为 Y = GeLU(XA),其中 X 和 Y 是输入和输出向量,A 是权重矩阵。

如果我们以矩阵形式查看计算,很容易看出矩阵乘法如何在多个 GPU 之间拆分:

如果我们将权重矩阵 A 按列拆分到 N 个 GPU 上,并行执行矩阵乘法 XA_1 到 XA_n,那么我们将得到 N 个输出向量 Y_1、Y_2、...、Y_n,这些向量可以独立输入到 GeLU 中:

利用这一原理,我们可以更新任意深度的 MLP,而无需 GPU 之间进行任何同步,直到最后,我们才需要重建输出向量。

Megatron-LM 论文作者为此提供了一个有用的例子:

Self-Attention

Self-Attention 的张量并行更简单,因为self-attention天然的是多头注意力机制,可以将每个头的计算分配到不同的 GPU 上。

在上图中,我们可以用2个GPU并行的计算self-attention,其中每个GPU计算一个头的注意力机制。那原则上,有几个头就可以用几个GPU并行计算。

特别注意事项:TP 需要非常快的网络,因此不建议跨多个节点进行 TP。实际上,如果一个节点有 4 个 GPU,则最高 TP 度为 4。如果你需要 8 的 TP 度,则需要使用至少有 8 个 GPU 的节点。

下一篇我们看看混合并行。

参考

1\] [Model Parallelism](https://link.juejin.cn?target=https%3A%2F%2Fhuggingface.co%2Fdocs%2Ftransformers%2Fv4.15.0%2Fen%2Fparallelism "https://huggingface.co/docs/transformers/v4.15.0/en/parallelism") \[2\] [Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM](https://link.juejin.cn?target=https%3A%2F%2Farxiv.org%2Fabs%2F2104.04473 "https://arxiv.org/abs/2104.04473") ## 欢迎关注我的GitHub和微信公众号,来不及解释了,快上船! [GitHub: LLMForEverybody](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fluhengshiwo%2FLLMForEverybody "https://github.com/luhengshiwo/LLMForEverybody") 仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!

相关推荐
小和尚同志17 分钟前
A社 npm 包事故导致 Claude Code 源码泄漏?
人工智能·aigc·claude
Σίσυφος190021 分钟前
C++ 多肽经典面试题
开发语言·c++·面试
Code_LT31 分钟前
【AIGC】多 Agent 架构 还是 单Agent?Agent Teams vs SubAgent
架构·aigc
软件测试媛32 分钟前
2026软件测试面试题大全(含答案+文档)
功能测试·测试工具·面试·ai软件测试
程序员陆业聪2 小时前
字节跳动开源 DeerFlow 2.0 源码拆解:14层Middleware、Sub-Agent并发编排和结构化记忆是怎么做的
aigc
AI先驱体验官2 小时前
智能体变现:从技术实现到产品化的实践路径
大数据·人工智能·深度学习·重构·aigc
NAGNIP3 小时前
一文搞懂CNN经典架构-DenseNet!
算法·面试
花间相见3 小时前
【MySQL面试题】—— MySQL面试高频问题汇总:从原理到实战,覆盖90%考点
数据库·mysql·面试
野生技术架构师4 小时前
1000道互联网大厂Java岗面试原题解析(八股原理+场景题)
java·开发语言·面试
YuanDaima20484 小时前
[CrewAI] 第15课|构建一个多代理系统来实现自动化简历定制和面试准备
人工智能·python·面试·agent·crewai