Szkolenie świadome kwantyzacji

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Obsługiwane przez TensorFlow Model Optimization

Istnieją dwie formy kwantyzacji: kwantyzacja po treningu i trening świadomy kwantyzacji. Zacznij od kwantyzacji po szkoleniu , ponieważ jest ona łatwiejsza w użyciu, chociaż szkolenie uwzględniające kwantyzację jest często lepsze dla dokładności modelu.

Ta strona zawiera przegląd treningu świadomego kwantyzacji, który pomoże Ci określić, jak pasuje do Twojego przypadku użycia.

Przegląd

Trening uwzględniający kwantyzację emuluje kwantyzację w czasie wnioskowania, tworząc model, którego późniejsze narzędzia będą używać do tworzenia faktycznie skwantowanych modeli. Modele skwantowane wykorzystują mniejszą precyzję (np. 8-bitowe zamiast 32-bitowego zmiennoprzecinkowego), co prowadzi do korzyści podczas wdrażania.

Wdróż z kwantyzacją

Kwantyzacja przynosi ulepszenia poprzez kompresję modelu i redukcję opóźnień. Przy domyślnych ustawieniach interfejsu API rozmiar modelu zmniejsza się czterokrotnie i zazwyczaj obserwujemy od 1,5 do 4x poprawę opóźnienia procesora w testowanych backendach. Ostatecznie można zaobserwować poprawę opóźnień w zgodnych akceleratorach uczenia maszynowego, takich jak EdgeTPU i NNAPI.

Technika ta jest wykorzystywana w produkcji w mowie, wizji, tekście i tłumaczeniu przypadków użycia. Kod obsługuje obecnie podzbiór tych modeli .

Eksperymentuj z kwantyzacją i powiązanym sprzętem

Użytkownicy mogą konfigurować parametry kwantyzacji (np. liczbę bitów) oraz, do pewnego stopnia, podstawowe algorytmy. Pamiętaj, że po wprowadzeniu tych zmian w domyślnych ustawieniach interfejsu API nie ma obecnie obsługiwanej ścieżki wdrożenia do zaplecza. Na przykład konwersja TFLite i implementacje jądra obsługują tylko 8-bitową kwantyzację.

Interfejsy API specyficzne dla tej konfiguracji są eksperymentalne i nie podlegają wstecznej kompatybilności.

Kompatybilność API

Użytkownicy mogą stosować kwantyzację za pomocą następujących interfejsów API:

  • Budowanie modelu: tf.keras tylko z modelami sekwencyjnymi i funkcjonalnymi.
  • Wersje TensorFlow: TF 2.x dla tf-nightly.
  • Tryb wykonania TensorFlow: gorliwe wykonanie

Na naszej mapie drogowej znajduje się wsparcie w następujących obszarach:

  • Budowanie modeli: wyjaśnij, w jaki sposób modele podklasy są ograniczone do braku wsparcia
  • Szkolenie rozproszone: tf.distribute

Ogólna macierz wsparcia

Wsparcie jest dostępne w następujących obszarach:

  • Pokrycie modelu: modele używające dozwolonych warstw , BatchNormalization, gdy następuje po warstwach Conv2D i DepthwiseConv2D oraz w ograniczonych przypadkach Concat .
  • Akceleracja sprzętowa: nasze domyślne ustawienia API są kompatybilne z akceleracją między innymi na backendach EdgeTPU, NNAPI i TFLite. Zobacz zastrzeżenie na mapie drogowej.
  • Wdrażanie z kwantyzacją: obecnie obsługiwana jest tylko kwantyzacja na osi dla warstw splotowych, a nie kwantyzacja na tensor.

Na naszej mapie drogowej znajduje się wsparcie w następujących obszarach:

  • Zakres modelu: rozszerzony o RNN/LSTM i ogólną obsługę Concat.
  • Przyspieszenie sprzętowe: upewnij się, że konwerter TFLite może wytwarzać modele o pełnej liczbie całkowitej. Zobacz ten numer, aby uzyskać szczegółowe informacje.
  • Eksperymentuj z przypadkami użycia kwantyzacji:
    • Eksperymentuj z algorytmami kwantyzacji, które obejmują warstwy Keras lub wymagają etapu uczenia.
    • Stabilizuj interfejsy API.

Wyniki

Klasyfikacja obrazów za pomocą narzędzi

Model Nieskwantowana dokładność Top-1 8-bitowa dokładność kwantyzacji
Sieć komórkowaV1 224 71,03% 71,06%
Zresetuj v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

Modele zostały przetestowane w Imagenet i ocenione zarówno w TensorFlow, jak i TFLite.

Klasyfikacja obrazów dla techniki

Model Nieskwantowana dokładność Top-1 8-bitowa skwantowana dokładność
Nasnet-Mobile 74% 73%
Resnet-v2 50 75,6% 75%

Modele zostały przetestowane w Imagenet i ocenione zarówno w TensorFlow, jak i TFLite.

Przykłady

Oprócz przykładu treningu uwzględniającego kwantyzację , zobacz następujące przykłady:

  • Model CNN na odręcznym zadaniu klasyfikacji cyfr MNIST z kwantyzacją: kod

Więcej informacji na ten temat można znaleźć w artykule Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . W tym artykule przedstawiono niektóre koncepcje używane w tym narzędziu. Implementacja nie jest dokładnie taka sama i istnieją dodatkowe koncepcje używane w tym narzędziu (np. kwantyzacja per-axis).