当前位置: 首页 > news >正文

浅谈AI - DeepSpeed - 单卡慎用!

前言

曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望AI的璀璨星空,心潮澎湃,步履不停!愿你我皆乘风破浪,逐梦星辰!

简介

Deepspeed 的 ZeRO(Zero Redundancy Optimizer)有三个阶段(Stage 1, Stage 2, Stage 3),每个阶段旨在通过不同方式优化显存使用和提高计算效率。如果你是单卡训练,尤其是消费级显卡(如 3090、4090),启用 ZeRO Stage 2 和 3 反而得不偿失。以下是每个阶段的总结:


Stage 1:优化器状态分散(Optimizer State Partitioning) 🧠

  • 🎯 目标:减少优化器状态的冗余存储。

  • ⚙️ 优化方式

    • 在多卡训练中,将优化器的状态(如梯度、动量等)分散到不同的设备上,避免每个设备存储冗余数据。

    • 每个 GPU 只负责存储优化器状态的一部分,减少显存占用。

  • ✅ 适用场景:适合 多卡训练,因为它减少了多卡训练中的显存冗余。

  • ❗ 单卡训练表现:在单卡训练中,Stage 1 并没有显著的优化效果,反而可能会增加内存开销,导致显存浪费


Stage 2:模型参数和梯度分散(Model and Gradient Partitioning) 🧩

  • 🎯 目标:减少每个 GPU 存储模型参数和梯度的冗余,进一步节省显存。

  • ⚙️ 优化方式

    • 将模型参数和梯度的不同部分分配到多个 GPU 上。

    • 每个 GPU 只存储模型的一部分参数和梯度,避免冗余存储。

  • ✅ 适用场景:适合 多卡训练,尤其在大规模模型训练时,能够显著降低显存使用。

  • ❗ 单卡训练表现:在单卡环境下,Stage 2 引入的优化并不会有太大优势反而会增加额外的管理开销和内存使用


Stage 3:完全分散所有训练状态(Fully Partitioned Training States) 🧬

  • 🎯 目标:进一步优化显存,分散模型的所有训练状态(包括模型参数、梯度、优化器状态等)到多个设备上。

  • ⚙️ 优化方式

    • 将模型的所有参数、梯度和优化器状态完全分散到不同的设备上,从而消除所有冗余。

    • 极大地减少每个设备的显存负担,尤其在大规模分布式训练时非常有效。

  • ✅ 适用场景:适用于 超大规模多卡训练,显著提高效率并节省显存。

  • ❗ 单卡训练表现:在单卡训练中,Stage 3 的优化过于复杂,不仅不会带来明显好处还可能导致性能下降和显存增加


总结 📌

  • Stage 1 ✅:适用于多卡训练,减少优化器状态的冗余存储。
    ❗ 单卡环境下并不推荐,可能带来额外显存浪费

  • Stage 2 ✅:适用于大模型的多卡训练,进一步降低显存需求。
    ❗ 单卡使用会有额外开销,不建议启用

  • Stage 3 ✅:用于极大模型的分布式训练,效果最显著。
    ❗ 单卡使用严重不推荐可能拖慢训练并占用更多显存


💡结论:Deepspeed 的不同阶段是为分布式训练设计的,如果你是单卡训练,尤其是消费级显卡(如 3090、4090),启用 ZeRO Stage 2 和 3 反而得不偿失,建议关闭 ZeRO 或仅使用混合精度(如 FP16/BF16)等其他方式进行显存优化。

http://www.dtcms.com/a/112901.html

相关文章:

  • opencv中mat深拷贝和浅拷贝
  • 常用中间件合集
  • 深入理解 C++ 三大特性之一 继承
  • Java项目之基于ssm的孩童收养信息管理(源码+文档)
  • 详细分析单例模式
  • 【AI编程学习之Python】第五天:Python的变量和常量
  • Kafka 高吞吐量的原因是什么?
  • CNN 中感受野/权值共享是什么意思?
  • 基于Python的图书借阅推荐系统设计与实现
  • 深度学习的疑问(GNN)【1】:图采样与训练
  • html 给文本两端加虚线自适应
  • MySQL学习笔记(三)——图形化界面工具DataGrip
  • 深入解析C++智能指针:从内存管理到现代编程实践
  • Swagger @ApiOperation
  • Qt之QNetworkInterface
  • 低代码开发平台:飞帆中的控件中转区
  • AI Agent设计模式三:Routing
  • 智能合约的法律挑战与解决之道:技术与法律的交融
  • 《P1072 [NOIP 2009 提高组] Hankson 的趣味题》
  • 小米BE3600路由器信息
  • 【愚公系列】《高效使用DeepSeek》053-工艺参数调优
  • [ctfshow web入门] web5
  • MySQL表结构导出(Excel)
  • 状态模式~
  • 【蓝桥杯】十五届省赛B组c++
  • 神经网络入门:生动解读机器学习的“神经元”
  • C++ KMP算法
  • Leetcode - 双周赛153
  • 失眠睡不着运动锻炼贴士
  • Mac强制解锁APP或文件夹