Home Megatron 面试题(九):专家系统设计、源码与事故题
Post
Cancel

Megatron 面试题(九):专家系统设计、源码与事故题

本文是Megatron 专家面试题系列的 Level 9,覆盖 M125-M140。重点是70B/405B/MoE/128K 方案、OOM/性能/数值事故、源码追踪与专家表达。

上一篇:Checkpoint 与可靠性 · 系列总索引


11. Level 9:专家系统设计、源码与事故题(M125-M140)

M125. 用64张H100训练LLaMA类70B,你如何选择并行配置?

高分回答要点

  • 先要模型层/hidden/heads/GQA、sequence、GBS、精度、节点拓扑与checkpoint SLA;做参数/optimizer/activation容量预算。
  • 从DP only起,容量不足引入最小TP,深度扩展用PP,长context用CP,状态容量用distributed optimizer/FSDP。
  • 例如TP4/PP4/CP2/DP2只是候选;必须验证head/query-group整除、每stage层、microbatches/bubble和节点映射。

追问:给出每rank本地layers/heads、DP group、global batch公式、关键collective及至少五个验收指标。

前置知识与分析过程:先问完整约束并做参数/optimizer/activation预算,再枚举合法TP/PP/CP,最后用GBS和拓扑填DP及M。配置是推导结果,不是起点。

主问题得分点(10分):主动澄清 2 分;容量/shape计算 2 分;并行与拓扑 3 分;schedule/GBS 1 分;验收/容错 2 分。

追问分析与参考回答:以候选TP4/PP4/CP2/DP2为例,80层若均匀约20层/PP stage但需按端点重平衡,64 Q heads每TP rank16;DP伙伴固定其余坐标。GBS=MBS*accum*DP。关键通信含每层TP、CP attention、PP P2P、DP RS/AG;验收tok/s、MFU、peak、PP idle、exposed通信、loss/grad和checkpoint。

追问得分点(5分):layers/heads1分;DP group语义1分;GBS1分;通信1分;>=5指标1分。

M126. 设计405B dense模型的Megatron训练方案。

高分回答要点

  • 大参数与深度通常需要TP+PP+distributed optimizer/FSDP,8K+context再加CP;先算每rankmodel states与activation。
  • TP限制在高速域,PP跨节点;用VPP/custom layout平衡端点,M足够覆盖bubble。
  • 设计distributed checkpoint reshard、async save、故障域和多小时soak,性能目标用MFU/time-to-train而非理论GPU数。

追问:为什么不能直接照抄官方示例?硬件数量、网络、GBS、模型GQA/词表和软件版本可能不同。

前置知识与分析过程:从模型state容量、单layer容量、深度、context四个约束分别决定FSDP/TP/PP/CP最低度数,再优化效率。

主问题得分点(10分):四类容量约束 3 分;组合并行 3 分;PP/VPP平衡 1 分;checkpoint/soak 2 分;不照抄 1 分。

追问分析与参考回答:官方recipe只给一个已知平台起点;实际需重算heads/query groups整除、本地GEMM、PP层数/端点、网络rail和GBS。先小规模验证同配置语义,再扫最低TP/CP与M/VPP,最后多节点soak和DCP恢复。

追问得分点(5分):列四个变化项2分;重算shape1分;渐进验证1分;soak/恢复1分。

M127. 设计128K context训练,如何在CP、recompute和offload之间选择?

高分回答要点

  • 估算attention与线性activation,明确attention kernel是否支持目标mask/GQA/packing;先确定最低CP。
  • TP保护layer容量但避免过大;CP按拓扑选通信类型;对剩余峰值做selective recompute,offload只在可隐藏带宽时加入。
  • 扫context/CP、记录每rankpeak、attention/CP通信、MFU、有效tokens和数值correctness。

追问:CP分片sequence不减少全局attention语义,softmax/causal边界必须等价reference。

前置知识与分析过程:先算128K下attention/activation,再选支持目标mask/GQA的kernel和CP算法;之后分配recompute/offload。

主问题得分点(10分):容量模型 2 分;CP/TP选择 2 分;attention正确性 2 分;recompute/offload 2 分;验证 2 分。

