Modele i platformy AI
UltraFastBERT: Wprowadzenie do wykładniczo szybszego modelowania języka
Modele językowe i generatywne AI, słynące z ich możliwości, są gorącym tematem w branży AI. Globalni badacze poprawiają ich skuteczność i możliwości. Te systemy, zwykle głębokie modele uczenia maszynowego, są wstępnie szkoleni na obszernych danych z etykietami, wykorzystując sieci neuronowe do uwagi. Wykorzystują różne warstwy – feedforward, rekurencyjne, osadzone i uwagi – do przetwarzania tekstu wejściowego i generowania odpowiednich danych wyjściowych.
Większość dużych modeli językowych ma warstwy feedforward, które posiadają najwięcej parametrów. Badania pokazują, że te modele wykorzystują tylko ułamek dostępnych neuronów do obliczeń wyjściowych podczas inferencji.
Ten artykuł przedstawia UltraFastBERT, ramę opartą na BERT, która odpowiada skuteczności wiodących modeli BERT, ale wykorzystuje tylko 0,3% neuronów podczas inferencji, konkretnie 12 z 4095 w każdej warstwie. Zbadamy architekturę, funkcjonalność i wyniki UltraFastBERT. Zacznijmy.
UltraFastBERT: Wprowadzenie do wykładniczo szybszego modelowania języka
Tradycyjnie, model językowy wykorzystuje różne komponenty, aby wyposażyć się w możliwości generowania treści, w tym warstwy feedforward, rekurencyjne, osadzone i uwagi. Te komponenty są odpowiedzialne za naukę rozpoznawania wzorców podczas szkolenia i ostatecznie generują dokładne dane wyjściowe na podstawie tekstów wejściowych. Każdy z tych komponentów ma pewne parametry, a w modelach językowych znaczna część tych parametrów jest posiadana przez warstwy feedforward. Jednak te warstwy feedforward nie wykorzystują 100% dostępnych neuronów do generowania danych wyjściowych dla każdego wejścia w czasie inferencji, co prowadzi do marnowania zasobów, zwiększania złożoności, czasu obliczeń i kosztów obliczeniowych.
W swojej istocie, ramka UltraFastBERT jest wariantem ramki BERT, opiera się na tym pojęciu i zastępuje warstwy feedforward szybszymi sieciami feedforward w swojej architekturze, co ostatecznie prowadzi do tego, że ramka UltraFastBERT wykorzystuje tylko 0,3% dostępnych neuronów, dostarczając wyniki porównywalne do modeli BERT o podobnej wielkości i procesie szkolenia, szczególnie w zadaniach downstream. Dzięki swoim implementacjom, warstwy pośrednie w ramce UltraFastBERT są wykładniczo szybsze,
Dla szybkiej sieci feedforward (FFF) i sieci feedforward (FF), każda z n liczbą neuronów, złożoność czasowa przodu w sieci feedforward jest O(n), podczas gdy złożoność czasowa jest O(log2n) dla szybkiej sieci feedforward, a różnica w złożoności czasowej wynika głównie z faktu, że w szybkiej sieci feedforward neurony są zorganizowane w zbalansowane drzewo binarne, a gdy podaje się wejście, sieć wykonuje tylko jeden gałąź drzewa warunkowo. Ponadto, wykonywanie inferencji w szybkiej sieci feedforward prowadzi do CMM lub warunkowej mnożenia macierzy, w którym wiersze wejściowe kropkują z naturalnymi kolumnami wag indywidualnie, a wynik poprzedniej operacji iloczynu kropkowego określa wagę kolumn do kontynuowania. W rezultacie, sieć wykorzystuje wszystkie neurony tylko dla kilku wejść, a żadne wejście nie wymaga więcej niż kilku neuronów, aby być obsługiwanym przez sieć. Iloczyn kropkowy CMM kontrastuje z DMM lub gęstym mnożeniem macierzy, które oblicza iloczyn kropkowy wszystkich wejść z wszystkimi kolumnami wag.
Podsumowując, UltraFastBERT jest ramą opartą na BERT, która dostarcza wyniki porównywalne do wiodących modeli językowych BERT, które
- Wykorzystują tylko 0,3% dostępnych neuronów podczas etapu inferencji i angażują tylko 12 neuronów z łącznej liczby 4095 neuronów dla każdej warstwy inferencji.
- Dostarczają silne wyniki porównywalne do wiodących modeli BERT, implementując strategie dostrajania na zadaniach downstream.
- Dostarczają natywną implementację CMM lub warunkowego mnożenia macierzy, które stanowi podstawę dla szybkiej sieci feedforward, i ostatecznie prowadzi do 78-krotnego przyspieszenia wydajności w porównaniu z natywnymi zoptymalizowanymi DMM lub gęstym mnożeniem macierzy.
Sieci neuronowe feedforward
Sieć neuronowa feedforward jest jedną z najprostszych sztucznych sieci neuronowych, która przenosi informacje tylko w kierunku do przodu, od węzłów wejściowych do węzłów wyjściowych za pośrednictwem węzłów ukrytych. Jednym z głównych wyróżników sieci neuronowej feedforward jest to, że nie ma w niej pętli ani cykli, i jest prostsza w konstrukcji w porównaniu z RNN lub rekurencyjnymi sieciami neuronowymi i CNN lub konwolucyjnymi sieciami neuronowymi. Architektura sieci neuronowej feedforward składa się z trzech komponentów, a mianowicie warstw wejściowych, warstw ukrytych i warstw wyjściowych, a każda warstwa składa się z jednostek zwanych neuronami, a każda warstwa jest połączona z innymi za pomocą wag.
Neurony obecne w warstwach wejściowych otrzymują dane wejściowe i przekazują je do następnej warstwy. Liczba neuronów w każdej warstwie wejściowej jest określona przez wymiar danych wejściowych. Następnie mamy warstwy ukryte, które nie są narażone na dane wejściowe ani wyjściowe, i są odpowiedzialne za niezbędne obliczenia. Neurony w każdej warstwie ukrytej pobierają uwzględnioną sumę danych wyjściowych podanych przez poprzednią warstwę, zastosują funkcję aktywacji i przekażą wynik do następnej warstwy, a proces powtarza się. W końcu mamy warstwę wyjściową, która produkuje dane wyjściowe dla danych wejściowych. Każdy neuron w każdej warstwie sieci feedforward jest połączony z każdym neuronem w następnej warstwie, co czyni sieci feedforward całkowicie połączonymi. Wagi są używane do reprezentowania siły połączenia między neuronami, a sieć aktualizuje te wagi, aby nauczyć się wzorców, aktualizując wagi na podstawie błędu występującego w danych wyjściowych.
Przechodząc dalej, istnieją dwa kluczowe etapy w działaniu sieci neuronowej feedforward: faza feedforward i faza backpropagation.
Faza feedforward
W fazie feedforward dane wejściowe są podawane do sieci, a następnie propagowane do przodu. Warstwy ukryte obliczają uwzględnioną sumę danych wejściowych i wprowadzają nieliniowość do modelu, przechodząc sumę danych wejściowych przez funkcję aktywacji, taką jak ReLu, Sigmoid i TanH. Proces powtarza się, aż wagi dotrą do warstwy wyjściowej, a model dokonuje przewidywania.
Faza backpropagation
Gdy model dokonuje przewidywania, oblicza błąd między wygenerowanym wyjściem a oczekiwanym wyjściem. Błąd jest następnie propagowany wstecz przez sieć, a sieć używa algorytmu optymalizacji gradientu do dostosowania wag w celu minimalizacji błędu.
UltraFastBERT: Architektura modelu i działanie
Rama UltraFastBERT jest zbudowana na architekturze crammedBERT, a rama UltraFastBERT wykorzystuje wszystkie komponenty ramki crammedBERT, z wyjątkiem natury warstw pośrednich. Zamiast tego, rama UltraFastBERT zastępuje transformator w sieciach feedforward zawartych w warstwach pośrednich ramki crammedBERT szybszymi sieciami feedforward. Rama UltraFastBERT wprowadza następujące zmiany w oryginalnych sieciach feedforward.
- Rama usuwa różnicę między węzłami liściowymi a nie-liściowymi, używając funkcji aktywacji GeLu we wszystkich węzłach i wyposażając te węzły w wagi wyjściowe i usuwając w pełni przekroje wyjściowe. Po tym, rama ustala rozmiar liścia na 1.
- W końcu, rama pozwala na wiele szybkich sieci feedforward w równoległych drzewach, wspólnie obliczając warstwy wyjściowe pośrednie. Rama wykonuje to obliczenie, biorąc sumę poszczególnych drzew i prezentując sumę jako warstwę wyjściową pośrednią.
Przechodząc dalej, podczas szkolenia, rama UltraFastBERT stosuje procedurę szkolenia zastosowaną przez ramę crammedBERT, która obejmuje wyłączenie dropout w pre-szkoleniu i użycie harmonogramu uczenia 1-cyklu. Model jest następnie dostrajany, aby maksymalizować swoją wydajność w szerokim zakresie zadań, głównie z benchmarku GLUE, przez łącznie 5 epok.
Interferencja
Interferencja jest ważnym elementem dla szybkiej sieci feedforward, a te szybkie sieci feedforward same w sobie stanowią znaczną część dużych modeli językowych i są znane ze swojego wyjątkowego potencjału przyspieszenia. Aby zrozumieć ten potencjał przyspieszenia, rozważmy przykład jednego z najbardziej zaawansowanych modeli językowych, GPT-3, w którym sieci feedforward w każdej warstwie transformatora składają się z ponad 49 100 neuronów. Jeśli byłaby trenowalna, szybka sieć feedforward (maksymalna głębokość 15) mogłaby zastąpić oryginalną sieć feedforward. Wprowadzona szybka sieć feedforward miałaby ponad 65 000 neuronów, ale wykorzystywałaby tylko 16 z tych neuronów do interferencji, co stanowiłoby około 0,03% dostępnych neuronów dla GPT-3.
Algorytm i zgodność
Rama UltraFastBERT wykorzystuje rekursywny pseudokod algorytmu dla szybkiej sieci feedforward, a algorytm jest przedstawiony na poniższym obrazie.

