FLOPs
Узнай, как FLOPs измеряют вычислительную сложность моделей ИИ. Научись вычислять FLOPs для Ultralytics YOLO26 и оптимизировать производительность для Edge AI.
FLOPs, или операции с плавающей запятой (Floating Point Operations) — это стандартная метрика, используемая для измерения вычислительной сложности модели машинного обучения. В частности, она подсчитывает количество математических вычислений (в основном сложений и умножений с десятичными числами), которые нейронная сеть должна выполнить для обработки одного входного данных, например изображения или предложения. В мире глубокого обучения FLOPs служит теоретическим ориентиром для оценки того, насколько «тяжелой» или вычислительно затратной является модель. Более высокий показатель FLOPs обычно говорит о том, что модель более сложна и потребует больше вычислительной мощности и энергии для выполнения, тогда как меньший показатель указывает на легковесную архитектуру, созданную для эффективности.
Роль FLOPs в выборе модели#
При разработке приложений искусственного интеллекта инженеры часто сталкиваются с необходимостью поиска компромисса между точностью и скоростью. FLOPs выступает в роли не зависящего от железа прокси для задержки инференса, позволяя разработчикам сравнивать различные архитектуры без необходимости проводить бенчмаркинг на каждом возможном устройстве. Эта метрика необходима для выбора правильной модели под конкретные сценарии развертывания. Например, исследователь, проводящий эксперименты на мощных серверах облачных вычислений, может отдать приоритет точности в ущерб эффективности, используя модели с большим количеством FLOPs. И наоборот, инженер, создающий устройство для периферийного ИИ, должен ориентироваться на низкое значение FLOPs, чтобы приложение работало плавно в рамках жестких ограничений по питанию и тепловыделению.
Реальные приложения#
Практическое значение FLOPs проявляется в различных отраслях, где вычислительные ресурсы являются критическим фактором.
- Автономные дроны: В таких областях, как сельскохозяйственная робототехника, дроны, оснащенные камерами, анализируют состояние сельскохозяйственных культур в реальном времени. Поскольку аккумуляторы дронов ограничены, каждый бит энергопотребления имеет значение. Инженеры целенаправленно выбирают модели с низким показателем FLOPs, такие как варианты Nano для YOLO26, чтобы минимизировать нагрузку на бортовой процессор и тем самым максимизировать время полета и дальность действия.
- Мобильная дополненная реальность: Смартфонные приложения, использующие распознавание лиц для безопасности или применяющие AR-фильтры, сильно зависят от эффективности обработки. Эти приложения должны работать без перегрева устройства и без задержек. Разработчики используют оценки FLOPs для выбора легковесных моделей, которые гармонично вписываются в возможности мобильных чипсетов, таких как серия Snapdragon или чипы A-series от Apple.
FLOPs против FLOPS (Floating Point Operations Per Second)#
Важно различать «FLOPs» (множественное число от FLOP) и «FLOPS» (все буквы заглавные). Несмотря на почти одинаковое написание, они измеряют разные вещи. FLOPs (строчная 's') относится к общему количеству операций, требуемых моделью — это статический показатель сложности. FLOPS (заглавная 'S') расшифровывается как операции с плавающей запятой в секунду (Floating Point Operations Per Second) и измеряет скорость или производительность оборудования, такого как GPU. Модельно FLOPs можно представить как расстояние, которое нужно проехать машине (объем работы, который нужно выполнить), в то время как FLOPS — это максимальная скорость машины (способность оборудования выполнять эту работу).
Измерение FLOPs с помощью Python#
Ты можешь легко вычислить вычислительную стоимость модели Ultralytics с помощью Python. Это особенно полезно на этапе оптимизации модели, чтобы убедиться, что твоя нейронная сеть укладывается в аппаратный бюджет. Следующий пример демонстрирует, как загрузить модель YOLO26 и определить ее FLOPs.
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")Снижение FLOPs для повышения эффективности#
Чтобы сделать модели более пригодными для развертывания, исследователи используют несколько методов снижения FLOPs без существенного ущерба для точности. Прунинг моделей предполагает удаление менее важных связей в нейронной сети, эффективно прореживая ее. Другим методом является квантование, которое снижает точность чисел, используемых в вычислениях (например, с 32-битной плавающей запятой до 8-битных целых чисел). Инструменты, доступные на платформе Ultralytics Platform, помогают оптимизировать эти процессы, упрощая развертывание эффективных моделей на таких целях, как TensorRT или OpenVINO. Понимая и оптимизируя FLOPs, разработчики могут создавать мощные и в то же время экологичные системы искусственного интеллекта.






