#чтивонаночь
Bf16 или fp16 здорового человека
Начнем с базы: числа в компуктере записываются в виде знак числа_n знаков экспоненты_k знаков мантиссы.
FP32
Использует 8 знаков на экспоненту , 23 на мантиссу
FP16
Использует 5 знаков на экспоненту, 10 на мантиссу
BF16 (читать как Google brain fp16)
Использует 8 бит на экспоненту и 7 на мантиссу
Что это даёт
- Диапазон значений идентичен fp32, сетка точно не разойдется при таком квантовании(даже очень глубокая)
- Можно выкинуть loss.scale при обучении в смешанной точности, теперь у нас диапазон значений между fp32 и bf16 идентичен, разницы только в количестве знаков после запятой
- Просто делай
- Из минусов нативно работает только с Nvidia amper и выше (х2 ускорение к обучению/инференсу) и с TPUv3 и выше
клёвая статья на медиум
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 и выше
клёвая статья на медиум