Узнайте, как FLOP измеряют вычислительную сложность моделей ИИ. Узнайте, как рассчитать FLOP для Ultralytics и оптимизировать производительность для Edge AI.
FLOPs, или операции с плавающей запятой, — это стандартный показатель, используемый для измерения вычислительной сложности модели машинного обучения. Он конкретно подсчитывает количество математических вычислений — в основном сложений и умножений с десятичными числами — которые нейронная сеть должна выполнить для обработки одного входа, такого как изображение или предложение. В мире глубокого обучения FLOPs служит теоретическим критерием для оценки «тяжести» или вычислительной затратности модели. Более высокое значение FLOPs, как правило, означает, что модель более сложна и для ее выполнения потребуется больше вычислительной мощности и энергии, тогда как более низкое значение указывает на легкую архитектуру, разработанную с целью обеспечения эффективности.
При разработке приложений искусственного интеллекта инженеры часто сталкиваются с необходимостью выбора между точностью и скоростью. FLOPs действует как независимый от аппаратного обеспечения прокси для задержки вывода, позволяя разработчикам сравнивать различные архитектуры без необходимости тестирования их на каждом возможном устройстве. Этот показатель имеет важное значение для выбора правильной модели для конкретных сценариев развертывания. Например, исследователь, проводящий эксперименты на мощных облачных вычислительных серверах, может отдать приоритет точности перед эффективностью, используя модели с высоким FLOPs. И наоборот, инженер, создающий периферийные устройства искусственного интеллекта, должен отдать приоритет низкому FLOPs, чтобы обеспечить бесперебойную работу приложения в строгих пределах мощности и тепловыделения.
Практические последствия FLOP очевидны в различных отраслях, где вычислительные ресурсы являются критически важным фактором.
Важно различать «FLOPs» (множественное число от FLOP) и «FLOPS» (все буквы заглавные). Хотя они выглядят почти одинаково, они измеряют разные вещи. FLOPs (с маленькой буквой «s») относится к общему количеству операций, требуемых моделью — это статическая мера сложности. FLOPS (с большой буквой «S») означает «операции с плавающей запятой в секунду» и измеряет скорость или производительность аппаратного обеспечения, например GPU. Можно представить FLOPs как расстояние, которое должен пройти автомобиль (выполняемая работа), а FLOPS — как максимальную скорость автомобиля (способность аппаратного обеспечения выполнять работу).
Вы можете легко рассчитать вычислительную стоимость Ultralytics с помощью Python. Это особенно полезно на этапе оптимизации модели, чтобы убедиться, что ваша нейронная сеть соответствует вашему аппаратному бюджету. В следующем примере показано, как загрузить модель YOLO26 и определить ее FLOP.
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")
Чтобы сделать модели более пригодными для внедрения, исследователи используют несколько методов для уменьшения FLOP без значительной потери точности. Обрезка модели включает удаление менее важных связей в нейронной сети, что позволяет эффективно ее упростить. Другой метод — квантование, которое снижает точность чисел, используемых в вычислениях (например, с 32-разрядных чисел с плавающей запятой до 8-разрядных целых чисел). Инструменты, доступные на Ultralytics , помогают оптимизировать эти процессы, упрощая развертывание эффективных моделей на таких целевых устройствах, как TensorRT или OpenVINO. Понимая и оптимизируя FLOP, разработчики могут создавать мощные и устойчивые системы искусственного интеллекта.