층 구간을 이어 실행하기
앞쪽 층과 뒤쪽 층을 서로 다른 장치에 배치하고 구간 사이에서 활성값을 전달한다. 입력 배치를 여러 조각으로 나누면 앞 장치가 다음 조각을 계산하는 동안 뒤 장치는 앞 조각을 처리할 수 있다. 각 장치에 전체 모형을 복제하는 데이터 병렬과는 다르다.
파이프라인의 독립 예제
두 구간이 각각 한 시간 단위를 쓰고 마이크로배치가 세 개라고 하자. 순전파만 보면 A1, 그다음 A2와 B1, A3와 B2, 마지막 B3로 네 단위에 처리할 수 있다. 통신과 역전파를 제외한 가상 일정이므로 전체 학습 속도비를 나타내지는 않는다.
마이크로배치와 갱신
작은 조각들의 기울기를 모아 원래 배치 단위의 갱신을 구성할 수 있다. 이를 조각마다 곧바로 가중치를 바꾸는 절차와 혼동하면 안 된다. 정규화나 난수 처리 등 배치 의존 연산은 분할 전 실행과의 관계도 확인해야 한다.
효율의 조건
한 구간이 유난히 느리면 다른 장치가 기다리는 시간이 늘어난다. 파이프라인을 채우고 비우는 유휴 구간과 활성값 저장 및 재계산 비용도 든다. 조각 수를 늘릴 때의 비용을 포함해 실제 학습 시간과 메모리를 비교한다.
관련 문서
ZeRO 학습 메모리 최적화 / PowerSGD / 언어 모형 / 트랜스포머 / 역전파 / GaLore