Home Megatron 面试题(三):Pipeline Parallel 调度
Post
Cancel

Megatron 面试题(三):Pipeline Parallel 调度

本文是Megatron 专家面试题系列的 Level 3,覆盖 M041-M054。重点是GPipe/1F1B、bubble、microbatch、P2P、VPP 和 stage imbalance。

上一篇:TP 与 SP · 系列总索引 · 下一篇:DDP、分布式优化器与 FSDP


5. Level 3:Pipeline Parallel 调度与负载均衡(M041-M054)

M041. get_forward_backward_func() 如何选择 pipeline schedule?

高分回答要点

  • 根据 PP world size、virtual pipeline/interleaving 和 forward-only 等配置选择无 PP、非交错 1F1B 或交错 schedule。
  • schedule 拥有 microbatch 执行顺序与 P2P,模型应用只提供 forward_step_func 和 stage-local model chunks。
  • 专家要追到实际返回函数和输入契约,不把 schedule 当黑盒。

追问:本机 PP=1PP>1 调用同一入口,但实际控制流和 loss 返回位置不同。

前置知识与分析过程:先列schedule选择条件,再对PP1、非交错PP、交错VPP分别画调用对象。最后说明callback接口为何保持一致。

主问题得分点(10分):选择条件 3 分;三类schedule差异 3 分;callback契约 2 分;能追到返回函数/源码 2 分。

追问分析与参考回答:PP1不需P2P,schedule顺序执行全部microbatch的本地F/B并直接返回loss;PP>1按rank计算warmup/steady/cooldown,只有last stage产生loss dict,其他stage主要传activation/grad。相同入口隐藏分支,但profile与返回值语义不同。

追问得分点(5分):PP1无P2P 1 分;PP三阶段 2 分;last-stage loss 1 分;相同API不同控制流 1 分。

M042. GPipe 与 1F1B 的主要差异是什么?

高分回答要点

  • GPipe 先完成所有 forward 再 backward,调度简单但需长期保存更多 microbatch activation。
  • 1F1B 在 warmup 后交替 forward/backward,减少 activation 驻留并保持 pipeline steady state。
  • 两者基本 bubble 上界都受 stage 数和 microbatch 数影响,但显存与通信时序不同。

追问:为什么 1F1B 并不自动消除 bubble?仍有 fill/drain,且 stage imbalance 会扩大有效空洞。

前置知识与分析过程:画P stages、M microbatches时空图,比较activation lifetime与fill/drain。再加入不等stage time看慢stage如何传播等待。

主问题得分点(10分):GPipe/1F1B顺序 3 分;activation差异 2 分;bubble来源 2 分;imbalance/通信边界 3 分。

追问分析与参考回答:1F1B只在管线填满后交替F/B;开始时后stage无输入、结束时前stage无新工作,P-1个stage间距仍存在。若某stage耗时更长,流水节拍由它决定,其他stage即便理论处于steady也会等待P2P。

追问得分点(5分):fill 1 分;drain 1 分;公式/间距 1 分;慢stage传播 2 分。

M043. 非交错 1F1B 的 warmup、steady、cooldown 各发生什么?

高分回答要点

  • warmup 中不同 PP rank 先执行若干 forward,把 pipeline 填满;越靠前 stage 通常 warmup forward 更多。
  • steady 中每 rank 交替执行一个 forward 与一个 backward,并进行相邻 P2P。
  • cooldown 停止新 forward,排空剩余 backward;每 rank 阶段长度不同但 collective/P2P 顺序必须匹配。

追问:让你为 PP4/M8 画每个 stage 的时空图,并指出最早的 backward 在何时开始。

前置知识与分析过程:先编号F0..F7/B0..B7,按数据依赖让microbatch逐stage前进;last stage完成F0和loss后才能启动B0,再反向传播。

主问题得分点(10分):三阶段定义 3 分;不同rank warmup长度 2 分;正确F/B依赖 3 分;P2P顺序/显存 2 分。

追问分析与参考回答:PP4中F0依次到stage3;stage3完成F0后最早可做B0。stage0在收到B0前继续注入若干forward,形成较长warmup;进入steady后各stage交替本地F与B。图必须保证同一microbatch的B只在其F和下游B完成后发生。

追问得分点(5分):F0传播 1 分;最早B0位置 1 分;stage0 warmup 1 分;依赖正确 2 分。

M044. pipeline bubble 公式如何推导?

高分回答要点

  • 等 stage time、非交错理想模型下,利用率约 M/(M+P-1),bubble 为 (P-1)/(M+P-1)
  • 公式只描述 fill/drain,不含 stage imbalance、P2P、kernel 效率、DP sync 与 optimizer。
  • 当 forward/backward time 不等、VPP 或异步通信存在时,应使用更完整 schedule simulation/timeline。

