mirror of
https://github.com/hpcaitech/ColossalAI.git
synced 2025-09-05 11:02:05 +00:00
[doc] update hybrid parallelism doc (#3770)
This commit is contained in:
@@ -7,7 +7,7 @@ Author: Zhengda Bian, Yongbin Li
|
||||
- [Configure Parallelization](../basics/configure_parallelization.md)
|
||||
|
||||
**Example Code**
|
||||
- [ColossalAI-Examples 1D Tensor Parallelism](https://github.com/hpcaitech/ColossalAI-Examples/tree/main/features/tensor_parallel/tensor_parallel_1d.py)
|
||||
- [ColossalAI-Examples 1D Tensor Parallelism](https://github.com/hpcaitech/ColossalAI-Examples/blob/main/features/tensor_parallel/README.md)
|
||||
|
||||
**Related Paper**
|
||||
- [Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM](https://deepakn94.github.io/assets/papers/megatron-sc21.pdf)
|
||||
@@ -19,15 +19,15 @@ An efficient 1D tensor parallelism implementation was introduced by [Megatron-LM
|
||||
|
||||
Let's take a linear layer as an example, which consists of a GEMM $Y = XA$. Given 2 processors, we split the columns of $A$ into $[A_1 ~ A_2]$, and calculate $Y_i = XA_i$ on each processor, which then forms $[Y_1 ~ Y_2] = [XA_1 ~ XA_2]$. This is called a column-parallel fashion.
|
||||
|
||||
When a second linear layer $Z=YB$ follows the column-parallel one, we split $B$ into
|
||||
```math
|
||||
When a second linear layer $Z=YB$ follows the column-parallel one, we split $B$ into
|
||||
$$
|
||||
\left[\begin{matrix} B_1 \\ B_2 \end{matrix} \right]
|
||||
```
|
||||
$$
|
||||
which is called a row-parallel fashion.
|
||||
To calculate
|
||||
```math
|
||||
To calculate
|
||||
$$
|
||||
Z = [Y_1 ~ Y_2] \left[\begin{matrix} B_1 \\ B_2 \end{matrix} \right]
|
||||
```
|
||||
$$
|
||||
we first calculate $Y_iB_i$ on each processor, then use an all-reduce to aggregate the results as $Z=Y_1B_1+Y_2B_2$.
|
||||
|
||||
We also need to note that in the backward pass, the column-parallel linear layer needs to aggregate the gradients of the input tensor $X$, because on each processor $i$ we only have $\dot{X_i}=\dot{Y_i}A_i^T$.
|
||||
|
Reference in New Issue
Block a user