深度学习中的分布式并行策略和内存优化技术

1、分布式并行策略

1、数据并行

2、模型并行

1、流水线并行

1F1B 非交错式调度模式

1F1B 交错式调度模式

2、张量并行

FNN 结构的张量并行示意图

多头自注意力机制的张量并行示意图

3、混合并行

混合并行将多种并行策略如数据并行、流水线并行和张量并行等混合使用

2、内存优化

1、混合精度

动态损失缩放(Dynamic Loss Scaling)和混合精度优化器(Mixed Precision Optimizer)

由于 FP16 的值区间比 FP32 的值区间小很多,所以在计算过程中很容易出现上溢出和下溢出。

BF16 相较于 FP16 以精度换取更大的值区间范围。

2、Adam 优化器

Adam 优化器状态包括采用 FP32 保存的模型参数备份,一阶动量和二阶动量也都采用 FP32 格式存储。假设模型参数量为 Φ,模型参数和梯度都是用 FP16格式存储,则共需要 2Φ + 2Φ + (4Φ + 4Φ + 4Φ) = 16Φ 字节存储。

一阶矩 mtm_tmt 的更新公式为

核心公式: mt=β1mt−1+(1−β1)gtm_t = \beta_1 m_{t-1} + (1 - \beta_1) g_tmt=β1mt−1+(1−β1)gt

• mtm_tmt: 当前的一阶矩(带有惯性的方向)。

• β1\beta_1β1: 遗忘因子,通常设为 0.9 。这意味着当前的方向 90% 取决于历史惯性,只有 10% 取决于当前脚下的真实梯度 gtg_tgt。

二阶矩 vtv_tvt 的更新公式为:

vt=β2vt−1+(1−β2)gt2v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2vt=β2vt−1+(1−β2)gt2

• vtv_tvt: 当前的二阶矩(梯度波动大小的度量)。

• gt2g_t^2gt2: 当前梯度的平方(逐元素平方,抹除了方向,只看大小)。

• β2\beta_2β2: 通常设为 0.999,说明二阶矩会参考非常久远的历史。

核心公式(完整的 Adam 更新公式):

θt=θt−1−αv^t+ϵm^t\theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_tθt=θt−1−v^t +ϵαm^t
(注:m^t\hat{m}_tm^t 和 v^t\hat{v}_tv^t 是为了修正早期数据不足时的偏差,α\alphaα 是你设置的基础学习率,ϵ\epsilonϵ 是一个极小值,比如 10−810^{-8}10−8,防止分母为零。)

3、零冗余优化器(ZeRO)

ZeRO 使用分区的方法,即将模型状态量分割成多个分区,每个计算设备

只保存其中的一部分。这样整个训练系统内只需要维护一份模型状态,减少了内存消耗和通信开

销。

相关推荐
汤姆小白2 小时前
01-环境搭建与项目导览
人工智能·python·机器学习·numpy
喜欢就别4 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (2)--- On-Policy Distillation
人工智能·笔记
糯米导航7 小时前
AI 视觉回归实战:截图对比不是“找不同”,如何让智能差异分析真正服务 UI 质量
人工智能·ui·回归
科技圈观察7 小时前
2026年好伴AI医疗专用大模型应用梳理与梯队参考
人工智能
jkyy20148 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
cd_949217218 小时前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d
瑞禧生物tech8 小时前
SH-PEG-Biotin巯基-聚乙二醇-生物素 HS-PEG-Bio 深度解析
人工智能
QYR-分析8 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
冬奇Lab9 小时前
MCP 系列(06):MCP vs Function Calling——用数据说话的选型指南
人工智能
冬奇Lab9 小时前
每日一个开源项目(第159篇):Vibe-Trading - 用自然语言做量化研究,AI 驱动的个人交易 Agent
人工智能·开源·资讯