Home Megatron 面试题(五):Context Parallel 与长序列
Post
Cancel

Megatron 面试题(五):Context Parallel 与长序列

本文是Megatron 专家面试题系列的 Level 5,覆盖 M069-M080。重点是SP/CP 边界、attention 通信、recompute、offload、packing 与 batch 联动。

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


7. Level 5:Context Parallel、重计算与长序列(M069-M080)

M069. SP 与 CP 的本质区别是什么?

高分回答要点

  • SP 主要分片 TP 区域内 LayerNorm/dropout 等可逐 token activation;attention 仍按完整 context 语义执行。
  • CP 分片网络输入和全层 activation 的 sequence 维;attention 必须跨 CP ranks交换 KV/中间统计以覆盖全局 context。
  • SP 通常与 TP layout绑定;CP 是独立并行维,可与 TP/PP/DP组合。

追问:本机只实测 SP,不应把 seq4096 结果称为 CP 性能。

前置知识与分析过程:先问“sequence维在哪些module保持分片”,再检查attention是否需要全局K/V。以此区分SP的局部分片和CP的全网络sequence分片。

主问题得分点(10分):SP范围 3 分;CP范围 3 分;attention通信 2 分;组合/证据边界 2 分。

追问分析与参考回答:本机config只设置sequence_parallel=True并初始化TP/PP,没有context_parallel_size或CP attention通信;seq4096测到的是SP对norm/dropout等activation的影响和full recompute。CP需另建CP groups并验证attention K/V交换,因此不能用现有数字外推。

追问得分点(5分):指出实际flag 1 分;缺少CP group 1 分;缺少attention通信 1 分;正确称谓 1 分;补实验 1 分。

M070. TP2/CP2 时 process group 如何构造?

高分回答要点

  • 每个 sequence chunk 由一个 TP2 group处理,例如 GPU0-1 与 GPU2-3;对应 TP lane 跨 chunks形成 CP groups,如 (0,2)(1,3)
  • CP ranks复制 weights,但分片 tokens/activations,因此 weight gradient需跨 CP 对应域归并,官方实现可把 CP并入数据并行同步域。
  • rank mapping应让 TP和CP高频通信位于适合的NVLink/NVSwitch层级。

追问:给 TP4/CP2 的 8 rank,手写四个 CP groups。

前置知识与分析过程:先形成两个TP4 groups处理两个sequence chunks,再固定TP lane、跨chunk连接CP伙伴。权重复制和grad同步另行标出。

主问题得分点(10分):TP/CP group构造 4 分;token/weight ownership 2 分;grad同步 2 分;拓扑 2 分。

追问分析与参考回答:可令TP groups为(0,1,2,3)和(4,5,6,7),分别处理chunk0/1;CP groups是(0,4)、(1,5)、(2,6)、(3,7)。每个CP pair在同一TP lane上交换context,weights在CP维复制,weight grads需跨相应复制域汇总。

追问得分点(5分):两个TP组1分;四个CP组2分;chunk语义1分;grad复制1分。

M071. CP attention 为什么必须通信?

高分回答要点

  • 本地 Q 对应局部 tokens,但 causal/noncausal attention 需要与全序列 K/V交互。
  • 可通过 ring P2P传递 KV blocks,或 AllGather/A2A等布局变换;不同方法的内存、通信和 overlap不同。
  • softmax 需要在分块计算中保持 global max/sum数值等价,causal mask还影响每 rank有效工作量。

追问:只 gather K/V 后本地 attention容易理解,但峰值高;ring可流式计算却增加调度复杂度。

前置知识与分析过程:从单个local Q需要所有K/V的数学式出发,再比较一次性materialize和分块在线softmax两种实现。

主问题得分点(10分):全局依赖 3 分;至少两种通信方案 2 分;global softmax正确性 3 分;causal/负载 2 分。

追问分析与参考回答:AllGather K/V后每rank直接算local Q对full K/V,简单但峰值约随CP聚合;ring逐块传K/V,维护running max、exp sum和weighted value,用online softmax合并,内存低但有CP-1轮P2P、stream依赖和causal无效块处理。

追问得分点(5分):AG方案1分;ring方案1分;online softmax2分;causal/调度1分。

M072. 如何选择 CP communication type?

高分回答要点

  • 比较 sequence、head/GQA布局、CP degree、节点拓扑、attention kernel与是否能 overlap。
  • P2P/ring降低 full KV驻留但多轮通信;AllGather简单但峰值大;A2A/hybrid改变 head/sequence layout并依赖硬件层级。
  • 具体支持类型和约束随MCore/Transformer Engine版本变化,配置前必须查当前文档与源码校验。

追问:给两层网络拓扑时,hierarchical CP 应把哪种通信放节点内/节点间?先按 bytes与轮数建模再回答。

前置知识与分析过程:列候选通信的消息bytes、轮数、峰值与可overlap,再映射节点内高速域和节点间NIC。不能只按名字指定。

主问题得分点(10分):选择维度 4 分;各方案trade-off 3 分;版本约束 1 分;hierarchical mapping 2 分。

