本地梯度累积加速训练 1.7 倍
由于流水线中的空闲时间,训练速度往往会遇到瓶颈。这种空闲时间被称为“气泡”(bubble)。
一种名为 PACI 的新方法解决了这个问题。它消除了这些气泡,并将训练速度提高了 1.69 倍。
大多数团队使用一种称为 1F1B-flush 的策略。这种方法保持了权重的连贯性,但会产生系统等待数据的空槽。这些等待时间会拖慢整体进度。
其他异步方法试图解决这个问题。它们使用复杂的技巧,如权重暂存(weight stashing)或副本复制。这些技巧占用过多内存,且往往会导致训练不稳定。
PACI 另辟蹊径。它使用本地梯度累积(local gradient accumulation)。这可以在不需要全局同步的情况下保持流水线忙碌。
以下是 PACI 的重要性所在:
- 它能达到与标准方法相当的稳定性。
- 它使用的内存量相同。
- 它能达到更快但更重型配置的速度。
- 它将达到目标精度所需的时间缩短了 1.69 倍。
在 GPT-2 Medium 的测试中,PACI 达到目标精度的速度快得多。这表明,你可以通过牺牲少量的权重漂移(weight drift)来换取巨大的效率提升。
对于工程团队而言,这意味着硬件成本降低了 40%。你无需购买更多 GPU 或增加更多内存,即可获得更快的实验结果。
研究人员在具有 GPT 风格模型的 8 阶段流水线上测试了这一点。如果你更改了流水线深度或 batch size,可能需要调整累积窗口(accumulation window)。
你可以亲自测试。作者在他们的仓库中提供了一个 local-accumulation wrapper。用它替换你当前的 flush 同步器,即可看到加速效果。
Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk
Optional learning community: https://t.me/GyaanSetuAi