#чтивонаночь



Bf16 или fp16 здорового человека



Начнем с базы: числа в компуктере записываются в виде знак числа_n знаков экспоненты_k знаков мантиссы.



FP32

Использует 8 знаков на экспоненту , 23 на мантиссу



FP16

Использует 5 знаков на экспоненту, 10 на мантиссу



BF16 (читать как Google brain fp16)

Использует 8 бит на экспоненту и 7 на мантиссу



Что это даёт

- Диапазон значений идентичен fp32, сетка точно не разойдется при таком квантовании(даже очень глубокая)



- Можно выкинуть loss.scale при обучении в смешанной точности, теперь у нас диапазон значений между fp32 и bf16 идентичен, разницы только в количестве знаков после запятой



- Просто делай torch.bfloat16 каждое утро и видеопамять болеть не будет



- Из минусов нативно работает только с Nvidia amper и выше (х2 ускорение к обучению/инференсу) и с TPUv3 и выше



клёвая статья на медиум