Szkolenie świadome kwantyzacji

Utrzymywany przez optymalizację modelu TensorFlow

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

Na tej stronie znajduje się przegląd szkoleń uwzględniających kwantyzację, które pomogą Ci określić, jak pasuje ono do Twojego przypadku użycia.

Przegląd

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

Wdróż z kwantyzacją

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

Technika ta jest stosowana w produkcji w przypadkach użycia mowy, obrazu, tekstu i tłumaczenia. 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) i do pewnego stopnia podstawowe algorytmy. Należy pamiętać, że w przypadku tych zmian w stosunku do ustawień domyślnych interfejsu API obecnie nie ma 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ą kompatybilności wstecznej.

Zgodność API

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

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

Naszym planem działania jest dodanie wsparcia w następujących obszarach:

  • Budowanie modelu: wyjaśnij, w jaki sposób modele podklas ograniczają się do braku wsparcia
  • Szkolenie rozproszone: tf.distribute

Ogólna macierz wsparcia

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

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

Naszym planem działania jest dodanie wsparcia w następujących obszarach:

  • Zasięg modeli: rozszerzony o RNN/LSTM i ogólną obsługę Concat.
  • Przyspieszenie sprzętowe: upewnij się, że konwerter TFLite może generować modele w pełni całkowite. Aby uzyskać szczegółowe informacje, zobacz ten problem .
  • Eksperymentuj z przypadkami użycia kwantyzacji:
    • Eksperymentuj z algorytmami kwantyzacji obejmującymi warstwy Keras lub wymagającymi etapu uczenia.
    • Stabilizuj interfejsy API.

Wyniki

Klasyfikacja obrazu za pomocą narzędzi

Model Niekwantyzowana dokładność Top-1 8-bitowa skwantowana dokładność
MobilenetV1 224 71,03% 71,06%
Resnet v1 50 76,3% 76,1%
MobilenetV2 224 70,77% 70,01%

Modele przetestowano w Imagenet i oceniono zarówno w TensorFlow, jak i TFLite.

Klasyfikacja obrazu ze względu na technikę

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

Modele przetestowano w Imagenet i oceniono zarówno w TensorFlow, jak i TFLite.

Przykłady

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

  • Model CNN dotyczący odręcznego zadania klasyfikacji cyfr MNIST z kwantyzacją: kod

Informacje na temat podobnego zagadnienia można znaleźć w artykule Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . W artykule przedstawiono niektóre koncepcje wykorzystywane w tym narzędziu. Implementacja nie jest dokładnie taka sama, a w tym narzędziu zastosowano dodatkowe koncepcje (np. kwantyzacja per-osi).