Tutaj, B reprezentuje rozmiar partii, H reprezentuje szerokość warstw wejściowych, a M reprezentuje kolumny. Innym głównym powodem do obawy związanym z użyciem podejścia warunkowego mnożenia macierzy jest to, czy czyni szybkie sieci feedforward niezgodnymi z procesem, który jest już w użyciu dla gęstego mnożenia macierzy i istniejących ram deep learning. Na szczęście, użycie CMM nie wpływa na wydajność ani nie wprowadza niezgodności, chociaż zwiększa złożoność buforowania.
Ważne jest, aby zauważyć, że jako część szybkiej sieci feedforward, pojedyncza wątkowa gęsta mnożenia macierzy opiera się na wykonywaniu instrukcji mnożenia i akumulacji, a w rezultacie, zastąpienie DMM podejściem CMM przyniesie korzyści procesorom, ponieważ mniej instrukcji mnożenia i akumulacji jest potrzebnych do obliczenia wyjścia warstwy na element. Dlatego, pomimo zastosowania warunkowości, zwykle związanej z rozgałęzieniami, “gałęzie neuronowe” działają jako dodatek do offsetu pamięci w ramie. Dlatego w ramie UltraFastBERT, przewidywanie gałęzi instrukcji jest nigdy w pełni zaangażowane, aby ułatwić warunkowość CMM, a tylko ładuje odpowiednie kolumny macierzy wag indywidualnie. Ponadto, ponieważ rama wykonuje iloczyny kropkowe wiersz-kolumna, SIMD lub wektorowa przetwarzanie równoległe jest nadal dobrą opcją do przyspieszenia implementacji interferencji dla określonych urządzeń.
UltraFastBERT: Wydajność i wyniki
Porozmawiamy o wydajności ramki UltraFastBERT dla zadań dostrajania, a także zadań interferencji, aby przeanalizować, jak rama radzi sobie w porównaniu z wiodącymi modelami językowymi.
Wyniki dostrajania
Poniższy obrazek przedstawia wyniki różnych modeli na zestawie testowym GLUE-dev. Tutaj, N reprezentuje liczbę neuronów dostępnych dla ramki do szkolenia, “Avg” reprezentuje średni wynik wszystkich zadań.