追问:PP8/M16 bubble=7/23=30.4%,理论利用率 69.6%,为何实测并行效率只有 32.4%?

前置知识与分析过程:先在等stage、等F/B假设下推公式,再逐项加入imbalance、P2P、小kernel和同步。理论值只作为上界。

主问题得分点(10分):公式/假设 4 分;正确数值 2 分;至少三项现实损失 3 分;profile验证 1 分。

追问分析与参考回答:理论只扣fill/drain;本机PP8 endpoint参数max/min=2.76x,慢stage拉长节拍,PCIe P2P和每stage更少layers带来通信/launch开销,F/B时长也非相等。应采per-stage F/B/P2P/idle trace,用实际service time模拟上界。

追问得分点(5分):bubble计算 1 分;2.76x imbalance 1 分;P2P/小kernel 1 分;真实timeline方案 2 分。

M045. microbatch 数越多越好吗?

高分回答要点

  • 更多 M 降低 bubble、增加 steady-state 区间,但若 microbatch size 固定会增大 global batch/step latency。
  • 保存 activation、调度/P2P 次数、data iterator 和 optimizer update 间隔也会变化。
  • microbatch 过小使 GEMM 低效,过多会受显存和优化语义限制,需与 global batch/accumulation 联合选择。

追问:公平比较 M 时应固定 global batch,还是允许变化?取决于研究问题,报告必须明确;本机跨 M 同时改变了 global batch。

前置知识与分析过程:先写GBS公式并说明要研究“schedule效率”还是“可用吞吐配置”。再决定调M时是否反向调MBS/DP/accum。

主问题得分点(10分):M收益 2 分;GBS/优化语义 3 分;显存/step latency 2 分;公平实验设计 3 分。

追问分析与参考回答:研究纯bubble时固定GBS和每microbatch shape更难同时做到,可固定MBS并报告GBS变化,或调accum/DP构造等价样本量;关键是不能把更大GBS带来的GEMM/摊销收益全归因于bubble。本机结果明确跨M同时增GBS,所以只做机制证据。

追问得分点(5分):识别研究问题 1 分;两种控制方案 2 分;指出混杂因素 1 分;准确限定本机结论 1 分。

M046. PP stage 之间传输哪些 tensor?

高分回答要点

  • forward 发送 boundary activation,backward 反向发送该 activation 的 gradient;shape 由 sequence、microbatch、hidden 和 SP/CP layout 决定。
  • encoder-decoder、多输出、skip connection 或 packed sequence 可能需要多个 tensor/shape metadata。
  • dtype、variable sequence 和通信 batching 决定 P2P buffer 与协议,不能统一按参数 bytes 估算。

追问:基础 GPT boundary [s,b,h] FP16 每次 bytes 是 s*b*h*2,forward/backward 每 microbatch 各一次。

前置知识与分析过程:从stage边界module输出定义tensor列表,逐个算numel*dtype;乘方向、microbatches和steps。再考虑SP/CP、variable sequence和metadata。

主问题得分点(10分):F activation/B grad 3 分;shape/bytes 2 分;复杂模型多个tensor 2 分;dtype/变长/buffer 3 分。

追问分析与参考回答:单边界每microbatch forward发送s*b*h*2 bytes,backward发送同shape grad,总logical payload约两倍;整step再乘M和P-1边界。实际链路还有协议,SP时s可为local shard,CP/packed sequence需按真实layout和动态shape计算。

追问得分点(5分):单次bytes 1 分;双方向 1 分;M/边界次数 1 分;layout变化 1 分;logical与物理口径 1 分。

M047. pre_process/post_process 如何让每个 PP rank 只构建自己的模型?

高分回答要点

  • first stage 构建 embedding,last stage 构建 output/loss,中间 stage 仅构建分配到的 Transformer layers。
  • 每 rank 的 layer offset/数量由 PP/VPP layout 计算,forward 输入在 first stage 是 token,在其他 stage 是上游 activation。
  • 参数和显存不均衡常来自端点模块,而不是 layer 数算错。

追问:本机 PP8 最大 stage 39.1M、最小 14.2M 参数,正是 embedding/output 集中导致。

前置知识与分析过程:先按layer offset构建stage local module,再额外放置embedding/output/loss。分别统计参数、FLOPs和activation,避免只看layer数。

主问题得分点(10分):pre/post构建 3 分;输入类型 2 分;endpoint不均衡 2 分;参数以外成本与验证 3 分。

追问分析与参考回答:PP8等分16层时每stage约2层,但stage0还含vocab embedding,末stage含大output projection,故参数比中间stage高。若tie与vocab-parallel设置不同,首尾分布还会变化。应记录local parameter counts和F/B时间后重切层。

