Jesteś na rozmowie kwalifikacyjnej na stanowisko Naukowca Badawczego w OpenAI. Interviewer pyta: "Jak rozszerzyłbyś długość kontekstu LLM z 2K do 128K tokenów?" Ty: "Dostosuję model do dłuższych dokumentów z kontekstem 128K." Rozmowa zakończona. Oto, co przegapiłeś:
Rozszerzenie okna kontekstowego to nie tylko większe macierze. W tradycyjnym transformatorze, zwiększenie liczby tokenów o 8x zwiększa potrzeby pamięci o 64x z powodu kwadratowej złożoności uwagi. Zobacz obrazek poniżej! Jak więc to zarządzamy? kontynuuj...👇
1) Rzadkie uwagi Ogranicza obliczenia uwagi do podzbioru tokenów poprzez: - Używanie lokalnej uwagi (tokeny zwracają uwagę tylko na swoich sąsiadów). - Pozwalając modelowi nauczyć się, na których tokenach się skupić. Jednak wiąże się to z kompromisem między złożonością obliczeniową a wydajnością.
Podobny pomysł został użyty w ModernBERT. → Pełna globalna uwaga co 3 warstwę → Lokalna uwaga (128 tokenów) w przeciwnym razie Wynik: - 16x większa długość sekwencji - Znacznie lepsza wydajność - Najbardziej efektywny pamięciowo enkoder Prosty, ale potężny.
Oto intuicyjne wyjaśnienie zaczerpnięte z pracy: Wyobraź sobie, że czytasz książkę. Czy do zrozumienia większości z niej musisz być w pełni świadomy całej fabuły (pełna globalna uwaga)? Czy wystarczy świadomość bieżącego rozdziału (lokalna uwaga), o ile od czasu do czasu myślisz o jego znaczeniu dla głównej fabuły (globalna uwaga)? W zdecydowanej większości przypadków to drugie.
2) Flash Attention To jest szybka i oszczędna w pamięci metoda, która zachowuje dokładność tradycyjnych mechanizmów uwagi, tzn. wykorzystuje globalną uwagę, ale w sposób efektywny. Cała idea polega na optymalizacji ruchu danych w pamięci GPU. Zrozummy to!
Kilka szczegółów w tle: - Wątek to najmniejsza jednostka wykonawcza. - Kilka wątków tworzy blok. Również: - Wątki w bloku dzielą szybką (ale ograniczoną) pamięć zwaną SRAM. - Wszystkie bloki dzielą globalną pamięć zwaną HBM (obfita, ale wolna). Sprawdź to 👇
Uwaga przenosi duże macierze między SRAM a HBM: Aby obliczyć QK: - rozdziel macierze do wątków - oblicz, a następnie - wyślij produkt do HBM Aby obliczyć softmax: - rozdziel produkt do wątków - oblicz, a następnie - wyślij wynik do HBM Powtórz dla wszystkich warstw. Sprawdź to 👇
Flash attention obejmuje optymalizacje na poziomie sprzętowym, w których wykorzystuje SRAM do buforowania wyników pośrednich. W ten sposób redukuje zbędne ruchy, oferując przyspieszenie do 7,6x w porównaniu do standardowych metod uwagi. Sprawdź to 👇
3) DeepSeek Sparse Attention (DSA) Nowy model V3.2 DeepSeek wprowadza DeepSeek Sparse Attention (DSA), który obniża złożoność z O(L²) do O(Lk), gdzie k jest stałe. Jak to działa: Lekki Lightning Indexer ocenia, które tokeny są naprawdę istotne dla każdego zapytania. Mała liczba głów, działa w FP8, jest obliczeniowo tanie. Następnie mechanizm selekcji pobiera tylko najlepsze k wpisy klucz-wartość. Kluczowym spostrzeżeniem jest to, że tylko 2048 tokenów jest wybieranych na zapytanie, niezależnie od długości kontekstu. Zatem kosztowna obliczeniowo operacja uwagi odbywa się na tym małym podzbiorze, a nie na pełnej sekwencji 128K.
Przy 128K kontekście, koszty wstępnego wypełnienia spadają z około 0,65 USD do około 0,35 USD za milion tokenów. A dekodowanie spada z około 2,4 USD do około 0,8 USD. A wydajność pozostaje taka sama. W niektórych benchmarkach długiego kontekstu, V3.2 osiąga w rzeczywistości wyższe wyniki. Sparce attention nie jest nowością. Ale sprawienie, by działało bez utraty jakości, jest trudne. Jakie są inne techniki zwiększania długości kontekstu LLM-ów?
152,61K