Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Modelloptimierung

Edge-Geräte verfügen häufig über einen begrenzten Speicher oder eine begrenzte Rechenleistung. Auf Modelle können verschiedene Optimierungen angewendet werden, damit sie innerhalb dieser Einschränkungen ausgeführt werden können. Darüber hinaus ermöglichen einige Optimierungen die Verwendung spezieller Hardware für eine beschleunigte Inferenz.

TensorFlow Lite und das TensorFlow Model Optimization Toolkit bieten Tools zur Minimierung der Komplexität der Inferenzoptimierung.

Es wird empfohlen, die Modelloptimierung während des Anwendungsentwicklungsprozesses in Betracht zu ziehen. In diesem Dokument werden einige bewährte Methoden zur Optimierung von TensorFlow-Modellen für die Bereitstellung auf Edge-Hardware beschrieben.

Warum Modelle optimiert werden sollten

Es gibt verschiedene Möglichkeiten, wie die Modelloptimierung bei der Anwendungsentwicklung helfen kann.

Größenreduzierung

Einige Formen der Optimierung können verwendet werden, um die Größe eines Modells zu reduzieren. Kleinere Modelle bieten folgende Vorteile:

  • Kleinere Speichergröße: Kleinere Modelle belegen weniger Speicherplatz auf den Geräten Ihrer Benutzer. Beispielsweise belegt eine Android-App mit einem kleineren Modell weniger Speicherplatz auf dem Mobilgerät eines Benutzers.
  • Kleinere Downloadgröße: Kleinere Modelle benötigen weniger Zeit und Bandbreite, um auf die Geräte der Benutzer herunterzuladen.
  • Geringere Speichernutzung: Kleinere Modelle verbrauchen beim Ausführen weniger RAM, wodurch Speicher für andere Teile Ihrer Anwendung frei wird und zu einer besseren Leistung und Stabilität führen kann.

Durch die Quantisierung kann in all diesen Fällen die Größe eines Modells verringert werden, möglicherweise auf Kosten einer gewissen Genauigkeit. Durch Beschneiden und Clustering kann die Größe eines Modells zum Herunterladen verringert werden, indem es einfacher komprimierbar wird.

Latenzreduzierung

Die Latenz ist die Zeit, die benötigt wird, um eine einzelne Inferenz mit einem bestimmten Modell auszuführen. Einige Formen der Optimierung können den Rechenaufwand reduzieren, der zum Ausführen der Inferenz mithilfe eines Modells erforderlich ist, was zu einer geringeren Latenz führt. Die Latenz kann sich auch auf den Stromverbrauch auswirken.

Gegenwärtig kann die Quantisierung verwendet werden, um die Latenz zu verringern, indem die während der Inferenz auftretenden Berechnungen vereinfacht werden, möglicherweise auf Kosten einer gewissen Genauigkeit.

Beschleunigerkompatibilität

Einige Hardwarebeschleuniger, wie z. B. das Edge-TPU , können mit Modellen, die korrekt optimiert wurden, extrem schnell Inferenzen ausführen.

Im Allgemeinen erfordern diese Gerätetypen, dass Modelle auf bestimmte Weise quantisiert werden. Weitere Informationen zu den Anforderungen finden Sie in der Dokumentation der einzelnen Hardwarebeschleuniger.

Kompromisse

Optimierungen können möglicherweise zu Änderungen der Modellgenauigkeit führen, die während des Anwendungsentwicklungsprozesses berücksichtigt werden müssen.

Die Genauigkeitsänderungen hängen vom einzelnen zu optimierenden Modell ab und sind im Voraus schwer vorherzusagen. Im Allgemeinen verlieren Modelle, die auf Größe oder Latenz optimiert sind, ein wenig an Genauigkeit. Abhängig von Ihrer Anwendung kann dies die Benutzererfahrung beeinträchtigen oder nicht. In seltenen Fällen können bestimmte Modelle durch den Optimierungsprozess an Genauigkeit gewinnen.

Arten der Optimierung

TensorFlow Lite unterstützt derzeit die Optimierung durch Quantisierung, Bereinigung und Clustering.

Diese sind Teil des TensorFlow Model Optimization Toolkit , das Ressourcen für Modelloptimierungstechniken bereitstellt, die mit TensorFlow Lite kompatibel sind.

Quantisierung