追问得分点(5分):2层基线 1 分;首尾额外模块 2 分;配置影响 1 分;用时间而非参数最终决策 1 分。

M048. loss 为什么通常只在 pipeline last stage 计算?

高分回答要点

  • 只有末 stage 持 output projection/logits;loss closure 在那里产生 scalar 与 logits gradient。
  • 训练日志需要把 loss 广播/归约到记录 rank,但不应让每个 stage 重复完整词表计算。
  • loss scaling 必须与 microbatch 数、DP 和 mixed precision 一致,否则 gradient 大小错误。

追问:本机脚本为何把末 stage loss 通过 all_reduce(MAX) 带回 rank0?用于结果记录,不是训练 gradient 通信。

前置知识与分析过程:区分loss计算、日志传播和gradient生成三条路径。追踪哪个stage持logits、哪个rank写JSON,以及该collective是否参与autograd。

主问题得分点(10分):last-stage loss 3 分;日志/训练区别 3 分;scale与microbatch 2 分;词表/TP边界 2 分。

追问分析与参考回答:只有last stage有非零final loss;脚本在autograd/optimizer之后把scalar放tensor并MAX到所有rank,使rank0可写结果。它不连接计算图,也不改变gradient。生产通常reduce loss sum/count或broadcast,MAX只是该教学脚本利用其他rank为0的记录技巧。

追问得分点(5分):非零owner 1 分;不在autograd 2 分;MAX技巧 1 分;生产替代 1 分。

M049. 如何定位 pipeline stage imbalance?

高分回答要点

  • 记录每 stage 每 microbatch forward/backward/P2P 时间、空闲区间、参数/activation、GEMM shape和最慢 rank。
  • 区分静态层成本、embedding/output、MoE token 动态偏斜、通信拓扑和系统 straggler。
  • 用实际 stage service time 重算 schedule critical path,再做非均匀切层对照。

追问:参数数只是 proxy;attention/MLP FLOPs、MoE 路由和通信可让参数少的 stage 更慢。

前置知识与分析过程:对每stage建立service-time模型:F compute、B compute、P2P、动态MoE和系统等待。先观察再重切,而非按参数静态猜。

主问题得分点(10分):指标列表 3 分;四类根因 3 分;critical path重算 2 分;对照实验 2 分。

追问分析与参考回答:采每microbatch的stage F/B start/end、P2P和token counts;求steady-state p50/p95 service time及最慢stage。按实际时间移动一层或用custom layout,再保持GBS/M不变复跑;若bubble/idle和step下降才证明balance优化有效。

追问得分点(5分):per-microbatch trace 2 分;动态因素 1 分;重切对照 1 分;成功指标 1 分。

M050. Custom Pipeline Layout 解决什么问题?

高分回答要点

  • 新版 MCore 可显式描述 embedding、decoder、MTP、loss 等在 PP/VPP stage 的分配,处理非对称模型和端点成本。
  • layout 应由 profile service time而非等层数生成,并校验 layer 总数、顺序、shared weight 与空 stage。
  • 它降低 imbalance,不自动减少 P2P 或 bubble;错误 layout 还会增加跨 stage 依赖。

追问:给 PP8 的端点 2.76x imbalance,让你设计重切层实验并定义成功指标。

前置知识与分析过程:先用baseline trace估各module cost,再满足层顺序/共享权重约束地搜索layout。不要直接按参数反比移层。

主问题得分点(10分):custom layout语义 3 分;profile驱动 2 分;合法性约束 2 分;指标与风险 3 分。

追问分析与参考回答:在stage0/7保留embedding/output但减少decoder层,把层移给中间较快stage;候选layout逐一计算每stage预计F/B与P2P。固定PP8/M16/GBS,比较max stage service、idle/bubble、tok/s和peak;loss/grad与baseline一致。若VPP可用再做正交对照。

追问得分点(5分):端点减层 1 分;固定控制变量 1 分;时间/idle指标 2 分;correctness 1 分。

M051. Virtual Pipeline Parallelism/Interleaving 如何降低 bubble?

高分回答要点

  • 每个物理 PP rank 持多个较小 model chunks,schedule 在 virtual stages 间交错,缩短逻辑 stage 粒度。
  • 可降低 bubble/改善负载均衡,但增加 P2P 次数、模型 chunk 切换、activation bookkeeping 和 schedule 复杂度。
  • 需要 layer 数/layout 可分、足够 microbatches,并检查通信是否抵消收益。

追问:VPP 不是增加 GPU;它在同 rank 上重排 chunks 与时序。

前置知识与分析过程:把physical PP rank和virtual stage分开画。分析逻辑stage粒度缩小后bubble、P2P次数与activation bookkeeping如何变化。

