Jak Qualcomm dokonał ogromnych ulepszeń w sztucznej inteligencji na Snapdragon 865

Qualcomm dokonał ogromnych skoków w wydajności AI dzięki nowemu SoC Snapdragon 865. Analizujemy zmiany, które Qualcomm wprowadził, aby przyspieszyć uczenie maszynowe.

Wygląda na to, że nie możemy przeżyć dnia bez zobaczenia w wiadomościach „sztucznej inteligencji”, a ubiegły tydzień nie był w dużej mierze wyjątkiem dzięki szczytowi Snapdragon Tech. Każdego roku Qualcomm ujawnia mnóstwo ulepszeń, które wprowadza do procesora Hexagon DSP i silnika Qualcomm AI Engine, jest to termin, którego używają na określenie całej heterogenicznej platformy obliczeniowej – procesora, procesora graficznego i procesora DSP – gdy mówią o sztucznej inteligencji obciążenia. Kilka lat temu naleganie Qualcomma na odejście od tradycyjnych tematów rozmów, takich jak poprawa wydajności procesora z roku na rok, wydawało się nieco dziwne. Jednak w roku 2019 i w przypadku Snapdragona 865 widzimy, że heterogeniczne przetwarzanie danych rzeczywiście stoi na czele rozwoju komputerów mobilnych, ponieważ sztuczna inteligencja a obciążenia przyspieszane sprzętowo wydają się wkradać do szerokiej gamy przypadków użycia i aplikacji, od mediów społecznościowych po codzienne usługi.

Snapdragon 865 wykorzystuje silnik sztucznej inteligencji Qualcomm piątej generacji, a wraz z nim znaczną poprawę wydajności i efektywności energetycznej – ale tego można się spodziewać. W morzu specyfikacji, parametrów wydajności, wymyślnych terminów inżynieryjnych i męczących modnych haseł marketingowych łatwo stracić z oczu znaczenie tych ulepszeń. Co opisują? Dlaczego te aktualizacje są tak istotne dla osób wdrażających sztuczną inteligencję w swoich aplikacjach już dziś, a co ważniejsze, dla tych, którzy chcą to robić w przyszłości?

W tym artykule w przystępny, ale dokładny sposób omówimy silnik Qualcomm AI Engine, przeglądając jego historię, komponenty i ulepszenia Snapdragon 865, a co najważniejsze, Dlaczego Lub Jak każdy z nich przyczynił się do współczesnego korzystania ze smartfonów, od zabawnych filtrów po asystentów cyfrowych.

Hexagon DSP i silnik Qualcomm AI: kiedy marka robi różnicę

Chociaż nie mogłem wziąć udziału w tegotygodniowym szczycie Snapdragon Tech Summit, mimo to uczestniczyłem w każdym innym od 2015 roku. Jeśli pamiętasz, To był rokiem gorącego bałaganu, jakim był Snapdragon 810, dlatego dziennikarze w lofcie Chelsea w Nowym Jorku nie mogli się doczekać, aby dowiedzieć się, w jaki sposób Snapdragon 820 odkupi firmę. I to był świetny chipset, zgadza się: obiecywał solidną poprawę wydajności (bez dławienia) poprzez powrót do wypróbowanych wówczas niestandardowych rdzeni, z których znany był Qualcomm. Pamiętam jednak także bardzo subtelne ogłoszenie, któremu z perspektywy czasu należało poświęcić więcej uwagi: Hexagon 680 DSP drugiej generacji i jego pojedyncza instrukcja, wiele danych (SIMD) Hexagon Vector eXtensions lub HVX. Być może, gdyby inżynierowie nie nazwali tej funkcji, poświęcono by jej uwagę, na jaką zasługiwała.

Ten koprocesor umożliwia wątkom sprzętowym skalarnej jednostki DSP dostęp do „kontekstów” HVX (plików rejestrów) w celu uzyskania szerokich możliwości przetwarzania wektorowego. Umożliwiło to odciążenie znacznych obciążeń obliczeniowych z energochłonnego procesora lub karty graficznej na komputer energooszczędny procesor DSP, dzięki czemu zadania związane z obrazowaniem i wizją komputerową będą działać ze znacznie lepszą wydajnością na miliwat. Doskonale nadają się do stosowania identycznych operacji na sąsiadujących elementach wektorowych (pierwotnie były to tylko liczby całkowite), dzięki czemu dobrze nadają się do obciążeń związanych z widzeniem komputerowym. W przeszłości napisaliśmy szczegółowy artykuł na temat DSP i HVX, zauważając, że architektura HVX dobrze nadaje się do równoległości i, oczywiście, przetwarzania dużych wektorów wejściowych. W tamtym czasie Qualcomm promował zarówno DSP, jak i HVX niemal wyłącznie, opisując ich ulepszenia wprowadziłoby do obciążeń związanych z wizją komputerową, takich jak detektor narożników Harrisa i inne przesuwane okna metody.

