Przejdź do głównej sekcji

Dopasowywanie modeli SI do smartphonów z wykorzystaniem kwantyzacji

Jedną z moich ulubionych rzeczy, które lubię słyszeć od klientów, jest „Nie możesz tego zrobić…”

mobile-quantization

Przez lata zapraszałem dziesiątki klientów i programistów, aby przynieśli mi wyzwanie. Masz oprogramowanie, które zbudowałeś, ale jesteś pewien, że nigdy nie zadziała na smartfonie? Pozwól mojemu zespołowi i mnie zobaczyć, co możemy zrobić.

W ostatnich latach mój zespół coraz bardziej skupiał się na tym, jak uruchamiać kosztowne obliczeniowo SI na urządzeniach konsumenckich. Zaczęło się od algorytmów uczenia maszynowego, które dodawały efekty do twoich zdjęć, takie jak efekt bokeh do twoich portretów lub filtr na twoich filmach. Konsumenci nie myśleli o tych funkcjach jako o „SI”, ale w tle wymagało to dużo inteligentnego planowania, aby zrealizować tę magię, nie obciążając nadmiernie superkomputera, który mieści się w twojej kieszeni.

Oczywiście, ambitni programiści musieli kontynuować przesuwanie granic innowacji. Najnowszym trendem, który przyciągnął uwagę branży, są duże modele językowe (LLM), z naciskiem na DUŻE. To, co zaczęło się od milionów parametrów, szybko urosło do miliardów. ChatGPT ma około 175 miliardów parametrów. W miarę jak te modele się skalują, wymagają więcej pamięci i mocy obliczeniowej, zarówno podczas treningu, jak i wnioskowania, czyli w momencie wykorzystania ich możliwości.

Mój tytuł może brzmieć „zarządzanie produktem”, ale pochodzę z technicznego środowiska. Zacząłem w latach 90., pracując w C i Assembly. Zbudowałem rozproszony system bezpieczeństwa wbudowany zarządzany przez stację roboczą Linux. Po tym zrobiłem trochę dosłownej nauki rakietowej w Laboratorium Napędu Odrzutowego NASA. A przez ostatnich sześć lat byłem w Qualcomm Technologies, Inc., gdzie kieruję zarządzaniem produktem odpowiedzialnym za włączenie oprogramowania dla różnych rdzeni DSP Hexagon i rdzeni NPU we wszystkich urządzeniach z technologiami Qualcomm.

Przez ostatni rok, w serii demonstracji, mój zespół pokazał, jak można kwantyzować i przyspieszać te modele LLM i AI tekst-na-obraz, aby działały lokalnie na twoim urządzeniu mobilnym. Do tej pory udało nam się uruchomić Stable Diffusion, ControlNet i Llamę 2, a pracujemy nad innymi modelami w naszym łańcuchu dostaw. To nie tylko zabawny mały wyczyn, ale także pozwala na dużą poprawę prędkości – kluczowy czynnik, gdy chodzi o adopcję aplikacji mobilnej.

Teraz, uwielbiam budować te demonstracje, ale prawdziwym celem tej pracy nie jest tylko pokazywanie zabawkowych przykładów. Chodzi o pokazanie, co programiści tacy jak ty mogą zrobić. Jeśli myślałeś o dodaniu możliwości GenAI do własnych aplikacji i usług, ale nie byłeś pewien jak, czytaj dalej. Wyjaśnię niektóre z narzędzi i technik, które wykorzystujemy do dopasowania tych modeli do smartfona i wytłumaczę, jak możesz się przyłączyć w domu.

Jak działa kwantyzacja Większość osób wchodzi w interakcję z modelami generatywnymi przez API, gdzie ciężkie obliczeniowo prace odbywają się na serwerach z elastycznymi zasobami. Wynika to z faktu, że te modele obciążają sprzęt. Jednym ze skutecznych sposobów zmniejszenia tego zapotrzebowania obliczeniowego jest zwiększenie wydajności energetycznej poprzez kwantyzację. Kwantyzacja to termin zbiorczy obejmujący wiele różnych technik, ale sprowadza się do procesu, który pozwala na konwersję ciągłych nieskończonych wartości wejściowych z dużego zbioru na dyskretne skończone wartości wyjściowe w mniejszym zbiorze.

ai-quantization-chart

Można myśleć o kwantyzacji przez analogię. Ktoś pyta cię, która jest godzina. Spoglądasz na zegarek i mówisz „10:21”, ale to nie jest w 100% dokładne. Godziny, minuty i sekundy to konwencja, której używamy, aby kwantyzować, czyli przybliżać, ciągłą zmienną, jaką jest czas.

Uproszczamy czas na dyskretne liczby.

