开发者社区> 问答> 正文

流水线并行是如何工作的?

流水线并行是如何工作的?

展开
收起
夹心789 2024-07-04 12:06:28 50 0
2 条回答
写回答
取消 提交回答
  • 所谓流水线并行,就是由于模型太大,无法将整个模型放置到单张GPU卡中;因此,将模型的不同层放置到不同的计算设备,降低单个计算设备的显存消耗,从而实现超大规模模型训练。

    如下图所示,模型共包含四个模型层(如:Transformer层),被切分为三个部分,分别放置到三个不同的计算设备。即第 1 层放置到设备 0,第 2 层和第三 3 层放置到设备 1,第 4 层放置到设备 2。

    image.png

    相邻设备间通过通信链路传输数据。具体地讲,前向计算过程中,输入数据首先在设备 0 上通过第 1 层的计算得到中间结果,并将中间结果传输到设备 1,然后在设备 1 上计算得到第 2 层和第 3 层的输出,并将模型第 3 层的输出结果传输到设备 2,在设备 2 上经由最后一层的计算得到前向计算结果。反向传播过程类似。最后,各个设备上的网络层会使用反向传播过程计算得到的梯度更新参数。由于各个设备间传输的仅是相邻设备间的输出张量,而不是梯度信息,因此通信量较小。
    image.png

    参考文档https://blog.csdn.net/2301_78285120/article/details/132702269

    2024-07-06 09:30:41
    赞同 展开评论 打赏
  • 流水线并行(Pipeline Parallel, PP)是模型的层与层之间的拆分,将不同的层放到不同的GPU上。在计算过程中,必须顺序执行,因为后面的计算过程依赖于前面的计算结果。为了保持流水线并行的高吞吐,需要将一个较大的Batch size切分成多个小Batch。

    2024-07-04 13:43:59
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于ACK One和ACR构建CI/CD流水线最佳实践 立即下载
基于阿里云K8S服务快速构建DevOps流水线 资料下载 立即下载
低代码开发师(初级)实战教程 立即下载