大模型学习路线(6)——分布式并行 & DeepSpeed

文章目录

一、分布式并行理论

0. 分布式并行内容介绍

1. 数据并行

1.1. 数据并行DP

1.2. 分布式数据并行DDP

1.3. 分片共享数据并行FSDP

1.4. 主要区别

2. 模型并行

2.1. 流水并行PP

2.2. 张量并行TP

3. 多维混合并行

二、分布式并行实践(以DeepSpeed为例)

参考说明


一、分布式并行理论

0. 分布式并行内容介绍

        分布式并行分数据并行模型并行(张量并行、流水并行)多维混合并行三类。

图1. 分布式并行(引用自ZOMI酱up主)        

1. 数据并行

         将大数据集分割成小批次,分布到多个设备上进行训练。每个设备拥有模型的完整副本,独立进行前向和反向传播。通过聚合各个设备的梯度来更新模型参数。

       图1. 数据并行(引用自ZOMI酱up主)

# 数据并行关键代码
device = torch.device('cuda: 1, 3')

model = CreateModel()

# 数据并行的标记
model = nn.DataParallel(model, device_ids=[1, 3])    
model.to(device)

1.1. 数据并行DP

  • 也称为单机多卡数据并行。
  • 在单个节点上使用多个GPU进行训练。
  • 将输入数据分割并在不同的GPU上并行处理。
  • 梯度同步通常通过简单的集合操作(如sum或average)实现。

1.2. 分布式数据并行DDP

  • 适用于跨多个节点的分布式训练。
  • 每个节点都有模型的完整副本和一部分数据。
  • 使用 PyTorch 的 DistributedDateParallel 模块,该模块处理了梯度的聚合和通信。
  • 需要配置进程组(process group)来管理不同节点间的通信。

1.3. 分片共享数据并行FSDP

  • 一种更细粒度的数据并行策略,适用于大规模模型。
  • 模型被分割成多个部分(shards),每个部分在不同的GPU上运行。
  • 适用于单个GPU无法容纳整个模型的情况。
  • 需要更复杂的通信和同步机制,因为它涉及到模型的切分

1.4. 主要区别

  • 应用场景:DP主要用于单机多GPU环境,DDP适用于多节点多GPU的分布式环境,而FSDP适用于需要在多个GPU上分割模型的大规模模型训练。
  • 模型和数据分布:DP中模型副本在不同GPU上但在同一节点,DDP模型副本分布在不同节点,FSDP模型被切分成多个部分分布在不同GPU上。
  • 通信复杂性:FSDP在模型切分和梯度同步方面通常比DP和DDP更复杂。

2. 模型并行

图2. 模型并行(流水并行、张量并行,引用自ZOMI酱up主)

2.1. 流水并行PP

        按模型Layer层切分到不同设备,即层间并行。

图3. 流水并行(引用自ZOMI酱up主)

2.2. 张量并行TP

        数学原理如下:

(1)双设备张量切分

图4

(2)四设备张量切分

图5

(3)切分到两个节点的 Tensor 节点张量重排

图6

3. 多维混合并行

图7

3.1. 混合并行(Hybrid Parallelism)

        混合并行包括数据并行、模型并行(张量并行和流水并行)以及pipeline并行。指将不同的并行策略结合使用,以充分利用硬件资源并提高训练效率。它可以显著提高大规模分布式训练的效率,尤其是在处理大型模型时。

3.2. 多维并行(Multi-Dimensional Parallelism)

        多维并行是指在不同的维度上应用并行策略,例如在数据维度、模型维度和计算步骤维度上同时进行并行处理。这种并行方式允许模型在多个维度上扩展,从而更好地适应不同的硬件配置和训练需求,可以更全面地利用分布式系统的计算能力。


二、分布式并行实践(以DeepSpeed为例)

DeepSpeeddemo参考如下链接:

视频教程:DeepSpeed:炼丹小白居家旅行必备【神器】_哔哩哔哩_bilibili

github: GitHub - OvJat/DeepSpeedTutorial: DeepSpeed Tutorial


参考说明

1. DeepLearningSystem/06Foundation/08Parallel/old at main · chenzomi12/DeepLearningSystem (github.com)icon-default.png?t=N7T8https://github.com/chenzomi12/DeepLearningSystem/tree/main/06Foundation/08Parallel/old2. 混合并行?多维并行?有多维度混合在一起并行吗?【分布式并行】系列第06篇_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1gD4y1t7Ut/?spm_id_from=333.788&vd_source=741fbd6a09f652574b8e335339fdc5703. CIFAR-10 Tutorial - DeepSpeedicon-default.png?t=N7T8https://www.deepspeed.ai/tutorials/cifar-10/4. Getting Started - DeepSpeedicon-default.png?t=N7T8https://www.deepspeed.ai/getting-started/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值