Co Przewiduje Model Językowy
Silnik Kontynuacji Prawdopodobieństwa
Model językowy pobiera sekwencję tokenów i przypisuje rozkład prawdopodobieństwa do tego, jaki token nastąpi dalej. Podaj mu the cat sat on the a on wyda prawdopodobieństwa na całe słownictwo: wysoka masa na mat, floor, couch; niska masa na xylophone, Tuesday.
Próbkowanie tego rozkładu, dołączanie tokenu i ponowne podanie: ta pętla generuje tekst token po tokenie. Generacja autoregresyjna, nazwana tak, ponieważ każdy krok regresuje na swoim własnym wcześniejszym wyjściu.
Trzy liczby definiują model językowy
Rozmiar słownictwa (V). Ile różnych tokenów model może wygenerować. ANDREA-12M używało 4 353 tokenów; ANDREA-120M używa 8 449.
Okno kontekstu (T). Ile tokenów mieści się w jednym przejściu w przód. Modele ANDREA używają T = 1 024.
Liczba parametrów (P). Ile wyuczonych wag znajduje się wewnątrz. 12M, 120M i 480M nazywają rodzinę według P.
Rodzina trzech
| Wariant | d_model | Głowy | Warstwy | Kontekst | Parametry |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Trzy pokrętła skalują: d_model (szerokość każdego wewnętrznego wektora), n_layer (głębokość ułożonych bloków transformatorów), n_head (równoległe projekcje uwagi). Słownictwo i kontekst pozostają stałe w rodzinie.
Czytanie tabeli rodziny
Dlaczego małe ma znaczenie
Ograniczenie jako wyzwolenie
Duże modele językowe z setkami miliardów parametrów wymagają tysięcy GPU, zastrzeżonych zbiorów danych i korporacyjnych budżetów. Niewiele osób może trenować taki model. Niewiele osób może go naprawiać.
Mały model językowy na jednym GPU odwraca to. Każdy z 4090 (lub 3060) może odtworzyć ANDREA z otwartych danych. Przepis treningowy podwaja się jako karta modelu. Otwarty kod, otwarte wagi, otwarte dane; pełna proweniencja w 72 godziny obliczeń.
Pojemność vs Jakość
Mniejsze modele nie mogą zapamiętać swojego korpusu treningowego. ANDREA-12M, z 12,8M parametrów, nie ma pojemności do przechowywania treści faktograficznych; uczy się struktury tur, rozkładu słownictwa i kształtu odpowiedzi. ANDREA-120M, z 10× większą pojemnością, uczy się przywoływania faktów, spójności wieloparagrafowej i szerokości dziedzinowej (zweryfikowane przez zewnętrzną ocenę na 9,5/10 w próbkach biologii i przetwarzania sygnałów).
Wniosek: pojemność ustala sufit. Program nauczania decyduje, czy sufit zostanie osiągnięty. Działania 14-23 obejmują program nauczania. [TITLE decoder_only/]
Trzy odmiany Transformera
Enkoder, Dekoder, Oba
Oryginalny Transformer (Vaswani i in., 2017) zawierał enkoder i dekoder, sklejone razem do tłumaczenia. Trzy linie architektoniczne wywodzą się z tego artykułu:
Tylko enkoder (linia BERT). Dwukierunkowa uwaga, bez maski kauzalnej. Zoptymalizowany do klasyfikacji, nie generowania. Token widzi zarówno swoją przeszłość, jak i przyszłość podczas treningu.
Encoder-decoder (T5, BART). Enkoder odczytuje wejście; dekoder generuje wyjście, zwracając uwagę na enkoder za pomocą cross-attention. Używany do tłumaczenia, podsumowywania.
Decoder-only (GPT, ANDREA). Causal mask: każdy token widzi tylko swoją przeszłość. Trening do przewidywania następnego tokenu. Generacja jest darmowa; trening i inferencja dzielą ten sam forward pass.
Dlaczego Decoder-Only Wygrywa na Jednym GPU
Trzy powody:
1. Pojedynczy cel. Przewidywanie następnego tokenu działa na dowolnym tekście. Nie potrzebne sparowane źródło/docelowe.
2. Symetria treningu i inferencji. Ten sam forward pass, brak specjalnej logiki generowania.
3. Prostota pamięci. Brak cross-attention; jeden stos warstw; jeden przepływ aktywacji.
ANDREA dziedziczy wybór decoder-only z microGPT, który odziedziczył z nanoGPT, który odziedziczył z GPT-2. Linia dziedziczenia pozostaje standardowa; to, co się zmienia, tkwi w tokenizacji, infrastrukturze treningowej i curriculum.
Dlaczego Decoder-Only dla ANDREA
Co zmieści się w 24 GB
Bajty na parametr
RTX 4090 ma 24 GB VRAM. Trening ANDREA-12M zużył 1,4 GB. ANDREA-120M zużył znacznie więcej. Różnica wynika z prostego ćwiczenia księgowego: każdy parametr pojawia się wielokrotnie w pamięci podczas treningu.
Dla każdego parametru, trening przechowuje:
- Samą wagę (1× waga)
- Pierwsza chwila Adama (m): ten sam kształt co waga (1× waga)
- Druga chwila Adama (v): ten sam kształt co waga (1× waga)
- Gradienty: ten sam kształt co waga (1× waga)
- Aktywacje i tymczasowe: ~2-4× waga (zależnie od batcha i kontekstu)
Łącznie: ~6-8× liczba wag, w bajtach zależnie od precyzji.
Precyzja Mnoży Wszystko
| Precyzja | Bajty/param | Razem dla 120M wag | Uwagi |
|---|---|---|---|
| FP32 | 4 | 480 MB | Bazowa; najbezpieczniejsza, najwolniejsza |
| FP16 | 2 | 240 MB | cuBLAS, połowa pamięci |
| FP8 E4M3 | 1 | 120 MB | Tensor cores, ryzyko NaN |
Pomnóż przez 6-8× dla pełnego zużycia pamięci podczas treningu. ANDREA-120M trenuje komfortowo w FP16 (~2 GB na wagi + optimizer + gradienty); FP8 E4M3 skraca czas treningu o połowę na tensor cores RTX 4090.
Aktywność 13 (grow_a_language_model_precision) omawia szczegółowo kompromisy precyzji FP.
Rozmiar stanu optymalizatora ANDREA-120M
Dwadzieścia Pięć Aktywności
Dwie Połówki
Ten kurs dzieli się czysto. Pierwsza połowa obejmuje to, czego microGPT nauczył dziedzinę: transformator, który działa na jednym GPU. Druga połowa obejmuje rzeczywisty wkład ANDREA: program nauczania, który się uczy.
Połowa 1: Transformator na Jednym GPU (aktywności 2-13)
| # | Aktywność | Etap |
|---|---|---|
| 2 | Tokenizator morfemów Harrisa | segmentacja dystrybucyjna, słownik 256+N+1 |
| 3 | Wyrównanie tokenizer-diet | punkt nasycenia, dlaczego 12M zmarnowało 63,6% |
| 4 | Embeddingi & pozycja | wyuczone wyszukiwanie tokenu + pozycji |
| 5 | Skalowana uwaga iloczynu skalarnego | Q·Kᵀ/√d, maska kauzalna, softmax |
| 6 | Uwaga wielogłowicowa | podział na głowice, równoległe projekcje |
| 7 | Blok transformatora | MLP, resztki, normalizacja warstwowa |
| 8 | Entropia krzyżowa & perpleksja | log-prawdopodobieństwo, strata SMMA |
| 9 | Backprop w niestandardowym CUDA | reguła łańcuchowa w microgpt_cuda.cu |
| 10 | AdamW | dekoplowany rozkład wag; dlaczego klasyczny Adam umarł |
| 11 | Rozgrzewka LR + kosinusowy zanik | rampa 2000 kroków; dlaczego natychmiastowy pik niszczy 120M |
| 12 | Przycinanie gradientów | globalna norma L2; 3 jądra CUDA |
| 13 | FP32 / FP16 / FP8 E4M3 | kompromisy precyzji; tensor cores |
Połowa 2: Program nauczania, który się uczy (aktywności 14-24)
| # | Aktywność | Pokonany |
|---|---|---|
| 14 | Wieloramienni bandyci | UCB1, eksploracja vs eksploatacja |
| 15 | Kontrola kości w fazach | fazy 7/14/21/28/42, kości 1d3/1d4 |
| 16 | Atrybucja nagród & EMA | EMA straty na źródło, skalowanie 1000× |
| 17 | Podłogi źródeł & kara epok | 1/(1+epoki) zapobiega zapamiętywaniu |
| 18 | Bonus za pokrycie | śledzenie na poziomie dokumentu, 1.3× świeżość |
| 19 | Rozgrzewka curriculum | 7 źródeł czat/proza pierwsze 20K kroków |
| 20 | Filtrowanie po kształcie, nie znakach | has_system_prompt_shape() |
| 21 | Wczesne zatrzymywanie z bramkowaniem koherencji | bigram/trigram/word/char auto-halt |
| 22 | Checkpoint, wznowienie, sygnały | format, SIGTERM/SIGUSR1, ciągłość loss.json |
| 23 | Audyt próbek & zewnętrzna ocena | czytanie uruchomienia, terytorium 9.5/10 |
| 24 | Od microGPT do ANDREA-120M | załamanie v1, poprawki v2, łatka v2.5, poler v3 |
Plus towarzyszący: geometry_of_andrea postrzega każdą warstwę jako geometrię (przestrzeń osadzeń, uwaga jako projekcja, powierzchnia straty, bandit jako spacer po dyskretnym sympleksie).
Sugerowana kolejność
Aktywności 2-13 budują działający transformator. Przeskocz do drugiej połowy, jeśli trenowałeś już transformatory; wróć, gdy ciekawość weźmie górę.
Każda aktywność jest samodzielna, w miarę możliwości. Odwołania matematyczne odnoszą się do wcześniejszych aktywności po nazwie (zobacz aktywność 5: skalowane iloczynowe attention). Odwołania do kodu wskazują na microgpt/microgpt_cuda.cu & microgpt/training_proxy.py w ~/git/uncloseai-cli/.