How is the choice between fp16 and fp32 made? Is it like if any gradients in the tensor need the extra range you use fp32?
Super high level (from section 3):
1. Converting the model to use the float16 data type where possible.
2. Keeping float32 master weights to accumulate per-iteration weight updates.
3. Using loss scaling to preserve small gradient values.
[0] https://docs.nvidia.com/deeplearning/performance/mixed-preci...Edit: Fixed second link.