✅ — it’s a feature, not a library.
with autocast(): # FP16 forward pass output = model(data) loss = criterion(output, target) loss scaling download
pip install tensorflow from torch.cuda.amp import autocast, GradScaler scaler = GradScaler() # dynamic loss scaling ✅ — it’s a feature, not a library
for data, target in dataloader: optimizer.zero_grad() This is called underflow
However, FP16 has a serious limitation: its dynamic range is roughly ( 5.96 \times 10^-8 ) to ( 65504 ). (common in deep networks) can become zero when rounded to FP16. This is called underflow .
If you’ve been training modern deep learning models—especially large transformers or vision models—you’ve likely encountered terms like loss scaling , mixed-precision training , and underflow . But what exactly is loss scaling, and why does it matter? The Problem: Numbers That Disappear Modern GPUs (like NVIDIA’s Tensor Cores) perform dramatically faster using mixed-precision training . This means storing some tensors in FP16 (half-precision) instead of FP32 (full-precision). FP16 uses half the memory and accelerates computation.