Modele i platformy AI

PowerInfer: Szybki Duży Model Językowy z Karta Graficzną Klasy Konsumenta

mm
Dodaj Unite.AI do preferowanych źródeł w Google

Z powodu ich wyjątkowych możliwości tworzenia treści, generatywne duże modele językowe są teraz na czele rewolucji sztucznej inteligencji, z ciągłymi wysiłkami w celu poprawy ich zdolności generatywnych. Jednak pomimo szybkich postępów, te modele wymagają znacznej mocy obliczeniowej i zasobów. Jest to w dużej mierze spowodowane tym, że składają się one z setek miliardów parametrów. Ponadto, aby działać gładko, modele generatywne AI opierają się na tysiącach kart graficznych, co prowadzi do znacznych kosztów operacyjnych. Wysokie wymagania operacyjne są kluczowym powodem, dla którego modele generatywne AI nie są jeszcze skutecznie wdrożone na urządzeniach osobistych.

W tym artykule omówimy PowerInfer, szybki silnik inferencji LLM zaprojektowany dla standardowych komputerów zasilanych przez jedną kartę graficzną klasy konsumenta. Ramy PowerInfer mają na celu wykorzystanie wysokiej lokalności w inferencji LLM, charakteryzującej się rozkładem potęgowym w aktywacji neuronów. Oznacza to, że w dowolnym momencie mały podzbiór “gorących” neuronów jest stale aktywny w całym wejściu, podczas gdy reszta, określana jako “zimne” neurony, aktywuje się w zależności od konkretnych wejść lub wymagań. Ten podejście umożliwia ramom PowerInfer zmniejszenie mocy obliczeniowej potrzebnej do generowania pożądanych wyników.

Będziemy zagłębiać się w ramy PowerInfer, eksplorując ich metodologię, potok i wyniki praktycznych zastosowań. Zaczniemy.

PowerInfer: Szybki Duży Model Językowy z Karta Graficzną Klasy Konsumenta

Generatywne duże modele językowe, takie jak ChatGPT i DALL-E, są znane ze swoich zaawansowanych zdolności generatywnych i przetwarzania języka naturalnego. Ze względu na ich wysokie wymagania obliczeniowe, te modele są zwykle wdrażane w centrach danych z zaawansowanymi kartami graficznymi. Potrzeba takiej wysokiej mocy obliczeniowej ogranicza ich wdrożenie do centrów danych, podkreślając konieczność wdrożenia dużych modeli językowych na bardziej dostępnych platformach lokalnych, takich jak komputery osobiste.

Zwiększenie dostępności dużych modeli językowych mogłoby zmniejszyć koszty inferencji i generowania treści, poprawić prywatność danych i umożliwić dostosowanie modeli. Ponadto, podczas gdy wdrożenia w centrach danych priorytetem jest wysoka przepustowość, lokalne wdrożenia LLM mogą koncentrować się na niskiej latencji ze względu na mniejsze rozmiary partii.

Jednak wdrożenie tych modeli na urządzeniach lokalnych stwarza znaczne wyzwania ze względu na ich znaczne wymagania pamięciowe. Duże modele językowe, działające jako autoregresyjne transformatory, generują tokeny jeden po jednym, z każdym tokenem wymagającym dostępu do całego modelu, składającego się z setek miliardów parametrów. To wymaga licznych kart graficznych wysokiej klasy do generowania wyników o niskiej latencji. Ponadto, wdrożenia lokalne zwykle przetwarzają poszczególne żądania sekwencyjnie, ograniczając możliwości przetwarzania równoległego.

Aby rozwiązać złożone wymagania pamięciowe ram generatywnych AI, istniejące rozwiązania wykorzystują metody takie jak offloading modelu i kompresja. Techniki takie jak destylacja, przycinanie i kwantyzacja redukują rozmiar modelu, ale nadal są zbyt duże dla standardowych kart graficznych w komputerach osobistych. Offloading modelu, który dzieli model na warstwy transformatorek pomiędzy procesorami i kartami graficznymi, umożliwia rozproszone przetwarzanie warstw pomiędzy pamięcią procesora i karty graficznej. Jednak ta metoda jest ograniczona przez wolne połączenie PCIe i ograniczone możliwości obliczeniowe procesorów, co prowadzi do wysokiej latencji inferencji.

