Les FLOP, ou opérations en virgule flottante, représentent une mesure fondamentale de la complexité informatique d'un modèle d'apprentissage automatique (ML), en particulier dans l'apprentissage profond. Il quantifie le nombre total de calculs en virgule flottante (comme les additions, les soustractions, les multiplications, les divisions) requis pour une seule passe avant du modèle, généralement pendant l'inférence. Comprendre les FLOP est crucial pour évaluer l'efficacité des modèles, comparer différentes architectures et déterminer l'adéquation d'un modèle à diverses plateformes matérielles, des puissants serveurs cloud aux appareils de périphérie aux ressources limitées.
Qu'est-ce qu'un FLOP ?
Une opération en virgule flottante est tout calcul mathématique impliquant des nombres qui ont un point décimal (nombres en virgule flottante). Dans les réseaux neuronaux (RN), ces opérations se produisent souvent dans des couches telles que les convolutions et les couches entièrement connectées. Les FLOP mesurent le nombre total de ces opérations nécessaires pour traiter une seule entrée (par exemple, une image).
Étant donné que les modèles modernes d'apprentissage profond impliquent des milliards d'opérations de ce type, les FLOP sont souvent exprimés en GigaFLOPs (GFLOPs, milliards de FLOPs) ou en TeraFLOPs (TFLOPs, trillions de FLOPs). Il est important de ne pas confondre les FLOP (opérations totales, une mesure de la charge de travail informatique) avec les FLOPS (opérations en virgule flottante par seconde, une mesure de la vitesse de traitement du matériel, comme la capacité d'unGPU). Dans le contexte de l'évaluation de la complexité d'un modèle, le terme "FLOPs" fait presque toujours référence au nombre total d'opérations.
Pertinence en matière d'IA et d'apprentissage automatique
Les FLOP constituent une mesure essentielle, indépendante du matériel, pour estimer le coût de calcul d'un modèle d'IA. Les aspects clés de sa pertinence comprennent :
- Comparaison de l'efficacité : Les FLOP permettent aux chercheurs et aux praticiens de comparer les exigences de calcul de différentes architectures de modèles indépendamment des optimisations matérielles ou logicielles spécifiques. Par exemple, lorsque l'on compare des modèles comme Ultralytics YOLO11 et YOLOv10, les FLOPs donnent un aperçu de leur efficacité relative en matière de calcul, ainsi que des mesures de précision.
- Adaptation au matériel : Les modèles avec des FLOPs plus faibles nécessitent généralement moins de puissance de calcul, ce qui les rend plus adaptés au déploiement sur des appareils aux ressources limitées, tels que les smartphones, les Raspberry Pi ou les plateformes NVIDIA Jetson courantes dans le domaine de l'informatique de périphérie.
- Estimation de la vitesse d'inférence : Bien qu'il ne s'agisse pas d'une mesure directe de la vitesse, un nombre inférieur de FLOP est souvent corrélé à une latence d'inférence plus rapide. Cependant, la vitesse réelle dépend de facteurs tels que les schémas d'accès à la mémoire, le parallélisme matériel (CPU vs. GPU vs. TPU) et des bibliothèques logicielles optimisées comme TensorRT ou OpenVINO.
- Conception et optimisation de modèles : Les FLOP sont un élément clé à prendre en compte lors de la conception du modèle, de la recherche d'architecture neuronale (NAS) et des techniques d'optimisation telles que l'élagage du modèle, dans le but de réduire les coûts de calcul tout en maintenant les performances.
FLOPs et concepts connexes
Il est utile de faire la distinction entre les FLOP et d'autres mesures courantes :
- FLOPs vs. paramètres : Le nombre de paramètres (ou poids du modèle) indique la taille du modèle en termes de stockage de mémoire. Les FLOP mesurent le coût de calcul pour faire fonctionner le modèle. Un modèle peut avoir beaucoup de paramètres mais peu de FLOP (par exemple, si les poids sont peu utilisés) ou peu de paramètres mais beaucoup de FLOP (par exemple, s'il implique de nombreuses opérations par paramètre). Les deux mesures sont importantes pour évaluer l'efficacité. Par exemple, YOLOv9 a introduit des techniques permettant d'obtenir une grande précision avec relativement moins de paramètres et de FLOP que certains de ses prédécesseurs.
- FLOPs vs. vitesse d'inférence : Les FLOP représentent le travail de calcul théorique, tandis que la vitesse d'inférence (souvent mesurée en images par seconde (FPS) ou en millisecondes par inférence) est la performance réelle mesurée sur un matériel spécifique. Des facteurs tels que la bande passante de la mémoire, la pile logicielle (PyTorch, TensorFlow), la quantification et la taille des lots ont un impact significatif sur la vitesse dans le monde réel. L'optimisation de la latence par rapport au débit montre comment les performances pratiques peuvent être réglées au-delà des seuls FLOP.
- FLOPs vs. MACs/MACC : Les opérations de multiplication-accumulation (MAC ou MACC) comptent le nombre d'opérations de multiplication et d'addition fusionnées, courantes dans les réseaux neuronaux convolutifs (CNN). Étant donné qu'une MAC implique généralement une multiplication et une addition, elle est souvent assimilée à 2 FLOP. Certains documents de recherche ou cartes de modèles indiquent les MAC au lieu des FLOP. Il est essentiel de vérifier quelle mesure est utilisée, car elles diffèrent d'un facteur de deux environ. Il est essentiel de comprendre cette différence lorsque l'on compare des modèles sur la base des coûts de calcul déclarés.
Applications et exemples
Les FLOP sont largement utilisés dans divers contextes d'IA et de ML :
- Sélection d'un modèle pour un déploiement en périphérie : Une entreprise qui développe une caméra de sécurité intelligente a besoin d'un modèle de détection d'objets qui puisse fonctionner efficacement sur un appareil périphérique dont la puissance de traitement est limitée. Elle compare plusieurs modèles, y compris différentes tailles deYOLO d Ultralytics (par exemple, YOLO11n par rapport à YOLO11s). En examinant les FLOPs rapportés pour chaque modèle (comme ceux que l'on trouve dans la documentation d'Ultralytics YOLO11 ), ils peuvent sélectionner le plus grand modèle qui répond à leurs exigences de latence compte tenu du budget de calcul de l'appareil (mesuré en FLOPS matériels). Les modèles à faible nombre de FLOPs comme YOLO11n sont des candidats de choix.
- Analyse comparative des nouvelles architectures : Les chercheurs qui développent une nouvelle architecture de vision par ordinateur doivent démontrer son efficacité. Ils comparent la précision de leur modèle (par exemple, mAP) à ses GFLOPs sur des ensembles de données de référence standard comme COCO. Ils placent leur modèle sur un graphique précision-vs-FLOPs à côté des modèles de pointe existants (comme EfficientNet ou diverses versions de YOLO ) pour montrer les compromis améliorés. De nombreuses pages de comparaison de modèles, telles que YOLOv9 vs YOLOX, utilisent les FLOPs comme point de comparaison clé.
Calculer et estimer les FLOPs
Les FLOP sont généralement calculés en analysant l'architecture du modèle couche par couche et en additionnant les opérations requises pour chaque couche en fonction des dimensions d'entrée/sortie et du type de couche(convolution, entièrement connectée, etc.). Divers outils et bibliothèques, tels que fvcore ou les profileurs intégrés dans les frameworks d'apprentissage profond, peuvent aider à automatiser ce calcul ou à fournir des estimations. La résolution d'entrée affecte de manière significative le nombre de FLOP pour de nombreux modèles de vision.
Limites
Bien qu'utiles, les FLOP ont des limites :
- Ils ne tiennent pas compte des coûts d'accès à la mémoire (MAC), qui peuvent constituer un goulot d'étranglement important.
- Ils ne rendent pas compte du degré de parallélisme possible dans les opérations.
- Les performances réelles dépendent fortement des optimisations spécifiques au matériel et de l'efficacité des bibliothèques logicielles sous-jacentes(cuDNN, Intel MKL).
- Certaines opérations (par exemple, les fonctions d'activation comme ReLU) ont un faible nombre de FLOP mais peuvent tout de même avoir un impact sur la latence.
Par conséquent, les FLOP doivent être pris en compte en même temps que d'autres mesures de performance, paramètres et repères du monde réel pour obtenir une image complète de l'efficacité du modèle. Des outils comme Ultralytics HUB peuvent aider à gérer les modèles et à suivre les différents aspects de la performance pendant le développement et le déploiement.