当前位置: 首页 > news >正文

大模型分布式训练并行技术(五)混合并行

引言

你可能在很多地方听过3D并行技术,我们之前讨论的数据并行,流水线并行,张量并行都是属于1D并行技术。

在某些分类中,流水线并行和张量并行都被划归为模型并行技术。

混合并行技术是指同时使用多种并行技术,比如数据并行和模型并行,或者数据并行和流水线并行,或者数据并行和张量并行。

DP+PP

数据并行和流水线并行的结合,是一种非常常见的2D混合并行技术。

下图是来自 DeepSpeed 流水线并行教程,演示了如何将 DP 与 PP 结合起来。

请添加图片描述

这里重要的是要看到 DP Rank 0 看不到 GPU2,而 DP Rank 1 看不到 GPU3。对于 DP 来说,只有 GPU 0 和 1,它向其中提供数据,就好像只有 2 个 GPU 一样。GPU0 使用 PP“秘密”将部分负载offload到 GPU2。而 GPU1 也通过 GPU3 来做同样的事情。

由于每个维度至少需要 2 个 GPU,因此这里至少需要 4 个 GPU。

DP+PP+TP

为了实现更高效的训练,就出现了3D 并行,将 PP 与 TP 和 DP 相结合。如下图所示。

请添加图片描述

该图来自博客3D parallelism: Scaling to trillion-parameter models。

由于每个维度至少需要 2 个 GPU,因此这里至少需要 8 个 GPU。

DP+PP+TP+ZeRO

也就是常说的4D并行,ZeRO 是一个由 DeepSpeed 提出的技术,可以将模型的参数划分为多个部分,每个部分在不同的设备上进行计算,最后将结果进行汇总。本质上是ZeRO-DP 与 PP(和可选的 TP)结合。

ZeRO-DP 见大模型分布式训练并行技术(二)数据并行

注意:当 ZeRO-DP 与 PP(和可选的 TP)结合时,它通常只启用 ZeRO 第 1 阶段(优化器分片)。

虽然理论上可以将 ZeRO 第 2 阶段(梯度分片)与PP结合使用,但这会对性能产生不利影响。

每个微批次都需要一个额外的 Reduce-Scatter 集合来在分片之前聚合梯度,这可能会增加大量的通信开销。根据PP的性质,会使用较小的微批次Macro-Batch,而重点是尝试平衡算术强度(微批次大小)和最小化流水线气泡(微批次数量)。因此,这些通信成本将受到影响。

此外,由于 PP,层数已经比正常情况少,因此内存节省不会很大。PP 已经将梯度大小减少至 1/PP,因此在此基础上的梯度分片节省不如纯 DP 显著。

出于同样的原因,ZeRO 第 3 阶段也不是一个好的选择——需要更多的节点间通信。

由于我们有 ZeRO,另一个好处是 ZeRO-Offload。由于这是第 1 阶段,因此优化器状态可以卸载到 CPU。

参考

[1] Model Parallelism

[2] 流水线并行教程

[3] 3D parallelism: Scaling to trillion-parameter models

欢迎关注我的GitHub和微信公众号,来不及解释了,快上船!

GitHub: LLMForEverybody

仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!


http://www.mrgr.cn/news/70174.html

相关文章:

  • Ceph后端两种存储引擎介绍
  • wordpress站外调用指定ID分类下的推荐内容
  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • 【优选算法篇】化繁为简,见素抱朴:从乱象中重构秩序的艺术
  • Go语言开发基于SQLite数据库实现用户表查询详情接口(三)
  • 开源 - Ideal库 - 常用枚举扩展方法(二)
  • Python金融大数据分析概述
  • 量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
  • BLIP/BLIP-2模型全解析
  • Java基础Day-Sixteen
  • 智能量化模型在大数据下的中阳策略发展
  • 测试中的精准校验:Levenshtein库的应用与实践
  • 第三百一十八节 Java线程教程 - Java线程优先级、Java守护线程
  • 鸿蒙NEXT开发笔记(十三)仿微信聊天App的BASE64转像素图
  • kafka(启动集群,使用spring方法,自定义配置)
  • webpack 性能优化方案 - 代码分离(分包)
  • 部署Apollo 9.0-1 安装docker(阿里源安装)
  • 解读Nature:Larger and more instructable language models become less reliable
  • Android13 默认开启冻结进程
  • 电销智能机器人,怎么使用,操作复杂吗?
  • linux rocky 9.4部署和管理docker harbor私有源
  • ANDROIDWORLD: A Dynamic Benchmarking Environment for Autonomous Agents论文学习
  • Rust实战项目与未来发展——跨平台应用开发项目实践
  • 智慧机房建设整体解决方案
  • 基于h5 移动网赚项目设计与实现springboot+论文源码调试讲解
  • 【Windows】一条命令搞定文件移动与删除!`copy`、`move`、`del`详解