with torch.cuda.amp.autocast():
- 자동 혼합 정밀도(Automatic Mixed Precision, AMP) 연산을 사용하기 위한 문법
구체적인 의미:
torch.cuda.amp
:
- PyTorch에서 자동 혼합 정밀도를 지원하는 모듈입니다.
- 혼합 정밀도는 부동 소수점 연산에서 16비트(half precision)와 32비트(single precision)를 적절히 혼합해 사용하는 것을 의미
autocast()
:
- 이 함수는 특정 범위 내에서 혼합 정밀도를 자동으로 적용
- 이 컨텍스트 내에서는 모델의 연산이 성능을 최적화하기 위해 자동으로 FP16(half precision)과 FP32(single precision)로 전환됩니다.
왜 사용하나요?
- 성능 향상:
- FP16 연산은 FP32보다 메모리 사용량이 적고, 연산 속도가 더 빠릅니다.
- 혼합 정밀도를 사용하면 GPU의 계산 자원을 더 효율적으로 활용할 수 있습니다.
- 정밀도 유지: 모든 연산을 FP16으로 수행할 경우, 정밀도가 떨어질 수 있지만,
autocast()
는 필요한 연산을 FP32로 유지함으로써 정밀도를 보장합니다.
예시 코드:
with torch.cuda.amp.autocast():
output = model(input)
loss = loss_fn(output, target)
이 예시에서, autocast()
를 사용하여 모델의 forward
패스와 손실 계산이 자동으로 혼합 정밀도로 수행됩니다. 이는 메모리 효율성을 높이고, 훈련 속도를 향상시킬 수 있습니다.