링 올 리듀스
IT 위키
링 올 리듀스(Ring All-Reduce)는 분산 딥러닝 및 고성능 컴퓨팅(HPC) 환경에서 다수의 노드(주로 GPU) 간에 데이터를 효율적으로 집계하고 공유하기 위해 사용되는 올 리듀스(All-Reduce) 알고리즘의 한 형태이다.
개요[편집 | 원본 편집]
링 올 리듀스는 모든 노드를 링(Ring) 형태로 연결하여, 각 노드가 자신의 텐서를 여러 조각(chunk)으로 분할한 뒤 인접한 노드와 데이터를 교환하며 기울기(gradient) 또는 텐서 값을 점진적으로 집계한다. 통신량이 모든 노드에 균등하게 분산되기 때문에 확장성이 높아, 대규모 분산 딥러닝 환경에서 널리 사용되는 방식이다.
구조[편집 | 원본 편집]
링 올 리듀스는 일반적으로 다음과 같은 구조적 특징을 갖는다.
- 모든 노드를 일렬로 연결한 뒤 양쪽 끝을 이어 링 형태를 만든다.
- 각 노드는 자신의 텐서를 노드 수(N)만큼의 조각으로 나눈다.
- 통신은 이웃 노드 간에만 이루어지며, 전체 링을 따라 순차적으로 전달된다.
동작 방식[편집 | 원본 편집]
링 올 리듀스는 크게 두 단계로 구성된다.
1. 리듀스-스캐터(Reduce-Scatter) 단계[편집 | 원본 편집]
- 각 노드는 자신의 텐서를 N개의 chunk로 나눈다.
- 오른쪽 또는 왼쪽 이웃에게 하나의 chunk를 전달하고, 동시에 이웃으로부터 하나의 chunk를 받는다.
- 받은 chunk와 자신의 해당 chunk를 더하여(reduce) 새로운 partial sum을 만든다.
- 이 과정을 N-1번 반복하면, 각 노드는 전체 텐서의 일부 구간(1/N chunk)에 대해 합산된 결과를 가지게 된다.
2. 올-게더(All-Gather) 단계[편집 | 원본 편집]
- 각 노드는 자신이 보유한 partial sum을 이웃 노드에게 전달한다.
- 노드들은 서로 chunk를 교환하여 전체 gradient를 점차 모은다.
- N-1번 반복 후 모든 노드는 전체 텐서가 재구성된 동일한 결과를 갖는다.
특징[편집 | 원본 편집]
- 모든 노드가 동일한 통신량을 가지므로 부하가 균등하게 분산된다.
- 각 단계의 통신량이 일정하여 노드가 증가하더라도 확장성이 좋다.
- Parameter Server 방식과 달리 중앙 집중 병목이 발생하지 않는다.
- GPU 간 통신에 최적화된 NCCL 라이브러리에서 기본적으로 채택하는 방식이다.
장점[편집 | 원본 편집]
- 높은 확장성: 노드 수가 많아져도 성능 저하가 적다.
- 균등한 통신 부담: 특정 노드에 병목이 생기지 않는다.
- 점대점(P2P) 통신 기반이라 네트워크 효율이 뛰어나다.
단점[편집 | 원본 편집]
- 단계가 N-1번 반복되므로 지연(latency)에 민감할 수 있다.
- 모든 노드가 동기적으로 참여해야 하므로 느린 노드가 전체 학습 속도를 저하시킬 수 있다.
- 네트워크 토폴로지가 링 구조를 효율적으로 지원해야 최대 성능을 낼 수 있다.
활용[편집 | 원본 편집]
- 대규모 딥러닝 모델 학습의 데이터 병렬 처리
- PyTorch DistributedDataParallel(DDP)
- TensorFlow MirroredStrategy
- Horovod 분산 학습 프레임워크
- NVIDIA NCCL 기반 GPU 간 집합 통신
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Sergeev, A.; Del Balso, M. "Horovod: Fast and Easy Distributed Deep Learning in TensorFlow." arXiv (2018).
- Thakur, R.; Rabenseifner, R.; Gropp, W. "Optimization of Collective Communication Operations." International Journal of High Performance Computing Applications (2005).



