Découvrez comment les FLOP mesurent la complexité computationnelle des modèles d'IA. Découvrez comment calculer les FLOP pour Ultralytics et optimiser les performances pour l'IA en périphérie.
Les FLOP, ou opérations en virgule flottante, sont une mesure standard utilisée pour évaluer la complexité computationnelle d'un modèle d'apprentissage automatique. Elles comptent spécifiquement le nombre de calculs mathématiques (principalement des additions et des multiplications impliquant des nombres décimaux) qu'un réseau neuronal doit effectuer pour traiter une seule entrée, telle qu'une image ou une phrase. Dans le monde de l' apprentissage profond, les FLOP servent de référence théorique pour estimer le « poids » ou le coût de calcul d'un modèle. Un nombre de FLOP élevé suggère généralement qu'un modèle est plus complexe et nécessitera plus de puissance de traitement et d'énergie pour s'exécuter, tandis qu'un nombre faible indique une architecture légère conçue pour être efficace.
Lors du développement d' applications d'intelligence artificielle, les ingénieurs sont souvent confrontés à un compromis entre précision et vitesse. Les FLOP agissent comme un indicateur indépendant du matériel pour la latence d'inférence, permettant aux développeurs de comparer différentes architectures sans avoir à les tester sur tous les appareils possibles. Cette mesure est essentielle pour choisir le modèle adapté à des scénarios de déploiement spécifiques. Par exemple, un chercheur menant des expériences sur de puissants serveurs de cloud computing peut privilégier la précision plutôt que l'efficacité, en utilisant des modèles à FLOP élevés. À l'inverse, un ingénieur qui développe des appareils d'IA de pointe doit privilégier les FLOP faibles afin de garantir le bon fonctionnement de l'application dans des limites strictes en matière d'alimentation et de température.
Les implications pratiques des FLOP sont évidentes dans divers secteurs où les ressources informatiques sont un facteur critique .
Il est important de faire la distinction entre « FLOPs » (pluriel de FLOP) et « FLOPS » (tout en majuscules). Bien qu'ils semblent presque identiques, ils mesurent des choses différentes. FLOPs (avec un « s » minuscule) fait référence à la quantité totale d'opérations requises par un modèle — il s'agit d'une mesure statique de la complexité. FLOPS (avec un « S » majuscule) signifie « opérations en virgule flottante par seconde » et mesure la vitesse ou la capacité de performance du matériel, tel qu'un GPU. Vous pouvez considérer les FLOP comme la distance qu'une voiture doit parcourir (le travail à effectuer), tandis que les FLOPS correspondent à la vitesse maximale de la voiture (la capacité du matériel à effectuer le travail).
Vous pouvez facilement calculer le coût de calcul d'un Ultralytics à l'aide de Python. Cela est particulièrement utile pendant la phase d'optimisation du modèle afin de vous assurer que votre réseau neuronal correspond à votre budget matériel. L'exemple suivant montre comment charger un modèle YOLO26 et déterminer ses 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")
Pour rendre les modèles plus faciles à déployer, les chercheurs utilisent plusieurs techniques afin de réduire les FLOP sans sacrifier de manière significative la précision. L'élagage de modèle consiste à supprimer les connexions moins importantes dans le réseau neuronal, ce qui permet de l'alléger efficacement. Une autre technique est la quantification, qui réduit la précision des nombres utilisés dans les calculs (par exemple, de 32 bits en virgule flottante à 8 bits en entier). Les outils disponibles sur Ultralytics permettent de rationaliser ces processus d'optimisation, facilitant ainsi le déploiement de modèles efficaces vers des cibles telles que TensorRT ou OpenVINO. En comprenant et en optimisant les FLOP, les développeurs peuvent créer des systèmes d'IA à la fois puissants et durables.