主问题得分点(10分):VPP定义 3 分;降低bubble机制 2 分;额外成本 3 分;适用约束 2 分。

追问分析与参考回答:例如每个物理rank持两个不连续layer chunks,schedule交错执行,使相邻逻辑stage更细、更快轮转;GPU数和物理PP仍不变。代价是更多chunk边界/P2P、切换与activation状态,只有计算窗口足够且layout平衡时才获益。

追问得分点(5分):物理/虚拟区别 2 分;细粒度机制 1 分;成本 1 分;适用条件 1 分。

M052. PP 中 activation memory 由什么决定?

高分回答要点

  • 取决于本地 layers、warmup 时并存 microbatches、每层保存 tensor、sequence/microbatch 和 recompute。
  • 不同 PP rank warmup 深度不同,所以峰值可能不在参数最多 stage。
  • 1F1B、interleaving、deallocate output、offloading 会改变 lifetime,必须看每 rank peak。

追问:为什么只用“模型参数/PP”预测显存会错?activation、端点和 optimizer 都不等分。

前置知识与分析过程:按常驻、microbatch activation、临时P2P/workspace三类列每rank状态,并结合warmup深度求同时存活数量。

主问题得分点(10分):activation决定项 3 分;rank warmup差异 2 分;端点/optimizer 2 分;测量方法 3 分。

追问分析与参考回答:参数只按本地层和端点分布;stage0可能同时保存更多未反传microbatch activation,末stage有logits/loss workspace;optimizer按本地参数,P2P buffer和allocator也非均匀。应在warmup后reset peak并取所有rank max,同时按stage记录snapshot。

追问得分点(5分):列三类非均匀项 2 分;warmup lifetime 1 分;max-rank口径 1 分;snapshot 1 分。

M053. PP P2P 如何避免死锁和顺序错误?

高分回答要点

  • 相邻 ranks 必须以 schedule 规定的 send/recv 顺序、shape/dtype 和 communicator 执行,常通过批量双向 P2P 避免环形等待。
  • 异步 request/stream 的 lifetime 要覆盖 buffer 使用,发送 buffer 不可过早复用。
  • 发生 hang 时对齐 stage、microbatch、F/B direction、sequence number 和 tensor shape。

追问:某 stage 因 empty batch 跳过 forward,而邻居仍 recv,会出现什么?控制流必须全局一致。

前置知识与分析过程:先写schedule中相邻send/recv配对表,再考虑blocking/async API和buffer lifetime。故障分析找第一个不匹配的microbatch/direction。

主问题得分点(10分):配对顺序 3 分;async lifetime 2 分;hang定位字段 3 分;异常路径一致性 2 分。

追问分析与参考回答:下游已post recv但上游跳过send,会一直等待直至timeout;其他stage随后也被背压卡住。empty/skip决策应在进入schedule前全局同步,或仍发送协议规定的empty tensor/metadata。日志记录stage、microbatch、F/B、shape和sequence。

追问得分点(5分):直接hang机制 2 分;传播 1 分;两种修复 1 分;日志字段 1 分。

M054. 如何解释 PP8/M16 只有 2.59x speedup?

高分回答要点

  • 理论 bubble 已有 30.4%,相对 PP1 理想上限远低于 8x;stage 参数 max/min 又达 2.76x。
  • 每 microbatch 有 P2P、schedule/launch,局部 layer 变少后 GPU kernel 更短;慢 stage 决定节拍。
  • 本机无 NVLink,8 卡 SendRecv aggregate/latency 也受 PCIe 限制。

追问:下一步需要 per-stage trace+custom layout,而不是继续把 M 增到更大并宣称问题解决。

前置知识与分析过程:用理论bubble给上界,再从stage不均衡、P2P和local kernel三项解释上界缺口。每个假设对应一组指标/对照。

主问题得分点(10分):本机数字 3 分;三类损失 3 分;不夸大M收益 2 分;下一实验 2 分。

追问分析与参考回答:固定PP8/M16采8rank trace,求最慢stage F/B和其他stage idle;根据service time重切层,再比较tok/s/bubble/peak。单独测相邻P2P并用PP1/小stage kernel判断通信/粒度。若layout后仍慢,再评估VPP或拓扑,而非先增M改变GBS。

追问得分点(5分):固定baseline 1 分;trace 1 分;重切对照 1 分;P2P/kernel分解 1 分;不混GBS 1 分。



上一篇:TP 与 SP · 系列总索引 · 下一篇:DDP、分布式优化器与 FSDP

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

Megatron 面试题(二):Tensor 与 Sequence Parallel

Megatron 面试题(四):DDP 与 Distributed Optimizer