Как стать автором
Обновить

FP32, FP16, BF16 и FP8 — разбираемся в основных типах чисел с плавающей запятой

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.7K
Всего голосов 14: ↑11 и ↓3+10
Комментарии18

Комментарии 18

ЗакрепленныеЗакреплённые комментарии

Я всегда поражаюсь объему памяти в современных “суперкарточках” от Nvidia. Например, Tesla H100 имеет 96GB памяти. В то же время конкуренты предлагают больше: Radeon MI300X с 192GB и Gaudi 3 с 128GB. Конечно не только в объеме памяти суть, но среднему предприятию работающему в научных вычислениях и сверхточных ИИ и нейросетями, которым требуется хотя бы FP32, будет недостаточно пары H100, когда будет достаточно пары Instinct mi300x. Бюджет предприятия явно будет куда более рад более выгодному решению, особенно если предприятие (особенно сегодня) работает на OC Linux.

Интересно, а кто-нибудь реально использовал FP8 в реальных проектах?

Краткость сестра таланта!

Благодарю, решили расписать про все основные режимы вычислений без воды. На самом деле приятно писать на Хабре, где нет четкой привязки к числу символов и прочим SEO параметрам.

Формат задача-ответ прикольный, жаль нельзя это как мини-игру в статью интегрировать, позалипал бы между делом))

Я всегда поражаюсь объему памяти в современных “суперкарточках” от Nvidia. Например, Tesla H100 имеет 96GB памяти. В то же время конкуренты предлагают больше: Radeon MI300X с 192GB и Gaudi 3 с 128GB. Конечно не только в объеме памяти суть, но среднему предприятию работающему в научных вычислениях и сверхточных ИИ и нейросетями, которым требуется хотя бы FP32, будет недостаточно пары H100, когда будет достаточно пары Instinct mi300x. Бюджет предприятия явно будет куда более рад более выгодному решению, особенно если предприятие (особенно сегодня) работает на OC Linux.

Абсолютно согласен, объем видеопамяти — это ключевой фактор для развертывания LLM и масштабных эмуляций. Но стоит помнить, что Nvidia вкладывает колоссальные усилия в разработку программного обеспечения для своих продуктов, чего не делают другие компании, такие как AMD и Intel. Это дает Nvidia значительное преимущество, особенно в специализированных задачах и оптимизации под конкретные рабочие нагрузки. Их программная экосистема — это то, что действительно выделяет их на фоне конкурентов.

Условно иметь 192GB и софт с костылями это хуже, чем иметь 96GB и отлаженную программную составляющую.

Это при том, что последние лет 5 цены на видеопамять рекордно низкие, не смотря на то что южно-корейцы усиленно придумать себе очередной потоп/пожар/и т.п. чтобы картельно завысить цены как и раньше.
Казалось бы, можно расщедриться и навалить памяти да побольше, но нет.

С другой стороны, в такого рода адаптерах стоит HBM память, которая разительно отличается от GDDR.

А FP64 вообще нужен где-то, кроме космоса и научных исследований? Есть ли смысл использовать его для обучения нейронных сетей или это просто оверкилл? Насколько я понимаю, FP64 требует огромного объема памяти, что делает развертывание масштабных нейронных сетей практически невозможным.

Ну или придется выложить круглую сумму за видеокарту)

FP64 для нейронок? Да запросто! Представим сценарий использования нейронки - предсказание результатов экспериментов на основании огромной выборки данных. Условное проведение эксперимента может быть крайне не дешевым занятием, поэтому может быть целесообразно сделать модель ИИ на базе FP64 для узкоспециализированого использования.

А когда речь идет о науке, тут как правило и средства на приобретение проф. графических карт имеются.

Требуем статью с практическим применением различных типов чисел с плавающей запятой. Например взять нейронку и развернуть ее в FP32 и FP8(квантизация под вопросом).

Было бы интересно на практике видеть отличия между этими режимами.

Интересно, а кто-нибудь реально использовал FP8 в реальных проектах?

Как вариант распознание объектов в реальном времени. Условно Nvidia Drive. Есть некоторые мощности в рамках «Edge» и нужно как-то обеспечить на них инференс. Решение просто и элегантно - FP8.

Как вы можете заметить, что на слайде представлена производительность именно в рамках FP8.

Самое интересное начинается только тогда, когда повышение разрядности до FP64 не помогает) Вот тогда и начинается настоящая жизнь и борьба с IEEE 754 за результат вычислений...

Вероятно вы про методы с произвольной точностью(длинная арифметика) (arbitrary-precision arithmetic), насколько мне известно они позволяют произвести подсчет с буквально любой точностью, не придерживаясь IEEE 754.

Нет, я о тех случаях, когда, скажем, в проектах с использованием GSL возникают проблемы, подключить MPFR возможным не представляется и приходится руками менять алгоритм численного метода, чтобы получить решение. Более того, есть проблемные ситуации, в которых, похоже, разрядность представления чисел вообще не имеет значения.

Если говорить только за машинное обучение, и конкретно за функцию нейрона, то fp16 часто достаточно. Если же речь шире и требуются реально точные расчёты, то бывает и _Float128 нужен

Разве что отметил бы новомодный bloat16, как альтернативу устоявшемуся FP16. А про "реально точные расчеты" предлагаю запилить в течении месяца отдельную статью.

Я тут обнаружил ещё и FP6 и FP4...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий