Data Parallelism(数据并行)

就是把数据切开,让多张 GPU 同时跑,最后把梯度加权平均一下,模型还是同一个。

亦作、亦称:数据并行 · DP · DDP · Distributed Data Parallel · Data-parallel Training · distributed data parallel

数据并行是分布式训练的基础范式,通过在多设备上复制模型并分配不同数据子集来加速训练。掌握数据并行是理解现代大模型训练体系的第一步。

概述

数据并行是分布式训练中最直观、部署最广泛的并行策略。

  • 核心思路:模型在每个设备上完整复制,训练数据被切分后并行处理
  • 适用范围:对模型架构无特殊限制,CNN、Transformer、MLP 均适用
  • 主流实现:PyTorch DDP、TensorFlow MirroredStrategy、Horovod
  • 优势:实现简单,扩展性良好,通常是大规模训练的首选起点
  • 前提条件:单设备显存必须能容纳完整的模型参数与优化器状态

工作原理

数据并行的执行流程分为四个阶段,各设备在每个训练步骤中协同完成。

  • 数据分片:将 mini-batch 按设备数量切分为等大小的 micro-batch,各设备独立加载
  • 前向传播:每个设备用本地数据独立计算 loss,无需设备间通信
  • 反向传播:各设备独立计算本地梯度,PyTorch DDP 会将梯度分组到 bucket 中以重叠通信与计算
  • 梯度同步:通过 AllReduce(通常为 Ring-AllReduce)将所有设备梯度求和平均,NCCL 库提供高性能实现
  • 参数更新:每个设备用相同的全局梯度更新本地模型,保证所有副本参数一致

同步与异步变体

数据并行根据梯度同步时机可分为两类,各有适用场景。

  • 同步数据并行(Synchronous DP)所有设备完成反向传播后统一同步梯度,训练过程与单机完全等价,收敛稳定,是 DDP 的默认模式
    -
    异步数据并行(Asynchronous DP) 设备独立更新参数服务器,无需等待最慢节点,吞吐更高但存在 梯度陈旧(staleness) 问题,影响收敛
    -梯度压缩PowerSGD、梯度量化等技术可在同步时压缩通信量,适用于带宽受限场景
    -
    局部 SGD / FedAvg252设备在本地运行多步后再同步,通信频率大幅降低,联邦学习的核心思想
    -
    ZeRO(Zero Redundancy Optimizer) DeepSpeed 提出,在数据并行框架内分片优化器状态、梯度和参数,突破单卡显存瓶颈

典型应用场景

数据并行在工业界和研究领域均有广泛落地。

  • 预训练加速:用数百至数千张 GPU 训练 GPT、BERT 类模型,通过增大有效 batch size 加速收敛
  • 计算机视觉大规模训练:ImageNet 分类、目标检测等任务,将 batch 分散到多卡以充分利用集群
  • 微调与 RLHF:对已有 LLM 进行 SFT/DPO 微调时,数据并行是最常用的并行维度
  • 多机多卡集群:通过 NCCL + InfiniBand/NVLink 在节点内外均可高效执行 AllReduce
  • 研究复现:PyTorch DDP 提供标准化接口,大幅降低复现 SOTA 论文的工程门槛

与模型并行的区别

数据并行与模型并行是两种互补的分布式训练策略,理解其差异有助于选型。

  • 显存需求:数据并行要求每卡存完整模型,模型并行将模型层拆分到不同卡,可突破单卡显存上限
  • 通信模式:数据并行通信梯度(与模型参数同量级),模型并行通信激活值(与 batch size 相关)
  • 实现复杂度:数据并行几乎对模型代码透明,模型并行需要手动指定层的放置策略
  • 适用场景:参数量可放入单卡时优先数据并行;超大模型(>10B 参数)通常需要混合并行(数据并行 + 张量并行 + 流水线并行)
  • 典型工具:数据并行用 DDP/Horovod,模型并行用 Megatron-LM、DeepSpeed、FSDP

局限与常见误区

数据并行并非万能,使用时需注意以下几点。

  • 显存瓶颈:每张卡都要存完整参数 + 梯度 + 优化器状态,70B 参数模型在 bf16 下仅参数就需 ~140 GB,单卡 80 GB 的 H100 无法独立承载
  • 通信开销:设备间带宽决定 AllReduce 效率;节点间带宽(InfiniBand)远低于节点内(NVLink),规模过大时通信成为瓶颈
  • 线性加速神话:增加 GPU 数量并不线性提升训练速度,Amdahl 定律和通信延迟限制了实际加速比
  • 大 batch 收敛问题:数据并行等效于增大 batch size,过大的 batch 可能导致泛化性下降,需配合学习率热身(warmup)等技巧
  • 误区:「数据并行就是多卡跑多份模型」——实际上梯度同步是关键,忽略同步正确性会导致训练不稳定

发展脉络

数据并行技术随硬件与框架演进经历了多个重要节点。

  • 2012 年:AlexNet 训练使用双 GPU 数据并行,开启深度学习多卡训练先河
  • 2014 年:Jeff Dean 等提出 Parameter Server 架构(DistBelief),支持异步大规模数据并行
  • 2016 年:百度提出 Ring-AllReduce 用于深度学习梯度聚合,显著降低通信瓶颈
  • 2017 年:Uber 开源 Horovod,将 Ring-AllReduce 工程化,大幅简化多框架数据并行部署
  • 2020 年:PyTorch 推出 DistributedDataParallel(DDP),通过 bucket 通信重叠实现更高效的同步;DeepSpeed ZeRO 系列在数据并行框架下突破显存墙
  • 2022 年至今:混合并行成为 LLM 训练主流,数据并行作为最外层维度与张量并行、流水线并行组合使用

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「就是把数据切开,让多张 GPU 同时跑,最后把梯度加权平均一下,模型还是同一个。」
  • 「数据并行不拆模型,只拆数据,所以每张卡都得放得下完整模型。」
  • 「DDP 比老式的 DataParallel 快,因为它用 Ring-AllReduce 而不是走主卡瓶颈。」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    分布式训练:Data Parallel, Model Parallel

    从单机到集群,掌握深度学习分布式训练的核心技术

  2. 2

    LLM 微调技术全景:LoRA、QLoRA、DPO 与参数高效微调实战

    从全量微调到参数高效微调的系统性进阶。深入解析 LoRA、QLoRA、DPO、ORPO、GAPO 等主流微调技术,对比不同方法的参数量、显存需求、训练效果和适用场景,配以完整的 Python 可运行代码和实战训练脚本,帮助开发者为特定任务定制专属 LLM。

  3. 3

    RLHF(一):基于人类反馈的强化学习

    从奖励模型到 PPO 优化,理解大模型对齐的核心技术

外部参考

维基百科:查看「Data Parallelism」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。