두 숫자 형식을 하나의 학습 루프에서 사용해
혼합 정밀도는 행렬 곱과 합성곱처럼 계산량이 큰 연산을 float16이나 bfloat16으로 실행하고 넓은 범위가 필요한 부분은 float32로 유지해. 16비트 연산에서 속도 이득을 얻되 가중치의 주 복사본과 그래디언트 누적은 32비트로 보존해 작은 갱신이 반올림에 사라지지 않게 하지.
한 줄로 활성화할 수 있어
모델을 만들기 전에 set_global_policy('mixed_float16')를 호출하고 이후에는 평소처럼 구성하고 학습해. Keras가 알맞은 경계에 형 변환을 넣어 줘. 마지막 Dense는 softmax 없이 원시 로짓을 내고 from_logits=True와 짝지어. float16 softmax의 넘침을 피하고 손실을 수치적으로 안정되게 계산할 수 있어.
속도 이득은 하드웨어에 달려 있어
2~3배 가속은 알맞은 텐서 연산 장치가 있을 때만 가능해. Tensor Core가 없는 GPU나 CPU에서는 메모리는 줄어도 속도 이득이 거의 없고 형 변환 비용만 늘 수 있어. 가정하지 말고 반드시 실제 장비에서 측정해.