PRZEWODNIK techniczny

Błyskawiczna uwaga

Flash Attention to sprytny sposób na obliczenie kroku uwagi w Transformersach bez konieczności zapisywania gigantycznej macierzy uwagi w celu spowolnienia pamięci.

2 minuty czytaniaOstatnia aktualizacja

Przegląd

Dzięki temu modele o długim kontekście są znacznie szybsze i wydajniejsze pod względem pamięci, bez zmiany ich obliczeń matematycznych.

Głębokie nurkowanie

Standardowa uwaga porównuje każdy token z każdym innym tokenem, tworząc macierz wyników N na N, która rośnie kwadratowo wraz z długością sekwencji. Naiwnie ta macierz jest zapisywana i odczytywana z pamięci o dużej przepustowości (HBM) procesora graficznego, a prawdziwym wąskim gardłem jest to przemieszczanie się, a nie mnożenie. Funkcja Flash Attention, wprowadzona przez Tri Dao i współpracowników w 2022 r., reorganizuje obliczenia, dzięki czemu macierz nigdy nie jest w pełni przechowywana. Przetwarza zapytania, klucze i wartości w małych kafelkach mieszczących się w szybkiej pamięci SRAM na chipie, oblicza częściowe wyniki i łączy je ze sobą za pomocą internetowej sztuczki z systemem Softmax. Wynik jest matematycznie identyczny ze zwykłą uwagą, ale wykorzystuje pamięć liniową i działa kilka razy szybciej, szczególnie w przypadku długich sekwencji.

Wgląd techniczny

Kluczową sztuczką jest układanie płytek i softmax online. Softmax zwykle potrzebuje całego wiersza wyników, aby obliczyć swój mianownik, ale Flash Attention utrzymuje bieżące maksimum i sumę bieżącą podczas przesyłania strumieniowego każdego kafelka, przeskalowując wcześniejsze częściowe wyniki, aby końcowy wynik był dokładny. Ponieważ wyniki pośrednie pozostają w pamięci SRAM (o rząd wielkości szybciej niż HBM), algorytm jest świadomy operacji IO: minimalizuje odczyty i zapisy pamięci, a nie surowe operacje arytmetyczne.

Wpływ strategiczny

Koszt i budżet

Decyzje dotyczące architektury wpływają na wydajność i koszty operacyjne przez lata.

Jaśniejsze decyzje

Edukacja techniczna pomaga zespołom wybrać odpowiedni stos, a nie tylko najnowszy.

Kontrola jakości

Lepsze wybory inżynieryjne zmniejszają liczbę incydentów związanych z niezawodnością w produkcji.

Przyszłość uwagi Flash

Flash Attention stał się domyślnym elementem składowym, a FlashAttention-2 i FlashAttention-3 zwiększają przepustowość nowszych procesorów graficznych, takich jak H100, poprawiając podział pracy i wykorzystując ścieżki FP8 o niskiej precyzji. Spodziewaj się ciągłego wspólnego projektowania ze sprzętem, ściślejszej integracji ze strukturami szkoleniowymi i wnioskowania oraz wariantów dostosowanych do rzadkiego, przesuwanego okna i bardzo długiego kontekstu. Ponieważ okna kontekstowe rozciągają się na miliony tokenów, tego typu jądra obsługujące IO pozostają niezbędne do utrzymania praktycznej pamięci i szybkości.

Implementacja w świecie rzeczywistym

Trenowanie dużych modeli językowych, takich jak systemy klasy Lama i GPT, z dłuższymi oknami kontekstowymi przy niższym koszcie pamięci.

Szybsza obsługa asystentów czatu poprzez przyspieszenie etapu wstępnego wypełniania, podczas którego najpierw czytany jest długi monit.

Umożliwienie narzędzi do analizy dokumentów, które przetwarzają całe książki lub bazy kodów, umożliwiając analizę długich sekwencji na jednym procesorze graficznym.

Zasilanie transformatorów wizyjnych i audio, w których wejścia o wysokiej rozdzielczości tworzą bardzo długie sekwencje tokenów.

Zagrożenia i poręcze

Optymalizacja jednego testu porównawczego może ukryć szersze słabości systemu.

Koszty infrastruktury i utrzymania są często niedoszacowane.

W miarę jak systemy stają się coraz bardziej złożone, luki w bezpieczeństwie i obserwowalności mogą się zwiększać.

Plan wdrożenia

1

Przed wdrożeniem zdefiniuj docelowe opóźnienia, jakość i koszty.

2

Test porównawczy w realistycznych warunkach obciążenia i danych.

3

Monitorowanie przyrządu pod kątem błędów, dryftu i wpływu użytkownika.

4

Przed skalowaniem przygotuj ścieżki wycofywania zmian i reakcji na incydenty.

Odkrywaj dalej

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Flash Attention quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Rozpocznij quiz

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Następny poradnik

Wdrożenie uwagi i przycinanie głowy

Często zadawane pytania

Co to jest uwaga błyskowa?

Flash Attention to sprytny sposób na obliczenie kroku uwagi w Transformersach bez konieczności zapisywania gigantycznej macierzy uwagi w celu spowolnienia pamięci. Dzięki temu modele o długim kontekście są znacznie szybsze i wydajniejsze pod względem pamięci, bez zmiany ich obliczeń matematycznych.

Jakie jest główne wąskie gardło, na które celuje Flash Attention?

Flash Attention obsługuje operacje IO: zmniejsza ilość danych przesyłanych pomiędzy szybką wbudowaną pamięcią SRAM a powolną pamięcią o dużej przepustowości, co stanowi raczej wąskie gardło niż samą arytmetykę.

W jaki sposób Flash Attention unika przechowywania pełnej macierzy uwagi N na N?

Układa obliczenia tak, aby każdy blok mieścił się w szybkiej pamięci SRAM, obliczając i akumulując częściowe wyniki bez materializowania całej macierzy w HBM.

Jaka technika pozwala programowi Flash Attention poprawnie obliczyć wartość softmax bez jednoczesnego wyświetlania całego wiersza?

Softmax online utrzymuje bieżące maksimum i bieżący mianownik podczas przesyłania strumieniowego płytek, przeskalowując wcześniejsze częściowe wyniki, aby ostateczna normalizacja była dokładna.

Dlaczego Flash Attention najbardziej pomaga w przypadku długich sekwencji?

Naiwna macierz uwagi skaluje się w pamięci jako N-kwadrat, więc unikanie jej pełnego przechowywania daje największe oszczędności dokładnie wtedy, gdy sekwencje są długie.

Jaki priorytet ma minimalizacja w konstrukcji Flash Attention obsługującej IO?

Uwzględniający IO oznacza, że ​​algorytm został zaprojektowany z myślą o kosztach przenoszenia danych w hierarchii pamięci, minimalizując ruch HBM, a nie operacje arytmetyczne.