追问分析与参考回答:用短序列小模型构造CP1 reference,CP2/4需对每local Q合并全局K/V并保持online softmax max/sum和causal mask;比较logits/grad。性能再看CP通信、peak、MFU和packing有效tokens,不能用“每rank序列变短”推断数学计算被截断。

追问得分点(5分):全局K/V1分;softmax1分;causal1分;reference1分;性能指标1分。

M128. 设计一个大规模DeepSeek类MoE训练方案。

高分回答要点

  • 明确experts/top-k/shared expert/MTP/MLA、active参数、tokens/step和硬件;设计EP、expert-TP、dense TP、PP/DP/CP mesh。
  • dispatcher先以NCCL A2A baseline,再按硬件评估DeepEP/HybridEP;GroupedGEMM、permute/router fusion和shared overlap逐项消融。
  • 监控per-layer expert负载/drop、A2A exposed、expert GEMM、质量loss和checkpoint/upcycling。

追问:为什么fine-grained MoE常倾向expert-TP=1?保护小expert GEMM shape并减少层内通信,但容量可能迫使分片。

前置知识与分析过程:先算每expert参数和每step tokens/expert的GEMM M,再决定EP放experts还是ETP切单expert。然后考虑dispatcher硬件。

主问题得分点(10分):模型/active预算 2 分;mesh设计 3 分;dispatcher/优化 2 分;负载/质量/checkpoint 3 分。

追问分析与参考回答:fine-grained expert本就token M小,再ETP会把N/K切小并加入TP collective,效率差;优先ETP1、增EP分布不同experts。若单expert参数/activation超单卡容量才加ETP,并用GroupedGEMM与高速域缓解。

追问得分点(5分):M/N/K变小2分;通信1分;容量例外1分;优化/拓扑1分。

M129. 一个Megatron job间歇OOM,你如何定位?

高分回答要点

  • 记录OOM rank的TP/PP/CP/EP坐标、phase/microbatch、requested bytes、allocated/reserved和memory snapshot。
  • 判断静态端点/stage不均衡、长样本、MoE热点、overlap预取、checkpoint staging、fragmentation或泄漏。
  • 复现固定batch,关overlap/async、限制token/capacity,逐项对照;修复后做长时间高水位回归。

追问:平均显存正常无意义,PP warmup、expert hotspot和param AG会产生rank/step瞬时峰值。

前置知识与分析过程:先记录OOM坐标/时刻/requested bytes,再按静态不均衡、数据动态、overlap瞬态和fragmentation分类。

主问题得分点(10分):现场字段 3 分;四类根因 3 分;单变量消融 2 分;修复/soak 2 分。

追问分析与参考回答:PP warmup看并存microbatches,MoE看该step expert counts,param AG看in-flight buckets;memory snapshot区分active与reserved fragments。固定触发batch,分别关overlap、限capacity、开recompute,找到峰值下降的因果项后做长时间p99水位验证。

追问得分点(5分):三类瞬态各1分;snapshot1分;固定batch消融/soak1分。

M130. MFU突然下降但NCCL带宽看起来正常,怎么查?

高分回答要点

  • 分解data wait、CPU launch gap、GEMM shape/kernel、PP bubble/stage、MoE负载和collective exposed,而非只看带宽。
  • 配置变化可能增TP/PP、减microbatch、关闭fusion/TE、触发recompute或改变sequence分布。
  • 用旧/新trace与config diff定位第一个变化phase,跑单rank/module microbench区分kernel与系统。

追问:collective algbw正常仍可能等待peer更久;需要进入collective时间与exposed wall。

前置知识与分析过程:从step分解开始,不把MFU下降等同通信。比较旧/新config和各phase时间,再找first changed phase。

主问题得分点(10分):完整分解 4 分;config/kernel变化 2 分;peer-wait 2 分;最小对照 2 分。

追问分析与参考回答:记录每rankcollective enter/exit;带宽工具正常但enter spread增大说明上游data/GEMM/stage/MoE变慢。若同时进入且duration增大才查网络。用旧batch/旧config单模块复跑,逐项恢复新变化。

追问得分点(5分):enter spread2分;网络判据1分;config diff1分;最小复现1分。

