真实面经题目 · 原创解析
你对大模型分布式训练的底层了解多少?
大模型分布式训练的底层要围绕并行策略、通信开销、显存拆分和容错监控来讲。面试回答不能只说“多卡训练”,要能解释数据并行、张量并行、流水线并行、ZeRO/FSDP 以及 AllReduce 等通信模式各自解决什么问题。
真实面经题目 · 原创解析
大模型分布式训练的底层要围绕并行策略、通信开销、显存拆分和容错监控来讲。面试回答不能只说“多卡训练”,要能解释数据并行、张量并行、流水线并行、ZeRO/FSDP 以及 AllReduce 等通信模式各自解决什么问题。
我会从四层回答:第一是为什么要分布式,核心瓶颈是参数量、激活、优化器状态和 batch 规模超过单卡能力;第二是并行方式,数据并行复制模型、张量并行切分矩阵计算、流水线并行切分层,ZeRO/FSDP 则拆分参数、梯度和优化器状态;第三是通信,常见有 AllReduce、ReduceScatter、AllGather,要关注通信计算重叠和网络带宽;第四是工程稳定性,包括混合精度、梯度累积、checkpoint、监控、故障恢复和吞吐优化。
大模型训练的瓶颈来自参数、梯度、优化器状态、激活值和 batch 规模。单卡显存放不下完整训练状态时,就必须用分布式把存储和计算拆开,同时还要保证梯度更新语义接近单机训练。
数据并行让每张卡处理不同样本并同步梯度,简单但会复制模型状态;张量并行把大矩阵切到多卡上计算;流水线并行按层切分模型;ZeRO/FSDP 会进一步拆分参数、梯度和优化器状态来节省显存。
分布式训练的性能通常卡在通信。梯度同步常用 AllReduce,参数或分片状态会涉及 ReduceScatter 和 AllGather。回答时要说明通信量、拓扑、带宽、延迟和通信计算重叠会直接影响吞吐。
真实训练还要考虑混合精度、梯度累积、checkpoint、随机种子、数据加载、监控和失败恢复。好的答案会把并行策略和显存、吞吐、收敛一致性、调试成本联系起来,而不是只列框架名。
数据并行复制模型、切分样本,最后同步梯度;模型并行切分模型本身,包括张量切分和层切分,主要解决单卡放不下或单卡计算不够的问题。
传统数据并行每张卡都保存完整参数、梯度和优化器状态。ZeRO 按阶段把这些状态分片到不同设备,训练时再按需通信恢复计算所需部分。
先看 GPU 利用率、数据加载、通信耗时、batch 配置、梯度累积、网络拓扑和是否实现通信计算重叠,再判断瓶颈在计算、I/O 还是通信。