English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gość
1 / ?
powrót do lekcji

Embedding to wyszukiwanie, nie funkcja

Pierwsza warstwa po tokenizatorze

Tokenizator przekazuje modelowi identyfikatory całkowite: [256, 1842, 7301, ...]. Pierwszą rzeczą, jaką robi transformer, jest zamiana każdego ID na wektor składający się z d_model liczb zmiennoprzecinkowych. Ten wektor istnieje w przestrzeni d_model-wymiarowej (768 wymiarów dla ANDREA-120M).


Warstwa embeddingów to tabela wyszukiwania, a nie funkcja. Wyobraź sobie ogromną macierz:


shape: (V, d_model)

[BLOCK_TYPE SECTION/STEP]
wiersz 0:    [e_0_0, e_0_1, ..., e_0_767]

[BLOCK_TYPE SECTION/STEP]
wiersz 1:    [e_1_0, e_1_1, ..., e_1_767]

[BLOCK_TYPE SECTION/STEP]
...

[BLOCK_TYPE SECTION/STEP]
wiersz 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

[BLOCK_TYPE SECTION/STEP]

Token ID i wybiera wiersz i. Bezpośredni dostęp do tablicy. Bez operacji arytmetycznych, bez funkcji aktywacji. Tylko indeks.


Przepływ osadzeń tokenów i pozycji


Trenowalne liczby zmiennoprzecinkowe

Każdy wpis w tej tabeli zaczyna się jako mała losowa liczba zmiennoprzecinkowa (zazwyczaj losowana z rozkładu normalnego przeskalowanego przez 1/sqrt(d_model)). Propagacja wsteczna aktualizuje każdy wiersz za każdym razem, gdy jego token ID pojawia się w partii. Po treningu podobne tokeny (cat, dog, pet) kończą się podobnymi wektorami; niepowiązane tokeny (cat, Tuesday, xylophone) znajdują się daleko od siebie w przestrzeni wektorowej.


ANDREA-120M Koszt osadzenia tokena


IlośćWartość
V8,449
d_model768
Parametry6,488,832

W samej tabeli osadzeń tokenów znajduje się około 6,5 mln parametrów, co stanowi ok. 5,4 % całkowitej liczby parametrów modelu ANDREA-120M. Każdy slot słownika otrzymuje te 768 liczb zmiennoprzecinkowych.

Wymiarowanie tabel osadzeń

