개요
분산학습은 모델 학습을 다수의 노드에 나누어 수행하는 기술로, 대규모 데이터 및 복잡한 모델을 처리할 때 필수적으로 요구되는 방법입니다. 분산학습 유형으로는 Data Parallelism과 Model Parallelism 방식이 있습니다.
- Data Parallelism: 데이터를 다수의 GPU에 분할
- Model Parallelism: 모델 파라미터를 다수의 GPU에 분할
Data Parallelism
데이터의 크기가 클 경우, 다수의 GPU에 데이터를 분할하여 연산한 후 최종 업데이트 결과에 대해 평균을 내는 방법입니다. n개의 GPU에 나누어 연산하는 만큼, 분배하거나 결합하기 위해 동기화(Synchronization)하는 과정이 필요합니다.

여기서 동기화 작업은 부가적인 시간이 발생하는 오버헤드로 작용합니다. Data Parallelism은 다수의 GPU로부터 Weight Parameter(또는 Gradient)를 호출하여 결합한 다음 평균을 냅니다. 그 후 Weight Parameter(또는 Gradient)의 평균값을 다수의 GPU에 분배합니다. 이를 All-Reduce라 하는데, GPU 간 데이터 전송 속도나 대역폭이 제한적일 경우 학습 속도가 저하되게 됩니다.

GPU 간 Interconnect가 중요하기 때문에 Multi-GPU 또는 Multi-Node 학습 환경에서는 NVIDIA의 NVLink, NVSwtich 또는 Infiniband가 필수적으로 요구됩니다.
- NVLink: GPU 간 고속 통신
- NVSwitch: NVLink를 확장하여 다수의 GPU를 상호 연결
- Infiniband: 서버와 스토리지 장치 간 고속 네트워크 연결
Model Parallelism
모델 크기가 커서 단일 GPU 메모리에 들어가지 않을 경우, 다수의 GPU에 Parameter를 나누어 연산하는 방법입니다.
- Tensor Parallelism: Weight Matrix를 분할하여 다수의 GPU에서 연산 후 결과를 결합
- Pipeline Parallelism: 모델의 레이어를 다수의 GPU에 분할하여 순차적으로 학습

Model Parallelism은 Data Parallelism에 비해 동기화 빈도가 훨씬 더 높다는 단점이 있습니다. Data Parallelism은 Forward Pass와 Backward Pass를 거친 후 최종 결과인 Weight(또는 Gradient)만을 공유하고 다시 재분배하면 됩니다. 하지만 Model Parallelism은 모델을 분할하였기 때문에 각 GPU가 생성한 중간 결과물을 연산이 끝날 때마다 매번 동기화해야 하는 부담이 있습니다.
'AI & GPU' 카테고리의 다른 글
NCCL (0) | 2025.04.02 |
---|---|
머신러닝에서 요구하는 선형대수학 02 - 벡터 연산 (0) | 2025.03.29 |
머신러닝에서 요구하는 선형대수학 01 (1) | 2025.03.28 |
머신러닝 모델 성능평가 (0) | 2025.03.28 |
머신러닝 개요 (0) | 2025.03.28 |