Best Practices für die Leistung

Mobile und eingebettete Geräte verfügen über begrenzte Rechenressourcen, sodass es damit Ihre Anwendungsressource effizient bleibt. Wir haben eine Liste mit von Best Practices und Strategien, mit denen Sie Ihre TensorFlow-Daten Leistung des Lite-Modells

Das beste Modell für die Aufgabe auswählen

Je nach Aufgabe müssen Sie einen Kompromiss zwischen der Modellkomplexität und und Größe. Wenn Ihre Aufgabe eine hohe Genauigkeit erfordert, benötigen Sie möglicherweise eine große und ein komplexes Modell erstellen. Für Aufgaben, die weniger Präzision erfordern, ist es besser, ein da sie nicht nur weniger Speicherplatz und Arbeitsspeicher verbrauchen, auch im Allgemeinen schneller und energieeffizienter. In den Grafiken unten sehen Sie beispielsweise Kompromisse bei Genauigkeit und Latenz bei einigen gängigen Bildklassifizierungsmodellen.

Diagramm der Modellgröße im Vergleich zu
Genauigkeit

Diagramm der Genauigkeit im Vergleich zur Latenz

Ein Beispiel für für Mobilgeräte optimierte Modelle sind MobileNets, die für Mobilgeräte optimiert sind Anwendungen für visuelles Sehen. Kaggle Unter "Modelle" finden Sie die speziell für Mobil- und eingebettete Geräte optimiert wurden.

Sie können die aufgeführten Modelle mithilfe von Übertragungen für Ihr eigenes Dataset neu trainieren zu lernen.

Profil für Ihr Modell erstellen

Sobald Sie ein für Ihre Aufgabe geeignetes Kandidatenmodell ausgewählt haben, ein Profil und Benchmarking für Ihr Modell zu erstellen. TensorFlow Lite-Benchmarking Tool verfügt über einen integrierten Profiler, der Profilerstellungsstatistiken pro Operator anzeigt. Dies kann helfen, Leistungsengpässe zu verstehen und herauszufinden, welche Operatoren die Rechenzeit zu reduzieren.

Sie können auch TensorFlow Lite verwenden Tracing zum Profil das Modell in Ihrer Android-App mithilfe des standardmäßigen Android-System-Tracings. und die Operatoraufrufe mit GUI-basierter Profilerstellung nach Zeit zu visualisieren Werkzeuge.

Operatoren in der Grafik profilieren und optimieren

Wenn ein bestimmter Operator häufig im Modell auftaucht und dass der Operator am meisten Zeit in Anspruch nimmt, Optimierung dieses Operators. Dieses Szenario sollte so selten sein wie TensorFlow Lite hat für die meisten Operatoren optimierte Versionen. Möglicherweise können Sie jedoch Schreiben Sie eine schnellere Version eines benutzerdefinierten Vorgangs, wenn Sie die Einschränkungen kennen, ausgeführt wird. Weitere Informationen finden Sie im Leitfaden für benutzerdefinierte Operatoren.

Modell optimieren

Ziel der Modelloptimierung ist es, kleinere Modelle zu erstellen, die im Allgemeinen schneller energieeffizienter, sodass sie auf Mobilgeräten eingesetzt werden können. TensorFlow Lite unterstützt mehrere Optimierungstechniken wie die Quantisierung.

Weitere Informationen finden Sie in der Dokumentation zur Modelloptimierung.

Anzahl der Threads optimieren

TensorFlow Lite unterstützt Multithread-Kernel für viele Operatoren. Sie können die Anzahl der Threads erhöhen und die Ausführung von Operatoren beschleunigen. Steigerung Die Anzahl der Threads führt jedoch dazu, dass Ihr Modell mehr Ressourcen und Energie.

Bei einigen Anwendungen ist die Latenz wichtiger als die Energieeffizienz. Ich kann die Anzahl der Threads erhöhen, indem die Anzahl der Interpreter festgelegt wird Threads: Die Multithread-Ausführung geht jedoch zulasten einer verbesserten Leistung. Variabilität abhängig davon, was sonst gleichzeitig ausgeführt wird. Dies ist insbesondere bei mobilen Apps. So können z. B. isolierte Tests schneller als mit Single-Threaded. Wenn aber eine andere App gleichzeitig ausgeführt wird, kann die Leistung geringer sein als mit Singlethreads.

Redundante Kopien entfernen

Wenn Ihre Anwendung nicht sorgfältig entwickelt wurde, sind unter Umständen redundante Kopien vorhanden. wenn die Eingabe in das Modell eingespeist und die Ausgabe daraus gelesen wird. Achten Sie darauf, redundante Kopien zu vermeiden. Wenn Sie übergeordnete APIs wie Java verwenden, lesen Sie die Dokumentation sorgfältig auf Leistungsvorbehalte. Beispiel: ist die Java API viel schneller, wenn ByteBuffers als inputs auf.

Profil für Ihre Anwendung mit plattformspezifischen Tools erstellen

Plattformspezifische Tools wie Android Profiler und Instrumente sorgen für Reichtum von Profilinformationen, die zum Debuggen der Anwendung verwendet werden können. Manchmal ist möglicherweise nicht im Modell, sondern in Teilen des Anwendungscodes enthalten, mit dem Modell interagieren können. Machen Sie sich mit der Plattform vertraut Profilerstellungstools und Best Practices für Ihre Plattform.

Prüfen, ob Ihr Modell von den auf dem Gerät verfügbaren Hardwarebeschleunigern profitiert

TensorFlow Lite bietet neue Möglichkeiten, Modelle mit schnellerer Hardware zu beschleunigen wie GPUs, DSPs und neuronale Beschleuniger. In der Regel sind diese Beschleuniger die über untergeordnete Module delegate bereitgestellt werden, der Dolmetscherausführung. So kann TensorFlow Lite Bevollmächtigte verwenden:

  • GPU Delegate ist unter Android und iOS mit OpenGL/OpenCL und Metal verfügbar. . Informationen zum Ausprobieren finden Sie unter GPU Delegate.
  • Sie können einen eigenen Bevollmächtigten erstellen, wenn Sie Zugriff auf nicht standardmäßige Hardware. Siehe TensorFlow Lite weitere Informationen.

Beachten Sie, dass einige Beschleuniger für verschiedene Modelltypen besser funktionieren. Einige Bevollmächtigte unterstützen nur Float-Modelle oder Modelle, die auf eine bestimmte Weise optimiert sind. Es ist Es ist wichtig, alle Bevollmächtigten zu vergleichen, um zu sehen, für Ihre Anwendung auswählen. Wenn Sie beispielsweise ein sehr kleines Modell haben, lohnt es sich nicht, das Modell an die GPU zu delegieren. Umgekehrt sind Beschleuniger gute Wahl für große Modelle mit hoher arithmetischer Intensität.