Dopiero wraz z pojawieniem się głębokiego uczenia się w konsumenckich aplikacjach mobilnych pojawił się procesor DSP, jego wektor jednostki przetwarzające (a teraz akcelerator tensorowy) połączyłyby się ze sztuczną inteligencją i sieciami neuronowymi, w konkretny. Ale patrząc wstecz, ma to sens: architektura cyfrowego procesora sygnałowego (DSP), pierwotnie zaprojektowana do obsługi sygnału cyfrowego wejścia sygnałów rzeczywistych lub analogowych, nadaje się do wielu takich samych obciążeń, jak wiele algorytmów uczenia maszynowego i sieci neuronowych sieci. Na przykład procesory DSP są dostosowane do jąder filtrów, operacji splotu i korelacji, obliczeń 8-bitowych, mnóstwa algebra liniowa (iloczyny wektorowe i macierzowe) oraz operacje mnożenia i akumulowania (MAC), wszystkie najbardziej efektywne, gdy równoległe. Czas działania sieci neuronowej jest również w dużym stopniu zależny od mnożenia dużych wektorów, macierzy i/lub tensorów, więc To naturalne, że zalety wydajności DSP z łatwością przekładają się na architektury sieci neuronowych, np Dobrze. W skrócie wrócimy do tego tematu!

W kolejnych latach Qualcomm w dalszym ciągu podkreślał, że nie oferuje Tylko chipsety, ale platformy mobilnei że się nie skupiają Tylko na ulepszaniu poszczególnych komponentów, ale dostarczaniu „heterogenicznych” obliczeń. W 2017 r. udostępnili pakiet SDK Snapdragon Neural Processing Engine (w celu przyspieszenia działania) w sieci Qualcomm Developer Network, a na początku 2018 r. ogłosił wprowadzenie silnika sztucznej inteligencji Qualcomm, który skonsoliduje kilka urządzeń obsługujących sztuczną inteligencję (procesor, procesor graficzny, procesor DSP) i komponenty oprogramowania w jednym nazwa. Dzięki tej przydatnej nomenklaturze byli w stanie ładnie zareklamować ulepszenia wydajności AI zarówno w Snapdragonie 855, jak i Snapdragon 865, będący w stanie wygodnie przeliterować liczbę bilionów operacji na sekundę (TOPS) i procent rok do roku ulepszenia. Wykorzystanie ulepszeń pokoleniowych w procesorach, procesorach graficznych i procesorze DSP – z których wszystkie skupiają się na sztucznej inteligencji ulepszenia – firma jest w stanie opublikować imponujące testy porównawcze w porównaniu z konkurencją, które omówimy wkrótce. Dzięki niedawnym wysiłkom marketingowym firmy i ujednoliconemu, spójnemu przekazowi na temat przetwarzania heterogenicznego branding AI w końcu zyskuje na popularności wśród dziennikarzy i entuzjastów technologii.

Wyjaśnianie sieci neuronowych: przyziemny stos algebry liniowej

Aby rozwikłać wiele żargonu, z którym spotkamy się w dalszej części artykułu, potrzebujemy krótkiego wprowadzenia czym jest sieć neuronowa I czego potrzebujesz, aby zrobić to szybciej. Chcę bardzo krótko omówić niektóre matematyczne podstawy sieci neuronowych, unikając jak najwięcej żargonu i notacji. Celem tej sekcji jest po prostu określenie, co robi sieć neuronowa, zasadniczo: operacji arytmetycznych wykonuje, a nie podstawy teoretyczne uzasadniające te operacje (to jest znacznie bardziej skomplikowane!). Jeśli chcesz od razu przejść do aktualizacji Qualcomm AI Engine, możesz przejść do następnej sekcji.

„Matematyka wektorowa jest podstawą głębokiego uczenia się”. – Travis Lanier, starszy dyrektor ds. zarządzania produktami w Qualcomm na szczycie Snapdragon Tech 2017

Poniżej znajdziesz bardzo typowy schemat w pełni połączonej sieci neuronowej z wyprzedzeniem. W rzeczywistości diagram sprawia, że ​​cały proces wygląda na nieco bardziej skomplikowany niż jest w rzeczywistości (przynajmniej dopóki się do tego nie przyzwyczaisz). Obliczymy przepustowość w przód, czyli to, co ostatecznie robi sieć za każdym razem, gdy generuje plik wnioskowanie, termin, z którym spotkamy się również w dalszej części artykułu. W tej chwili zajmiemy się jedynie maszyną i jej częściami, z krótkim objaśnieniem każdego elementu.