Jak można wyraźnie zobaczyć, rama UltraFastBERT, która została przeszkolona na A6000 GPU przez ponad 24 godziny, zachowuje prawie 96% wydajności predykcyjnej na zadaniach downstream GLUE w porównaniu z oryginalną ramą BERT. Ponadto można zobaczyć, że wraz ze wzrostem głębokości szybkiej sieci feedforward, wydajność ramki maleje, chociaż większość degradacji wydajności występuje tylko dla zadania CoLa. Jeśli zadanie CoLa zostanie zignorowane, rama UltraFastBERT zwraca wynik predykcyjny o wartości około 98,6%.
Wyniki interferencji
W tej sekcji porównamy wyniki różnych sieci feedforward lub szybkich sieci feedforward na implementacjach interferencji, a te implementacje są rozłożone na trzy poziomy.
- W implementacji poziomu 1, implementacja jest konstruowana przy użyciu rutyn BLAS poziomu 1, a mianowicie iloczynu skalarno-wektorowego i iloczynu wektorowego.
- W poziomie 2, implementacje wykorzystują rutyny BLAS poziomu 2, a mianowicie iloczyn skalarno-wektorowy i iloczyn macierzowo-wektorowy.
- W poziomie 3, implementacje wykorzystują podejście mnożenia macierzy-macierzy BLAS poziomu 3, i chociaż jest to najszybsza implementacja dostępna dla sieci feedforward, takie implementacje nie są dostępne dla szybkich sieci feedforward, ponieważ biblioteka nie obsługuje wektorowej rozproszenia warunkowego mnożenia macierzy.
Ponadto, rama UltraFastBERT wdrożyła implementacje GPU przy użyciu niestandardowych jąder CUDA lub PyTorch.

