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

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

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

imJackJia发布于 2025/2/6更新于 2026/7/2438 浏览
深度学习并行训练算法详解: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. 总结与选型建议
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AI 毕业论文写作指令指南
  • JiuwenClaw AI 智能体上手体验:任务规划与上下文管理
  • OpenClaw 生态 16 款 AI Agent 选型指南
  • Java 直播商城架构规划与常见营销模式解析
  • SQL Server 到 KingbaseES V9R4C12 的零改造迁移实战
  • LLaMA-Factory 微调 Qwen3-VL 详细流程
  • Qwen3-VL-WEBUI 视频理解能力实测:256K 上下文部署实战
  • Stable Diffusion v1.5 实战指南:将 SD1.5 嵌入 Figma 与 PS 工作流
  • Selenium Web 自动化测试入门与实战指南
  • Dify AI 智能体部署与使用详解
  • Spring Boot 数据可视化与图表集成实战
  • C++ 特殊类设计:不可拷贝、堆栈限制及单例模式实现
  • PID 控制算法:手动与自动模式切换机制
  • .NET 集成 GoView 低代码可视化大屏实战指南
  • .NET 集成 GoView 低代码可视化大屏实战指南
  • VS Code 远程连接服务器后 Github Copilot 无法使用
  • 国内升级 GitHub Copilot 专业版:PayPal 支付方案详解
  • JDK 21 安装与环境配置指南
  • MySQL 基础入门指南
  • 鸿蒙 NAPI 开发入门:从概念理解到实战避坑

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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