跳转至

二十二:分布式训练:DeepSpeed 与 ZeRO自测题

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484216&idx=1&sn=ac042fa09887788b30b682a11169c763&chksm=f01eb041c769395772a7c5929154c30d7bf8856867647865770fda9771f613cafaf0bb9f19cb#rd

覆盖范围

  • DeepSpeed 基础定位

  • ZeRO Stage 1/2/3

  • optimizer states、gradients、parameters 分片

  • offload、activation checkpointing、mixed precision

  • DeepSpeed JSON 配置和 batch 语义

  • Hugging Face 集成、checkpoint、OOM 和性能排错

  • DDP、FSDP、ZeRO 对比

一、DeepSpeed 与显存基础

  • DeepSpeed 主要解决什么问题?

  • 大模型训练显存通常由哪些部分组成?

  • Adam 优化器状态为什么显存开销大?

  • DDP 在显存上有什么冗余?

  • ZeRO 的核心目标是什么?

  • ZeRO 用什么换取显存节省?

  • DeepSpeed 是否只用于训练?它还可以支持哪些场景?

  • DeepSpeed 和 PyTorch DDP 的关系是什么?

二、ZeRO Stage 1/2/3

  • ZeRO Stage 1 分片什么?

  • ZeRO Stage 1 中参数和梯度是否复制?

  • ZeRO Stage 2 在 Stage 1 基础上增加了什么?

  • ZeRO Stage 2 为什么能进一步省显存?

  • ZeRO Stage 3 分片什么?

  • ZeRO Stage 3 为什么最省显存?

  • ZeRO Stage 3 为什么通信开销更高?

  • Stage 1、2、3 分别适合什么场景?

  • 为什么 ZeRO-3 不一定比 ZeRO-2 更快?

  • ZeRO 和 FSDP 有什么相似点和区别?

三、Offload 与 Activation Checkpointing

  • 什么是 optimizer offload?

  • 什么是 parameter offload?

  • CPU offload 和 NVMe offload 的主要代价是什么?

  • ZeRO-Offload 主要解决什么问题?

  • ZeRO-Infinity 的核心思路是什么?

  • 什么是 activation checkpointing?

  • activation checkpointing 用什么换显存?

  • 长序列训练为什么特别需要 activation checkpointing?

  • offload 和 activation checkpointing 可以一起使用吗?

  • 如果开启 offload 后训练变慢,应该如何解释?

四、DeepSpeed 配置

  • DeepSpeed 通常用什么形式配置训练?

  • train_micro_batch_size_per_gpu 表示什么?

  • gradient_accumulation_steps 表示什么?

  • train_batch_size 与 micro batch、accumulation、world size 的关系是什么?

  • zero_optimization.stage 控制什么?

  • DeepSpeed 中 fp16 和 bf16 配置有什么区别?

  • gradient_clipping 在 DeepSpeed 中有什么作用?

  • optimizer 和 scheduler 可以由 DeepSpeed 配置吗?

  • 配置中 batch size 不一致会导致什么问题?

  • 为什么 DeepSpeed 配置文件是排错重点?

五、DeepSpeed 训练流程与集成

  • deepspeed.initialize 返回哪些对象?

  • DeepSpeed 中为什么通常调用 model_engine.backward(loss)

  • DeepSpeed 中为什么调用 model_engine.step() 而不是普通 optimizer.step?

  • DeepSpeed 如何接管 gradient accumulation?

  • Hugging Face Trainer 如何启用 DeepSpeed?

  • Accelerate 如何与 DeepSpeed 集成?

  • LoRA/QLoRA 和 DeepSpeed 组合时要注意什么?

  • DeepSpeed 与 RLHF/PPO 组合时有什么额外复杂性?

六、Checkpoint 与恢复

  • DeepSpeed checkpoint 和普通 PyTorch checkpoint 有什么区别?

  • ZeRO-3 checkpoint 为什么通常是分片的?

  • save_checkpointload_checkpoint 的作用是什么?

  • 从 ZeRO checkpoint 导出普通 FP32 权重可能需要什么?

  • 断点恢复时除了模型还要恢复哪些状态?

  • world size 改变后恢复 checkpoint 可能有什么问题?

  • 为什么保存 checkpoint 会影响训练性能?

  • Hugging Face 格式保存和 ZeRO 分片保存有什么区别?

七、性能与 OOM 排错

  • DeepSpeed OOM 时应如何判断显存主要花在哪里?

  • 参数太大导致 OOM 应优先考虑什么?

  • activation 太大导致 OOM 应优先考虑什么?

  • 优化器状态太大导致 OOM 应优先考虑什么?

  • ZeRO stage 提高后仍 OOM,可能还要做什么?

  • DeepSpeed 训练变慢可能有哪些原因?

  • 如何判断 offload 是否成为瓶颈?

  • bucket size 影响什么?

  • 为什么 micro batch 太小会影响吞吐?

  • 为什么通信和计算重叠很重要?

八、综合设计

  • 请设计一个 ZeRO-2 的 SFT 训练配置要点。

  • 请设计一个 ZeRO-3 + offload 的超大模型训练方案。

  • 如何从 DDP 迁移到 DeepSpeed?

  • 如何选择 DDP、FSDP、DeepSpeed ZeRO-2、ZeRO-3?

  • DeepSpeed 训练中出现 loss scale overflow 应如何排查?

  • 请完整比较 DDP、DeepSpeed ZeRO-1/2/3、Offload、Activation Checkpointing 的目标、显存收益、通信/计算代价和适用场景。

            预览时标签不可点
    

    <div class="