각 장치의 중복 상태
일반적인 데이터 병렬 학습에서는 장치마다 전체 가중치와 관련 학습 상태를 보관할 수 있다. 같은 정보를 여러 번 저장하면 모형 크기에 비해 장치 메모리를 비효율적으로 사용한다. ZeRO는 상태를 담당 장치별로 나누고 필요할 때 통신한다.
분할 범위
첫 단계는 옵티마이저 상태를 나누고 다음 단계는 기울기 분할을 더한다. 세 번째 단계는 매개변수까지 분할한다. 따라서 어느 단계를 쓰는지에 따라 남는 복제와 필요한 통신이 다르다. 이름만으로 전체 메모리 절감률을 판단할 수는 없다.
저장량의 독립 예제
옵티마이저 상태가 12GB이고 네 장치가 전체를 각각 저장하면 합계는 48GB다. 균등 분할하면 상태의 영구 저장분은 장치당 3GB다. 가중치, 활성값과 통신 버퍼는 제외한 계산이며 실제 순간 최대 사용량이 3GB라는 뜻은 아니다.
통신과 전체 메모리
분할한 상태나 매개변수를 필요한 시점에 모으는 데 통신과 임시 공간이 든다. 활성값과 메모리 단편화도 별도 부담이다. 장치 수를 늘린 만큼 무조건 속도가 좋아지는 것은 아니므로 네트워크와 실행 일정, 실제 최대 메모리를 함께 측정한다.