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.
- Aby przejść od razu do kompleksowego przykładu, zobacz przykład szkolenia uwzględniającego kwantyzację .
- Aby szybko znaleźć interfejsy API potrzebne w Twoim przypadku użycia, zapoznaj się z kompleksowym przewodnikiem szkoleniowym dotyczącym kwantyzacji .
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.
- Plik
tf.compat.v1
z pakietem TF 2.X nie jest obsługiwany.
- Plik
- 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).