К тренажеру
ВопросMediumllm-trainingРеальный собес

FP16 vs BF16

В чем разница между FP16 и BF16 и почему BF16 часто устойчивее для обучения?

Короткий ответ

BF16 имеет 8 бит exponent как FP32 и меньше mantissa; FP16 имеет больше mantissa, но намного меньший dynamic range. Поэтому BF16 реже ловит overflow/underflow.

Полный разбор

FP16 и BF16 занимают 16 бит, но распределяют их по-разному. FP16 хранит больше precision в mantissa, но exponent меньше, поэтому dynamic range ограничен. BF16 сохраняет exponent как у FP32, поэтому лучше переносит большие и маленькие значения, но имеет меньше точности в mantissa.

Для обучения нейросетей dynamic range часто важнее небольшой дополнительной точности, потому что gradients/activations могут сильно различаться по масштабу. Поэтому BF16 часто позволяет обучать без loss scaling или с меньшим количеством numerical issues.

На inference выбор зависит от hardware support, качества, throughput и требований модели.

Теория

BF16 - компромисс: меньше точность, но шире диапазон. Для deep learning это часто удачный баланс.

Типичные ошибки

  • Сказать, что BF16 всегда точнее FP16.
  • Не различать mantissa и exponent.
  • Не связать формат с overflow/underflow.

Как отвечать на собеседовании

  • Сравни dynamic range и precision.
  • Упомяни loss scaling для FP16.