Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Zmniejsz rozmiar pliku binarnego TensorFlow Lite

Przegląd

Wdrażając modele dla aplikacji uczenia maszynowego na urządzeniu (ODML), należy pamiętać o ograniczonej pamięci dostępnej na urządzeniach mobilnych. Rozmiary binarne modelu są ściśle skorelowane z liczbą operacji użytych w modelu. TensorFlow Lite umożliwia zmniejszenie rozmiarów binarnych modeli za pomocą kompilacji selektywnych. Kompilacje selektywne pomijają nieużywane operacje w zestawie modeli i tworzą kompaktową bibliotekę zawierającą tylko środowisko wykonawcze i jądra operacyjne wymagane do uruchomienia modelu na urządzeniu mobilnym.

Kompilacja selektywna ma zastosowanie do następujących trzech bibliotek operacji.

  1. Wbudowana biblioteka operacji TensorFlow Lite
  2. Niestandardowe operacje TensorFlow Lite
  3. Wybierz bibliotekę TensorFlow ops

Poniższa tabela przedstawia wpływ kompilacji selektywnych na niektóre typowe przypadki użycia:

Nazwa modelu Domena Architektura docelowa Rozmiary plików AAR
Mobilenet_1.0_224 (float) Klasyfikacja obrazu armeabi-v7a tensorflow-lite.aar (296,635 bajtów)
arm64-v8a tensorflow-lite.aar (382,892 bajtów)
PRZYPRAWA Ekstrakcja wysokości dźwięku armeabi-v7a tensorflow-lite.aar (375,813 bajtów)
tensorflow-lite-select-tf-ops.aar (1,676,380 bajtów)
arm64-v8a tensorflow-lite.aar (421826 bajtów)
tensorflow-lite-select-tf-ops.aar (2,298,630 bajtów)
i3d-kinetics-400 Klasyfikacja wideo armeabi-v7a tensorflow-lite.aar (240,085 bajtów)
tensorflow-lite-select-tf-ops.aar (1708,597 bajtów)
arm64-v8a tensorflow-lite.aar (273,713 bajtów)
tensorflow-lite-select-tf-ops.aar (2339697 bajtów)

Znane problemy / ograniczenia

  1. Kompilacja selektywna dla wersji C API i iOS nie jest obecnie obsługiwana.

Buduj selektywnie TensorFlow Lite z Bazel

W tej sekcji założono, że pobrałeś kody źródłowe TensorFlow i skonfigurowałeś lokalne środowisko programistyczne na Bazel.

Twórz pliki AAR dla projektu Android

Można tworzyć niestandardowe raporty AAR TensorFlow Lite, podając ścieżki do plików modelu w następujący sposób.

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

Powyższe polecenie wygeneruje plik AAR bazel-bin/tmp/tensorflow-lite.aar dla wbudowanych i niestandardowych bazel-bin/tmp/tensorflow-lite.aar TensorFlow Lite; i opcjonalnie generuje plik bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar jeśli twoje modele zawierają opcje Select TensorFlow. Zauważ, że tworzy to „gruby” AAR z kilkoma różnymi architekturami; jeśli nie potrzebujesz ich wszystkich, użyj podzbioru odpowiedniego dla środowiska wdrażania.

Użycie zaawansowane: buduj za pomocą niestandardowych operacji

Jeśli masz opracowane modele Tensorflow Lite z niestandardowymi operacjami, możesz je zbudować, dodając następujące flagi do polecenia kompilacji:

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

Flaga tflite_custom_ops_srcs zawiera pliki źródłowe Twoich niestandardowych tflite_custom_ops_deps flaga tflite_custom_ops_deps zawiera zależności potrzebne do zbudowania tych plików źródłowych. Zauważ, że te zależności muszą istnieć w repozytorium TensorFlow.

Selektywnie buduj TensorFlow Lite za pomocą Dockera

Sekcja ta zakłada, że zainstalowano Döcker na lokalnym komputerze i wbudowany plik Döcker TensorFlow Lite .

Twórz pliki AAR dla projektu Android

Pobierz skrypt do budowania za pomocą Dockera, uruchamiając:

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

Następnie można zbudować niestandardowy TensorFlow Lite AAR, podając ścieżki plików modelu w następujący sposób.

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

Flaga checkpoint to zatwierdzenie, gałąź lub tag repozytorium TensorFlow, które chcesz pobrać przed zbudowaniem bibliotek. Powyższe polecenie wygeneruje plik AAR tensorflow-lite.aar dla wbudowanych i niestandardowych tensorflow-lite.aar TensorFlow Lite oraz opcjonalnie plik AAR tensorflow-lite-select-tf-ops.aar dla operacji Select TensorFlow w bieżącym katalogu.

Dodaj pliki AAR do projektu

Dodaj pliki AAR, importując AAR bezpośrednio do projektu lub publikując niestandardowy plik AAR w lokalnym repozytorium Maven . Zauważ, że musisz dodać pliki AAR dla tensorflow-lite-select-tf-ops.aar jeśli je wygenerujesz.