追问分析与参考回答:一般把多轮、延迟敏感或高频交换放节点内NVLink域,把跨节点通信尽量聚合为较少大消息;例如节点内A2A重排、节点间P2P/聚合只是候选。应按目标MCore支持的hybrid模式、GQA layout和实际rail做microbench+端到端验证。

追问得分点(5分):bytes/轮数2分;内外层原则1分;不武断指定1分;版本/实验1分。

M073. GQA/MQA 为什么会影响 CP 的负载和通信?

高分回答要点

  • KV heads少于Q heads,KV通信bytes下降,但head到rank的映射可能造成复制或不均匀。
  • ring/A2A实现对query groups和TP/CP可整除性有约束,局部attention kernel shape也变化。
  • 应分别估算Q compute、KV bytes、softmax和每rank有效token,而不是沿用MHA公式。

追问:长上下文容量规划中,训练activation与推理KV cache不要混为同一对象。

前置知识与分析过程:分别写Q heads、KV groups和head_dim,再计算训练K/V activation通信;另行说明推理cache跨layer/token长期驻留。

主问题得分点(10分):GQA对KV bytes 3 分;TP/CP映射 3 分;kernel/负载 2 分;训练/推理边界 2 分。

追问分析与参考回答:训练CP每layer需让local Q访问全context K/V,bytes与KV groups成正相关;MQA/GQA可降通信但groups<TP/CP时可能复制。推理KV cache则为每已生成token在所有layers保存K/V,容量公式和调度生命周期不同,不能拿训练activation peak直接估算服务并发。

追问得分点(5分):训练bytes1分;groups映射1分;推理长期cache2分;明确不可混用1分。

M074. full recompute、uniform 和 block 方法分别表示什么?

高分回答要点

  • full granularity对指定Transformer层/段只保存输入,backward时重跑完整layer forward。
  • uniform按固定层数分组checkpoint;block可只对某段/若干层应用,控制重算范围。
  • 保存边界、RNG和PP stage局部layer数必须一致;配置语义随版本需核对。

追问:本机使用 full+uniform+每组1层,seq4096显存省约78%、吞吐损失约28%-30%。

前置知识与分析过程:区分granularity决定“重算什么”,method决定“如何分段”,num_layers决定分组大小。再沿F/B说明保存与重算。

主问题得分点(10分):三个配置维度 4 分;RNG/边界 2 分;显存/FLOPs trade-off 2 分;本机数据 2 分。

追问分析与参考回答:full表示checkpoint完整Transformer layer输入,uniform按固定层数均匀分组,num_layers=1意味着逐层checkpoint;backward恢复输入/RNG并重跑该层forward。本机TP2/4 seq4096峰值约省78%,tok/s下降约28%-30%,是该shape/版本结果。

追问得分点(5分):三参数各1分;backward重算1分;准确数字和边界1分。

M075. selective recompute 为什么可能优于 full recompute?

高分回答要点

  • 不同activation的bytes/FLOPs重算比不同;选择保存昂贵算子、重算低成本高存储算子可得到更优Pareto点。
  • attention、MLP、norm、MoE permutation等模块可有不同策略;新版MCore支持更细粒度模块选择。
  • 需用saved tensor/memory snapshot与operator profile选对象,不能只按module名称猜。

追问:评价指标是可行最大batch/sequence、tokens/s、MFU、peak和数值正确性。

前置知识与分析过程:为每类saved activation计算bytes与重算FLOPs,按bytes saved / extra FLOPs排序,再考虑dependency和kernel融合。

主问题得分点(10分):selective原理 3 分;模块候选 2 分;profile选择 3 分;完整指标 2 分。

追问分析与参考回答:用saved-tensor hooks/memory snapshot找占峰值的大tensor,用operator profile算重算成本;优先重算高bytes、低FLOPs且易重建的模块,保留昂贵attention/GEMM中间状态视实现而定。做full/selective/off三组,固定GBS和loss验证Pareto。

追问得分点(5分):bytes/FLOPs比2分;profile工具1分;三组对照1分;correctness1分。

M076. activation offloading 与 recompute 如何比较?

高分回答要点

  • recompute用额外GPU FLOPs换显存;offload用CPU内存和PCIe/NVLink-C2C带宽换显存。
  • offload需安排D2H/H2D预取和pinned buffer,若无法隐藏会直接进入关键路径。
  • 可对不同模块细粒度组合,但要限制in-flight offload避免host/GPU双侧峰值。

追问:在本机PCIe V100上offload可能比NVLink-C2C平台更难隐藏,不能照搬新硬件结论。

前置知识与分析过程:写offload tensor bytes/PCIe带宽得到传输下界,与可用compute窗口比较;再算host和GPU两侧in-flight peak。

主问题得分点(10分):recompute/offload资源交换 3 分;异步预取 2 分;峰值/带宽 2 分;硬件边界与组合 3 分。

追问分析与参考回答:V100 PCIe可用带宽远低于NVLink-C2C,若D2H+H2D时间大于相邻layer compute就无法隐藏。应先测pinned异步带宽,限制max in-flight,对指定activation做offload/recompute消融;报告exposed copy、host peak和tok/s,而非依据新平台文档推断。