Ramy PowerInfer twierdzą, że niezgodność pomiędzy charakterystyką inferencji LLM a strukturą sprzętu jest główną przyczyną problemów z pamięcią w inferencji LLM. Idealnie, dane dostępne często powinny być przechowywane w kartach graficznych o wysokiej przepustowości i ograniczonej pojemności, podczas gdy mniej często dostępne dane powinny być w procesorach o niskiej przepustowości i wysokiej pojemności. Jednak duży rozmiar parametrów każdej iteracji inferencji LLM sprawia, że zestaw roboczy jest zbyt duży dla jednej karty graficznej, co prowadzi do niewydajnego wykorzystania lokalności.

Proces inferencji w dużych modelach językowych wykazuje wysoką lokalność, przy czym każda iteracja aktywuje ograniczoną liczbę neuronów. Ramy PowerInfer mają na celu wykorzystanie tej lokalności, zarządzając niewielką liczbą “gorących” neuronów za pomocą karty graficznej, podczas gdy procesor zajmuje się “zimnymi” neuronami. Ramy te wstępnie wybierają i wczytują “gorące” neurony do karty graficznej i identyfikują aktywne neurony podczas czasu wykonywania. To podejście minimalizuje kosztowne transfery danych PCIe, umożliwiając kartom graficznym i procesorom niezależne przetwarzanie przypisanych neuronów.

Jednak wdrożenie LLM na urządzeniach lokalnych napotyka przeszkody. Przewidywania online, niezbędne do identyfikacji aktywnych neuronów, zużywają znaczne zasoby pamięci karty graficznej. Ramy PowerInfer wykorzystują adaptacyjną metodę do konstruowania małych przewidywań dla warstw o wyższej skośności i rzadkości, utrzymując dokładność przy jednoczesnym zmniejszaniu rozmiaru. Ponadto, ramy LLM wymagają specjalistycznych operatorów rzadkich. Ramy PowerInfer wykorzystują operatorów neuronów świadomych, które komunikują się bezpośrednio z neuronami, eliminując potrzebę konwersji do formatu gęstego w czasie wykonywania.

Ostatecznie, optymalne umieszczanie aktywnych neuronów pomiędzy procesorem a kartą graficzną jest wyzwaniem. Ramy PowerInfer wykorzystują fazę offline do utworzenia polityki umieszczania neuronów, mierząc wpływ każdego neuronu na wyniki inferencji LLM i ramując ją jako problem liniowy całkowitoliczbowy.

Architektura i Metodologia

Poniższy rysunek wyjaśnia architekturę ram PowerInfer, składającą się z komponentów offline i online w potoku. 

Dzięki zmienności obserwowanej w właściwościach lokalności wśród różnych dużych modeli językowych, komponent offline profiluje rzadkość aktywacji LLM, umożliwiając różnicowanie pomiędzy “gorącymi” i “zimnymi” neuronami. Z drugiej strony, w fazie offline, dwa typy neuronów są ładowane przez silnik inferencji do procesora i karty graficznej, obsługując żądania LLM w czasie wykonywania z niską latencją. 

Faza Offline: Rozwiązywacz Polityki i Profiler LLM

W fazie offline, komponent profiler LLM wykorzystuje żądania pochodzące z ogólnego zestawu danych do zebrania danych aktywacji z procesu inferencji. W pierwszym kroku, monitoruje aktywację neuronów we wszystkich warstwach ram, a następnie wykorzystuje komponent rozwiązywacz polityki do sklasyfikowania neuronów jako “gorące” lub “zimne”. Głównym celem rozwiązywacza polityki jest przydzielenie neuronów aktywowanych częściej do warstw karty graficznej, a reszty do warstw procesora. W drugim etapie, komponent rozwiązywacza polityki wykorzystuje metryki wpływu neuronów i specyfikacje sprzętu do zbalansowania obciążenia pracy pomiędzy warstwami, a także maksymalizuje metrykę wpływu karty graficznej dla neuronów przy użyciu programowania liniowego całkowitoliczbowego. 

Faza Online: Silnik Inferencji LLM Świadomy Neuronów

