컴퓨터 산술
AI 혼합 정밀도 학습에서 계산의 대부분을 FP16이나 bfloat16으로 수행하면서 가중치의 원래 값(마스터 가중치)을 FP32로 유지해 두는 주된 이유는 무엇입니까?
- A작은 갱신량을 가중치에 더할 때 정밀도가 낮은 형식에서는 정보 누락으로 갱신이 사라져 버리기 때문
- BFP32가 FP16보다 계산이 빠르므로 가중치 계산을 모두 FP32에 맡기기 때문
- CFP16이나 bfloat16에서는 가중치 값을 메모리에 저장할 수 없도록 정해져 있기 때문
정답과 해설 보기
정답: A. 작은 갱신량을 가중치에 더할 때 정밀도가 낮은 형식에서는 정보 누락으로 갱신이 사라져 버리기 때문
학습에서는 가중치에 「학습률 × 그래디언트」라는 매우 작은 값을 여러 번 더해 갑니다. FP16이나 bfloat16은 가수가 짧아, 가중치에 비해 갱신량이 너무 작으면 더한 결과가 반올림으로 원래 가중치 그대로가 되어 갱신이 사라집니다(정보 누락). 그래서 가중치는 FP32로 유지하여 갱신을 올바르게 누적하고, 순전파와 역전파 계산에는 낮은 정밀도로 변환한 사본을 사용합니다. 계산 속도는 낮은 정밀도가 더 빠르며, 낮은 정밀도의 값도 저장할 수 있습니다.