TensorFlow-Modellkonvertierung – Übersicht

Die ML-Modelle (maschinelles Lernen), die Sie mit LiteRT verwenden, werden ursprünglich mit TensorFlow-Kernbibliotheken und ‑Tools erstellt und trainiert. Nachdem Sie ein Modell mit TensorFlow Core erstellt haben, können Sie es in ein kleineres, effizienteres ML-Modellformat namens LiteRT-Modell konvertieren. In diesem Abschnitt finden Sie eine Anleitung zum Konvertieren Ihrer TensorFlow-Modelle in das LiteRT-Modellformat.

Konvertierungsworkflow

Die Konvertierung von TensorFlow-Modellen in das LiteRT-Format kann je nach Inhalt Ihres ML-Modells auf verschiedene Arten erfolgen. Im ersten Schritt dieses Prozesses sollten Sie Ihr Modell bewerten, um festzustellen, ob es direkt konvertiert werden kann. Bei dieser Bewertung wird anhand der verwendeten TensorFlow-Vorgänge ermittelt, ob der Inhalt des Modells von den standardmäßigen LiteRT-Laufzeitumgebungen unterstützt wird. Wenn Ihr Modell Vorgänge außerhalb der unterstützten Gruppe verwendet, haben Sie die Möglichkeit, es umzugestalten oder erweiterte Konvertierungstechniken zu verwenden.

Das folgende Diagramm zeigt die allgemeinen Schritte zum Konvertieren eines Modells.

Workflow für die TFLite-Konvertierung

Abbildung 1. LiteRT-Konvertierungsworkflow

In den folgenden Abschnitten wird beschrieben, wie Sie Modelle für die Verwendung mit LiteRT bewerten und konvertieren.

Eingabemodellformate

Sie können den Converter mit den folgenden Eingabemodellformaten verwenden:

Sie können sowohl die Keras- als auch die konkreten Funktionsmodelle als SavedModel speichern und über den empfohlenen Pfad konvertieren.

Wenn Sie ein Jax-Modell haben, können Sie es mit der TFLiteConverter.experimental_from_jax API in das LiteRT-Format konvertieren. Diese API kann sich im Testmodus ändern.

Conversion-Auswertung

Die Bewertung Ihres Modells ist ein wichtiger Schritt, bevor Sie versuchen, es zu konvertieren. Bei der Bewertung möchten Sie feststellen, ob die Inhalte Ihres Modells mit dem LiteRT-Format kompatibel sind. Sie sollten auch prüfen, ob Ihr Modell in Bezug auf die Größe der verwendeten Daten, die Hardwareanforderungen und die Gesamtgröße und Komplexität des Modells für die Verwendung auf Mobilgeräten und Edge-Geräten geeignet ist.

Bei vielen Modellen sollte der Konverter sofort funktionieren. Die integrierte Operatorbibliothek von LiteRT unterstützt jedoch nur eine Teilmenge der TensorFlow-Kernoperatoren. Das bedeutet, dass für einige Modelle möglicherweise zusätzliche Schritte erforderlich sind, bevor sie in LiteRT konvertiert werden können. Außerdem unterliegen einige von LiteRT unterstützte Vorgänge aus Leistungsgründen eingeschränkten Nutzungsanforderungen. Im Leitfaden zur Operator-Kompatibilität erfahren Sie, ob Ihr Modell für die Konvertierung umgestaltet werden muss.

Modellkonvertierung

Der LiteRT-Converter nimmt ein TensorFlow-Modell und generiert ein LiteRT-Modell (ein optimiertes FlatBuffer-Format, das durch die Dateiendung .tflite gekennzeichnet ist). Sie können ein SavedModel laden oder ein Modell, das Sie im Code erstellen, direkt konvertieren.

Der Konverter verwendet drei Haupt-Flags (oder Optionen), mit denen die Konvertierung für Ihr Modell angepasst wird:

  1. Mit Kompatibilitäts-Flags können Sie angeben, ob bei der Konvertierung benutzerdefinierte Operatoren zulässig sein sollen.
  2. Mit Optimierungs-Flags können Sie den Typ der Optimierung angeben, die während der Konvertierung angewendet werden soll. Die am häufigsten verwendete Optimierungstechnik ist die Quantisierung nach dem Training.
  3. Mit Metadaten-Flags können Sie dem konvertierten Modell Metadaten hinzufügen, was die Erstellung von plattformspezifischem Wrapper-Code beim Bereitstellen von Modellen auf Geräten erleichtert.

Sie können Ihr Modell mit der Python API oder dem Befehlszeilentool konvertieren. Eine detaillierte Anleitung zum Ausführen des Konverters für Ihr Modell finden Sie im Leitfaden TF-Modell konvertieren.

Normalerweise konvertieren Sie Ihr Modell für die standardmäßige LiteRT-Laufzeitumgebung oder die Google Play-Dienste-Laufzeitumgebung für LiteRT (Beta). Für einige erweiterte Anwendungsfälle muss die Laufzeitumgebung des Modells angepasst werden. Dies erfordert zusätzliche Schritte bei der Konvertierung. Weitere Informationen finden Sie im Abschnitt Erweiterte Laufzeitumgebung in der Android-Übersicht.

Erweiterte Conversions

Wenn beim Ausführen des Konverters für Ihr Modell Fehler auftreten, liegt das höchstwahrscheinlich an einem Problem mit der Kompatibilität eines Operators. Nicht alle TensorFlow-Operationen werden von TensorFlow Lite unterstützt. Sie können diese Probleme umgehen, indem Sie Ihr Modell umgestalten oder erweiterte Konvertierungsoptionen verwenden, mit denen Sie ein modifiziertes LiteRT-Formatmodell und eine benutzerdefinierte Laufzeitumgebung für dieses Modell erstellen können.

  • Weitere Informationen zu Kompatibilitätsaspekten von TensorFlow- und LiteRT-Modellen finden Sie in der Übersicht zur Modellkompatibilität.
  • Die Themen unter „Modellkompatibilität – Übersicht“ behandeln fortgeschrittene Techniken zum Refaktorieren Ihres Modells, z. B. den Leitfaden Operatoren auswählen.
  • Eine vollständige Liste der Vorgänge und Einschränkungen finden Sie auf der Seite zu LiteRT-Vorgängen.

Nächste Schritte