追问得分点(5分):传输下界1分;compute窗口1分;in-flight/host peak1分;实测方案1分;不外推1分。

M077. sequence packing 给 Megatron 带来哪些收益与正确性风险?

高分回答要点

  • 把多个短样本拼成固定长度,减少padding,提高有效tokens和GEMM/attention利用率。
  • 必须提供边界/position/cumulative lengths,使attention不能跨样本泄漏,loss mask也要排除padding/边界。
  • CP/PP和variable sequence会改变每rank token分配、P2P shape与负载均衡。

追问:correctness test应构造两个可辨识样本,验证packed输出与分别运行在有效token上一致。

前置知识与分析过程:先明确packing只优化padding,不允许跨样本attention/loss。逐字段检查position、mask、cu_seqlens和loss mask。

主问题得分点(10分):收益 2 分;四类metadata 3 分;并行负载影响 2 分;correctness/恢复 3 分。

追问分析与参考回答:构造A/B token分布明显不同,分别运行得到有效token logits;pack后使用block-diagonal attention边界和各自position,拆出对应logits比较。再故意去掉边界应观察交叉污染,从而证明oracle敏感。检查loss只统计各样本目标token。

追问得分点(5分):独立reference1分;边界mask1分;position1分;loss mask1分;负对照1分。

M078. global batch、microbatch、DP和num_microbatches如何联动?

高分回答要点

  • 基本关系 GBS=MBS x DP x num_microbatches;TP/PP/CP不直接增加独立数据样本数。
  • CP将同一sequence分片,不应算成更多batch;PP ranks处理同一microbatch的不同层。
  • 修改并行配置恢复训练时,需保持consumed samples/tokens和LR schedule语义。

追问:本机TP2/DP4/accum2/MBS2得到GBS16;TP4/DP2/accum4仍是16。

前置知识与分析过程:先标哪些维度产生独立样本,写公式后代值。恢复/改并行时再把consumed samples与LR schedule纳入。

主问题得分点(10分):公式 3 分;排除TP/PP/CP 3 分;两组实例 2 分;恢复语义 2 分。

追问分析与参考回答:第一组2*2*4=16,第二组2*4*2=16。TP/PP/CP中的ranks合作处理相同逻辑samples,不乘入GBS。虽然GBS相同,local GEMM、通信、microstep数和浮点顺序不同,所以系统成本不等价。

追问得分点(5分):两次计算2分;维度语义1分;系统不等价2分。

M079. 长序列时为什么吞吐可能先升后降?

高分回答要点

  • 从短到中等sequence,GEMM变大、固定通信/launch被摊薄,tokens/s可能上升。
  • 更长时attention二次复杂度、HBM/workspace和memory pressure主导,tokens/s下降并接近OOM。
  • 本机TP2从seq512约51.5k升至2048约82.5k,再在4096降至54.1k,是典型转折。

追问:不能只用tokens/s判断time-to-train,还需samples/s、FLOPs、MFU和目标数据序列分布。

前置知识与分析过程:把每step固定开销、线性GEMM和二次attention三项随s的增长写出,再解释tok/s分母/分子共同变化。

主问题得分点(10分):先升机制 3 分;后降机制 3 分;本机转折数字 2 分;指标边界 2 分。

追问分析与参考回答:短s时launch/TP通信等固定成本按token摊销高,中等s增大M维使GEMM效率提升;长s时attentions^2、workspace和memory压力超过摊销收益。比较配置需同时报tokens/s、sequences/s、executed/useful FLOPs和真实length分布。

追问得分点(5分):固定成本1分;GEMM效率1分;二次attention1分;本机趋势1分;多指标1分。

M080. 如何为长上下文选择 TP、CP、SP、recompute?

高分回答要点

  • 先拆参数、线性activation、attention activation/workspace和临时buffer,确定OOM主项。
  • 参数/layer放不下才增TP/PP/FSDP;长sequence activation优先评估CP、selective recompute和高效attention;SP补逐token复制项。
  • 用最小必要并行度保护GEMM shape和通信,拓扑上TP/CP放快域,并做容量/吞吐Pareto sweep。

追问:本机例子若只为放下seq4096,TP2+recompute比增TP或叠SP更直接;这不是所有模型的固定答案。

前置知识与分析过程:先做OOM归因,再给每种手段对应的状态对象和代价。按“满足容量的最小通信/计算损失”搜索Pareto。

主问题得分点(10分):状态拆分 3 分;四类手段适用对象 3 分;拓扑/最小并行 2 分;本机与外推边界 2 分。

追问分析与参考回答:本机TP2 seq4096 baseline 26.28GiB可放但很高,full recompute降至5.77GiB且损失29.7%;SP仅降到25.95GiB,增TP4会降低参数/activation却使PCIe TP更重。因此若目标只是容量,TP2+recompute更直接;新模型若参数本身不放下或有高速互连,选择会变。

追问得分点(5分):三组数字2分;代价比较1分;结论1分;不外推1分。



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

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

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

Megatron 面试题(六):MoE 与 Expert Parallel