跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

深度学习并行训练算法详解:DDP、TP、PP 与 ZeRO

详细解析了深度学习中的主流并行训练算法,涵盖数据并行(DDP)、流水线并行(PP)、张量并行(TP)、序列并行(SP)及零冗余优化(ZeRO)。文章首先区分了模型数据与非模型数据的内存占用,随后阐述了各类并行技术的核心机制、优缺点及适用场景。重点介绍了 ZeRO 如何通过分片优化器状态、梯度和参数来消除显存冗余,并结合硬件互联特性分析了通信开销对性能的影响。内容旨在帮助开发者根据模型规模和硬件条件选择合适的并行策略,以实现大规模模型的高效训练。

imJackJia发布于 2025/2/6更新于 2026/10/2593 浏览
深度学习并行训练算法详解:DDP、TP、PP 与 ZeRO

前言

随着深度学习模型规模的不断扩大,单个计算设备(如 GPU)的显存和算力已无法满足训练需求。为了解决这一问题,分布式并行训练技术应运而生。本文将详细介绍几种主流的深度学习并行方法,包括数据并行(Data Parallelism)、模型并行(Model Parallelism)、张量并行(Tensor Parallelism)、流水线并行(Pipeline Parallelism)、序列并行(Sequence Parallelism)以及零冗余数据并行(ZeRO)。

在深入具体算法之前,我们需要明确模型训练中涉及的两类主要数据:

  • Model Data:
    • 模型权重(Model Weights)
    • 模型权重的梯度(Gradients)
    • 优化器的状态(Optimizer States)
  • Non-Model Data:
    • 模型逐层的特征向量(Activations)

1. 数据并行 (Data Parallelism, DP)

经典的数据并行算法是在多个设备上分别拷贝一份完整的模型参数副本。每个设备接收不同的输入数据批次(Batch),独立进行前向传播和反向传播计算。由于各设备计算的是同一模型的不同数据子集,因此它们之间需要定期同步模型参数的梯度。

通常采用 AllReduce 操作来聚合梯度,确保所有设备上的模型参数保持一致。随着模型参数量增大,单卡显存无法容纳完整模型时,单纯的数据并行会遇到瓶颈,此时需要引入模型并行技术。

1.1 分布式数据并行 (DDP)

DDP 是 PyTorch 等框架中广泛使用的数据并行实现。它通过进程组(Process Group)管理多卡通信,利用 NCCL 库加速 GPU 间通信。相比传统 DP,DDP 避免了主节点处理梯度的瓶颈,实现了更高效的梯度同步。

2. 模型并行 (Model Parallelism, MP)

当模型过大无法放入单卡显存时,需要将模型切分到多个设备上。模型并行主要分为层间划分和层内划分两种策略。

2.1 流水线并行 (Pipeline Parallelism, PP)

流水线并行是对模型层间进行划分(Inter-layer Parallelism)。假设一个模型有 N 层,将其划分为 K 个阶段,每个阶段分配给一个 GPU。数据像流水线一样依次流过各个阶段。

  • 优点:可以显著降低单卡显存占用。
  • 缺点:存在气泡时间(Bubble Time),即部分 GPU 在前向传播完成后等待后续阶段完成反向传播,导致计算资源闲置。
  • 优化方案:通过微批次(Micro-batching)技术,将一个大 Batch 拆分为多个小批次交错执行,减少气泡时间。相关研究包括 PipeDream、GPipe 和 Chimera。

2.2 张量并行 (Tensor Parallelism, TP)

张量并行是对模型层内进行划分(Intra-layer Parallelism),主要针对矩阵乘法运算。例如,在 Transformer 的 Self-Attention 或 MLP 层中,将大矩阵按行或列切分到不同 GPU 上。

  • 1D Tensor 并行:每一层的输出是不完整的,传入下一层前需执行 All-gather 操作使每个 GPU 获得完整输入。
  • 2D/2.5D/3D Tensor 并行:对输入和权重同时进行多维划分,中间层无需频繁通信,仅在最后做一次通信。这大幅降低了扩展至大量设备时的通信开销,且能与 Pipeline 并行兼容。

