Parallelism
Data Parallelism(DP)
Multi GPU 환경에서 데이터를 병렬화하여 모델을 학습하는 방법입니다. 매 스텝마다 를 집계하여 를 업데이트하는 비용이 추가적으로 발생합니다.
모델이 커짐에 따라 발생하는 메모리 문제를 해결하기 위해 ZeRO를 함께 사용할 수 있습니다.
Pipeline Parallelism(PP)
Multi GPU 환경에서 모델을 레이어 단위로 분할하여 병렬화하는 방법입니다. 레이어 단위로 분할해서 병렬화하기 때문에 모델이 커짐에 따라 발생하는 메모리 문제를 해결할 수 있습니다. 단, 각 레이어는 이전 레이어의 출력을 입력으로 받아야하므로 일부 GPU가 아무일도 하지 않는 Bubble이라는 문제가 발생합니다.
loading...
Figure 2 - GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism
이 문제를 해결하기 위해 위 그림처럼 mini-batch를 더 작은 단위인 micro-batch로 나눠서 처리하는 방법 등이 있습니다.
Tensor Parallelism(TP)
Multi GPU 환경에서 레이어 자체를 분할하여 병렬화하는 방법입니다.
3D Parallelism

Figure 1 - DeepSpeed: Extreme-scale model training for everyone

Figure 2 - DeepSpeed: Extreme-scale model training for everyone