← 返回书架人工智能 · 交互式 Wiki
模型工程/上下文并行与梯度归还资料与边界
训练系统与性能进阶计算演示

DISTRIBUTED ATTENTION / CONTEXT PARALLEL

上下文并行:一条序列跨卡,仍算同一个目标

每张卡拥有一段位置,Attention 还需要其他位置的 K/V。沿全局位置、在线归一化和梯度拥有者,检查分片前后是否得到相同输出与更新信号。

01 / OWNERSHIP

切的是位置,归一化仍覆盖全部可见 key

rank 0 默认拥有位置 0、1,rank 1 拥有 2、3、4。每个 query 留在自己的 rank,依次读取本地和远端 K/V。因果规则使用全局 j≤i,位置 2 必须能看到 0、1;局部编号只能用于存储索引。

Megatron Core 的 CP 将输入和激活沿序列维划分;其文档对比的 SP 主要划分 LayerNorm、Dropout 等激活。名称相近的实现需要核对实际张量布局与通信,不宜只凭 SP/CP 缩写判断。

Q / OWNER

保留本地 query

局部线性层可独立处理每个位置;共享权重梯度仍需要正确合并。

KV / EXCHANGE

遍历各拥有者的块

读入 K/V,依据全局位置过滤,累计每行最大值、分母和加权和。

BACKWARD / REPLAY

重建局部概率

用整行 LSE 与输出计算当前块的 dQ、dK、dV。

GRADIENT / RETURN

归还 K/V 梯度

不同 query rank 对同一个 K/V 的贡献返回其拥有者后求和。

02 / ONE ROW

远端块到达时,怎样接续已有状态?

m′=max⁡(m,max⁡j∈BSij),c=em−m′,ℓ′=cℓ+∑j∈BeSij−m′,a′=ca+∑j∈BeSij−m′Vj,Oi=a/ℓ,λi=m+log⁡ℓ.\begin{aligned}m'&=\max(m,\max_{j\in B}S_{ij}),\quad c=e^{m-m'},\\\ell'&=c\ell+\sum_{j\in B}e^{S_{ij}-m'},\\a'&=ca+\sum_{j\in B}e^{S_{ij}-m'}V_j,\\O_i&=a/\ell,\quad \lambda_i=m+\log\ell.\end{aligned}
Sᵢⱼ=Qᵢ·Kⱼ/√d,B 只含全局 mask 允许的 key。首个非空块取 c=0;全空行显式定义输出和导数为零。

块来自哪张卡不改变这个关系。按块独立 softmax 后等权平均,会给不同块相同总权重;真正的块权重由各块的指数质量决定。反向使用 G/5 作为上游,因此所有 query 都具有相同目标权重。

∂Kj=∑r∑i∈Ir∂SijQi/d,∂Vj=∑r∑i∈IrPij(Gi/5).\begin{aligned}\partial K_j&=\sum_r\sum_{i\in I_r}\partial S_{ij}Q_i/\sqrt d,\\\partial V_j&=\sum_r\sum_{i\in I_r}P_{ij}(G_i/5).\end{aligned}
Iᵣ 是 rank r 拥有的 query。对 K/V 的归约是求和;本例已经在上游使用全局分母,不再平均这些表示梯度。
03 / TWO OWNERS

逐事件查看跨位置计算

顶部与最终表格计算全部事件后的结果;中间事件表展示当前读取或归还的块。

同一 Q/K/V 的分片与完整参考

binary64 · 全局 query 平均
完整输出最大差
Q/K/V 梯度最大差
当前 loss / 参考 loss
事件

对象可见 key / 目标运行最大值 / dK指数和前缀输出 / dV

最终输出、梯度与完整参考
位置输出参考输出dQdKdV
复算所用的全部输入
04 / PROTOCOL ACCOUNTING

通信、常驻状态和临时块分别占多少?

账本声明一种教学协议:前向每个远端 K/V 发送一次;反向再次读取远端 K/V;每个 query rank 向 K/V 拥有者返回累加贡献。页面把反向贡献按拥有者汇总展示,Python 按块传回;实际通信采用所有 rank 一致的拥有者顺序,页面前向先显示本地块。两种遍历顺序都使用整行归一化。数值类型 float64,每元素 8 B。所有块都发送,包括因果 mask 下无有效位置的块;生产实现可进一步跳过无用通信。

rank拥有位置前向 KV / 重放 KV / 梯度发送元素发送 / 接收 B常驻 QKV / 远端块 / 在线状态元素

常驻 Q/K/V、临时远端 K/V 与 m/ℓ/a 分开计量;O、LSE、梯度、计算 workspace 和通信缓冲区还要另算。页面完整 P、参考结果、事件快照服务于教学,不用于声称浏览器节省内存。网络拓扑、消息分段和能否重叠计算需设备实测。

05 / INDEPENDENT CHECK

用完整 autograd 与两个真实进程核验

npm run lab:decisions 在固定 PyTorch CPU 环境中计算完整 Attention 的自动微分参考,并启动两个 Gloo 进程,交换不等长 K/V、重放与返回梯度。检查因果边界、空行、不同块大小和梯度丢失;报告保留每个 rank 的结果。实验以 Q/K/V 为独立变量,未包含共享投影层或 DDP 参数平均。

适用范围与一手资料

五位置二维 Q/K/V、固定 G、全局平均、无 dropout。比较分片输出与输入梯度;两个 Gloo 进程运行明确的 KV 重放与梯度归还协议,不调用 Megatron 或 NCCL,不估算 GPU 性能。

公式与机制的原始依据 · 4 项
知识目录
搜索知识库