本文是Megatron 专家面试题系列的 Level 8,覆盖 M111-M124。重点是Sharded state、reshard、原子提交、可复现性、hang/NaN、数据与回归 CI。
上一篇:性能、精度与 overlap · 系列总索引 · 下一篇:专家系统设计与源码
10. Level 8:Checkpoint、数据、可靠性与可观测性(M111-M124)
M111. 一个可继续训练的 Megatron checkpoint 必须保存什么?
高分回答要点
- model shards、optimizer states、master params、scheduler、loss scaler、iteration/consumed samples/tokens。
- CPU/CUDA/model-parallel RNG、data iterator/sampler状态和并行/config metadata。
- manifest/checksum/version/完成标记,保证partial checkpoint不可见并支持兼容性判断。
追问:只恢复model/optimizer可语义继续但不保证bitwise replay;runtime/reducer/kernel归约顺序也可能变化。
前置知识与分析过程:按数学状态、优化状态、随机/数据状态和提交元数据四类列清单,再定义恢复目标是加载、step replay还是收敛等价。
主问题得分点(10分):四类状态 5 分;原子/校验 2 分;恢复级别 2 分;并行metadata 1 分。
追问分析与参考回答:model/optimizer exact只保证保存点参数与动量;若RNG/data cursor不同,下一batch/dropout变;即便全恢复,重建bucket或换TP使浮点归约顺序不同。应分别验证保存点hash、下一步loss/grad及长期quality,并声明目标。
追问得分点(5分):RNG/data1分;runtime顺序1分;三层验证2分;目标声明1分。
M112. Megatron distributed checkpoint 的 sharded state dict 表达什么?
高分回答要点
- 每个local tensor shard附带global shape、global offset、axis/replica id和dtype等元数据。
- 保存层将logical tensor与当前TP/PP/DP布局解耦,load策略据metadata构造目标shard。
- optimizer state需与参数shard映射一致,不能靠rank文件名猜ownership。
追问:要求你为一个TP2 ColumnParallel权重写两个shard的global offset,并说明TP4恢复如何切分。
前置知识与分析过程:先声明global tensor shape和partition axis,local shard用global offset/shape描述;load时用目标layout求区间交集。
主问题得分点(10分):metadata字段 3 分;逻辑/物理解耦 2 分;optimizer映射 2 分;具体offset推导 3 分。
追问分析与参考回答:若W [h,4h]按axis1切TP2,shard0 offset[0,0] shape[h,2h],shard1 offset[0,2h]同shape;TP4目标区间每份宽h,loader从相应源shard读取前/后半。padding时还需logical vs padded shape。
追问得分点(5分):global shape1分;TP2 offsets2分;TP4切法1分;padding边界1分。
M113. 为什么 distributed checkpoint 能跨 TP/PP/DP 配置 reshard?
高分回答要点
- checkpoint记录logical global tensor,而不是把“rank0文件”永久绑定给rank0。
- load时根据新parallel layout读取、切分/拼接并路由目标shards;PP变化还会改变layer owner。
- 可恢复性受tensor metadata、模型结构和optimizer格式限制,必须先做兼容性plan与peak/IO估算。
追问:8 rank保存、4 rank恢复时应验证权重checksum、optimizer states、第一步loss/grad和读取放大。
前置知识与分析过程:建立源global shard map与目标owner map,先验证可覆盖性,再规划read/redistribute;PP变化还映射layer owner。
主问题得分点(10分):reshard机制 3 分;PP/TP/DP变化 3 分;资源/兼容风险 2 分;验证 2 分。
追问分析与参考回答:保存后从metadata重建logical tensor checksum;4rank目标按新layout加载重叠ranges,optimizer按参数key/状态类型重分。记录每rankread bytes、network shuffle和peak;加载后比较logical model/optimizer,固定batch做第一步loss/grad/更新。
追问得分点(5分):range映射1分;optimizer1分;IO/peak1分;四类correctness2分。
M114. distributed optimizer checkpoint 为什么比模型权重更难兼容?
高分回答要点
- 一个参数对应FP32 main param、m/v等多个shards,并受DP ownership、flatten/bucket layout和parameter key影响。
- MCore版本升级可能改变flatten metadata或optimizer格式;模型权重可兼容不代表optimizer可直接加载。
- 当前官方文档区分偏速度的
dp_reshardable和更灵活但较慢的fully_reshardable等路径,应按版本核对。
追问:不能恢复optimizer时可加载model并重建optimizer,但训练轨迹/收敛会变化,必须业务确认。
前置知识与分析过程:对每参数列master/m/v及flatten range和owner,比较源/目标版本metadata是否足以重建。区分“不能加载”和“可丢弃继续”。
主问题得分点(10分):复杂性来源 4 分;格式/版本 2 分;性能/灵活性trade-off 2 分;fallback语义 2 分。
追问分析与参考回答:重建optimizer会丢moment和可能的master状态,相当于改变优化器历史;即使model loss连续,更新方向/学习率阶段可能不匹配。只能在明确接受训练轨迹变化时使用,并考虑warm restart、LR和质量监控。
追问得分点(5分):丢失状态2分;轨迹后果1分;业务确认1分;缓解/监控1分。
M115. async checkpoint 怎样降低 pause,又引入哪些一致性问题?
高分回答要点
- training thread先冻结/复制一致state snapshot,再由后台线程/进程执行序列化和IO,使GPU继续后续step。
- 若后台读取仍在被optimizer修改的storage,会写出混合step;需要staging buffer、lifetime和完成协议。
- 控制in-flight checkpoints、host内存、带宽竞争、失败传播和job退出flush;manifest只能在全部shards完成后发布。
追问:当前官方异步策略正在向NVRx演进;版本迁移与依赖属于运维设计,不是恒定API事实。
前置知识与分析过程:画训练storage与staging snapshot的所有权,标copy完成、后台IO、commit和下次checkpoint。再分析失败/退出。
主问题得分点(10分):snapshot一致性 3 分;后台生命周期 2 分;资源/backpressure 2 分;版本迁移 3 分。
追问分析与参考回答:目标commit应锁定async backend和依赖,启动时验证能力;升级做旧/新checkpoint load和pause对照。job退出前flush并传播后台错误,不能因训练继续就忽略失败;文档中的未来默认值不能替代当前部署测试。
追问得分点(5分):锁版本1分;一致snapshot1分;flush/error1分;兼容测试1分;不把路线图当现状1分。
M116. 如何设计原子 checkpoint commit 协议?
高分回答要点
- 每rank写临时/唯一版本shard并fsync/上传,计算size/hash;协调者确认期望shards齐全。
- 最后原子发布manifest/COMMITTED标记,loader只枚举已commit且checksum通过的版本。
- 处理重试、重复rank、迟到writer、对象存储无rename、GC与reader并发。
追问:本机failure实验已证明partial版本不应可见,但没有覆盖MCore DCP/对象存储/异步reshard。
前置知识与分析过程:先定义writer、coordinator、reader和GC状态机,按本地文件系统与对象存储不同原语设计commit。
主问题得分点(10分):临时写/校验 3 分;manifest最后发布 2 分;重试/GC竞态 3 分;证据边界 2 分。
追问分析与参考回答:本机协议验证缺rank shard时manifest不发布、reader忽略partial;扩展到DCP需真实sharded metadata和optimizer,扩展对象存储需用不可变version key+原子/一致manifest而非rename假设,再做异步writer崩溃和reshard reader测试。
追问得分点(5分):本机已证1分;三项未证2分;对象存储方案1分;故障测试1分。
M117. 如何追求跨并行配置的可复现性?
高分回答要点
- 恢复model/optimizer/RNG/data position,固定kernel/determinism、microbatch/global batch和loss scaling。
- TP/PP/DP改变会改变浮点归约树、kernel shape和操作顺序,bitwise一致通常不现实,应定义数值/训练等价标准。
- 用初始logits/loss、gradient norm/checksum、若干step loss分布与最终quality分层验证。
追问:专家会区分state exact、step replay exact和convergence equivalent。
前置知识与分析过程:为三个级别分别定义observable和容差,从最严格到生产可接受逐级放宽。
主问题得分点(10分):三层定义 4 分;并行浮点差异 2 分;验证指标 2 分;目标选择 2 分。
追问分析与参考回答:state exact比较保存点tensor/hash;step replay exact比较同batch RNG下下一步activation/grad/update,换并行常难bitwise;convergence equivalent比较多seed loss曲线和最终quality统计。项目/发布需事先选择门槛,不能失败后临时改标准。
追问得分点(5分):三层各1分;并行差异1分;预定义门槛1分。
M118. 一个Megatron多卡job hang,如何定位?
高分回答要点
- 先冻结现场:stack、NCCL flight recorder/debug、每rank最后logical step/stage/microbatch/collective和process-group坐标。
- 判断是数据/compute未进入collective、collective op/shape/order错配、P2P schedule还是硬件/网络。
- 缩小world/group,比较第一个sequence fingerprint分歧,设置有限timeout并清理整个job。
追问:同shape顺序错配可能不hang而静默错误,所以无timeout不代表通信正确。
前置知识与分析过程:先保全所有rank最后事件,再按“未进入、进入错communicator/sequence、transport故障”三类二分。
主问题得分点(10分):现场 3 分;三类根因 3 分;最小复现 2 分;cleanup 2 分。
追问分析与参考回答:为每collective记录group id、logical id、sequence、op、shape/dtype和checksum;若A/B同shape错序,NCCL可按sequence完成但logical checksum错。watchdog用于活性,fingerprint/oracle用于正确性,两者都需要。
追问得分点(5分):活性/正确性区别1分;fingerprint字段2分;checksum1分;watchdog边界1分。
M119. 出现NaN/Inf时如何按Megatron数据流二分?
高分回答要点
- 找第一个step/rank/layer/tensor,区分forward activation、loss、backward grad、collective后grad和optimizer后param。
- 记录amax/norm、loss scale/overflow、router logits、attention softmax、学习率和数据样本。
- 单卡/TP1、关闭FP8/fusion/overlap、固定batch逐项消融,并比较reference。
追问:所有rank同时NaN可能由共享数据/超参;单TP/EP rank先NaN可能由shard/kernel/路由,但都需证据。
前置知识与分析过程:用first-bad原则按step/rank/layer/phase定位,再关闭复杂特性逐项恢复。每次只改一个变量。
主问题得分点(10分):first-bad定位 3 分;关键数值指标 2 分;消融路径 3 分;rank pattern只作假设 2 分。
追问分析与参考回答:全rank同一layer同时坏先检查输入、LR/loss scale和共同kernel;单shard先检查partition、amax、collective前后与router count。都要用hook抓首个非finite tensor,并与TP1/BF16/no-fusion reference比较,不能仅凭分布下结论。
追问得分点(5分):两个假设1分;first-bad2分;reference消融1分;不武断归因1分。
M120. MCore/TE/PyTorch升级前后如何做兼容验证?
高分回答要点
- 固定旧baseline artifact;矩阵验证checkpoint model/optimizer load、短步loss/grad、吞吐/peak和关键kernel/collective。
- 检查参数默认值、ModuleSpec、state-dict key/layout、precision/fusion/backend和弃用项。
- canary小规模再全规模,设数值/性能阈值、回滚镜像和checkpoint前向/后向兼容策略。
追问:不能只看import成功或第一步loss finite;optimizer格式可能在真正resume时失败。
前置知识与分析过程:列升级影响面并设计从静态load到短步、性能、全规模canary的分层门禁。
主问题得分点(10分):兼容矩阵 3 分;默认/config diff 2 分;数值/性能门槛 3 分;回滚 2 分。
追问分析与参考回答:用生产checkpoint分别测试model-only和model+optimizer restore,完成至少数步optimizer和再保存/再加载;比较loss/grad/hash、tok/s/peak/kernel。只有这些通过才canary,且保留旧镜像和旧格式checkpoint回滚。
追问得分点(5分):optimizer resume2分;roundtrip1分;性能/数值1分;回滚1分。
M121. 数据加载如何与DP/CP/PP并行保持一致?
高分回答要点
- 不同DP replicas消费不同样本;同一model-parallel replica内TP/PP/CP ranks必须处理同一逻辑batch/sequence shards。
- 通常由指定rank读取/构造batch后在组内broadcast或按规则一致生成,避免每rank重复IO与错样本。
- sampler需保存consumed samples、epoch/shard/packing状态,worker故障恢复不能跳/重数据而不知情。
追问:CP ranks持同一sequence不同chunk,不是独立样本;把它们当DP会直接破坏attention语义。
前置知识与分析过程:先按rank坐标决定数据ownership,再设计哪个rank读、如何broadcast/scatter,以及sampler checkpoint。
主问题得分点(10分):DP样本分片 2 分;model-parallel一致batch 3 分;IO方案 2 分;恢复状态 3 分。
追问分析与参考回答:同一TP/PP/CP model replica必须共享样本id;CP只按sequence offset切token,attention仍组成同一样本。若各CP rank从sampler取不同样本,交换K/V时会混合不同序列。应由replica数据owner准备并按layout分发,保存统一consumed position。
追问得分点(5分):同一样本2分;错误混合1分;owner分发1分;cursor1分。
M122. 生产Megatron训练应记录哪些指标?
高分回答要点
- 训练:loss、LR、grad norm、loss scale、tokens/s、samples/s、MFU、有效/丢弃tokens。
- 分布式:每parallel group collective/P2P、overlap/exposed、rank step分布、PP bubble/stage、MoE expert负载。
- 系统:GPU clocks/SM/HBM、memory peak/fragmentation、CPU/data/NIC/storage、checkpoint pause、错误/重启。
追问:指标需带model/step/rank坐标标签但控制基数;高频per-layer信息可采样或写trace。
前置知识与分析过程:按训练语义、并行runtime和系统资源三层设计指标,再为每项决定counter/gauge/histogram和标签。
主问题得分点(10分):三层指标 5 分;MoE/PP专项 2 分;标签/基数 2 分;告警关联 1 分。
追问分析与参考回答:在线聚合保留job/model、parallel coordinate和有限phase标签;不要把每parameter/token id做时序标签。per-layer/token分布写采样trace或结构化日志,告警时关联step、rank group和硬件,以便从慢rank回到具体parallel域。
追问得分点(5分):标签选择1分;基数风险1分;聚合/trace分层2分;故障关联1分。
M123. 如何profile Megatron而不把profiler开销当性能结论?
高分回答要点
- 稳态非profiler runs给绝对tokens/s/peak;短窗口trace只解释事件结构。
- 用NVTX标iteration/microbatch/stage/module,采多rank或至少关键ranks,做时间对齐和interval union。
- Nsight Systems看CPU/CUDA/NCCL时间线,Nsight Compute看选定kernel counters;权限/回放开销必须记录。
追问:累计NCCL duration不能直接加到compute;collective包含peer wait且跨stream可重叠。
前置知识与分析过程:定义稳态性能与profile证据不同用途,时间线统一用interval union/intersection;多rank需时钟/step对齐。
主问题得分点(10分):两类run分离 3 分;NVTX/多rank 2 分;union/peer wait 3 分;工具边界 2 分。
追问分析与参考回答:同stream事件可直接排序,跨stream先做每类区间union;compute与NCCL交集是overlap,不能将累计sum相加。再比较各rank进入collective时刻区分peer wait。绝对tok/s来自无profiler重复run。
追问得分点(5分):union1分;intersection1分;多rank enter1分;无profiler基线1分;工具分工1分。
M124. 如何建设Megatron性能回归CI?
高分回答要点
- 分层:单module correctness/kernel microbench、小规模TP/PP/DP集成、固定节点性能、周期性多节点soak。
- 固定环境和拓扑,重复并用统计阈值;同时监控tokens/s、MFU、peak、NCCL、loss/grad与checkpoint。
- 自动保存config diff、trace-on-regression和首个坏commit二分信息;区分噪声、硬件坏卡和代码回归。
追问:只测单个热门大配置会让定位成本极高,应为每个并行维保留最小可解释case。
前置知识与分析过程:按unit、single-axis integration、combination、scale四层构建测试金字塔;每层同时有correctness和performance阈值。
主问题得分点(10分):四层CI 4 分;环境/统计 2 分;多指标 2 分;自动诊断/二分 2 分。
追问分析与参考回答:保留TP2 linear、PP2 schedule、DP2 optimizer、EP2 dispatcher等小case,能在分钟级定位;组合case验证交互,大规模soak只周期运行。回归自动抓config diff和短trace,并用重复/控制节点过滤噪声。
追问得分点(5分):小case2分;组合/规模分层1分;统计噪声1分;自动trace/二分1分。