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

Reduzieren Sie die binäre Größe von TensorFlow Lite

Überblick

Bei der Bereitstellung von Modellen für ODML-Anwendungen (On-Device Machine Learning) ist es wichtig, den begrenzten Speicher zu kennen, der auf Mobilgeräten verfügbar ist. Die binären Größen des Modells sind eng mit der Anzahl der im Modell verwendeten Operationen korreliert. Mit TensorFlow Lite können Sie Modellbinärgrößen mithilfe selektiver Builds reduzieren. Selektive Builds überspringen nicht verwendete Vorgänge in Ihrem Modellsatz und erstellen eine kompakte Bibliothek mit nur der Laufzeit und den Betriebssystemen, die für die Ausführung des Modells auf Ihrem Mobilgerät erforderlich sind.

Der selektive Build gilt für die folgenden drei Operationsbibliotheken.

  1. TensorFlow Lite integrierte Ops-Bibliothek
  2. TensorFlow Lite benutzerdefinierte Operationen
  3. Wählen Sie die TensorFlow-Operationsbibliothek aus

Die folgende Tabelle zeigt die Auswirkungen selektiver Builds für einige häufige Anwendungsfälle:

Modellname Domain Zielarchitektur AAR-Dateigröße (n)
Mobilenet_1.0_224 (float) Bildklassifizierung armeabi-v7a tensorflow-lite.aar (296.635 Bytes)
arm64-v8a tensorflow-lite.aar (382.892 Bytes)
WÜRZEN Tonhöhenextraktion armeabi-v7a tensorflow-lite.aar (375.813 Bytes)
tensorflow-lite-select-tf-ops.aar (1.676.380 Bytes)
arm64-v8a tensorflow-lite.aar (421.826 Bytes)
tensorflow-lite-select-tf-ops.aar (2.298.630 Bytes)
i3d-kinetics-400 Videoklassifizierung armeabi-v7a tensorflow-lite.aar (240.085 Bytes)
tensorflow-lite-select-tf-ops.aar (1.708.597 Bytes)
arm64-v8a tensorflow-lite.aar (273.713 Bytes)
tensorflow-lite-select-tf-ops.aar (2.339.697 Bytes)

Bekannte Probleme / Einschränkungen

  1. Selective Build für C API und iOS-Version wird derzeit nicht unterstützt.

Erstellen Sie TensorFlow Lite selektiv mit Bazel

In diesem Abschnitt wird davon ausgegangen, dass Sie TensorFlow-Quellcodes heruntergeladen und die lokale Entwicklungsumgebung für Bazel eingerichtet haben.

Erstellen Sie AAR-Dateien für Android-Projekte

Sie können die benutzerdefinierten TensorFlow Lite-AARs erstellen, indem Sie Ihre Modelldateipfade wie folgt angeben.

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

Mit dem obigen Befehl wird die AAR-Datei bazel-bin/tmp/tensorflow-lite.aar für integrierte und benutzerdefinierte TensorFlow Lite- bazel-bin/tmp/tensorflow-lite.aar . und generiert optional die aar-Datei bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar wenn Ihre Modelle Select TensorFlow ops enthalten. Beachten Sie, dass dadurch ein "fetter" AAR mit mehreren unterschiedlichen Architekturen erstellt wird. Wenn Sie nicht alle benötigen, verwenden Sie die für Ihre Bereitstellungsumgebung geeignete Teilmenge.

Erweiterte Verwendung: Erstellen Sie mit benutzerdefinierten Operationen

Wenn Sie Tensorflow Lite-Modelle mit benutzerdefinierten Operationen entwickelt haben, können Sie diese erstellen, indem Sie dem Befehl build die folgenden Flags hinzufügen:

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --tflite_custom_ops_srcs=/e/f/file1.cc,/g/h/file2.h \
  --tflite_custom_ops_deps=dep1,dep2

Das Flag tflite_custom_ops_srcs enthält Quelldateien Ihrer benutzerdefinierten tflite_custom_ops_deps und das Flag tflite_custom_ops_deps enthält Abhängigkeiten zum Erstellen dieser Quelldateien. Beachten Sie, dass diese Abhängigkeiten im TensorFlow-Repo vorhanden sein müssen.

Erstellen Sie TensorFlow Lite selektiv mit Docker

In diesem Abschnitt wird davon ausgegangen, dass Sie Docker auf Ihrem lokalen Computer installiert und die Docker-Datei TensorFlow Lite erstellt haben .

Erstellen Sie AAR-Dateien für Android-Projekte

Laden Sie das Skript zum Erstellen mit Docker herunter, indem Sie Folgendes ausführen:

curl -o build_aar_with_docker.sh \
  https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/tools/build_aar_with_docker.sh &&
chmod +x build_aar_with_docker.sh

Anschließend können Sie den benutzerdefinierten TensorFlow Lite-AAR erstellen, indem Sie Ihre Modelldateipfade wie folgt angeben.

sh build_aar_with_docker.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --checkpoint=master

Das checkpoint Flag ist ein Commit, ein Zweig oder ein Tag des TensorFlow-Repos, das Sie vor dem Erstellen der Bibliotheken auschecken möchten. Mit dem obigen Befehl wird die AAR-Datei tensorflow-lite.aar für integrierte und benutzerdefinierte TensorFlow Lite tensorflow-lite.aar und optional die AAR-Datei tensorflow-lite-select-tf-ops.aar für Select TensorFlow ops in Ihrem aktuellen Verzeichnis tensorflow-lite-select-tf-ops.aar .

Fügen Sie dem Projekt AAR-Dateien hinzu

Fügen Sie AAR-Dateien hinzu, indem Sie den AAR direkt in Ihr Projekt importieren oder den benutzerdefinierten AAR in Ihrem lokalen Maven-Repository veröffentlichen . Beachten Sie, dass Sie die AAR-Dateien auch für tensorflow-lite-select-tf-ops.aar wenn Sie sie generieren.