二十二:分布式训练: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_checkpoint和load_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="