Sieć neuronowa składa się z sekwencji warstwy, każdy składający się z kilku „neuronów” (przedstawionych jako okręgi na schemacie) połączonych przez ciężary (przedstawione jako linie na schemacie). Ogólnie rzecz biorąc, istnieją trzy rodzaje warstw: warstwa wejściowa, który pobiera surowe dane wejściowe; ukryte warstwy, które obliczają operacje matematyczne z poprzedniej warstwy, oraz warstwa wyjściowa, który zawiera ostateczne prognozy. W tym przypadku mamy tylko jedną ukrytą warstwę, z trzema ukryte jednostki. The wejście składa się z wektora, tablicy lub listy liczb o określonym wymiarze lub długości. Załóżmy, że w tym przykładzie będziemy mieli dane wejściowe dwuwymiarowe [1.0, -1.0]. Tutaj wyjście sieci składa się z liczby skalarnej lub pojedynczej (nie jest to lista). Każda ukryta jednostka jest powiązana z zestawem ciężary i a termin stronniczy, pokazane obok i pod każdym węzłem. Aby obliczyć suma ważona wydajności jednostki, każdą wagę mnoży się przez odpowiednie dane wejściowe, a następnie produkty sumuje się. Następnie po prostu dodamy składnik odchylenia do tej sumy produktów, w wyniku czego otrzymamy sygnał wyjściowy neuronu. Na przykład, po wprowadzeniu przez nas [1.0,-1.0], pierwsza ukryta jednostka będzie miała wyjście 1.0*0.3 + (-1.0) * 0.2 + 1.0 = 1.1. Proste, prawda?

Następny krok na diagramie przedstawia funkcja aktywacjii to właśnie pozwoli nam wygenerować wektor wyjściowy każdej warstwy ukrytej. W naszym przypadku użyjemy bardzo popularnego i niezwykle prostego rektyfikowana jednostka liniowa Lub ReLU, który pobierze liczbę wejściową i wyprowadzi (i) zero, jeśli ta liczba jest ujemna, lub zero (ii) samą liczbę wejściową, jeśli liczba jest dodatnia. Na przykład, ReLU(-0,1) = 0, Ale ReLU(0,1) = 0,1. Idąc za przykładem naszego wejścia jako it propaguje przez tę pierwszą ukrytą jednostkę wynik 1,1, który obliczyliśmy, zostanie przekazany do funkcji aktywacji, otrzymując ReLU(1,1)=1,1. W tym przykładzie warstwa wyjściowa będzie działać podobnie jak jednostka ukryta: pomnoży wyniki jednostek ukrytych przez swoje wagi, a następnie doda swój współczynnik odchylenia 0.2. Ostatnia funkcja aktywacji, tzw funkcja schodkowa, zamieni wartości wejściowe dodatnie na 1, a wartości ujemne na 0. Wiedząc, jak działa każda operacja w sieci, możemy zapisać pełne obliczenia naszego wnioskowania w następujący sposób:

To wszystko, co potrzeba do obliczeń sieci neuronowej z wyprzedzeniem. Jak widać, operacje składają się prawie wyłącznie z iloczynów i sum liczb. Nasza funkcja aktywacji ReLU(x) można również bardzo łatwo wdrożyć, na przykład po prostu wywołując maks. (x, 0), w taki sposób, że zwraca x za każdym razem, gdy wartość wejściowa jest większa niż 0, ale w przeciwnym razie zwraca 0. Zauważ to krok (x) można obliczyć podobnie. Istnieje wiele bardziej skomplikowanych funkcji aktywacji, takich jak funkcja sigmoidalna albo tangens hiperboliczny, obejmujące różne obliczenia wewnętrzne i lepiej dostosowane do różnych celów. Kolejną rzeczą, którą możesz już zacząć zauważać, jest to, że my również może równolegle wykonywać obliczenia trzech ukrytych jednostek i ich aplikacji ReLU, ponieważ ich wartości nie są potrzebne jednocześnie, dopóki nie obliczymy ich sumy ważonej w węźle wyjściowym.

