FLOPs в вычислениях моделей

Термин глоссария

FLOPs


FLOPs — число операций с плавающей точкой, необходимых для выполнения вычислений модели, определяющее её вычислительную сложность.

Определение

FLOPs (Floating Point Operations) — метрика, описывающая количество операций с плавающей точкой, которые требуется выполнить для обучения или инференса модели. FLOPs используются для оценки вычислительной сложности архитектур, сравнения эффективности моделей и планирования ресурсов при обучении крупных систем.

В отличие от «скорости» GPU или CPU, FLOPs описывают именно алгоритмическую нагрузку — сколько работы необходимо выполнить, независимо от архитектуры оборудования.

Как работает

FLOPs суммируют все арифметические операции, необходимые для выполнения шага вычислений: матричных умножений, операций активации, нормализации и других. В Transformer-моделях основная часть FLOPs приходится на матричные операции в attention и feed-forward блоках.

Ключевые факторы, определяющие FLOPs модели:

  • Размер модели — количество параметров влияет на стоимость матричных операций.
  • Длина контекста — операции attention имеют квадратичную стоимость по длине последовательности.
  • Число слоёв — глубина архитектуры увеличивает объём операций линейно.
  • Размер скрытых слоёв — ширина FFN и attention влияет на стоимость матриц.

FLOPs могут рассчитываться для:

  • одного шага обучения,
  • одного forward/backward-pass,
  • полного обучения на всем датасете,
  • одного токена инференса,
  • полной последовательности инференса.

Где применяется

  • Сравнение архитектур и моделей.
  • Планирование compute budget.
  • Оптимизация инференса и latency.
  • Выбор GPU/TPU для обучения.
  • Оценка стоимости обучения и вывода.
  • Анализ эффективности инженерных оптимизаций.
  • Масштабирование многоузловых тренингов.

Практические примеры использования

При проектировании новых моделей FLOPs рассчитывают заранее, чтобы определить возможный размер архитектуры при доступном compute budget. Например, удвоение ширины FFN увеличивает FLOPs в несколько раз, даже если количество параметров растёт умеренно.

В инференсе FLOPs используются для оценки реальной скорости работы модели. Если модель требует слишком много операций на один токен, даже мощные GPU будут ограничены, особенно при длинных контекстах.

В инженерных оптимизациях — FlashAttention, sparsity, fused kernels — FLOPs снижаются без ухудшения качества, что приводит к росту скорости.

При сравнении моделей FLOPs позволяют оценить эффективность архитектуры: две модели с одинаковым качеством могут различаться в вычислительной стоимости на порядок.

Ключевые свойства FLOPs

  • Аппаратно-независимы — описывают математическую сложность, а не конкретное железо.
  • Прямо связаны с latency — чем больше FLOPs на токен, тем выше время вывода.
  • Позволяют оценивать эффективность архитектуры — важны при сравнении новых подходов.
  • Увеличиваются с длиной контекста — особенно в классическом self-attention.

Проблемы и ограничения

  • Не учитывают memory bandwidth — модель может быть ограничена памятью, а не FLOPs.
  • Не отражают latency полностью — важны также кэш, параллелизм и оптимизация ядра.
  • Не показывают качество модели — высокие FLOPs не гарантируют лучший результат.
  • Недостаточны для оценки архитектурных оптимизаций — некоторые методы уменьшают факт операций без изменения теоретического FLOPs.

Преимущества и ограничения

  • Плюс: универсальная метрика вычислительной сложности.
  • Плюс: помогает планировать обучение и инференс.
  • Плюс: позволяет сравнивать архитектуры и модели.
  • Плюс: полезна для анализа масштабирования.
  • Минус: не учитывает реальные узкие места.
  • Минус: плохо отражает влияние памяти и IO.
  • Минус: не показывает качество модели.
  • Минус: может вводить в заблуждение без контекста инфраструктуры.

Связанные термины

  • Compute budget
  • Memory bandwidth
  • Latency
  • Throughput
  • Attention complexity
  • Parallelism

Категория термина

Инференс и производительность