深度学习框架中的并行
(1)首先要了解有哪些并行的种类。
(a)数据并行
(b)层内模型并行,这里有Fully Connected模型并行,Group Convolution并行等等。
(c)层间模型并行,这里包括一些流水线并行,,手动checkpoint和GPipe的知识。
(2) 常见的通信算子
首先要知道,集合通讯(Collective communication)有一对多,多对多。还有点对点通信,Point-to-Point通信。这些通信算子都是求导完备的通信算子。
a. broadcast, one sender, multiple receiver。
b. reduce,combine data from all senders。
c. all-reduce, Combine data from senders, deliver the result to all participant.
d. gather, multiple sender, one receiver
e. all-gather,gather messages from all, deliver messages to all participants.
f. all-to-all, a transpose. internal implementation is complex. 原本是数据切分,现在可以编成模型切分。
g. scatter, inverse to gather.
h. all scatter.
(3)介绍一下简单参数并行。
首先,数据并行就是,模型复制多次,拆分数据。现在的简单参数并行就是拆分模型,在需要进行线性操作之前,用all-gather收集信息。在反向传播之前进行一次reduce-scatter。
数据并行和模型并行的区别。数据并行在进行操作的时候(只针对前向来说),是不需要通信的。比如矩阵乘可以一直往前面走,而模型并行需要一次all-gather。
层内模型并行。
如何实现由模型并行到数据并行的转换呢?就是一个比较重要的算子的功能了。all-to-all。all-to-all配合上all-gather就可以实现模型的各种并行操作了。
场景一:
Fully Connected模型并行。在人脸场景下,由于feature只有1k左右,但是由于人的id众多,可能到几百万,所以最后一层模型就上G。为了handle这种情况,肯定是要模型并行的。如果觉得之后比较难算loss,可以进行一次all-to-all,但是实际上是不需要的,这里涉及到一个softmax函数的性质(我不会)。
场景二:
group convolution:
组卷积,其实只需要一次通讯,所以可以判一次开头和结尾。
流水线并行(Pipeline Parallelism)
由于在原来的流水线中,只有等上一块卡做完之后,下一块卡才能开始工作,这显然是不怎么科学。所以就可以把数据拆一拆,算一个部分之后,立马交给下一张卡去进行计算。
手动checkpoint与Gpipe。
在流水线并行的这个过程当中,由于在反向传播的时候可能需要保留中间结果,这意味着更多的显存占用。所以可以设计一个策略,在需要进行反向传播的时候,我们再重新进行一次前向传播。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~