모든 값을 같은 형식으로 두지 않기
가중치와 활성값의 일부를 낮은 정밀도로 처리하면 저장과 계산 비용을 줄일 수 있다. 하지만 작은 기울기나 누적 갱신이 표현 범위에서 사라질 수 있다. 고정밀 마스터 가중치 등을 유지하는 구성은 이런 손실을 완화한다.
손실 스케일링의 독립 예제
손실을 100배 하면 정확한 산술에서는 그 기울기도 100배다. 원래 기울기가 0.00002라면 스케일한 기울기는 0.002이고 갱신 전에 다시 100으로 나누어 복원한다. 이 값들이 특정 수치 형식에서 안전하다는 뜻이 아니라 스케일의 관계를 설명한 예다.
복원과 이상값
스케일을 너무 크게 잡으면 오버플로가 생길 수 있다. 반대로 너무 작으면 작은 값이 사라지는 문제를 충분히 줄이지 못한다. 기울기를 원래 스케일로 되돌리는 시점과 이상값 처리, 고정밀 누적을 함께 확인해야 한다.
성능과 전체 메모리
혼합 정밀도를 쓰면 가중치와 모든 상태가 정확히 절반 크기가 되는 것은 아니다. 고정밀 복사본과 옵티마이저 상태가 남을 수 있다. 지원 장치의 연산 성능, 입력 길이와 품질을 맞춰 실제 처리량과 최대 메모리를 비교한다.
관련 문서
확률적 반올림 / 신경망 양자화 / ZeRO 학습 메모리 최적화 / QLoRA / 언어 모형 / 트랜스포머