Ale nie musimy na tym poprzestawać. Powyżej widać to samo obliczenie, ale tym razem przedstawione za pomocą operacji mnożenia macierzy i wektorów. Aby uzyskać tę reprezentację, „powiększamy” nasz wektor wejściowy, dodając do niego 1,0 (jaśniejszy odcień), tak że gdy umieścimy nasz wektor wejściowy wagi i nasze odchylenie (jaśniejszy odcień) w macierzy, jak pokazano powyżej, wynikowe mnożenie daje tę samą ukrytą jednostkę wyjścia. Następnie możemy zastosować ReLU na wektorze wyjściowym, elementarnie, a następnie „zwiększyć” wynik ReLU, aby pomnożyć go przez wagi i obciążenie naszej warstwy wyjściowej. Ta reprezentacja znacznie upraszcza notację, ponieważ parametry (wagi i odchylenia) całej warstwy ukrytej można umieścić w jednej zmiennej. Ale co dla nas najważniejsze, pokazuje to jasno wewnętrzne obliczenia sieci to zasadniczo mnożenie macierzy i wektorów lub iloczyny skalarne. Biorąc pod uwagę, jak rozmiar tych wektorów i macierzy skaluje się wraz z wymiarami naszych danych wejściowych i liczbą parametrów w naszej sieci, większość czasu wykonawczego zostanie poświęcona na tego rodzaju obliczenia. Garść algebry liniowej!

Naszym przykładem zabawki jest oczywiście bardzo ograniczony zakres. W praktyce nowoczesne modele głębokiego uczenia się mogą mieć dziesiątki, jeśli nie setki ukrytych warstw i miliony powiązanych parametrów. Zamiast naszego przykładowego dwuwymiarowego wektora wejściowego mogą przyjmować wektory z tysiącami wpisów, w różnych kształtach, takich jak matryce (np. obrazy jednokanałowe) lub tensory (trójkanałowe obrazy RGB obrazy). Nic nie stoi również na przeszkodzie, aby nasza reprezentacja macierzowa pobierała jednocześnie wiele wektorów wejściowych poprzez dodanie wierszy do oryginalnych danych wejściowych. Sieci neuronowe mogą być również „okablowane” inaczej niż nasza sieć neuronowa ze sprzężeniem zwrotnym lub wykonywać inne funkcje aktywacji. Istnieje ogromne zoo architektur i technik sieciowych, ale ostatecznie to one głównie podzielić na te same równoległe operacje arytmetyczne, które znajdujemy w naszym przykładzie zabawki, tylko w znacznie większej skali.

Wizualny przykład warstw splotu działających na tensorze. (Źródło zdjęcia: W stronę nauki o danych)

Na przykład popularne splotowe sieci neuronowe (CNN) o których prawdopodobnie czytałeś, nie są „w pełni połączone”, jak nasza próbna sieć. „Wagi” lub parametry jego ukryte warstwy splotowe można traktować jako rodzaj filtra, przesuwane okno stosowane sekwencyjnie do małych fragmentów sygnału wejściowego, jak pokazano powyżej - ten „splot” jest w rzeczywistości po prostu iloczynem przesuwanej kropki! Ta procedura powoduje, że często nazywa się to a mapa funkcji. Warstwy łączenia zmniejszają rozmiar danych wejściowych lub wyjściowych warstwy splotowej, obliczając maksymalną lub średnią wartość małych fragmentów obrazu. Pozostała część sieci składa się zwykle z w pełni połączonych warstw, takich jak te w naszym przykładzie, i funkcji aktywacyjnych, takich jak ReLU. Jest to często używane do ekstrakcji cech w obrazach, gdzie mapy cech wczesnych warstw splotowych mogą „wykryć” wzory, takie jak linie lub krawędzie, a późniejsze warstwy mogą wykrywać bardziej skomplikowane cechy, takie jak twarze lub złożone kształty.

Wszystko, co zostało powiedziane, jest ściśle ograniczone do wnioskowanialub ocenę sieci neuronowej po znalezieniu jej parametrów szkolenie co jest znacznie bardziej skomplikowaną procedurą. I znowu wykluczyliśmy wiele wyjaśnień. W rzeczywistości każdy element sieci jest dołączony w określonym celu. Na przykład ci z Was, którzy studiowali algebrę liniową, mogą z łatwością to zaobserwować bez nieliniowych funkcji aktywacji, nasza sieć upraszcza się do modelu liniowego z bardzo ograniczonymi przewidywaniami pojemność.

Ulepszony silnik AI w Snapdragonie 865 – podsumowanie ulepszeń

Dzięki tej przydatnej wiedzy na temat komponentów sieci neuronowej i ich operacji matematycznych możemy zacząć dokładnie rozumieć, dlaczego przyspieszenie sprzętowe jest tak ważne. W ostatniej sekcji możemy zaobserwować, że równoległość jest niezbędna do przyspieszenia danej sieci pozwala nam na przykład obliczyć kilka równoległych iloczynów skalarnych odpowiadających każdemu neuronowi aktywacja. Każdy z tych iloczynów skalarnych sam w sobie składa się z operacji mnożenia i dodawania na liczbach, zwykle z 8-bitową precyzją w przypadku aplikacji mobilnych, co musi nastąpić tak szybko, jak to możliwe. Silnik AI oferuje różne komponenty do odciążenia tych zadań, w zależności od wymagań programisty dotyczących wydajności i efektywności energetycznej.

