DeepSpeed 在多機多卡訓練時,主要依賴 NCCL 和 PyTorch Distributed 進行通信。具體來說,分為服務器之間和服務器內兩種情況:
1. 服務器之間的通信(跨節點通信)
DeepSpeed 采用 NCCL(NVIDIA Collective Communications Library)作為主要的通信后端,結合 PyTorch Distributed 實現數據同步。其核心原理如下:
- 進程組通信:DeepSpeed 使用
torch.distributed
進行 進程組(Process Group) 管理,每個 GPU 都是一個獨立進程,每個服務器上的所有進程形成一個集群。 - NCCL 后端通信:
- 主要使用 AllReduce、AllGather 和 ReduceScatter 進行梯度同步和參數聚合。
- NCCL 通過 InfiniBand 或 RDMA 提供高帶寬、低延遲的通信能力。
- 默認使用 TCP 或 RDMA 進行數據傳輸,具體取決于網絡配置。
- Rendezvous 機制:DeepSpee