Lect12-ML Parallelization-part1
整理自 CMU 15-779 Lect 12,从数据并行到 ZeRO,解答了是如何把大模型塞进有限的显存里的问题。 Data Parallelism 训练本质上是计算梯度并更新权重。数据并行直观理解就是如果有 $ N $ 个 GPU,那么把总的 Batch Size 分成 $ N $ 份。 在第 $ k $ 个 GPU上的计算过程: Local Gradient:基于本地数据 $ x^{(k)} $ 计算梯度 $$ g^{(k)} = \nabla L(w_t, x^{(k)}) $$ All-Reduce:计算全局平均梯度 $$ \bar{g} = \frac{1}{N} \sum_{k=1}^{N} g^{(k)} $$ Weight Update:所有 GPU 使用相同的 $ \bar{g} $ 更新权重 $$ w_{t+1} = w_t - \eta \cdot \text{Optimizer}(\bar{g}, \text{State}_t) $$ 这时每个 GPU 上都会有一样的完整模型副本,各算各的梯度,最后在汇总计算。 实现方法 ...