глоссарий

BF16

BF16

BF16 (bfloat16) — 16-битный формат чисел с плавающей точкой. Его диапазон значений почти как у 32-битного float, но точность заметно ниже. Проще говоря, он «не боится» очень больших и малых чисел, но считает грубо.

Термин важен, потому что нейросети используют миллиарды параметров. В 32-битном формате память ускорителей быстро заканчивается, обучение становится медленным и дорогим. BF16 позволяет хранить вдвое больше данных и ускоряет вычисления, сохраняя устойчивость к переполнению. Именно это сделало возможными гигантские модели вроде GPT и трансформеров.

Как понять интуитивно? Представьте запись числа: у float много знаков после запятой, но ограничен предел величины. У BF16 наоборот — широкий диапазон, но лишь несколько первых значащих цифр. Если писать на бумаге, BF16 — это крупный почерк, но очень длинная строка: можно записать гигантское число, но не уточнить до копейки. Для нейросетей это компромисс: веса меняются небольшими порциями, а грубая точность компенсируется большим количеством операций.

Например, при обучении модели машинного перевода на Google TPU веса хранятся в BF16. Это позволяет задействовать вдвое больше нейронов в той же памяти, а вычисления почти так же стабильны, как на float 32. Google встроила этот формат в свои процессоры специально для обучения больших языковых моделей: точности достаточно, а выигрыш в скорости огромен.

Вывод: BF16 — инженерный хак, жертвующий избыточной точностью ради экономии памяти и скорости. Он стал стандартом для современных ИИ, потому что устойчивость к переполнению важнее идеальной точности, когда данных миллиарды. Без BF16 многие сегодняшние модели были бы нереальны по стоимости.