FLOPs im Machine Learning verstehen! Erfahren Sie, wie sie die Modellkomplexität messen, die Effizienz beeinflussen und die Hardwareauswahl unterstützen.
FLOPs (Floating-Point-Operationen) dienen als grundlegende Metrik zur Quantifizierung der Rechenkomplexität von Modellen des maschinellen Lernens, insbesondere im dem Bereich des Deep Learning. Dieses Maß berechnet die Gesamtzahl der mathematischen Operationen - wie Addition, Subtraktion, Multiplikation und Division mit Dezimalzahlen -, die erforderlich ist, um einen einzigen Vorwärtsdurchlauf eines neuronalen Netzes. Durch die Bestimmung der Anzahl der FLOPs, können Ingenieure die für die Ausführung eines Modells benötigte Rechenleistung abschätzen, was sie zu einer wichtigen Kennzahl für die Auswahl und Optimierung. FLOPs unterscheiden sich zwar von der Dateigröße oder der Anzahl der Parameter, bieten aber einen theoretischen Anhaltspunkt dafür wie "schwer" ein Modell ist, was in direktem Zusammenhang mit dem Energieverbrauch und der Ausführungsgeschwindigkeit auf Prozessoren wie einer CPU oder GPU.
Das Verständnis der Rechenkosten eines Modells ist für eine effiziente KI-Entwicklung. Eine niedrigere FLOPs Anzahl zeigt im Allgemeinen an, dass ein Modell weniger Berechnungen benötigt, um eine Vorhersage zu erstellen, was für Umgebungen mit eingeschränkten Ressourcen.
Die praktischen Auswirkungen von FLOPs werden am deutlichsten, wenn Modelle von der Forschung in Produktionsumgebungen überführt werden, wo Latenz und Leistung begrenzt sind.
Sie können die Rechenkomplexität eines Ultralytics mit Hilfe der eingebauten Profiling-Tools bestimmen. Das folgende Ausschnitt lädt ein Modell und berechnet die für eine bestimmte Eingabegröße erforderlichen FLOPs.
from ultralytics import YOLO
# Load the YOLO11 nano model
model = YOLO("yolo11n.pt")
# Profile the model to see FLOPs, parameters, and speed
# The 'imgsz' argument defines the input resolution (e.g., 640x640)
model.profile(imgsz=640)
Diese Methode gibt eine zusammenfassende Tabelle aus, die die Anzahl der Parameter, die Gradienten und die GFLOPs (GigaFLOPs, oder Milliarden von Operationen) und hilft Ihnen zu beurteilen, ob das Modell Ihren Einsatzbeschränkungen entspricht.
Es ist wichtig, FLOPs von anderen Metriken zu unterscheiden, die die Modellgröße und Geschwindigkeit beschreiben, da sie unterschiedliche Aspekte der Leistung messen.
FLOPs sind zwar eine nützliche Grundlage, sagen aber nichts über die gesamte Modellleistung aus. Sie berücksichtigen nicht Speicherzugriffskosten (Energie und Zeit für die Übertragung von Daten zum Prozessor), die häufig den Engpass in modernen Deep-Learning-Systemen. Außerdem werden Operationen wie Aktivierungsfunktionen (z. B. ReLU) oder Normalisierungsschichten eine niedrige FLOP-Zahl haben, aber dennoch Zeit verbrauchen. Daher sollten die FLOPs in Verbindung mit Benchmarking auf der Zielhardware, wie z. B. einem Raspberry Pi, verwendet werden, um ein genaues Bild der Leistung zu erhalten.