GPipe
GPipe(지파이프, 영어: GPipe)는 대규모 신경망 모델을 여러 장치에 나누어 학습시키기 위해 제안된 파이프라인 병렬(pipeline parallelism) 기법으로, 마이크로배치를 활용해 파이프라인의 유휴 시간(bubble)을 줄이고 장치 활용률을 높이는 것을 목표로 한다.
개요[편집 | 원본 편집]
GPipe는 모델을 여러 스테이지(stage)로 분할하고, 입력 미니배치를 여러 마이크로배치(micro-batch)로 나누어 순전파와 역전파가 서로 다른 장치에서 동시에 수행되도록 하는 방식이다. 이를 통해 파이프라인 병렬에서 발생하는 단계 간 대기 시간을 줄이고, 대규모 모델 학습을 효율적으로 수행할 수 있게 한다. 구글이 2019년 발표한 기법으로, TPU와 GPU 환경에서 안정적인 파이프라인 학습을 가능하게 만든 초기 연구 중 하나이다.
구조[편집 | 원본 편집]
GPipe는 다음과 같은 구조적 특징을 가진다.
- 모델을 연속된 여러 스테이지로 나눈다.
- 미니배치를 여러 마이크로배치로 분할해 파이프라인을 채운다.
- 순전파는 앞에서 뒤로, 역전파는 뒤에서 앞으로 진행되며 마이크로배치 단위로 분산된다.
- 모든 역전파가 종료된 이후에 한 번에 가중치를 업데이트한다.
동작 방식[편집 | 원본 편집]
마이크로배치 기반 파이프라인[편집 | 원본 편집]
GPipe는 단일 미니배치를 여러 마이크로배치로 쪼개어 파이프라인에 순차적으로 투입한다. 각 마이크로배치는 서로 다른 스테이지에서 동시에 처리될 수 있기 때문에, GPU들이 동시에 일할 수 있는 시간이 많아져 전체 처리량이 증가한다.
순전파와 역전파의 파이프라인화[편집 | 원본 편집]
- 순전파는 마이크로배치들이 스테이지 0에서 마지막 스테이지까지 이동하며 처리되는 과정이다.
- 역전파는 마지막 스테이지에서 시작해 첫 번째 스테이지까지 순차적으로 이동한다.
- 마이크로배치 단위로 두 과정이 섞여 진행되기 때문에, 서로 다른 마이크로배치의 forward와 backward가 동시에 실행될 수 있다.
가중치 업데이트 방식[편집 | 원본 편집]
GPipe는 모든 마이크로배치의 forward와 backward가 끝난 후, 전체 누적 기울기를 기반으로 한 번만 파라미터 업데이트를 수행한다. 이 방법은 가중치 시차(stale weight) 문제를 방지하며 안정적인 수렴을 돕는다.
파이프드림과의 차이[편집 | 원본 편집]
GPipe와 파이프드림(PipeDream)은 모두 파이프라인 병렬의 효율을 높이기 위해 고안되었지만 접근 방식이 다르다. GPipe는 모든 순전파와 역전파가 종료된 뒤 한 번에 가중치를 업데이트하므로 가중치 시차(stale weight)가 발생하지 않는 안정적인 구조를 갖는다. 반면 파이프드림은 1F1B(1 forward, 1 backward) 스케줄을 활용해 파이프라인 버블을 최소화하는 대신, 순전파와 역전파가 다른 시점에 실행되면서 여러 버전의 가중치를 유지해야 하며 결과적으로 가중치 시차를 관리하는 추가 메커니즘이 필요하다. GPipe는 안정성 중심, 파이프드림은 성능 중심의 설계라고 볼 수 있다.
특징[편집 | 원본 편집]
- 마이크로배치 기반 파이프라인으로 GPU 유휴 시간을 줄인다.
- 모든 역전파가 종료된 후 가중치를 갱신하므로 정합성이 높다.
- 파이프라인 병렬을 단순하게 구현할 수 있으며 학습 안정성이 높다.
- 모델 크기가 매우 커서 단일 장치에 적재하기 어려운 상황에서도 유용하다.
장점[편집 | 원본 편집]
- weight staleness가 없어서 수렴 안정성이 우수하다.
- 비교적 구현이 단순하고 해석이 쉽다.
- 파이프라인 병렬의 기본적 비효율을 마이크로배치로 완화한다.
단점[편집 | 원본 편집]
- 모든 역전파 후 업데이트를 수행하기 때문에 파라미터 갱신이 느릴 수 있다.
- PipeDream과 같은 기법에 비해 파이프라인 효율이 낮을 수 있다.
- 마이크로배치 수가 적으면 bubble이 크게 나타나 성능이 떨어질 수 있다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Huang, Yanping, et al. GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism. arXiv (2019).
