TP(Tensor Parallelism)
Tensor Parallelism(TP)在每个 Transformer Layer 内切分权重、激活和计算,由多个 TP Rank 共同完成同一批 token 的前向计算。Dense Transformer 的 Attention 和 MLP 通常都采用“Column Parallel 切分中间特征,Row Parallel 归并输出”的 Megatron-LM 风格。
下文只讨论 Dense Decoder Layer 的前向计算,设
1. Column Parallel 与 Row Parallel
对线性层
每个 Rank 只生成一部分输出特征,完整结果在逻辑上为
Row Parallel 沿矩阵乘的归约维度
每个 Rank 计算形状与
2. Attention
设输入
2.1 Q/K/V/O 的维度关系
四个投影矩阵的形状为:
| 权重 | 形状 | 投影或输入形状 |
|---|---|---|
推导的核心是:Attention 按 Query Head 独立计算。令 GQA 的共享比例为
KV Head 可以被多个 Query Heads 共享,但每个 Query Head 都产生一个独立的
所以
2.2 Q/K/V 投影按 Head 切分
Q/K/V 投影使用 Column Parallel:
Q_r: [T, h_q / p, d_k]
K_r: [T, h_kv / p, d_k]
V_r: [T, h_kv / p, d_v]不同 Query Heads 的 Attention 计算之间没有数据依赖。只要共享同一 KV Head 的 Query Heads 与该 KV Head 位于同一 Rank,各 Rank 就可独立执行 RoPE、Attention Score、Softmax 和 Value 加权。因此 Q/K/V 投影和 Attention 核心计算之间不需要 TP 集合通信;KV Heads 被切分时,KV Cache 也按本地 KV Heads 分片。
2.3 本地 Head Concat 与 Output Projection
Attention 为每个本地 Query Head 产生输出
这是 Rank 内部的语义操作,不涉及 TP 集合通信。实现通常已经将本地 Heads 存在同一个张量中,因此不需要逐 Head 调用 concat,而是通过布局转换和 reshape 将 Head 维展平到 GEMM 的归约维:
[B, h_q / p, S, d_v]
→ transpose
[B, S, h_q / p, d_v]
→ reshape
[T, h_q d_v / p]输出布局连续时可能只需要 reshape;否则需要 transpose + contiguous,Fused Attention Kernel 也可直接产生适合 Output Projection 的布局。
局部 Concat 完成后,不需要收集其他 Rank 的 Heads。将
则:
每个 Rank 先计算
GQA/MQA 的 KV Head 数可能小于 TP Degree。此时框架需要复制 KV Heads,或限制
3. MLP
以 SwiGLU MLP 为例,中间维度为
这样 SwiGLU 的激活和逐元素乘法都可在本地完成,
4. 通信与约束
经典 TP 布局中,每个 Rank 在 Decoder Layer 输入处持有完整
| 模块 | Column Parallel | 本地计算 | Row Parallel | 归并 |
|---|---|---|---|---|
| Attention | Q/K/V Projection | 本地 Heads Attention | Output Projection | 1 次 All-Reduce |
| MLP | Gate/Up Projection | SwiGLU | Down Projection | 1 次 All-Reduce |
因此一个标准 Decoder Layer 通常有两次 TP All-Reduce。归并后的激活在各 Rank 上一致,Residual Add 和 RMSNorm 可以本地执行。
与 Sequence Parallel 组合时,Row Parallel 后的 All-Reduce 可拆成 Reduce-Scatter,使各 Rank 只保留一段 token 激活;在下一个需要完整 token 输入的 Column Parallel 前再执行 All-Gather。
TP 还有以下实现约束:
、 和 通常需要与 TP Degree 兼容。 - 量化 Group Size、Fused QKV 布局和 SwiGLU Gate/Up 排列必须与分片边界对齐。
- TP Degree 越大,每个 Rank 的 GEMM 越小,集合通信占比越高;TP Group 通常优先放在 NVLink/NVSwitch 等高速互联域内。