Oblicz liczbę parametrów osadzeń tokenów dla dwóch przyszłych wariantów. (a) ANDREA-480M: V = 16 641 (tokenizator 16 384-segmentowy + 256 bajtów + 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4 353, d_model = 384. Pokaż obliczenia V × d_model dla każdego wariantu.

Iloczyny skalarne mierzą podobieństwo

Wektory jako strzałki

Wektor 768-wymiarowy istnieje w przestrzeni, której ludzie nie są w stanie sobie wyobrazić, ale ta sama algebra działa w dowolnym wymiarze. Dwie kluczowe operacje mają znaczenie dla transformerów:


Długość (magnitude – długość strzałki):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

Iloczyn skalarny (współbieżność między dwiema strzałkami):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

Co mówi iloczyn skalarny

Dwie własności, które obowiązują w dowolnym wymiarze:


- u · v = ||u|| × ||v|| × cos(theta), gdzie theta to kąt między nimi.

- Wektory wskazujące ten sam kierunek dają duże dodatnie iloczyny skalarne.

- Wektory wskazujące przeciwne kierunki dają duże ujemne iloczyny skalarne.

- Wektory tworzące kąt prosty dają iloczyn skalarny równy zero.


Iloczyn skalarny = nienormalizowana miara podobieństwa. Dwa wytrenowane osadzenia tokenów dla cat i dog mają wysoki iloczyn skalarny, ponieważ propagacja wsteczna zbliżyła je do siebie (oba przewidują konteksty związane ze zwierzętami domowymi). cat i Tuesday są prawie ortogonalne, ponieważ przewidują różne konteksty.


Dlaczego transformatorowi zależy

Aktywność 5 (grow_a_language_model_attention) buduje mechanizm uwagi z iloczynów skalarnych: wektor zapytania iloczyn skalarny z wektorami kluczy daje wyniki, które wskazują, które poprzednie tokeny mają znaczenie przy przewidywaniu kolejnego. Osadzenia i iloczyny skalarne razem przenoszą każdą interakcję wewnątrz transformatora.

Przewidywanie podobieństwa

Po treningu osadzenie ANDREA-120M dla `believ` (wiersz tokena 4287, hipotetyczne) jest z grubsza wyrównane z `know`, `understand`, `learn`. Bez obliczania dokładnych wartości, przewidź kolejność od największego iloczynu skalarnego do najmniejszego: `believ · know`, `believ · stone`, `believ · understand`. Uzasadnij swoją kolejność jedną frazą na każdą parę.

ANDREA używa wyuczonych osadzeń pozycyjnych

Problem

Osadzenie tokena informuje model, jakie słowo znajduje się w danej pozycji. Nie informuje modelu, gdzie to słowo się znajduje. Bez informacji o pozycji transformer traktuje the cat sat on a mat i mat a on sat cat the identycznie: ten sam zbiór tokenów, bez sygnału kolejności.


W literaturze dotyczącej transformerów istnieją trzy rozwiązania:


Sinusoidalne (Vaswani 2017). Stała formuła matematyczna oparta na sinusach i cosinusach. Pozycja 0 otrzymuje określony wektor 768-wymiarowy; pozycja 1 otrzymuje inny; nigdy nie jest trenowana, nigdy nie jest aktualizowana. Uogólnia się na dowolną pozycję za pomocą formuły.


RoPE (Rotary Position Embedding). Obraca wektory query i key na podstawie pozycji. Używany w LLaMA, Qwen. Brak dodatkowych parametrów; rotacja wbudowana w mechanizm uwagi.


Learned. Oddzielna tabela embeddingów o kształcie (T, d_model), gdzie T to długość kontekstu. Każdy wiersz jest trenowany przez propagację wsteczną, tak jak embeddingi tokenów.


Wybór ANDREA: Learned

ANDREA dziedziczy podejście learned-position po microGPT, które odziedziczyło je po nanoGPT, które z kolei odziedziczyło je po GPT-2. Uzasadnienie:


- Prostota. Brak specjalnej matematyki w mechanizmie uwagi. Tabela pozycji wygląda jak tabela tokenów.

- Zgodność z niestandardowym CUDA. Silnik microgpt_cuda.cu ANDREA obsługuje dwa wyszukiwania embeddingów identycznie; nie są potrzebne jądra sin/cos.

- Wystarczające dla stałego kontekstu. ANDREA ogranicza T do 1024. Wyuczona tabela działa dobrze dla sekwencji o stałej długości.


Koszt osadzania pozycji w ANDREA-120M


IlośćWartość
T (kontekst)1,024
d_model768
Parametry786,432

0.79M parametrów dla pozycji. Połączenie z osadzeniami tokenów: 6.49M + 0.79M = 7.27M parametrów osadzeń łącznie dla ANDREA-120M.


Jak się łączą

W każdej pozycji t sekwencji wejściowej:


x_t = token_embedding[token_id_t] + position_embedding[t]

Dwa wektory 768-wymiarowe, sumowane elementarnie. Wynik, x_t, trafia do pierwszego bloku transformera. Model nigdy ich już nie rozdziela; uczy się korzystać z połączonego sygnału.

Uczone kontra sinusoidalne

Porównaj dwie strategie osadzania pozycji dla hipotetycznego modelu ANDREA. Strategia A: uczone, T = 1024. Strategia B: sinusoidalne, T dowolne (działa dla dowolnej długości sekwencji). Wymień jedną zaletę każdej. Następnie podaj, którą wybiera ANDREA i jeden powód z perspektywy CUDA / inżynierskiej.

Gdzie znajdują się parametry embeddingu

Pełna warstwa embeddingu ANDREA-120M


KomponentKształtParametry
Tabela osadzeń tokenów8,449 × 7686,488,832
Tabela osadzeń pozycji1,024 × 768786,432
Razem7,275,264

Około 7,3 mln parametrów. Całkowita liczba parametrów modelu ANDREA-120M: ~120 mln. Sama warstwa osadzeń: 6%. Pozostałe 94% znajduje się w blokach transformerowych (uwaga + MLP, omówione w aktywnościach 5-7).


Osadzenia niepowiązane vs powiązane

Wiele architektur transformerów (w tym GPT-2) wiąże osadzenie tokenu z końcową projekcją wyjściową: ta sama macierz V × d_model jest używana zarówno na wejściu, jak i na wyjściu (logity nad słownikiem). Wiązanie oszczędza parametry V × d_model i często poprawia jakość.


ANDREA używa niezwiązanych osadzeń: osadzenie wejściowe i projekcja wyjściowa są trenowane jako osobne macierze. Aktywność 7 (grow_a_language_model_transformer_block) omawia warstwę końcową.


Dotychczasowy przebieg propagacji w przód

Wejście: identyfikatory tokenów [256, 1842, 7301, ...] (1024 sztuki). Każdy identyfikator wyszukuje wektor 768-wymiarowy. Każda pozycja wyszukuje wektor 768-wymiarowy. Sumujemy je elementarnie. Wynik: macierz (1024, 768) x zawierająca wektory tokenów i pozycji. x trafia do bloku transformera nr 1.


Aktywność 5 (grow_a_language_model_attention) opisuje, co robi blok 1: skalowany iloczyn skalarny z maską przyczynową i softmax.

Przewidywanie struktury osadzeń

Refleksja: ANDREA-120M ma 8449 osadzeń tokenów i 1024 osadzeń pozycji, dzielących tę samą 768-wymiarową przestrzeń. Po treningu, czego byś się spodziewał: (a) jak wygląda macierz osadzeń tokenów (wzorce klastrów?), czy (b) jak wygląda macierz osadzeń pozycji (płynny gradient?). Wybierz jedno i opisz w jednym lub dwóch zdaniach. Nie ma złej odpowiedzi; liczy się rozumowanie.