Po pomyślnym wykonaniu fazy offline, ramy przechodzą do fazy online. W trzecim kroku procesu, silnik online przydziela “gorące” i “zimne” neurony do ich odpowiednich jednostek przetwarzania, w zależności od wyniku rozwiązywacza polityki offline. W czasie wykonywania, a w czwartym kroku, silnik online zarządza obliczeniami pomiędzy procesorem a kartą graficzną, tworząc wykonywacze procesora i karty graficznej, które są wątkami uruchamianymi po stronie procesora. Silnik następnie przewiduje aktywne neurony i pomija nieaktywne neurony. Aktywne neurony są następnie wczytane do karty graficznej do przetwarzania. Tymczasem, procesor oblicza i przekazuje wyniki dla swoich neuronów w celu zintegrowania ich z kartą graficzną. Silnik online jest w stanie skoncentrować się na poszczególnych neuronach w wierszach i kolumnach w macierzach, ponieważ wykorzystuje operatorów neuronów świadomych na procesorach, a także na kartach graficznych. 

Przewidywacze Rzadkości Adaptacyjne

Główna koncepcja redukowania obciążeń obliczeniowych przez silnik inferencji online w ramach PowerInfer polega na tym, że przetwarza tylko neurony, które przewiduje jako aktywne. Tradycyjnie, w każdej warstwie transformatorek, ramy wykorzystują dwa różne przewidywacze do przewidywania aktywacji neuronów w blokach MLP i self-uwagi, w wyniku czego inferencja jest ograniczona do neuronów przewidywanych jako aktywne. Jednak trudno jest zaprojektować skuteczne przewidywacze dla wdrożeń lokalnych, ponieważ ograniczona ilość zasobów utrudnia balansowanie rozmiaru modelu i dokładności przewidywań. Ponieważ te przewidywacze są wdrożone przez ramy często w celu przewidywania aktywnych neuronów, muszą być przechowywane w pamięci karty graficznej, aby umożliwić szybszy dostęp. Jednak ramy zwykle wdrożenia dużej liczby przewidywań, które zajmują znaczne ilości pamięci, nawet tyle, ile potrzeba do przechowywania parametrów LLM. 

Ponadto, rozmiar przewidywań jest zwykle określony przez dwa czynniki: wewnętrzną skośność i rzadkość warstw LLM. 

Aby zoptymalizować te czynniki, ramy PowerInfer wykorzystują metodę treningu iteracyjnego dla każdego przewidywacza w warstwie transformatorek bez ustalonego rozmiaru. W pierwszym kroku tej metody treningu, ustalany jest rozmiar modelu bazowego na podstawie profilu rzadkości modelu, a rozmiar modelu jest dostosowywany iteracyjnie, biorąc pod uwagę wewnętrzną aktywację skośną, aby utrzymać dokładność. 

Umieszczanie i Zarządzanie Neuronami

Jak wcześniej wspomniano, podczas gdy komponent rozwiązywacza polityki offline określa politykę umieszczania neuronów, komponent silnika inferencji online ładuje model do pamięci karty graficznej i procesora zgodnie z wygenerowaną polityką. Dla każdej warstwy, która może lub nie mieć wielu macierzy wag, ramy PowerInfer przydzielają każdy neuron albo do procesora, albo do karty graficznej, w zależności od tego, czy neuron jest “gorący”. Zapewnienie dokładnych obliczeń neuronów w określonej sekwencji jest niezbędne do uzyskania precyzyjnych wyników. Aby rozwiązać ten problem, ramy PowerInfer generują dwie tabele neuronów: jedną w pamięci karty graficznej, a drugą w pamięci procesora, z każdą tabelą korelującą poszczególne neurony z ich pierwotną pozycją w macierzy. 

Operator Świadomy Neuronów

Biorąc pod uwagę rzadkość aktywacji obserwowaną w dużych modelach językowych, nieaktywne neurony i ich wagi mogą być pomijane przez operacje mnożenia macierzy, tworząc potrzebę użycia operatorów rzadkich. Zamiast zastosowania operatorów rzadkich, które mają wiele ograniczeń, ramy PowerInfer wykorzystują operatorów neuronów świadomych, które obliczają aktywne neurony i ich wagi bezpośrednio na kartach graficznych i procesorach, bez wymogu konwersji do formatu gęstego w czasie wykonywania. Operatorzy świadome neuronów różnią się od tradycyjnych operatorów rzadkich, ponieważ koncentrują się na poszczególnych wektorach wiersza i kolumny w macierzy, a nie na całej macierzy. 