M131. PP扩展很差,你的前三个实验是什么?

高分回答要点

  • 固定GBS扫M,验证bubble与局部GEMM;采per-stage F/B/P2P/idle timeline定位最慢stage。
  • 统计每stage层/参数/FLOPs/activation,做custom layout或VPP对照。
  • 测相邻stage P2P拓扑/bytes并重排ranks,确认通信与stage imbalance各占多少。

追问:本机PP8/M16仍只有32.4%效率,优先补stage profile,不应只继续增加M。

前置知识与分析过程:前三个实验必须分别隔离bubble、imbalance和P2P/拓扑,且固定GBS或明确变化。

主问题得分点(10分):三实验顺序 5 分;控制变量 2 分;指标 2 分;本机证据 1 分。

追问分析与参考回答:一是固定PP扫M建立bubble曲线;二是固定PP/M采per-stage F/B/P2P/idle并重切层;三是测相邻P2P和重排rank。PP8/M16理论利用69.6%但实效32.4%、参数2.76x,说明第二实验优先级高。

追问得分点(5分):三个实验各1分;两个本机数字1分;优先级理由1分。

M132. TP1与TP4 loss缓慢分叉,如何判断是正常浮点差异还是bug?

高分回答要点

  • 固定权重/输入/RNG,逐层比较gather后的forward activation、loss、backward grad和一步param。
  • 关闭dropout/fusion/mixed precision,再逐项恢复;检查SP复制参数grad、vocab CE和collective顺序。
  • 量化误差增长与训练quality,多seed验证;finite和初始loss接近不足以判定正确。

追问:若第一层输出已差很大,先查weight partition/init/layout;若optimizer后才差,查grad sync/main params/clip。

前置知识与分析过程:建立阶段性oracle并找first divergence;先关闭随机/低精度/融合,再逐层恢复复杂度。

主问题得分点(10分):逐层二分 3 分;消融 2 分;通信/复制grad检查 2 分;容差/质量 3 分。

追问分析与参考回答:第一层前先gather比较logical weights和输入;第一层输出差查partition、RNG、collective。全部F/B相近而step后差则比较global norm/clip、main grad RS、master update和param AG。每阶段报告误差而非最终猜因。

追问得分点(5分):first divergence2分;前向路径1分;optimizer路径1分;误差口径1分。

M133. 只有部分ranks卡在NCCL,如何从并行坐标定位?

高分回答要点

  • 列卡住ranks属于哪些共同TP/PP/CP/EP/DP groups,找最小共同communicator和缺席peer。
  • 对齐最后stage/microbatch/collective sequence/shape,检查某rank是否在data、OOM、NaN分支或不同schedule。
  • group内最小复现并启用fingerprint/timeout;不要先kill单rank导致现场丢失。

追问:某TP group卡而其他DP replicas正常,优先查该model replica/节点,而非全局训练逻辑。

前置知识与分析过程:把卡住rank映射到所有groups,求最小共同故障域;对缺席peer找其最后事件。

主问题得分点(10分):坐标交集 3 分;sequence/shape 3 分;现场/timeout 2 分;定位故障域 2 分。

追问分析与参考回答:只有一个TP group卡说明相同训练代码在其他DP replica完成,优先比较该组节点GPU、data shard和last collective fingerprint;找哪个rank没进入或op不同。仍保留全局逻辑可能受数据分支触发的反例。

追问得分点(5分):group交集1分;对照其他replica1分;last event2分;数据分支反例1分。

M134. checkpoint pause突然从30秒变成5分钟,如何定位?

高分回答要点

  • 分解state materialization、GPU->CPU、serialization、每rankwrite、metadata/commit和barrier最慢rank。
  • 检查checkpoint格式/optimizer reshardability、async是否退化同步、storage throttling、小文件数和某rank shard偏大。
  • 对比每rankbytes/throughput、host memory、IO queue和训练干扰;做model-only/optim-only与本地盘对照。

追问:所有rank在barrier等5分钟不代表barrier慢,可能只有一个writer/reshard慢。

前置知识与分析过程:将checkpoint分phase并对每rank打时间戳/bytes,barrier只表示汇合点。找最后到达者。

主问题得分点(10分):phase分解 4 分;rank skew 2 分;格式/存储假设 2 分;对照 2 分。

追问分析与参考回答:记录materialize、D2H、serialize、write、metadata、commit结束时刻;barrier等待等于最慢rank前置phase。若某rank shard大/存储慢,其他rank都在barrier显示长。model-only、optim-only、本地盘对照定位数据量、reshard或远端存储。

追问得分点(5分):phase timestamps2分;last arriver1分;三组对照1分;不归因barrier1分。

M135. 从pretrain_gpt.py如何追到一个TP MLP的NCCL调用?

高分回答要点

  • 训练入口构建config/model provider,得到GPTModel与layer spec;forward进入TransformerBlock/Layer/MLP。
  • MLP调用Column/RowParallelLinear,autograd mapping或linear Function在相应forward/backward触发TP collective。
  • 同时追parallel_state取得group,记录tensor shape/stream;最后用trace/kernel验证静态阅读。

追问:要求现场使用rg找symbol definition/call site,而不是凭目录猜。

前置知识与分析过程:从入口的model provider和spec对象开始,用symbol调用链向下追,遇到autograd Function再追backward和group getter。

主问题得分点(10分):完整调用链 5 分;collective/group位置 2 分;shape/stream 2 分;动态验证 1 分。

追问分析与参考回答:用rg 'get_gpt_layer.*spec|ColumnParallelLinear|reduce_from_tensor_model_parallel'找定义和call site;在GPTModel->TransformerBlock->Layer->MLP->TP layers/mappings链上记录输入shape。最后用profiler kernel name/NVTX确认该路径实际执行,而非只静态阅读。

追问得分点(5分):rg命令1分;调用链2分;group/shape1分;trace验证1分。

M136. 如何在MCore中接入一个新Transformer子模块?

高分回答要点

  • 定义module接口和ModuleSpec wiring,扩TransformerConfig及validation,明确TP/PP/checkpoint layout。
  • 单卡reference后做TP/SP/PP correctness、RNG/recompute、mixed precision与state-dict roundtrip。
  • 添加kernel/perf benchmark、fallback/feature gate、文档recipe和CI矩阵。

追问:若新模块含跨token状态,必须重新评估CP/sequence packing和pipeline boundary,不能只替换Python类。

前置知识与分析过程:从模块数学依赖推导各并行维合法layout,再设计spec/config/checkpoint和测试矩阵。

主问题得分点(10分):接口/spec 2 分;并行layout 3 分;checkpoint/RNG 2 分;CI/perf/fallback 3 分。

追问分析与参考回答:跨token模块在CP下需交换全局状态或改变partition,packing需阻断样本间状态,PP切点可能需发送额外state tensor。先做单卡reference,再逐CP/PP验证shape与grad,定义sharded state metadata并提供unsupported config fail-fast。

追问得分点(5分):CP1分;packing1分;PP boundary1分;checkpoint1分;fail-fast1分。

M137. 你会如何review一个“开启通信overlap提速15%”的PR?

高分回答要点

  • 检查基线公平、硬件/拓扑、GBS、warmup/重复、端到端step与peak;排除异步工作漏出计时窗口。
  • 审核stream/event/Work lifetime、buffer复用、collective顺序、gradient accumulation和异常路径。
  • 要求多shape/规模、correctness多step、trace证明exposed下降,以及关闭flag无行为回归。

追问:局部kernel提前返回但iteration末wait更久,不是端到端提速。

前置知识与分析过程:review分correctness、测量、可扩展性三条线;先验证异步work被完整计时,再看依赖和资源。

主问题得分点(10分):公平测量 3 分;stream/Work正确性 3 分;trace证据 2 分;回归矩阵 2 分。

追问分析与参考回答:计时窗口末必须wait/synchronize目标work,以max-rank iteration wall为准;trace看通信是否只是移到末尾。检查buffer复用和异常控制流,多step compare参数。只有exposed和step均降、peak可接受才接受15%claim。

追问得分点(5分):wait计时1分;max-rank1分;末尾暴露1分;correctness1分;peak1分。

