본문 바로가기

논문 리뷰/etc.

GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism

[Github]

[arXiv](Current version v5)

 

Abstract

신경망 계층 여러 가속기에 분산하여 다양한 작업에 대한 효율적인 규모 확장을 가능케 하는 라이브러리인 GPipe 제안

 

 

The GPipe Library

Interface

네트워크는 L 레이어를 가지고 있고, 각 레이어는 순전파 함수 f, 피라미터 w로 이루어져 있다. 

GPipe는 L개의 레이어를 K개의 파티션으로 분할하고, i ~ j 레이어를 나타내는 파티션 p는 피라미터 wi, wi+1,..., wj, 순전파 함수 F, 역전파 함수 B, 비용 추정기 C를 가진다.

 

Algorithm

k번째 셀을 k번째 가속기에 배치.

미니 배치를 나눈 각 마이크로 배치에 대해 gradient가 누적되고 미니 배치가 완전히 끝났을 때 피라미터 업데이트.

 

배치 정규화가 필요할 경우 마이크로 배치에 대해 계산.

 

Performance Optimization

활성화 메모리를 줄이기 위해 순전파 중에는 파티션의 경계에서만 활성화를 저장하고 역전파에서 F를 다시 계산한다.

 

그림 (c)를 보면 각 가속기의 유휴 시간이 있는데, 이를 bubble overhead라고 한다. 마이크로 배치 M이 클수록 bubble overhead가 줄어든다고 한다.