FLOPs (Floating-Point Operations) sind ein grundlegendes Maß für die Rechenkomplexität eines Modells für maschinelles Lernen (ML), insbesondere beim Deep Learning. Sie beziffern die Gesamtzahl der Fließkommaberechnungen (wie Additionen, Subtraktionen, Multiplikationen und Divisionen), die für einen einzigen Vorwärtsdurchlauf des Modells, in der Regel während der Inferenz, erforderlich sind. Das Verständnis der FLOPs ist entscheidend für die Bewertung der Modelleffizienz, den Vergleich verschiedener Architekturen und die Bestimmung der Eignung eines Modells für verschiedene Hardwareplattformen, von leistungsstarken Cloud-Servern bis hin zu ressourcenbeschränkten Edge-Geräten.
Was sind FLOPs?
Eine Fließkommaoperation ist eine mathematische Berechnung mit Zahlen, die einen Dezimalpunkt haben (Fließkommazahlen). In neuronalen Netzen (NNs) kommen diese Operationen häufig in Schichten wie Faltungsschichten und voll verknüpften Schichten vor. FLOPs messen die Gesamtzahl dieser Operationen, die benötigt werden, um eine einzelne Eingabe (z. B. ein Bild) zu verarbeiten.
Da moderne Deep Learning-Modelle Milliarden solcher Operationen beinhalten, werden FLOPs oft in GigaFLOPs (GFLOPs, Milliarden FLOPs) oder TeraFLOPs (TFLOPs, Billionen FLOPs) angegeben. Es ist wichtig, FLOPs (Gesamtoperationen, ein Maß für die Rechenlast) nicht mit FLOPS (Fließkommaoperationen pro Sekunde, ein Maß für die Verarbeitungsgeschwindigkeit der Hardware, wie z. B. die Leistung einer GPU) zu verwechseln. Im Zusammenhang mit der Bewertung der Modellkomplexität bezieht sich "FLOPs" fast immer auf die Gesamtzahl der Operationen.
Relevanz in KI und maschinellem Lernen
FLOPs sind eine wichtige, hardwareunabhängige Kennzahl zur Abschätzung der Rechenkosten eines KI-Modells. Zu den wichtigsten Aspekten der Relevanz gehören:
- Effizienzvergleich: FLOPs ermöglichen es Forschern und Praktikern, die Rechenanforderungen verschiedener Modellarchitekturen unabhängig von bestimmten Hardware- oder Softwareoptimierungen zu vergleichen. Wenn du zum Beispiel Modelle wie Ultralytics YOLO11 mit YOLOv10 vergleichst, geben dir die FLOPs neben den Genauigkeitsmetriken auch Aufschluss über ihre relative Recheneffizienz.
- Hardware-Eignung: Modelle mit niedrigeren FLOPs benötigen in der Regel weniger Rechenleistung und eignen sich daher besser für den Einsatz auf Geräten mit begrenzten Ressourcen, wie Smartphones, Raspberry Pi oder NVIDIA Jetson-Plattformen, die im Edge Computing üblich sind.
- Schätzung der Inferenzgeschwindigkeit: Auch wenn dies kein direktes Maß für die Geschwindigkeit ist, korrelieren niedrigere FLOPs oft mit einer schnelleren Inferenzlatenz. Die tatsächliche Geschwindigkeit hängt jedoch von Faktoren wie Speicherzugriffsmustern, Hardwareparallelität (CPU vs. GPU vs. TPU) und optimierten Softwarebibliotheken wie TensorRT oder OpenVINO.
- Modellentwurf und Optimierung: FLOPs sind ein wichtiger Faktor beim Modelldesign, bei der Suche nach neuronalen Architekturen (NAS) und bei Optimierungsverfahren wie dem Modell Pruning, um die Rechenkosten zu senken und gleichzeitig die Leistung zu erhalten.
FLOPs im Vergleich zu verwandten Konzepten
Es ist hilfreich, FLOPs von anderen gängigen Kennzahlen zu unterscheiden:
- FLOPs vs. Parameter: Die Anzahl der Parameter (oder Modellgewichte) gibt die Größe des Modells in Bezug auf den Speicherplatz an. Die FLOPs messen die Rechenkosten für die Ausführung des Modells. Ein Modell kann viele Parameter, aber niedrige FLOPs haben (z. B. wenn die Gewichte nur spärlich verwendet werden) oder wenige Parameter, aber hohe FLOPs (z. B. wenn viele Operationen pro Parameter erforderlich sind). Beide Kennzahlen sind wichtig, um die Effizienz zu beurteilen. YOLOv9 hat zum Beispiel Techniken eingeführt, die eine hohe Genauigkeit mit relativ wenigen Parametern und FLOPs im Vergleich zu einigen Vorgängern erreichen.
- FLOPs vs. Inferenzgeschwindigkeit: FLOPs stellen die theoretische Rechenleistung dar, während die Schlussfolgerungsgeschwindigkeit (oft gemessen in Frames Per Second (FPS) oder Millisekunden pro Schlussfolgerung) die tatsächlich gemessene Leistung auf einer bestimmten Hardware ist. Faktoren wie Speicherbandbreite, Software-Stack (PyTorch, TensorFlow), die Quantisierung und die Stapelgröße beeinflussen die tatsächliche Geschwindigkeit erheblich. Die Optimierung der Latenz gegenüber dem Durchsatz zeigt, wie die Leistung in der Praxis nicht nur auf FLOPs abgestimmt werden kann.
- FLOPs vs. MACs/MACC: Multiplikations-Akkkumulations-Operationen (MACs oder MACC) zählen die Anzahl der verschmolzenen Multiplikations- und Additionsoperationen, die in faltbaren neuronalen Netzen (CNNs) üblich sind. Da eine MAC in der Regel eine Multiplikation und eine Addition umfasst, wird sie oft mit 2 FLOPs veranschlagt. In einigen Forschungsberichten oder Modellkarten werden MACs statt FLOPs angegeben. Es ist wichtig zu prüfen, welche Maßeinheit verwendet wird, denn sie unterscheiden sich etwa um den Faktor zwei. Das Verständnis dieses Unterschieds ist wichtig, wenn du Modelle anhand der angegebenen Rechenkosten vergleichst.
Anwendungen und Beispiele
FLOPs werden in verschiedenen KI- und ML-Kontexten häufig eingesetzt:
- Modellauswahl für den Edge-Einsatz: Ein Unternehmen, das eine intelligente Sicherheitskamera entwickelt, benötigt ein Objekterkennungsmodell, das effizient auf einem Edge-Gerät mit begrenzter Rechenleistung laufen kann. Sie vergleichen mehrere Modelle, darunter auch verschiedene Größen von Ultralytics YOLO (z. B. YOLO11n vs. YOLO11s). Anhand der FLOPs, die für jedes Modell angegeben werden (z. B. in der Ultralytics YOLO11 ), können sie das größte Modell auswählen, das ihre Anforderungen an die Latenzzeit erfüllt, wenn sie das Rechenbudget des Geräts (gemessen in Hardware FLOPS) berücksichtigen. Modelle mit niedrigeren FLOPs wie YOLO11n sind die besten Kandidaten.
- Benchmarking neuer Architekturen: Forscher, die eine neue Bildverarbeitungsarchitektur entwickeln, müssen deren Effizienz nachweisen. Sie vergleichen die Genauigkeit ihres Modells (z. B. mAP) mit seinen GFLOPs auf Standard-Benchmark-Datensätzen wie COCO. Sie stellen ihr Modell in einem Diagramm mit der Genauigkeit und den GFLOPs neben bestehenden State-of-the-Art-Modellen (wie z. B. EfficientNet oder verschiedene YOLO ) dar, um verbesserte Kompromisse aufzuzeigen. Viele Modellvergleichsseiten, wie z.B. YOLOv9 vs. YOLOX, verwenden FLOPs als einen wichtigen Vergleichspunkt.
Berechnen und Schätzen von FLOPs
FLOPs werden in der Regel berechnet, indem man die Architektur des Modells Schicht für Schicht analysiert und die für jede Schicht erforderlichen Operationen auf der Grundlage der Eingangs-/Ausgangsdimensionen und des Schichttyps(Faltung, voll vernetzt usw.) zusammenzählt. Verschiedene Tools und Bibliotheken wie fvcore oder die in Deep-Learning-Frameworks integrierten Profiler können dabei helfen, diese Berechnung zu automatisieren oder Schätzungen vorzunehmen. Bei vielen Bildverarbeitungsmodellen wirkt sich die Eingangsauflösung erheblich auf die FLOP-Zahl aus.
Einschränkungen
FLOPs sind zwar nützlich, haben aber ihre Grenzen:
- Sie berücksichtigen nicht die Speicherzugriffskosten (MAC), die einen erheblichen Engpass darstellen können.
- Sie erfassen nicht den Grad der Parallelität, der bei Operationen möglich ist.
- Die tatsächliche Leistung hängt stark von hardwarespezifischen Optimierungen und der Effizienz der zugrunde liegenden Softwarebibliotheken(cuDNN, Intel MKL) ab.
- Bestimmte Operationen (z. B. Aktivierungsfunktionen wie ReLU) haben eine geringe FLOP-Zahl, können sich aber dennoch auf die Latenz auswirken.
Daher sollten FLOPs zusammen mit anderen Leistungsmetriken, Parametern und realen Benchmarks betrachtet werden, um ein vollständiges Bild der Modelleffizienz zu erhalten. Tools wie Ultralytics HUB können dabei helfen, Modelle zu verwalten und verschiedene Leistungsaspekte während der Entwicklung und des Einsatzes zu verfolgen.