硬件连接方式对 TP 性能影响显著。高带宽互联(如 NVLink)可显著降低通信延迟,而节点间 PCIe 连接则可能成为瓶颈。在实际部署中,常采用节点内 NVLink 高速互联,节点间 PCIe 互联的混合架构。

2.3 序列并行 (Sequential Parallelism, SP)

张量并行主要解决 Model Data 导致的内存瓶颈,但 Non-Model Data(如 Activations)也可能成为限制因素。例如在 NAS(神经架构搜索)任务或长序列 Transformer 训练中,Self-attention 机制的复杂度为 O(L^2),其中 L 为序列长度,会导致激活值占用大量显存。

序列并行旨在解决由激活值引起的性能瓶颈。其原理是将序列维度切分到不同设备上,结合张量并行使用,进一步释放显存空间。

3. 零冗余数据并行 (ZeRO)

ZeRO (Zero Redundancy Optimizer) 是一种旨在消除数据并行中冗余内存占用的技术。训练过程中的 GPU 内存开销主要包括:

  1. 模型状态内存:
    • 梯度
    • 模型参数
    • 优化器状态(如 Adam 的二阶动量,往往占据最大比例)
  2. 激活内存:前向传播产生的中间结果,用于支持反向传播。
  3. 碎片内存:由于张量生命周期不同导致的内存碎片,可能导致即使总内存充足也无法分配连续块。

ZeRO 根据张量的不同生命周期主动管理内存,防止碎片并减少冗余。ZeRO 分为三个阶段:

  • Stage 1:仅分片优化器状态。
  • Stage 2:分片优化器状态 + 梯度。
  • Stage 3:分片优化器状态 + 梯度 + 模型参数。

通过 ZeRO Stage 3,可以将模型参数也分片存储,使得在有限显存下能够训练更大的模型。同时,ZeRO 还引入了动态内存管理,有效缓解内存碎片问题。

4. 总结与选型建议

在实际工程中,选择何种并行策略取决于模型规模、硬件资源和网络环境:

  • 小模型:优先使用 DDP,简单高效。
  • 中等模型:若显存不足,可结合 PP 和 TP。
  • 超大模型:必须使用 ZeRO Stage 3 配合 TP 和 PP,以最大化显存利用率。
  • 长序列任务:考虑引入 Sequence Parallelism 以减少激活内存。

理解这些并行技术的原理与权衡,有助于构建更高效、可扩展的大模型训练系统。

目录

  1. 前言
  2. 1. 数据并行 (Data Parallelism, DP)
  3. 1.1 分布式数据并行 (DDP)
  4. 2. 模型并行 (Model Parallelism, MP)
  5. 2.1 流水线并行 (Pipeline Parallelism, PP)
  6. 2.2 张量并行 (Tensor Parallelism, TP)
  7. 2.3 序列并行 (Sequential Parallelism, SP)
  8. 3. 零冗余数据并行 (ZeRO)
  9. 4. 总结与选型建议

更多推荐文章

查看全部
  • 大模型时代:新手与程序员如何转型入局
  • HDFS 读写机制深度解析:分布式存储核心原理
  • Python 第三方库实战:键盘监听与学生管理系统
  • 基于 LVM 部署 MinIO 分布式高可用集群
  • ONLYOFFICE AI 功能详解与使用指南
  • Xilinx FPGA 开发:Vivado 流与 Vitis 流对比解析
  • 2025 年开源图生图模型盘点:Kandinsky 5.0、Qwen-Image 与 Z-Image
  • Python 函数、列表与元组核心用法及实战案例
  • Linux 内核链表分析与实现原理
  • Llama-Factory 与传统微调平台深度对比测评
  • C++ 内存管理技巧与最佳实践
  • Linux 文件描述符与重定向实战:从原理到 minishell 实现
  • FlashAttention-4 算法解析:Blackwell 架构下的性能优化
  • 区块链共识机制深度解析:PBFT、Tendermint 与 DAG
  • PyCharm 2023 汉化及常用插件安装配置指南
  • ES6 数组 some 与 every 方法用法
  • Java 数据结构:从树形结构到二叉树详解
  • C/C++ 算法入门:一维动态规划基础实战
  • CNN 经典架构演进与 PyTorch 实战指南
  • Python 大麦网自动化抢票技术实现指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online