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.
- Aby zagłębić się w kompletny przykład, zobacz przykład treningu świadomego kwantyzacji .
- Aby szybko znaleźć interfejsy API potrzebne do danego przypadku użycia, zapoznaj się z obszernym przewodnikiem dotyczącym szkolenia uwzględniającego kwantyzację .
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.
-
tf.compat.v1
z pakietem TF 2.X nie jest obsługiwany.
-
- 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).