Schemat CNN dla popularnego zbioru danych MNIST, pokazany na scenie podczas tegorocznego szczytu Snapdragon. Jednostka przetwarzania wektorowego dobrze pasuje do w pełni połączonych warstw, jak w naszym próbnym przykładzie. Tymczasem procesor tensorowy obsługuje warstwy splotowe i pulujące, które przetwarzają wielokrotne przesuwanie jądra równolegle, jak na powyższym schemacie, a każda warstwa splotowa może generować wiele oddzielnych funkcji mapy.

Na początek przyjrzyjmy się procesorowi graficznemu, o którym zwykle mówimy w kontekście gier 3D. Konsumencki rynek gier wideo od dziesięcioleci stymuluje rozwój sprzętu do przetwarzania grafiki, ale dlaczego procesory graficzne są tak ważne dla sieci neuronowych? Na początek przeżuwają jednocześnie ogromne listy współrzędnych 3D wierzchołków wielokątów, aby śledzić stan świata w grze. Procesor graficzny musi także wykonywać gigantyczne operacje mnożenia macierzy, aby przekonwertować (lub zmapować) te obrazy 3D współrzędne na płaskich współrzędnych 2D na ekranie, a także obsługują informacje o kolorze pikseli równoległy. Co więcej, oferują dużą przepustowość pamięci, aby obsłużyć ogromne bufory pamięci dla bitmap tekstur nałożonych na geometrię w grze. Jego zalety w zakresie równoległości, przepustowości pamięci i wynikających z tego możliwości algebry liniowej odpowiadają wymaganiom wydajnościowym sieci neuronowych.

Linia procesorów graficznych Adreno ma zatem dużą rolę do odegrania w silniku Qualcomm AI Engine, a na scenie Qualcomm stwierdził, że ten zaktualizowany komponent w Snapdragon 865 umożliwia dwukrotnie większe możliwości zmiennoprzecinkowe I dwukrotnie więcej TOPSów w porównaniu z poprzednią generacją, co jest zaskakujące, biorąc pod uwagę, że odnotowali jedynie 25% wzrost wydajności w renderowaniu grafiki. Mimo to w przypadku tego wydania firma może się pochwalić 50% wzrost liczby jednostek arytmetyczno-logicznych (ALU), choć jak zwykle nie ujawnili częstotliwości swoich procesorów graficznych. Qualcomm wymienił także technologię mieszanej precyzji instrukcje, i właśnie tak to brzmi: różna precyzja numeryczna poszczególnych operacji w ramach jednej metody obliczeniowej.

W Hexagon 698 DSP widzimy ogromną część wzrostu wydajności oferowanego przez Snapdragon 865. W tym roku firma nie ogłosiła ulepszeń w swoich wektorowych eXtensions DSP (którego wydajność wzrosła czterokrotnie w porównaniu z ubiegłorocznym 855), ani w ich jednostkach skalarnych. Zauważają jednak, że osiągnęli to w przypadku Akceleratora Tensorowego tego bloku czterokrotność TOPów w porównaniu z wersją wprowadzoną w zeszłym roku w Hexagon 695 DSP, a jednocześnie jest w stanie zaoferować O 35% większa wydajność energetyczna. To wielka sprawa, biorąc pod uwagę powszechność architektur splotowych sieci neuronowych we współczesnych przypadkach użycia sztucznej inteligencji, począwszy od wykrywania obiektów obrazu po automatyczne rozpoznawanie mowy. Jak wyjaśniono powyżej, operacja splotu w tych sieciach tworzy dwuwymiarową tablicę wyników macierzy dla każdy filtr, co oznacza, że ​​po ułożeniu w stos wynik warstwy splotu jest tablicą 3D lub napinacz.

Qualcomm promował także swoje „nowe i wyjątkowe” Kompresja przepustowości w głębokim uczeniu się technika, która najwyraźniej może kompresuje dane bezstratnie o około 50%, co z kolei przenosi połowę danych i uwalnia przepustowość dla innych części chipsetu. Powinien także oszczędzać energię, zmniejszając przepustowość danych, chociaż nie podano nam żadnych danych, a kompresja danych również powinna wiązać się z niewielkimi kosztami energii.

