✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

ZeRO-3 和模型并行有什么区别?

创建时间:2026-09-24 更新时间:2026-09-24 阅读次数:1242 次 分类:分布式训练与工程优化

ZeRO-3 和模型并行(Model Parallelism)虽然在形式上都将模型参数分散到多个设备上,但它们的设计哲学、通信机制和对模型代码的侵入性有本质区别。

核心区别:通信什么,以及如何计算

两者最根本的差异在于 “通信的内容” 和 “计算的方式”:

  • ZeRO-3 通信的是“参数” :每个设备在计算某一层时,会临时从其他设备拉取(All-Gather) 该层完整的参数。拿到完整参数后,每个设备都会独立地、完整地处理自己那一批数据。计算完该层后,又会释放掉不属于自己的参数以节省显存。

  • 模型并行通信的是“激活值” :模型的不同部分被永久地放置在不同设备上(比如张量并行是把一层切开,流水线并行是把不同层分开)。计算时,设备之间传递的是中间计算结果(激活值),而不是参数本身。每个设备只负责计算模型的一小部分。

本质归属:ZeRO-3 是“增强版”数据并行

尽管名字里有“分片”,但 ZeRO-3 本质上属于数据并行(Data Parallelism)的范畴,是一种内存优化技术。

它解决的是传统数据并行中模型状态(参数、梯度、优化器状态)在每个 GPU 上冗余存储的问题。传统数据并行下,每个 GPU 都有一份完整的模型副本。ZeRO-3 则把这些模型状态切碎,分给各个数据并行进程,从而大幅降低单卡显存占用,但计算逻辑和流程依然是数据并行的(即每个进程处理不同的数据)。

而模型并行(如张量并行、流水线并行)则是为了突破单层或单个设备无法容纳模型的物理限制,需要重构模型的计算图。

对比一览

为了方便大家理解,我把它们的核心差异整理成了表格:

对比维度ZeRO-3模型并行 (Model Parallelism)
本质归属改进的数据并行模型并行(张量/流水线)
分片对象优化器状态、梯度、参数模型结构(层或张量维度)
通信内容参数(临时拉取完整层)激活值(中间计算结果)
代码侵入性极低,通常无需修改模型代码高,需要重写模型计算逻辑
主要目标消除数据并行中的显存冗余突破单设备显存限制,让超大模型能跑起来
计算特点每个设备用完整层处理不同的数据多个设备协作处理同一批数据的不同部分

互补关系

ZeRO-3 和模型并行并不是竞争关系,而是互补的。在训练超大模型时,常见的做法是结合使用:用张量并行解决单层参数过大的问题,用流水线并行把不同层放到不同节点,再用 ZeRO-3 来消除数据并行组内的显存冗余。


📌 面试天下网:一款服务于大一新生的口袋书,让大家在无聊的公共课上可以学习大模型技术!
📌 网站公告:【悬赏 200 元/篇】寻找“大模型面试战场”的一手回忆录
📌 网站公告:【大模型/Agent面试陪练1V1指导】正式启动......

评论专区

评论加载中...