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