Jeśli chodzi o przepustowość, obsługuje Snapdragon 865 Pamięć LPDDR5, co wpłynie również korzystnie na wydajność sztucznej inteligencji, ponieważ zwiększy prędkość przesyłania zasobów i danych wejściowych. Poza sprzętem, nowość Qualcomm Zestaw narzędzi zwiększających wydajność modelu AI umożliwia programistom łatwą kompresję modelu i wynikającą z niej oszczędność energii. Sieci neuronowe często mają dużą liczbę „nadmiarowych” parametrów; na przykład mogą sprawić, że ukryte warstwy będą szersze, niż jest to konieczne. Jedną z funkcji AI Toolkit omawianych na scenie jest zatem kompresja modelu, przy czym dwie z cytowanych metod to przestrzenna dekompozycja wartości osobliwych (SVD) i kompresja bayesowska, obie które skutecznie oczyszczają sieć neuronową, pozbywając się zbędnych węzłów i dostosowując strukturę modelu jako wymagany. Druga technika kompresji modelu prezentowana na scenie dotyczy kwantyzacji, a polega na zmianie precyzji numerycznej parametrów wagowych oraz obliczeń węzła aktywacji.

Dokładność numeryczna wag sieci neuronowych odnosi się do tego, czy wartości liczbowe używane do obliczeń są przechowywane, przesyłane i przetwarzane jako wartości 64, 32, 16 (z połową precyzji) czy 8-bitowe. Użycie niższej precyzji numerycznej (na przykład INT8 w porównaniu z FP32) zmniejsza ogólne zużycie pamięci i prędkość przesyłania danych, umożliwiając większą przepustowość i szybsze wnioskowanie. Wiele współczesnych aplikacji do głębokiego uczenia się przeszło na 8-bitowe modele precyzyjne na potrzeby wnioskowania, co może brzmieć zaskakujące: czy większa dokładność numeryczna nie umożliwiłaby bardziej „dokładnych” przewidywań w klasyfikacji lub regresji zadania? Niekoniecznie; większa precyzja numeryczna, szczególnie podczas wnioskowania, może zostać zmarnowana, ponieważ sieci neuronowe są szkolone tak, aby radziły sobie z zakłóconymi danymi wejściowymi lub i tak małe zakłócenia podczas treningu, a błąd dolnego bitu reprezentacji danej wartości (FP) jest równomiernie „losowy” wystarczająco. W pewnym sensie mała precyzja obliczeń jest traktowana przez sieć jako kolejne źródło szumu, a przewidywania pozostają użyteczne. Pomijając wyjaśnienia heurystyczne, prawdopodobnie naliczysz karę za dokładność w przypadku kiepskiej kwantyzacji modelu bez uwzględnienia kilku ważnych kwestii, dlatego też wiele badań poświęca się temu problemowi temat

Powrót do zestawu narzędzi Qualcomm AI: za jego pośrednictwem oferują kwantyzacja bez danych, umożliwiając kwantyzację modeli bez dostrajania danych i parametrów, przy jednoczesnym osiągnięciu niemal oryginalnej wydajności modelu w różnych zadaniach. Zasadniczo dostosowuje parametry wagowe do kwantyzacji i koryguje błąd obciążenia wprowadzony podczas przełączania na odważniki o niższej precyzji. Biorąc pod uwagę korzyści wynikające z kwantyzacji, automatyzacja procedury w ramach wywołania API uprościłaby produkcję i wdrażanie modeli, jak twierdzi Qualcomm ponad czterokrotnie większa wydajność na wat podczas uruchamiania modelu skwantowanego.

Ale znowu nie jest to szokujące: modele kwantyzacyjne mogą zapewnić ogromne korzyści w zakresie przepustowości i pamięci. Konwersja modelu na INT8 nie tylko zapewnia 4-krotne zmniejszenie przepustowości, ale także zapewnia szybsze obliczenia na liczbach całkowitych (w zależności od sprzętu). Nie ulega zatem wątpliwości, że przyspieszane sprzętowo podejścia zarówno do kwantyzacji, jak i obliczeń numerycznych przyniosłyby ogromny wzrost wydajności. Na swoim bloguna przykład Pete Warden z Google napisał, że współpraca między zespołami Qualcomm i Tensorflow umożliwia działanie modeli 8-bitowych do siedem razy szybciejna HVX DSP niż na procesorze. Trudno przecenić potencjał łatwej w użyciu kwantyzacji, szczególnie biorąc pod uwagę, jak Qualcomm skupił się na wydajności INT8.

Procesor Kryo oparty na architekturze ARM w Snapdragonie 865 jest nadal ważnym elementem silnika AI. Mimo że preferowane jest przyspieszenie sprzętowe omówione w powyższych akapitach, czasami tak jest nie można uniknąć aplikacji, które nie wykorzystują prawidłowo tych bloków, co skutkuje obciążeniem procesora rezerwowy. W przeszłości firma ARM wprowadziła specjalne zestawy instrukcji mające na celu przyspieszenie obliczeń macierzowych i wektorowych. W procesorach ARMv7 zaobserwowaliśmy wprowadzenie ARM NEON, rozszerzenia architektury SIMD umożliwiającego wykonywanie instrukcji typu DSP. W przypadku mikroarchitektury ARMv8.4-A zaobserwowaliśmy wprowadzenie instrukcji specjalnie dla produktów punktowych.