Innym przykładem jest przechwytywanie cyfrowego obrazu poprzez reprezentowanie każdego piksela określoną liczbą bitów, redukując w ten sposób ciągłe spektrum kolorów rzeczywistości do dyskretnych kolorów. Na przykład obraz czarno-biały może być reprezentowany jednym bitem na piksel, podczas gdy typowy obraz kolorowy ma dwadzieścia cztery bity na piksel (patrz poniższy GIF). Kwantyzacja w istocie zmniejsza liczbę bitów potrzebnych do reprezentacji informacji. Wszystkie cyfrowe informacje są w pewien sposób kwantyzowane, ale jak pokazuje ten przykład, może to być wykonywane na kilku poziomach, aby zmniejszyć ilość informacji reprezentujących element.

Wracając do SI, sztuczne sieci neuronowe składają się z węzłów aktywacji, połączeń między węzłami, wagi związanej z każdym połączeniem oraz wartości odchylenia, która wpływa na wartość aktywacji. To właśnie te obliczenia wagi i odchylenia mogą być kwantyzowane. Uruchomienie sieci neuronowej na sprzęcie może łatwo skutkować wieloma milionami operacji mnożenia i dodawania. Standardem branżowym dla wag jest 32-bity, co może obciążać sprzęt mobilny. Ale jeśli kwantyzujesz te wartości do niższych wartości bitowych, takich jak 24-bitowe lub mniej, to spowoduje to szybsze operacje i przyniesie duże zyski obliczeniowe i wyższą wydajność.

Poza korzyścią wydajności, kwantyzowane sieci neuronowe zwiększają również wydajność energetyczną z dwóch powodów: zmniejszone koszty dostępu do pamięci i zwiększona wydajność obliczeniowa. Używanie danych kwantyzowanych na niższych bitach wymaga mniejszego przesunięcia danych, zarówno na chipie, jak i poza nim, co zmniejsza przepustowość pamięci i oszczędza znaczną energię. Ponadto, czyni cały model mniejszym, więc może zmieścić się na mniejszych dyskach twardych twojego telefonu. Operacje matematyczne o niższej precyzji, takie jak mnożenie 8-bitowe całkowite (INT8) w porównaniu do 32-bitowego zmiennoprzecinkowego (FP32) mnożenia, wymagają mniejszej liczby cykli CPU, co zmniejsza zużycie energii.

Dla naszych demonstracji kwantowaliśmy Stable Diffusion i Meta’s Llama 2, aby mogły działać na smartfonach. Dla Stable Diffusion zaczęliśmy od wersji FP32 modelu open-source 1-5 od Hugging Face i dokonaliśmy optymalizacji poprzez kwantyzację, kompilację i akcelerację sprzętową, aby uruchomić go na telefonie z platformą mobilną Snapdragon 8 Gen 2. Aby zmniejszyć modele z FP32 do INT8, użyliśmy zestawu narzędzi AI Model Efficiency Toolkit (AIMET), który obejmuje kwantyzację po treningu, narzędzie opracowane z technik stworzonych przez Qualcomm AI Research.

how-it-works

Jaki jest haczyk w używaniu sieci niskobitowych? Zwykle dokładność kwantyzowanego modelu SI ma tendencję do spadku. Oczywiście, jeśli zmniejszysz informacje zawarte w parametrze, wynikające z tego obliczenia matematyczne nie będą tak precyzyjne. Jak w przypadku każdej techniki kompresji, wiele z nich jest stratnych, w tym sensie, że tracą informacje. Jednak istnieją techniki kompresji bezstratnych i minimalnie stratnych w innych dziedzinach.

Jako lider w wydajnym energetycznie przetwarzaniu SI na urządzeniach, Qualcomm nieustannie bada, jak ulepszyć techniki kwantyzacji i rozwiązać to wyzwanie z dokładnością. Szczególnie interesuje nas kwantyzacja 32-bitowych parametrów wag zmiennoprzecinkowych do 8-bitowych liczb całkowitych w sieciach neuronowych bez poświęcania dokładności. Poza naszymi bieżącymi badaniami nad bayesowskim uczeniem głębokim dla kompresji modeli i kwantyzacji, nasze dwa przyjęte artykuły na ICLR 2019 koncentrują się na wykonywaniu modeli SI niskobitowych.

Artykuł „Relaxed Quantization for Discretized Neural Networks” prezentuje nową metodę, która lepiej przygotowuje sieć neuronową do kwantyzacji w fazie treningu. Pozwala to sieci neuronowej dostosować się do kwantyzowanych obliczeń, które będą miały miejsce podczas wdrażania modelu. Metoda ta wytwarza kwantyzowane modele, które działają lepiej i zachowują większą dokładność niż alternatywne najnowocześniejsze podejścia.

