DeepSpeed常见面试问题
💡 面试常问问题 + 思路讲解
1️⃣ DeepSpeed的作用是什么?为什么要用它?
✅ 回答思路:
-
作用:解决大模型训练的显存瓶颈、加速训练、优化大规模分布式训练。
-
为什么用:
-
单GPU显存不够,训练不了几十亿/百亿参数模型。
-
ZeRO优化可以分散存储优化器状态、梯度、参数。
-
支持混合精度(FP16/BF16)。
-
支持offload到CPU/磁盘,进一步节省显存。
-
整合到Hugging Face / PyTorch生态,易用性高。
-
✅ 加分点:举个实际例子,比如"我们用DeepSpeed训练一个65B的模型,在8张A100上能跑起来"。
2️⃣ 你了解DeepSpeed的ZeRO优化器吗?它有几个阶段?
✅ 回答思路:
-
ZeRO全称:Zero Redundancy Optimizer。
-
它分为三个阶段:
阶段 功能 优化内容 Stage 1 分散优化器状态(如动量、二阶矩) 优化器状态 Stage 2 分散梯度 优化器状态 + 梯度 Stage 3 分散模型参数 优化器状态 + 梯度 + 模型参数 -
通过这些分散,显存大幅减少。
-
Stage 3是最彻底的,但实现复杂度最高。
-
可以结合offload到CPU/磁盘进一步节省显存。
✅ 加分点:你可以说"ZeRO-2适合大多数SFT任务,ZeRO-3适合超大模型(30B以上)"。
3️⃣ train_batch_size
和 train_micro_batch_size_per_gpu
、gradient_accumulation_steps
有什么关系?
✅ 回答思路:
-
公式:
train_batch_size = train_micro_batch_size_per_gpu * num_gpus * gradient_accumulation_steps
-
train_micro_batch_size_per_gpu
:每张GPU单次前向/反向传播处理的样本数。 -
gradient_accumulation_steps
:多少步后才更新一次权重,模拟大batch训练。 -
train_batch_size
:全局等效的batch size。
✅ 举例说明:
-
4张GPU,每张GPU micro_batch=4,gradient_accumulation=8
-
那么 train_batch_size = 448=128
✅ 加分点:可以讲讲"显存不够时,可以减小micro_batch,但通过增加gradient_accumulation来保持全局batch size不变"。
4️⃣ offload_optimizer
和 offload_param
有什么用?适合什么场景?
✅ 回答思路:
-
这两个是 DeepSpeed offload 的配置,用来进一步节省显存:
-
offload_optimizer:把优化器状态(动量、梯度)放到CPU。
-
offload_param:把模型参数放到CPU(只在ZeRO-3时有效)。
-
-
适合场景:
-
显存紧张,比如训练70B模型,显存24G/48G不够,就必须offload。
-
CPU内存充足时效果最好,但会牺牲一些训练速度(CPU-GPU数据传输有瓶颈)。
-
✅ 加分点:
-
"offload虽然慢一点,但结合FP16/ZeRO-3可以在24G显卡上跑超大模型"。
-
"如果机器有大内存(512GB+),offload效果更好"。
5️⃣ 什么是activation checkpointing?有什么优缺点?
✅ 回答思路:
-
activation checkpointing 是一种显存优化技术。
-
原理:
-
正常训练中,前向传播会存储每一层的激活(中间结果)以便反向传播。
-
如果开启activation checkpointing,部分激活不存储,反向传播时重新计算。
-
-
优点:
-
节省显存。
-
-
缺点:
-
增加计算量,训练速度略慢。
-
✅ 加分点:
-
"适合长序列/大模型场景,比如SFT时生成2000 tokens以上的任务"。
6️⃣ 如果你有24G显卡,想训练30B模型,你会怎么做?
✅ 回答思路:
-
必须组合多种技术:
-
ZeRO-3 + offload_param到CPU
-
offload_optimizer到CPU
-
FP16/BF16混合精度
-
activation checkpointing
-
梯度累积(gradient_accumulation_steps)
-
可能需要8张GPU(多机多卡)。
-
-
说明这些组合如何解决显存瓶颈:
-
ZeRO-3分散存储
-
Offload降低GPU占用
-
FP16降低存储需求
-
梯度累积保持全局batch size
-
✅ 加分点:
-
可以提到
bitsandbytes
的量化(4bit/8bit训练),或者QLoRA
方案!
🔥 附加问题(高阶)
面试题 | 你的回答思路 |
---|---|
DeepSpeed和FSDP的区别? | DeepSpeed功能更丰富,支持ZeRO-3、offload等;FSDP更偏PyTorch原生,适合纯分布式但功能没那么全。 |
DeepSpeed推理加速支持吗? | 支持,有Inference Engine模块,用于大模型推理加速。 |
混合精度训练的原理? | FP16计算减少显存占用,加快运算速度,但会带来数值稳定性问题,通过loss scaling解决。 |