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ą.
Podobna idea została użyta 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 Proste, a jednocześnie potężne. 👇
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 👇
98,94K