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).