Polityka Umieszczania Neuronów

Aby wykorzystać możliwości obliczeniowe procesorów i kart graficznych, komponent offline w ramach PowerInfer generuje politykę umieszczania, która kieruje ramami podczas przydzielania neuronów do warstw procesora lub karty graficznej. Komponent rozwiązywacza polityki generuje tę politykę i kontroluje umieszczanie neuronów w każdej warstwie, co pomaga w określeniu obciążenia obliczeniowego dla poszczególnych jednostek przetwarzania. Podczas generowania polityki umieszczania, komponent rozwiązywacza polityki bierze pod uwagę różne czynniki, w tym częstotliwość aktywacji dla każdego neuronu, nakład komunikacyjny oraz możliwości obliczeniowe, takie jak przepustowość i rozmiar pamięci każdej jednostki przetwarzania. 

Wyniki i Wdrożenie

Aby zademonstrować możliwości generalizacji ram PowerInfer na urządzeniach z różnymi konfiguracjami sprzętu, eksperymenty są prowadzone na dwóch odrębnych komputerach osobistych: jednym wyposażonym w procesor Intel (INTC ) i9-13900K, kartę graficzną NVIDIA RTX 4090 i 192 GB pamięci hosta, a drugim działającym na procesorze Intel i7-12700K, karcie graficznej NVIDIA RTX 2080Ti i 64 GB pamięci hosta. 

Wyniki końcowe ram PowerInfer są porównywane z llama.cpp przy rozmiarze partii 1 i ustawieniach wdrożenia domyślnych. Następnie ramy próbkują wprowadzenia z zestawów danych ChatGPT i Alpaca, biorąc pod uwagę zmienność długości wejścia i wyjścia w rzeczywistych dialogach. Poniższy rysunek pokazuje prędkości generowania dla różnych modeli. 

Jak można zobaczyć, ramy PowerInfer generują 8,32 tokeny na sekundę i osiągają nawet 16 tokenów generowanych na sekundę, wyprzedzając znacznie ramy llama.cpp. Ponadto, wraz ze wzrostem liczby tokenów wyjściowych, wyniki ram PowerInfer również się poprawiają, ponieważ faza generowania ma znaczący wpływ na całkowity czas inferencji. 

Ponadto, jak można zobaczyć na powyższym obrazie, ramy PowerInfer przewyższają ramy llama.cpp na komputerach o niższych parametrach, z maksymalną szybkością generowania 7 tokenów na sekundę i średnią szybkością generowania 5 tokenów na sekundę. 

Powyższy obraz pokazuje rozkład obciążenia neuronów pomiędzy kartą graficzną a procesorem dla obu ram. Jak można zobaczyć, ramy PowerInfer zwiększają udział karty graficznej w obciążeniu neuronów znacznie, z 20 do 70%. 

Powyższy obraz porównuje wyniki obu ram na dwóch komputerach o różnych specyfikacjach. Jak można zobaczyć, ramy PowerInfer stale dostarczają wysoką szybkość generowania tokenów wyjściowych w porównaniu z ramami llama.cpp. 

Końcowe Myśli

W tym artykule omówiliśmy PowerInfer, szybki silnik inferencji LLM dla standardowego komputera zasilanego przez jedną kartę graficzną klasy konsumenta. Podstawą ram PowerInfer jest wykorzystanie wysokiej lokalności w inferencji LLM, charakteryzującej się rozkładem potęgowym w aktywacji neuronów. Ramy PowerInfer są szybkim systemem interferencyjnym zaprojektowanym dla dużych modeli językowych, który wykorzystuje przewidywacze adaptacyjne i operatorów neuronów świadomych do aktywacji neuronów i obliczeniowej rzadkości. 

"Inżynier z zawodu, pisarz z serca". Kunal jest technicznym pisarzem z głęboką miłością i zrozumieniem AI i ML, poświęconym uproszczeniu złożonych pojęć w tych dziedzinach poprzez swoje angażujące i informacyjne dokumentacje.