Koszt Pełnej Precyzji
Sieci neuronowe są zazwyczaj trenowane przy użyciu liczb zmiennoprzecinkowych o precyzji 32-bitowej, które oferują ogromny zakres i precyzję numeryczną dla delikatnego procesu gradientu. Jednak ta precyzja jest kosztowna: model z 100 milionami parametrów potrzebuje około 400 megabajtów tylko do przechowywania wag, a każde mnożenie podczas wnioskowania zużywa energię i czas. Na smartfonie, smartwatchu lub mikrokontrolerze o ograniczonym pamięci RAM, chroniącej baterii i bez wentylatora chłodzenia, ten narzut może sprawić, że modele w pełnej precyzji będą po prostu niepraktyczne do uruchomienia. Zmniejszenie tego rozmiaru bez rezygnowania z inteligencji nauczonej przez model stało się jednym z centralnych problemów wdrażania sztucznej inteligencji na brzegu (ang. edge).
Mapowanie Ślizgów do Liczb
Kwantyzacja polega na tym, że z ciągłego zakresu wartości wag zmiennoprzecinkowych w warstwie, pobiera się i mapuje na mały, stały zestaw dyskretnych poziomów całkowitych, najczęściej 8-bitowe liczby całkowite oferujące 256 możliwych wartości. Mapowanie to wykorzystuje czynnik skalujący i punkt zerowy, które razem definiują prostą formułę liniową, która konwertuje między oryginalnym zakresem zmiennoprzecinkowym a siatką całkowitą i z powrotem podczas obliczeń. Korzyść jest znacząca: wagi 8-bitowe potrzebują tylko ćwiartki pamięci w porównaniu z 32-bitowymi liczbami zmiennoprzecinkowymi, a arytmetyka całkowita działa szybciej i wydajniej na większości procesorów, w tym dedykowanych przyspieszaczy neuronowych znalezionych w nowoczesnych telefonach. Kosztem jest utrata precyzji numerycznej, ponieważ wiele sąsiednich wartości zmiennoprzecinkowych teraz spowija się na ten sam poziom całkowity.
Post-Treningowe vs. Trening o Świadomości Kwantyzacji
Istnieją dwie główne ścieżki do kwantyzowanego modelu. Post-treningowa kwantyzacja (PTQ) wykorzystuje już wytrenowany, pełnoprzydziastowy model i przekształca jego wagi oraz aktywacje do niższej precyzji po zakończeniu, używając niewielkiego zbioru kalibracyjnego do wyboru dobrych współczynników skali; jest szybka i nie wymaga ponownego trenowania, ale dokładność może ulec pogorszeniu, szczególnie przy bardzo niskich szerokościach bitów. Trening o świadomości kwantyzacji (QAT) zamiast tego symuluje błędy zaokrąglania związane z kwantyzacją w trakcie samego procesu uczenia się, dzięki czemu wagi sieci dostosowują się do kompensowania tego szumu. QAT zazwyczaj zachowuje znacznie większą dokładność przy 8-bitowej lub nawet 4-bitowej precyzji, kosztem dodatkowego czasu i złożoności treningu.
Zasilanie AI w Twoim kieszonku
Kwantyzacja jest głównym powodem, dla którego Twój telefon może działać z rozpoznawaniem twarzy, automatycznym opisem zdjęć na żywo, rozpoznawaniem mowy i wykrywaniem scen aparatu natychmiastowo i offline, bez wysyłania danych do chmury. Podpiera również sztuczną inteligencję w inteligentnych aparatach, słuchawkach oraz małych, wbudowanych mikrokontrolerach uruchamiających frameworki takie jak TensorFlow Lite. Wybory są jednak realne – zbyt agresywne zmniejszanie bitów (np. 4-bitowe lub binarnie) może zauważalnie pogorszyć dokładność, a niektóre warstwy, szczególnie pierwsza i ostatnia warstwa sieci, są bardziej wrażliwe na błędy kwantyzacji niż te znajdujące się pomiędzy nimi. Inżynierowie często mieszają precyzje w ramach jednego modelu, utrzymując wrażliwe warstwy przy wyższej precyzji, a jednocześnie agresywnie kwantyzując resztę, aby zrównoważyć efektywność i utratę dokładności.
Frequently asked questions
Czy kwantyzacja zawsze obniża dokładność?
Nie zawsze znacząco. Dla wielu modeli kwantyzacja po treningu 8-bitowa powoduje jedynie niewielki, często niezauważalny spadek dokładności, podczas gdy przejście do 4-bitów lub niżej zazwyczaj wymaga treningu z uwzględnieniem kwantyzacji (quantization-aware training), aby utrzymać akceptowalną wydajność. Wpływ zależy w dużym stopniu od architektury modelu i tych warstw, które są kwantyfikowane.
Dlaczego używa się liczb całkowitych zamiast mniejszych zmiennoprzecinkowych?
Arytmetyka całkowita jest generalnie szybsza i bardziej energooszczędna niż arytmetyka zmiennoprzecinkowa na większości sprzętów, a wiele układów brzegowych (edge chips) zawiera dedykowane akceleratory liczb całkowitych. Liczby całkowite również lepiej się kompresują i są dobrze dopasowane do stałych układów pamięci stosowanych w systemach wbudowanych, dlatego też INT8 stał się standardem branżowym dla wdrażania na brzegu.
Co to jest zero-point w kwantyzacji?
Zero-point to przesunięcie całkowite używane wraz ze współczynnikiem skalowania, aby poprawnie reprezentować zero w zakresie kwantyzacji, co ma znaczenie, ponieważ wiele operacji sieci neuronowych, takich jak aktywacje ReLU i padding, opierają się na dokładnych wartościach zerowych. Bez odpowiedniego zero-point, te operacje byłyby zniekształcone po kwantyzacji.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Neural Network Quantization: Shrinking Models for Edge AI i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Neural Network Quantization: Shrinking Models for Edge AI