Wszystkie te odnotowane wzrosty wydajności odnoszą się do wielu obciążeń, które opisaliśmy w poprzedniej sekcji, ale warto również pamiętać, że te aktualizacje Snapdragon 865 są tylko najnowsze ulepszenia możliwości AI Qualcomm. W 2017 roku udokumentowaliśmy potrojenie możliwości AI dzięki procesorowi Hexagon 685 DSP i innym aktualizacjom chipsetu. W zeszłym roku wprowadzili swój akcelerator tensorowy i zintegrowaną obsługę funkcji nieliniowych (jak wspomniany wcześniej ReLU!) na poziomie sprzętowym. Podwoili także liczbę akceleratorów wektorowych i poprawili wydajność procesora skalarnego o 20%. Łącząc to wszystko z ulepszeniami po stronie procesora, takimi jak szybsze operacje iloczynu punktowego dzięki uprzejmości ARM i dodatkowymi jednostkami ALU w GPU, ostatecznie Qualcomm potrojony surowe możliwości AI.

Praktyczne korzyści i rozszerzone przypadki użycia

Wszystkie te ulepszenia zapewniły pięciokrotnie większe możliwości AI w Snapdragonie 865 w porównaniu z zaledwie dwoma latami temu, ale co być może najważniejsze, ulepszenia obejmowały także lepszą wydajność na miliwat, co jest krytycznym wskaźnikiem w przypadku urządzeń mobilnych urządzenia. Podczas Snapdragon Summit 2019 firma Qualcomm przedstawiła nam kilka testów porównawczych porównujących swój silnik AI z dwoma konkurentami w różnych sieciach klasyfikacyjnych. Wydaje się, że liczby te zostały zebrane za pomocą AIMark, wieloplatformowej aplikacji do testów porównawczych, która umożliwia porównania z procesorami Apple z serii A i HiSilicon Huawei. Qualcomm twierdzi, że wyniki te wykorzystują cały silnik AI i będziemy musieli poczekać na więcej dokładne testy porównawcze, aby właściwie rozwikłać wpływ każdego komponentu i określić, jak wypadły te testy prowadzone. Na przykład, czy wyniki firmy B wskazują na awarię procesora? O ile mi wiadomo, AIMark obecnie nie wykorzystuje na przykład NPU Kirin 990 w naszych jednostkach Mate 30 Pro. Ale obsługuje silnik przetwarzania neuronowego Snapdragon, więc z pewnością skorzysta z silnika Qualcomm AI; biorąc pod uwagę, że są to testy wewnętrzne, nie jest jednoznacznie jasne, czy test porównawczy prawidłowo wykorzystuje odpowiednie biblioteki lub pakiet SDK dla konkurencji.

Trzeba też powiedzieć, że Qualcomm skutecznie porównuje możliwości przetwarzania AI Snapdragona 865 z wcześniej zapowiedzianymi lub wydanymi chipsetami. Jest bardzo prawdopodobne, że konkurenci wprowadzą podobnie znaczącą poprawę wydajności w następnym cyklu, a jeśli tak się stanie w tym przypadku Qualcomm utrzymałby koronę zaledwie przez około pół roku od momentu, gdy urządzenia Snapdragon 865 trafiły na półki. To powiedziawszy, nadal wskazują one na rodzaj wstrząsów, jakich możemy się spodziewać po Snapdragonie 865. Qualcomm ogólnie bardzo dokładnie informował o ulepszeniach wydajności i wynikach testów porównawczych nadchodzących wydań.

Wszystkie sieci przedstawione w tych testach klasyfikują obrazy z baz danych takich jak ImageNet, odbierają je jako dane wejściowe i generują jedną z setek kategorii. Ponownie opierają się na tych samych rodzajach operacji, które opisaliśmy w drugiej sekcji, chociaż ich architektury jest wiele bardziej skomplikowane niż te przykłady i w momencie publikacji uznawano je za najnowocześniejsze rozwiązania. W najlepszym przypadku ich najbliższy konkurent zapewnia mniej niż połowę liczby wniosków na sekundę.

Jeśli chodzi o zużycie energii, Qualcomm przedstawił wnioski dotyczące wartości watów, aby pokazać ilość przetwarzania AI możliwego przy danej mocy. W najlepszych przypadkach (MobileNet SSD) silnik Snapdragon AI może zaoferować dwukrotnie większą liczbę wniosków przy tym samym budżecie mocy.

