학습 데이터를 여러 GPU에 나눠 학습 (usually work out of box with carefulness for dataloading)
Challenges are computing efficiency for gradient all-reduce and training efficiency of batch-size
목적은 결국 한번에 돌리는 Batch Processing 수를 늘이려는 것임
- 입력 데이터와 모델의 파라미터를 각 GPU에 전달
- backward 과정에서는 각 GPU에 전달된 데이터와 관련된 gradient를 나누어 주어야
- 마지막으로 모든 gradient를 모으고 업데이트
위 overhead를 거치기 때문에 일반적인 DP로는 GPU 개수만큼 비례하게 늘어나지 못함. 보통 GPU중 하나가 control tower역할을 하는데, 이 문제를 해결하기 위해 다양한 방식이 등장
DP보다는 DDP가 무조건적으로 좋고, DDP와 FSDP 사이에는 장단점
Data Parallelism Usages