Если вы заглядывали в спецификации NVIDIA H100 или AMD MI300, то наверняка замечали строку «FP8 performance». За ней стоит заметный сдвиг в том, как современные ускорители считают нейросети. Долгое время стандартом смешанной точности (mixed precision) были FP16 и BF16: основные вычисления шли в пониженной точности, а веса и градиенты для стабильности хранились в более высокой. Теперь на смену этой схеме приходит следующий шаг, 8-битный формат с плавающей запятой. Ниже разберём, как он устроен, чем не похож на INT8, где поддерживается аппаратно и что из этого следует при выборе сервера.
Почему индустрия двинулась от FP16 к FP8
FP8 впервые появился аппаратно в тензорных ядрах NVIDIA H100 (архитектура Hopper, 2022), а позднее его внедрила AMD в ускорителях MI300 (CDNA 3). Принципиально важно, что это не целочисленный формат: как и в других «плавающих» типах, число кодируется экспонентой и мантиссой, а не целым значением с масштабом.
Практический эффект выглядит так:
- вычисления выполняются примерно вдвое быстрее, чем в FP16: на том же GPU за единицу времени обрабатывается вдвое больше операций;
- каждое число занимает вдвое меньше места, поэтому потребление памяти снижается на 50%;
- в сумме это позволяет обучать модели и запускать инференс на железе, которого раньше не хватало, либо обслуживать вдвое больше запросов одновременно.
Ключевое отличие от INT8 в том, где живёт оптимизация. INT8 относится к уровню модели и инференса (PTQ, QAT), требует калибровки и чаще всего применяется уже после обучения. FP8 встроен в архитектуру GPU, то есть это квантизация на уровне тензорных ядер (hardware-level), и им можно пользоваться и при обучении (через Transformer Engine), и при инференсе. Кроме того, FP8 не один формат, а два: E4M3 и E5M2.
Два варианта FP8: E4M3 и E5M2
Оба варианта укладывают число в 8 бит, но делят эти биты по-разному.
| Параметр | E4M3 | E5M2 |
|---|---|---|
| Знак | 1 бит | 1 бит |
| Экспонента | 4 бита | 5 бит |
| Мантисса | 3 бита | 2 бита |
| Диапазон | примерно до ±448 | до ±57 344 |
| Приоритет | точность | динамический диапазон |
| Где применяется | веса и активации, прямой проход (forward pass) | градиенты, обратный проход (backward pass) |
E4M3: упор на точность
Четыре бита экспоненты дают диапазон около ±448, а три бита мантиссы позволяют точнее представлять значения вблизи нуля. Поэтому E4M3 используют для весов и активаций в прямом проходе: небольшие отклонения здесь накапливаются и влияют на качество результата, так что точность важнее запаса по диапазону.
E5M2: упор на диапазон
Пять бит экспоненты расширяют диапазон до ±57 344, зато мантисса сжата до двух бит. Формат предназначен для градиентов. При обратном распространении ошибки они бывают как очень большими, так и очень малыми, и узкий диапазон E4M3 привёл бы к потере информации.
Как выбирать между ними
По сути, это выбор между локальной точностью и глобальным диапазоном. Отдельные сети удаётся обучить целиком в одном из двух форматов, но большинству крупных моделей нужны оба: E4M3 для forward pass и E5M2 для backward pass.
На уровне железа тензорные ядра (Tensor Cores) работают с FP8 напрямую, без промежуточных преобразований. В H100 тензорные ядра четвёртого поколения умножают и суммируют числа в FP8, а результат сохраняют в более высокой точности. В коде это выглядит как обычная операция, но в кремнии потребовалась серьёзная переработка вычислительного конвейера. Если проследить эволюцию тензорных ядер, то от Ampere с FP16 они дошли до Hopper, где и появилась поддержка FP8.
FP8 и INT8: почему это разные подходы
Путаница понятна: оба формата 8-битные. Но устроены они по-разному.
INT8 — целочисленная квантизация. Числа представляются целыми в диапазоне от -128 до 127, а для перевода используется фиксированный масштаб (scale), который определяется максимальным значением в наборе данных. Если в активациях встречается выброс (outlier), он растягивает шкалу, и остальные значения передаются менее точно. INT8 применяется преимущественно для инференса и требует калибровки: либо в post-training quantization (PTQ), либо в ходе quantization-aware training (QAT).
FP8 хранит экспоненту у каждого числа, поэтому динамический диапазон адаптивен. Малое значение подстраивает экспоненту и эффективно использует мантиссу, большое увеличивает экспоненту, сохраняя грубую точность. Выбросы не «растягивают» шкалу для всех остальных значений.
Из этого следуют практические различия:
- FP8 лучше подходит для обучения больших моделей, где градиенты имеют широкий разброс значений;
- INT8 сильнее на инференсе, когда веса и активации стабильны и предсказуемы;
- по данным исследований Qualcomm и NVIDIA, FP8 покрывает 92.64% операций в современных сетях, тогда как INT8 справляется лишь с 65.87%;
- FP8 способен работать с операциями вроде LayerNorm и BatchNorm, где INT8 нередко приходится обходить;
- на специализированных inference-ускорителях (например, на edge-устройствах) INT8 может оказаться быстрее, но на H100 и MI300 FP8 идёт на максимальной скорости благодаря встроенной поддержке в тензорных ядрах.
Аппаратная поддержка: NVIDIA и AMD
Без аппаратной реализации FP8 остался бы теорией. Сейчас его поддерживают оба основных производителя ускорителей.
NVIDIA: от H100 до Blackwell
H100 стала первым ускорителем с аппаратной поддержкой FP8, которую обеспечивает четвёртое поколение Tensor Cores (2022). Заявленная производительность в FP8 составляет до ~1 PFLOP/s без структурной разреженности. Достигается это специализированными матричными умножителями в каждом тензорном ядре: они работают с FP8, а результаты накапливают в более высокой точности. Transformer Engine в H100 автоматически выбирает между FP8 и FP16 для оптимизации обучения, переключаясь в зависимости от слоя модели.
В B200 Blackwell (2025) производительность в FP8 выросла до 2.5 PetaFLOPS, а к ней добавилась поддержка ещё более компактных форматов, FP4 и FP6.
AMD: MI300 и ROCm
AMD пошла схожим путём. MI300 поддерживает FP8 через ROCm, а в ROCm 7.0 (2024) компания представила Quark, фреймворк для квантизации с полной поддержкой FP8. AMD работает с теми же E4M3 и E5M2, хотя кодировка немного отличается от NVIDIA, а принципы остаются прежними. По данным исходного материала, MI300X получает примерно 3.5-кратное ускорение инференса при переходе на FP8 в ROCm 7.0.
Общий стандарт
Обе компании следуют стандарту, который совместно предложили NVIDIA, Arm и Intel. Он входит в формат MX проекта Open Compute Project наряду с FP4 и FP6.
FP8 в экосистеме LLM и квантизации
FP8 не конкурирует с методами весовой квантизации вроде AWQ, GPTQ, NF4 и W4A16, а дополняет их. Это разные уровни: весовая квантизация отвечает за то, как модель хранится, а FP8 за то, как она считается.
Например, NF4 из BitsAndBytes сжимает веса до 4 бит за счёт специальных методов калибровки. В QLoRA с NF4 веса лежат в 4-битном виде и разворачиваются в BF16 только на время вычислений, что позволяет разместить большую модель на GPU с ограниченной памятью. FP8 же определяет формат самих матричных умножений, независимо от формата хранения весов. Поэтому методы легко сочетаются. Типичная цепочка:
- веса модели хранятся в NF4 (4 бита);
- перед вычислением они разворачиваются в INT8 или FP8;
- операции выполняются в FP8 на Tensor Cores H100;
- результат сохраняется в FP16 или BF16 для следующего слоя.
Такая связка экономит память за счёт NF4 и одновременно даёт ускорение от FP8, что особенно важно при развёртывании инференса на серверах с ограниченным объёмом памяти.
Инструменты
- vLLM — фреймворк для инференса больших языковых моделей. Начиная с версии 0.5 он поддерживает статическую FP8-квантизацию.
- llm-compressor — открытая библиотека от инженеров Neural Magic. Она позволяет квантизировать любую модель в FP8 с калибровкой на вашем датасете.
При правильной настройке FP8-квантизация на инференсе даёт до 2-кратного ускорения для плотных моделей (например, Llama 3 70B*) и 1.6-кратного для MoE-моделей.
Итоги: FP8 как новый базовый уровень точности
История вычислений для ИИ шла от FP64 к FP32, затем к FP16 и BF16, а теперь к FP8. На каждом шаге часть информации терялась, но росли скорость и эффективность. Для современных нейросетей FP8 стал логичным продолжением этой цепочки.
Главные преимущества формата:
- ускорение вдвое относительно FP16 благодаря встроенной поддержке в тензорных ядрах;
- экономия памяти на 50% для весов, активаций и градиентов;
- снижение энергопотребления: операции выполняются быстрее, а нагрузка на шину памяти меньше;
- более высокая точность при квантизации, чем у INT8, благодаря адаптивному диапазону экспоненты;
- поддержка на актуальном железе: NVIDIA H100, B200, AMD MI300, MI355X.
Важная оговорка: FP8 не заменяет INT8 для инференса на edge-устройствах, где аппаратной поддержки нет. Он дополняет INT8 в центрах обработки данных с современными ускорителями. Если модель разворачивается на мобильном устройстве или специализированном NPU без FP8, выбором остаётся INT8.
Исторически FP16 позволил делать на одном GPU то, что раньше было недоступно. Сейчас ту же роль играет FP8: он открывает обучение и инференс моделей, которые в FP16 требуют слишком много памяти и времени. Следующие поколения ускорителей уже поддерживают FP4 и ещё более низкие точности, но FP8 закрепится как универсальный стандарт эффективных вычислений в нейросетях на долгие годы. Это новая точка баланса между скоростью и точностью.
Что это значит при выборе сервера
Если вы планируете инференс или дообучение LLM, поддержка FP8 становится одним из критериев выбора платформы: ускорители поколения Hopper и новее (H100, B200) и AMD MI300 дают выигрыш по скорости и памяти, которого нет у предыдущих архитектур. Подобрать конфигурацию под вашу задачу можно в разделе серверов для ИИ или в общем каталоге серверов, а если нужна консультация, обратитесь через контакты. В «СервакМастер» мы уже тестируем FP8 на серверах с NVIDIA H100 и AMD MI300, чтобы понять, как эта технология меняет инференс LLM в 2025 году.
* Llama — проект Meta Platforms Inc., деятельность которой в России признана экстремистской и запрещена.
