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

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

本文是Megatron 专家面试题系列的训练附录,包含十二组实验、六条连续深挖链、四周计划、源码阅读路径和最终自检。

系列总索引


12. 十二组上机实验

实验设置必看指标你应掌握的内容
E01 单卡源码跟踪2层GPT,local spec,单stepmodule调用、tensor shape、kernel从GPTModel走到Attention/MLP/loss
E02 TP正确性TP1 vs TP2,同权重/输入/RNGlogits/grad/step误差、shard checksumColumn/Row、vocab CE和autograd mapping
E03 TP性能TP1/2/4/8,固定GBS/GPUGEMM shape、NCCL exposed、MFU、peak容量与效率的Pareto边界
E04 SP与重计算seq512/2K/4K,SP/full/selectiveallocation分类、AG/RS、recompute FLOPs两者优化不同activation集合
E05 PP时间线PP2/4/8、M1/4/16每stage F/B/P2P/idle、bubblewarmup/steady/cooldown与慢stage
E06 PP重切层等层 vs profile驱动custom layout/VPPmax stage time、bubble、peak参数proxy与真实service time区别
E07 3D训练TP2xPP2xDP2,固定GBSgroup/sequence、loss、各类通信组合并行runtime与rank mapping
E08 Distributed Optimizerbaseline vs RS/AG + overlapbytes/param、bucket、AG/RS exposed、peakmain-grad/param shard状态机
E09 CP长上下文CP1/2/4,固定全局sequenceKV通信、attention correctness、peak/MFUSP与CP边界及通信类型
E10 真实MoEtop2/8 experts,EP1/2/4expert分布、A2A、GroupedGEMM、droprouter->dispatch->expert->combine
E11 DCP reshardTP2/PP2保存,TP1/PP4恢复IO、peak、checksum、resume losssharded metadata与optimizer兼容
E12 故障注入kill rank、错collective、慢data、坏sharddetection/abort/cleanup/restore从现场到根因的工程闭环

实验完成标准

每组必须保存:完整命令与commit、每rank原始log/JSON、三次稳态重复、correctness oracle、至少一个负结果、parser公式和环境清理检查。没有这些产物,只能说“运行过”,不能说“做过性能工程”。


13. 六条连续深挖链

13.1 TP深挖链

为什么TP -> Column/Row shape -> forward/backward collective -> 每层bytes -> SP如何改layout -> GEMM为何变小 -> 如何profile overlap -> 为什么本机TP8变慢

13.2 PP深挖链

为什么PP -> 1F1B三阶段 -> bubble公式 -> microbatch trade-off -> P2P shape -> stage imbalance -> VPP/custom layout -> PP hang如何定位

13.3 Distributed Optimizer深挖链

为什么省显存 -> main_grad buffer -> ReduceScatter ownership -> optimizer shard -> param AllGather -> 双向overlap -> 峰值为何上升 -> checkpoint如何reshard

13.4 MoE深挖链

top-k router -> load balancing -> token permutation -> variable-split A2A -> GroupedGEMM -> tail expert -> shared/communication overlap -> DeepEP硬件边界

13.5 长上下文深挖链

OOM组成 -> SP与CP -> CP groups -> attention全局依赖 -> communication type -> GQA影响 -> selective recompute/offload -> 128K系统设计

13.6 故障深挖链

step变慢/卡住 -> 并行坐标 -> 最后logical event -> collective sequence/shape -> peer wait还是transport -> 最小复现 -> 故障清理 -> checkpoint恢复与防复发CI


14. 四周训练计划

第1周:架构和TP

  • 闭卷完成M001-M040;每天手推两组Column/Row/attention/vocab CE shape。
  • 跑E01-E03,从一个NCCL kernel反查到MCore调用点。
  • 周末60分钟模拟:架构15分钟、TP推导25分钟、实验答辩20分钟。

第2周:PP、DP与状态

  • 完成M041-M068,手画PP4/M8和PP8/M16时空图。
  • 跑E05和E08;至少解释一个overlap没有提速的负结果。
  • 源码阅读schedules.pyp2p_communication.pydistributed_data_parallel.pydistrib_optimizer.py

第3周:CP、MoE与性能

  • 完成M069-M110,手推TP2/CP2与一个EP mesh。
  • 若硬件/版本不支持E09/E10,做最小toy并明确证据边界,不伪造MCore生产能力。
  • 模拟面试必须连续走完TP、MoE、长上下文三条深挖链。

第4周:Checkpoint、系统设计与高压答辩

  • 完成M111-M140,跑E11/E12或写出可执行实验协议。
  • 每天一次70B/405B/MoE/128K设计,强制先问约束再给配置。
  • 最终门槛:随机30题平均>=3.2;M025/M043/M060/M086/M113/M135均>=3.5;两分钟项目介绍稳定且数字无误。

15. 源码阅读路径

按下面顺序阅读本仓库固定的MCore 0.9.0,边读边画tensor和group:

  1. megatron/core/parallel_state.py
  2. megatron/core/transformer/transformer_config.py
  3. megatron/core/transformer/spec_utils.py
  4. megatron/core/models/gpt/gpt_model.py
  5. megatron/core/transformer/transformer_block.py
  6. megatron/core/transformer/transformer_layer.py
  7. megatron/core/transformer/attention.py
  8. megatron/core/transformer/mlp.py
  9. megatron/core/tensor_parallel/layers.py
  10. megatron/core/tensor_parallel/mappings.py
  11. megatron/core/pipeline_parallel/schedules.py
  12. megatron/core/pipeline_parallel/p2p_communication.py
  13. megatron/core/distributed/distributed_data_parallel.py
  14. megatron/core/distributed/param_and_grad_buffer.py
  15. megatron/core/optimizer/distrib_optimizer.py

阅读每个文件时回答四个问题:它拥有哪个状态;输入输出layout是什么;调用哪个process group/stream;异常时哪个log/trace能证明执行到了这里。


16. 官方资料


17. 最终自检清单

  • 能在白板上画Megatron-Core包结构和一个GPT layer的数据流。
  • 能手推Column/Row Parallel的forward/backward tensor shape和collective。
  • 能解释SP的RS/AG layout、复制参数gradient以及它与CP的区别。
  • 能画非交错1F1B的warmup/steady/cooldown并计算bubble。
  • 能从per-stage timeline设计custom layout/VPP对照。
  • 能解释main_grad、bucket、ReduceScatter、optimizer shard和Parameter AllGather完整状态机。
  • 能推导distributed optimizer每参数bytes并说明理论公式未包含什么。
  • 能画TP/PP/DP/CP/EP groups,说明dense与expert参数的不同同步域。
  • 能从router一路讲到permutation、A2A、GroupedGEMM、combine和load imbalance。
  • 能区分AllGather/A2A/Flex dispatcher,并主动说明硬件和版本前提。
  • 能为70B、405B、128K和大MoE先做容量/通信估算再给并行配置。
  • 能从NCCL hang、NaN、OOM、低MFU、PP慢和checkpoint慢中保全现场并二分。
  • 能说明sharded state dict如何跨TP/PP/DP reshard,以及optimizer为什么更复杂。
  • 能从pretrain_gpt.py追到TP linear的collective调用,并用trace验证。
  • 能准确引用本机TP/SP/PP/recompute数字,同时不冒充跑过CP、生产MoE、Megatron-FSDP或FP8。
This post is licensed under CC BY 4.0 by the author.

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

vLLM 与 SGLang 调度器源码详解:排序、准入、KV 与提交