Bei der Quantisierung wird die Genauigkeit der Zahlen verringert, die zur Darstellung der Parameter eines Modells verwendet werden. Dies sind standardmäßig 32-Bit-Gleitkommazahlen. Dies führt zu einer kleineren Modellgröße und einer schnelleren Berechnung.

Die folgenden Quantisierungstypen sind in TensorFlow Lite verfügbar:

Technik Datenanforderungen Größenreduzierung Richtigkeit Unterstützte Hardware
Float16-Quantisierung nach dem Training Keine Daten Bis zu 50% Unbedeutender Genauigkeitsverlust CPU, GPU
Quantisierung des Dynamikbereichs nach dem Training Keine Daten Bis zu 75% Genauigkeitsverlust CPU, GPU (Android)
Ganzzahlquantisierung nach dem Training Unbeschriftete repräsentative Probe Bis zu 75% Kleinerer Genauigkeitsverlust CPU, GPU (Android), EdgeTPU, Hexagon DSP
Quantisierungsbewusstes Training Beschriftete Trainingsdaten Bis zu 75% Kleinster Genauigkeitsverlust CPU, GPU (Android), EdgeTPU, Hexagon DSP

Nachfolgend finden Sie die Ergebnisse zu Latenz und Genauigkeit für die Quantisierung nach dem Training und das quantisierungsbewusste Training für einige Modelle. Alle Latenzzahlen werden auf Pixel 2-Geräten mit einer einzelnen Big-Core-CPU gemessen. Wenn sich das Toolkit verbessert, verbessern sich auch die Zahlen hier:

Modell Top-1-Genauigkeit (Original) Top-1-Genauigkeit (nach dem Training quantisiert) Top-1-Genauigkeit (Quantization Aware Training) Latenz (Original) (ms) Latenz (nach dem Training quantisiert) (ms) Latenz (Quantization Aware Training) (ms) Größe (Original) (MB) Größe (optimiert) (MB)
Mobilenet-v1-1-224 0,709 0,657 0,70 124 112 64 16.9 4.3
Mobilenet-v2-1-224 0,719 0,637 0,709 89 98 54 14 3.6
Inception_v3 0,78 0,772 0,775 1130 845 543 95.7 23.9
Resnet_v2_101 0,770 0,768 N / A 3973 2868 N / A 178,3 44.9
Tabelle 1 Vorteile der Modellquantisierung für ausgewählte CNN-Modelle

Beschneidung

Beim Bereinigen werden Parameter innerhalb eines Modells entfernt, die nur einen geringen Einfluss auf die Vorhersagen haben. Beschnittene Modelle haben auf der Festplatte dieselbe Größe und dieselbe Laufzeitlatenz, können jedoch effektiver komprimiert werden. Dies macht das Beschneiden zu einer nützlichen Technik zum Reduzieren der Modell-Download-Größe.

In Zukunft wird TensorFlow Lite die Latenz für beschnittene Modelle reduzieren.

Clustering

Beim Clustering werden die Gewichte der einzelnen Ebenen in einem Modell in eine vordefinierte Anzahl von Clustern gruppiert und anschließend die Schwerpunktwerte für die Gewichte der einzelnen Cluster geteilt. Dies reduziert die Anzahl der eindeutigen Gewichtswerte in einem Modell und damit dessen Komplexität.

Infolgedessen können Clustermodelle effektiver komprimiert werden und bieten ähnliche Bereitstellungsvorteile wie das Bereinigen.

Entwicklungsworkflow

Überprüfen Sie zunächst, ob die Modelle in gehosteten Modellen für Ihre Anwendung geeignet sind. Wenn nicht, empfehlen wir Benutzern, mit dem Quantisierungstool nach dem Training zu beginnen, da dies allgemein anwendbar ist und keine Trainingsdaten erfordert.

In Fällen, in denen die Genauigkeits- und Latenzziele nicht erreicht werden oder die Unterstützung von Hardwarebeschleunigern wichtig ist, ist quantisierungsbewusstes Training die bessere Option. Weitere Optimierungstechniken finden Sie im TensorFlow Model Optimization Toolkit .

Wenn Sie Ihre Modellgröße weiter reduzieren möchten, können Sie vor dem Quantisieren Ihrer Modelle versuchen, sie zu beschneiden und / oder zu gruppieren .