gradScaler, Autocast

Yezun Chung·2023년 12월 22일
0

Deep Learning

목록 보기
15/16

부동소수점(숫자를 표현하는 방식)이 FP32 인 경우 많은 메모리를 차지해 학습 속도가 느려질 수 있음

그렇다고 FP16 만 쓰자니 학습 성능이 낮아짐(loss 높아짐)

이를 해결하기 위해 FP16 으로 연산하면 빨라지는 부분들(linear layer, conv layer 등)은 FP16 으로 연산하고 나머지는 FP32 를 쓰는 mixed precision 방법 채택 : 이것이 Autocast

forward 연산에서 FP16으로 계산하면 backward 에서도 FP16으로 연산하는데, 이때 gradient 값이 너무 작아서 fp16으로 표현이 안됨, 즉 underflow 발생

그래서 backward 시 fp32로 바꿔주는 게 : GradScaler

torch.cuda.amp 에서 가져와서 쓰면 됨~

profile
CS undergraduate student, interested in ML, NLP, CV, RL, multi-modal AI

0개의 댓글

관련 채용 정보