M138. 面试官说“你没跑过多机,怎么能说懂Megatron?”你如何回答?

高分回答要点

  • 明确不伪造多机经验;给出本机真实TP/SP/PP/recompute、process-group顺序、NCCL拓扑和failure证据。
  • 展示可迁移方法:tensor/bytes/critical path、rank mapping、trace、correctness和版本边界。
  • 对多机部分给具体设计、指标与实验计划,同时指出未验证的RDMA/rail/SHARP/多机EP结论。

追问:可信专家不是“所有都跑过”,而是能精确说明证据等级并快速设计验证。

前置知识与分析过程:把回答分本机事实、稳定机制、多机待验证计划;每项都给artifact或指标。

主问题得分点(10分):不伪造 2 分;本机证据 3 分;可迁移推导 2 分;多机实验设计 3 分。

追问分析与参考回答:列真实tag、硬件和TP/SP/PP/recompute数字;多机明确未测RDMA/rail/EP,给NCCL baseline、rank mapping、multi-rank trace、failure/soak和DCP计划。这样展示方法深度而非用“懂原理”回避证据。

追问得分点(5分):版本事实1分;真实数字1分;未测项1分;具体计划2分。

M139. 请用两分钟介绍你的Megatron经验。

参考骨架

  • 架构:直接使用MCore GPTModel/TransformerConfig/ModuleSpec/parallel_state/schedule,不是手写TP/PP模拟器。
  • 证据:固定8xV100,TP1->8容量提升但吞吐84.6k->14.7k;seq4096 recompute省约78%;PP8/M16为2.59x且stage 2.76x不均衡。
  • 深挖:能解释Column/Row layout、SP grad、1F1B、rank groups、communication critical path和下一步profile。
  • 边界:版本0.9.0、单机local spec;CP/生产MoE/FSDP/FP8按当前官方机制掌握但未冒充实测。

追问:面试官会任选一个数字要求你给命令、shape、global batch、parser和raw artifact。

前置知识与分析过程:项目介绍按问题、方法、结果、机制、边界组织;选3-5个能防守的数字,不流水账。

主问题得分点(10分):架构定位 2 分;关键数字 3 分;机制 2 分;深挖/边界 3 分。

追问分析与参考回答:例如TP8数字应能说runner、12层hidden768、GBS与TP/DP/accum、三次重复、summary/raw路径;PP数字同理。parser以max-rank step算tok/s,loss finite只是基础oracle。不能给这些时简历数字可信度低。

追问得分点(5分):命令/config1分;GBS1分;parser1分;artifact1分;correctness/边界1分。

M140. 什么表现才算“Megatron专家”,而不是熟练用户?

高分回答要点

  • 能从模型公式推导每ranktensor/参数/gradient/通信,不依赖复制recipe。
  • 能从parallel config追到process group、schedule、buffer、optimizer和checkpoint state ownership。
  • 能用profile和correctness oracle定位性能/数值/故障,并改ModuleSpec/runtime而非只调flag。
  • 能区分版本、硬件与证据边界,设计可扩展系统并知道何时不该增加某种并行度。

最终追问:随机抽M025、M043、M060、M086、M113、M135,若都能从公式讲到源码和实验,才接近专家表现。

前置知识与分析过程:专家标准按张量、调度、状态、MoE、checkpoint、源码六条独立能力交叉验证,避免单方向熟练冒充全栈。

主问题得分点(10分):四项能力定义各2分共8分;证据/版本自律2分。只会调参不超过4分,只会论文公式不超过6分。

追问分析与参考回答:M025应推W/Y/dX,M043画时空图,M060走RS-update-AG,M086写count矩阵和逆split,M113做global range reshard,M135从入口追到mapping/NCCL。每题还要给oracle和profile;任两条无法展开说明能力仍有结构性缺口。

追问得分点(5分):六题各层级对应2分;公式到源码1分;oracle/profile1分;能识别自身缺口1分。



上一篇:Checkpoint 与可靠性 · 系列总索引

This post is licensed under CC BY 4.0 by the author.

Megatron 面试题(八):Checkpoint、数据与可靠性

Megatron 专家训练:实验、深挖链与源码阅读路径