Zasilanie jest szczególnie ważne w przypadku urządzeń mobilnych. Pomyśl na przykład o filtrze Snapchata opartym na sieci neuronowej. Realistycznie mówiąc, potok widzenia komputerowego wydobywający informacje o twarzy i nakładający maskę lub dane wejściowe transformacja musi przebiegać jedynie z szybkością 30 lub 60 uzupełnień na sekundę, aby uzyskać płyn doświadczenie. Zwiększenie wydajności surowej sztucznej inteligencji umożliwiłoby pobieranie danych wejściowych o wyższej rozdzielczości i wyświetlanie lepiej wyglądających filtrów, ale jest to możliwe także po prostu lepiej zdecydować się na rozdzielczość HD, aby przyspieszyć przesyłanie i zmniejszyć zużycie energii oraz dławienie termiczne. W wielu zastosowaniach „szybciej” niekoniecznie oznacza „lepiej”, dzięki czemu można czerpać korzyści z lepszej efektywności energetycznej.

Podczas drugiego dnia Snapdragon Summit starszy dyrektor ds. inżynierii w Snapchat Yurii Monastyrshyn wszedł na scenę, aby pokazać, jak ich najnowsze filtry oparte na głębokim uczeniu się są znacznie przyspieszane przez Hexagon Direct NN przy użyciu procesora Hexagon 695 DSP na procesorze Snapdragon 865.

Na szczycie tego, ponieważ programiści uzyskają dostęp do łatwiejszych implementacji sieci neuronowych i coraz więcej aplikacji zacznie wykorzystywać techniki sztucznej inteligencji, przypadki użycia współbieżności znajdą się w centrum uwagi, ponieważ smartfon będzie musiał obsługiwać wiele równoległe potoki AI na raz (albo dla pojedynczej aplikacji przetwarzającej sygnały wejściowe z różnych źródeł, albo dla dowolnej liczby aplikacji działających oddzielnie). Na urządzeniu). Chociaż zauważamy znaczny wzrost efektywności energetycznej obliczeniowego procesora DSP, procesora graficznego i procesora, Qualcomm Sensing Hub obsługuje przypadki użycia, które są zawsze włączone, nasłuchując słów wyzwalających przy bardzo niskim zużyciu energii. Umożliwia monitorowanie sygnału audio, wideo i czujników przy natężeniu prądu poniżej 1 mA, dzięki czemu urządzenie może wykryć określone sygnały dźwiękowe (np. płacz dziecka) oprócz znanych słów kluczowych asystenta cyfrowego. W związku z tym Snapdragon 865 umożliwia wykrycie nie tylko słowa kluczowego, ale także tego, kto je wypowiada, aby zidentyfikować autoryzowanego użytkownika i podjąć odpowiednie działania.

Więcej sztucznej inteligencji na urządzeniach brzegowych

Te ulepszenia mogą ostatecznie przełożyć się na wymierne korzyści dla wygody użytkownika. Usługi obejmujące tłumaczenie, rozpoznawanie i etykietowanie obiektów, prognozy użytkowania lub rekomendacje przedmiotów, rozumienie języka naturalnego, analizowanie mowy itp. zyskają na korzyści w postaci szybszego działania i mniejszego zużycia energii moc. Posiadanie wyższego budżetu obliczeniowego umożliwia także tworzenie nowych przypadków użycia i doświadczeń oraz przenoszenie procesów, które wcześniej odbywały się w chmurze na Twoje urządzenie. Chociaż termin AI był w przeszłości używany w wątpliwy, zwodniczy, a nawet błędny sposób (nawet przez producentów OEM), wiele usług, z których dzisiaj korzystasz, ostatecznie opiera się w jakiejś formie na algorytmach uczenia maszynowego inny.

Jednak poza Qualcomm inni producenci chipsetów szybko wprowadzają zmiany i udoskonalają również w tym zakresie. Na przykład model 990 5G wyposażony jest w rdzeń 2+1 NPU, co zapewnia do 2,5 razy większą wydajność w porównaniu z Kirin 980 i dwukrotnie większą niż Apple A12. Kiedy ogłoszono procesor, wykazano, że oferuje on nawet dwukrotnie większą liczbę klatek (wnioskowań) na sekundę Snapdragona 855 w INT8 MobileNet, co trudno pogodzić z wynikami dostarczonymi przez Qualcomm. Z kolei Apple A13 Bionic oferował podobno sześciokrotnie szybsze mnożenie matrycy w stosunku do swojego poprzednika i udoskonalił konstrukcję ośmiordzeniowego silnika neuronowego. Będziemy musieli poczekać, aż będziemy mogli właściwie przetestować Snapdragon 865 na urządzeniach komercyjnych w porównaniu z obecnymi i przyszłymi konkurentami, ale to jasne, że konkurencja w tej przestrzeni nigdy nie ustanie, ponieważ trzy firmy przeznaczają mnóstwo zasobów na ulepszanie swojej sztucznej inteligencji wydajność.