위키득계정 ↗
기술

GPipe

GPipe기술
영문
GPipe
병렬 방식
층 구간의 파이프라인 병렬
입력 분할
마이크로배치
주요 과제
구간 균형과 유휴 시간
GPipe는 연속된 층들을 여러 가속기에 나누고 작은 마이크로배치를 파이프라인으로 처리하는 학습 방식이다. 한 장치의 메모리에 들어가지 않는 신경망을 여러 구간으로 실행한다.

층 구간을 이어 실행하기

앞쪽 층과 뒤쪽 층을 서로 다른 장치에 배치하고 구간 사이에서 활성값을 전달한다. 입력 배치를 여러 조각으로 나누면 앞 장치가 다음 조각을 계산하는 동안 뒤 장치는 앞 조각을 처리할 수 있다. 각 장치에 전체 모형을 복제하는 데이터 병렬과는 다르다.

파이프라인의 독립 예제

두 구간이 각각 한 시간 단위를 쓰고 마이크로배치가 세 개라고 하자. 순전파만 보면 A1, 그다음 A2와 B1, A3와 B2, 마지막 B3로 네 단위에 처리할 수 있다. 통신과 역전파를 제외한 가상 일정이므로 전체 학습 속도비를 나타내지는 않는다.

마이크로배치와 갱신

작은 조각들의 기울기를 모아 원래 배치 단위의 갱신을 구성할 수 있다. 이를 조각마다 곧바로 가중치를 바꾸는 절차와 혼동하면 안 된다. 정규화나 난수 처리 등 배치 의존 연산은 분할 전 실행과의 관계도 확인해야 한다.

효율의 조건

한 구간이 유난히 느리면 다른 장치가 기다리는 시간이 늘어난다. 파이프라인을 채우고 비우는 유휴 구간과 활성값 저장 및 재계산 비용도 든다. 조각 수를 늘릴 때의 비용을 포함해 실제 학습 시간과 메모리를 비교한다.

관련 문서

ZeRO 학습 메모리 최적화 / PowerSGD / 언어 모형 / 트랜스포머 / 역전파 / GaLore