Artykuł „Understanding Straight-Through Estimator in Training Activation Quantized Neural Nets” przyczynia się do teoretycznego zrozumienia estymatora prosto-przez (STE), który jest powszechnie stosowany w świadomym kwantyzacji treningu modelu. Artykuł dowodzi, że przy odpowiednio dobranym STE, skwantyzowany model sieci konwerguje do krytycznego punktu funkcji straty treningu, podczas gdy złe dobrane STE prowadzi do niestabilnego procesu treningu. Teoria została zweryfikowana eksperymentalnie – sprawdź artykuł i zobacz sam!

Kompresja modeli (w tym uczenie bayesowskie, kwantyzacja i dekompozycja) to tylko jeden z kierunków badań, na które obecnie koncentruje się Qualcomm AI Research. Inne tematy obejmują: ekwiwariancję sieci neuronowych konwolucyjnych, kompresję audio na mowę, uczenie maszynowe dla pojazdów autonomicznych, fotografię obliczeniową i optymalizację treningu modeli dla urządzeń o niskim zużyciu energii. Naszym celem jest dokonanie fundamentalnych przełomów w badaniach nad SI, abyśmy – jak również nasi klienci – mogli skalować technologię w różnych branżach.

Nasze najnowocześniejsze techniki kwantyzacji AIMET, takie jak Adaptive Rounding (AdaRound), pozwoliły utrzymać dokładność modelu przy tej niższej precyzji bez potrzeby ponownego szkolenia. Te techniki zostały zastosowane we wszystkich komponentach modelu Stable Diffusion, a mianowicie w transformatorze opartym na tekście kodującym, dekoderze VAE i UNecie. To było kluczowe dla dopasowania modelu do urządzenia.

Jedną z rzeczy, z których jestem najbardziej dumny, jest to, jak nasz system AIMET jest adaptacyjny. To nie jest rozwiązanie pasujące do wszystkich. Podejście takie stworzyłoby wiele problemów dla wielu dzisiejszych algorytmów SI. Zamiast tego wykonujemy wiele przejść na modelu, dostosowując i przycinając obszary, gdzie bezpiecznie można przekonwertować F32 na INT16 na INT8 aż do INT4. Korzystanie z adaptacyjnego procesu pozwala nam znacznie zmniejszyć obciążenie pamięci i CPU twojego urządzenia, jednocześnie unikając wprowadzenia nowych problemów dla programisty.

Teraz, gdy wyjaśniliśmy, jak to działa, chcę podkreślić, że wiele narzędzi i technik, których używaliśmy, jest open source i zostało zbudowane tak, aby łatwo wpasować się w istniejące przepływy pracy programistów. Otworzyliśmy zestaw narzędzi AI Model Efficiency Toolkit (AIMET) na GitHubie, aby współpracować z innymi wiodącymi badaczami AI i zapewnić prostą wtyczkę biblioteki dla programistów AI do wykorzystania dla najnowocześniejszej wydajności modeli.

Nie SI, lecz aplikacja Przy całym szumie wokół SI łatwo zapomnieć, że to aplikacje tej technologii przekonają konsumentów, a nie jej surowe możliwości.

Generatywne SI ma niesamowite obietnice. Wyobraź sobie grę fabularną, w której cała rozmowa z postaciami generowanymi komputerowo jest tworzona na bieżąco. Zamiast menu opcji otrzymujesz otwartą rozmowę, która jest równie bystra i responsywna, jak rozmowa z człowiekiem. Warto jednak pamiętać, że generatywne SI to tylko jeden smak postępu, który obserwujemy w świecie sieci neuronowych i uczenia maszynowego.

Mówimy o chatbotach i interfejsach konwersacyjnych, ponieważ wszyscy możemy się z nimi identyfikować na ludzkim poziomie. Ale potężne modele SI będą jeszcze bardziej powszechne za kulisami. Jednym z moich ulubionych jest superrozdzielczość. Wyobraź sobie świat, w którym serwis streamingowy jest w stanie dostarczyć twój ulubiony program telewizyjny w 720p, a usługa uczenia maszynowego działająca lokalnie na twoim urządzeniu może przekonwertować to na obraz 4K. Oszczędności energii byłyby ogromne, zarówno dla twojej baterii, jak i dla globalnego środowiska.

Nasz AIMET jest open source i zapraszamy współtwórców. Oczywiście, jeśli pracowałeś z popularnymi narzędziami, takimi jak PyTorch i Tensorflow, Qualcomm AI Stack będzie pasował do twojego istniejącego przepływu pracy.

źródło: Qualcomm