Powyższa tabela porównuje wydajność ramki UltraFastBERT z jej poprzednikami, ramkami opartymi na BERT, pod względem warstw feedforward i szybkich sieci feedforward, gdzie każda kolumna zawiera względne przyspieszenia interferencji szybkiej sieci feedforward nad feedforward, gdy korzystają z tych samych prymitywów operacji liniowo-algebraicznych.
Jednak warto zauważyć, że przyspieszenia raportowane w powyższej tabeli są przeznaczone do “uczciwych porównań”, tj. zarówno szybkie sieci feedforward, jak i feedforward korzystają z tych samych prymitywów operacji liniowo-algebraicznych. Ponadto, na poziomie 1 i 2, implementacje szybkich sieci feedforward są w stanie wykonywać interferencję 48-krotnie i 78-krotnie szybciej niż najszybsza implementacja feedforward, odpowiednio.
Końcowe myśli
W tym artykule omówiliśmy UltraFastBERT, wariant ramki BERT, który opiera się na pojęciu, że warstwy feedforward nie wykorzystują 100% dostępnych neuronów do generowania danych wyjściowych dla każdego wejścia w czasie inferencji, co prowadzi do marnowania zasobów, zwiększania złożoności, czasu obliczeń i kosztów obliczeniowych, i zastępuje warstwy feedforward szybszymi sieciami feedforward w swojej architekturze, co ostatecznie prowadzi do tego, że rama UltraFastBERT wykorzystuje tylko 0,3% dostępnych neuronów, dostarczając wyniki porównywalne do modeli BERT o podobnej wielkości i procesie szkolenia, szczególnie w zadaniach downstream.
Dzięki swoim implementacjom, warstwy pośrednie w ramce UltraFastBERT są wykładniczo szybsze. Ponadto, silna wydajność dostarczona przez ramę UltraFastBERT jest dowodem na to, że LLM mogą dostarczyć silną wydajność, angażując tylko ułamek swoich parametrów dla indywidualnych interferencji, ponieważ rama UltraFastBERT wykorzystuje tylko 0,3% dostępnych neuronów podczas interferencji i jednocześnie osiąga 78-krotne przyspieszenie czasu interferencji.












