Самые распространенные числовые форматы для LLM

Gábor Bíró 23 января 2025 г.
4 мин. чтения

Эффективная работа больших языковых моделей (БЯМ) в значительной степени зависит от правильного хранения и обработки их весов. Выбор числового формата напрямую влияет на требования модели к памяти, скорость вычислений и точность. Со временем формат FP32 постепенно уступает место FP16 и BF16 в задачах обучения, а для оптимизации вывода все чаще используются INT8 и даже квантованные форматы с еще меньшей разрядностью.

Самые распространенные числовые форматы для LLM
Источник: Авторская работа

Искусственный интеллект, особенно глубокое обучение, предполагает огромные объемы вычислений. Числовые форматы, используемые в этих вычислениях (то есть, как числа хранятся и обрабатываются компьютером), напрямую влияют на:

  • Скорость: Форматы с меньшей точностью (меньшим количеством битов) обеспечивают более быстрые вычисления.
  • Объем памяти: Меньшее количество битов требует меньше памяти, что критически важно для загрузки и работы больших моделей.
  • Энергопотребление: Обработка меньшего количества битов обычно требует меньше энергии.
  • Точность: Форматы с более высокой точностью (большим количеством битов) обеспечивают более точные результаты, но часто за счет скорости, памяти и энергопотребления.

Цель состоит в том, чтобы найти оптимальный баланс между точностью и эффективностью. Для БЯМ наиболее распространенными числовыми форматами для хранения весов являются формат половинной точности с плавающей точкой (FP16) и bfloat16 (BF16). Для оптимизации вывода посредством квантования все чаще используются INT8 и даже форматы с меньшей разрядностью.

Ключевые числовые форматы в ИИ:

  1. FP32 (32-битное число с плавающей точкой)
    • Исторически это был формат по умолчанию в глубоком обучении.
    • Обеспечивает высокую точность, но требует значительных ресурсов памяти и вычислительных ресурсов.
    • Редко используется непосредственно для хранения весов в современных больших БЯМ.
  2. FP16 (16-битное число с плавающей точкой / половинная точность)
    • Представлен Nvidia с архитектурой Pascal (2016 г.).
    • Поддерживается тензорными ядрами Nvidia и другими графическими процессорами, что обеспечивает более быстрые вычисления.
    • Снижает использование памяти и вычислительные требования по сравнению с FP32. Снижение точности часто приемлемо для обучения и запуска моделей глубокого обучения.
    • Достаточно точен для многих больших моделей, но в некоторых случаях (например, очень малые градиенты) потеря точности может вызвать проблемы, такие как потеря значимости.
  3. BF16 (bfloat16 / Brain Floating Point)
    • Также 16 бит, как и FP16, но с другой внутренней структурой: больше битов для экспоненты и меньше для мантиссы (дробной части).
    • Это дает BF16 динамический диапазон (разницу между наибольшим и наименьшим представимыми числами), более близкий к FP32, чем FP16.
    • Это смягчает проблемы потери значимости и позволяет эффективно использовать BF16 во время обучения с меньшей потерей точности по сравнению с FP16 в определенных сценариях.
    • Nvidia представила поддержку BF16 с архитектурой Ampere (2020 г.).
  4. FP8 (8-битное число с плавающей точкой)
    • Впервые появился в архитектурах Nvidia Hopper (H100) и Blackwell (B100, B200, GB200).
    • Представлен в двух вариантах: E4M3 (4 бита экспоненты, 3 бита мантиссы) и E5M2 (5 битов экспоненты, 2 бита мантиссы).
    • E4M3 обеспечивает более высокую точность, а E5M2 предлагает более широкий динамический диапазон.
    • Значительно ускоряет как обучение, так и вывод, часто с приемлемой потерей точности по сравнению с FP16.
  5. INT8 (8-битное целое число, для квантованных моделей)
    • Высокоэффективен с точки зрения памяти и вычислений, потенциально до 4 раз быстрее, чем операции FP16.
    • Вносит некоторую потерю точности, но ее можно эффективно контролировать с помощью тщательных методов квантования.
    • Распространен на периферийных устройствах и мобильных платформах и поддерживается специализированными ускорителями ИИ (например, Nvidia TensorRT, Qualcomm AI Engine).
    • Реже используется во время обучения, так как потеря точности может быть более проблематичной для вычисления градиентов.
    • Распространенной практикой является квантование моделей, изначально обученных в FP32 или FP16, с преобразованием весов и активаций в INT8 для вывода.
  6. INT4 / INT2 (Квантованные, низкобитные форматы)
    • Все чаще встречаются в современных моделях и оптимизациях (например, для моделей Llama, GPT-4).
    • Значительно снижает использование памяти и ускоряет вывод.
    • В основном используются для вывода; обычно не подходят для обучения.

Важность аппаратной поддержки числовых форматов

Аппаратная поддержка числовых форматов критически важна для графических процессоров (и других ускорителей ИИ), поскольку она фундаментально определяет вычислительную эффективность.

  1. Оптимизированные исполнительные блоки: Когда графический процессор поддерживает формат аппаратно (например, FP16, BF16, FP8), это означает, что на чипе есть специализированные схемы (исполнительные блоки, такие как блоки умножения-суммирования), которые специально разработаны для этого формата. Эти схемы выполняют операции непосредственно аппаратно, что на порядки быстрее, чем программная эмуляция.
  2. Эффективное перемещение данных: Аппаратная поддержка оптимизирует не только вычисления, но и перемещение данных. Система памяти графического процессора (регистры, кэши, глобальная память) и шины данных согласованы с поддерживаемыми форматами. Это означает, что нужно перемещать меньше битов, что снижает требования к пропускной способности памяти, задержку и энергопотребление.
  3. Максимизация параллелизма: Графические процессоры получают свою мощность за счет массового параллелизма. Аппаратная поддержка позволяет выполнять больше операций одновременно с данными в поддерживаемом формате. Например, если графический процессор поддерживает 16-битные операции аппаратно, он может выполнять две 16-битные операции параллельно вместо одной 32-битной операции, потенциально удваивая пропускную способность для этих операций.
  4. Энергоэффективность: Специализированные схемы не только быстрее, но и более энергоэффективны. Меньшему количеству транзисторов нужно переключаться для выполнения той же операции по сравнению с менее специализированным оборудованием или программной эмуляцией, что приводит к снижению энергопотребления и тепловыделения.

Заключение

Для обучения преобладают форматы FP16 или BF16. Для вывода многие модели теперь используют квантование INT8 или даже INT4 для более быстрого выполнения и меньшего объема памяти. Эволюция числовых форматов в ИИ — это непрерывный процесс оптимизации. Форматы с меньшей точностью позволяют создавать более быстрые, эффективные и потенциально более дешевые системы ИИ, но компромиссы между точностью, динамическим диапазоном и аккуратностью должны быть тщательно рассмотрены. Новые аппаратные архитектуры (такие как Ampere, Ada Lovelace, Hopper, Blackwell) поддерживают все большее количество эффективных числовых форматов, что еще больше ускоряет развитие ИИ. В будущем мы можем ожидать появления еще более специализированных числовых форматов, разработанных специально для рабочих нагрузок ИИ.

Gábor Bíró 23 января 2025 г.