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

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

本文是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分。



上一篇:性能、精度与 overlap · 系列总索引 · 下一篇:专家系统设计与源码

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

Megatron 面试题(七):性能、融合、精度与通信重叠

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