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

Szesnaście dni region region region

Uruchomienie, które się zakończyło

ANDREA-120M v1 wystartowała 2026-03-22 i została zakończona 2026-04-15 w kroku 165 000 z 200 000 planowanych. Minimum straty EMA: 3,23 w kroku 110 tys. (losowa szansa: ln(8449) = 9,04, więc strata wyglądała przyzwoicie). Próbki nie.


Krok 80K: region region region region region region region
Krok 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Krok 140K: gry, gry, gry, gry, gry, gry
Krok 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy

Szesnaście dni obliczeń RTX 4090. 130W ciągłe. Śmieci od kroku 80K wzwyż.


Od microGPT do ANDREA-120M


Dlaczego microGPT zadziałał, ale 120M nie

ANDREA-12M używało tego samego proxy treningowego i przeszło. Mniejsze macierze wag okazały się bardziej odporne na wstrząsy gradientu. Skalowanie do 120M parametrów pomnożyło każdą kruchość. Pięć awarii się nasiliło.


Pięć nasilających się awarii


Awaria 1: Brak klipowania gradientu. Przejścia źródeł co 7-42 kroki powodowały nieograniczone skoki gradientu. Pojedyncza zła partia przy 120M może wepchnąć model w degeneracyjny atraktor, z którego optimizer nie może uciec. Model 12M przetrwał, ponieważ mniejsze wagi tolerowały te wstrząsy.


Błąd 2: Brak rozgrzewki LR. Learning rate skoczył z 0 do maksimum natychmiast na świeżo zainicjalizowanych wagach. Model wpadł w złą nieckę, zanim powstały jakiekolwiek reprezentacje.


Błąd 3: Brak weight decay. Czysty Adam pozwolił na dowolnie duże wagi, które wzmacniały wzorce powtarzania przy pojemności 120M.


Błąd 4: Brak monitorowania jakości próbek. eval_chat_quality() był podłączony tylko do starego wielofazowego runnera; curriculum firehose nigdy go nie wywoływał. Model produkował śmieci od kroku 80K wzwyż, niezauważone przez 10+ dni.


Błąd 5: Bandit nagradzał powtarzalne źródła. repo-docs, repo-docstrings i unfirehose-chat miały najwyższe wyniki (średnie nagrody 340-453), ponieważ treści o strukturze listowej trywialnie zmniejszają entropię krzyżową. Bandit karmił model większą ilością tego, co powodowało jego degenerację.


Kumulacja

Żaden pojedynczy błąd nie spowodowałby załamania v1. Każdy wzmacniał pozostałe. Szoki gradientu (1) bez rozgrzewki (2) uderzyły w świeżo zainicjalizowany model z arbitralnie dużymi wagami (3), produkując powtarzalność, którą bandit nagradzał (5), podczas gdy nikt nie obserwował wyjścia (4). Pięć przecinających się przyczyn, jedno załamanie.

Dlaczego pięć porażek, nie jedna

Wybierz dowolne DWA z pięciu błędów v1. Dla każdego wyjaśnij w jednym zdaniu: (a) czym był błąd; (b) jak konkretnie wchodził w interakcję z innym z pięciu błędów, kumulując szkody.

Jedna Poprawka Na Błąd

Konfiguracja v2 (2026-04-15)


PoprawkaDotyczy błęduImplementacja
Obcinanie gradientuF1 (brak obcinania)Globalna norma L2, max_norm=1.0; trzy jądra CUDA (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) obliczają i stosują przed Adamem
Rozgrzewka LRF2 (brak rozgrzewki)Liniowy wzrost od 0 do maksimum przez 2000 kroków. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (brak weight decay)Odłączony weight decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Coherence-gated early stoppingF4 (brak monitoringu)Ocena każdego sample (bigram/trigram/word/char diversity). Automatyczne zatrzymanie po 5 kolejnych próbach poniżej 30 punktów
Curriculum warmupF5 (bandit eliminuje powtórzenia)Pierwsze 20K kroków ograniczone do 7 źródeł chat/prose; firehose aktywuje się potem; repo-docstrings całkowicie wykluczone

Plus sample_every zmniejszone z 200 do 100 kroków (częstotliwość audytu podwojona), & limit repo-docs zmniejszony z 0.5 do 0.3.


Back-Test

Coherence gate przetestowane wstecznie na v1: uruchomiłoby się w kroku 132K, oszczędzając 3.8 dni obliczeń. Sam gate zmniejszyłby zmarnowane obliczenia v1 o ~30%; pozostałe cztery poprawki uniemożliwiają v1 dotarcie do wyzwolenia gate'a.


Czego v2 NIE naprawiło

Zanieczyszczenie danych. v2 zaufało źródłom hermes3-* jako „pre-czystym”, ponieważ pochodziły od nauczyciela LLM. DEEP_CLEAN_SKIP w Makefile wykluczało hermes3-general, hermes3-creative i hermes3-roleplay z make deep-clean. unfirehose-chat uchwyciło systemowe prompty agenta jako tury użytkownika. Te dwie wady czekały na warstwie danych, gotowe do ujawnienia się.

Mapowanie poprawek do awarii

Trzy poprawki v2 łączą się czysto z jedną awarią v1 każda. Dopasuj: (a) obcinanie gradientu (max_norm=1.0); (b) rozgrzewka LR (2000-krokowy liniowy ramp); (c) AdamW z weight_decay=0.01. Dla każdej podaj awarię v1, którą adresuje, oraz wyjaśnij w jednym zdaniu, DLACZEGO ta konkretna poprawka przeciwdziała tej awarii.

Krok 15K: Dwa Defekty Danych Wynurzyły się na Powierzchnię

Co Widział v2

v2 wystartował 2026-04-15. Przy kroku ~15K z 200K (7,5% ukończenia), próbki wygenerowały ozdoby agent-harness (○ ●) oraz fallback dominacji artykułu (a = 26% słów w kroku 14 966; the = 21% w kroku 14 798). Pięć poprawek stabilności v2 działało poprawnie. Awaria przesunęła się z architektury do danych.


Dwa Niezależne Defekty Pipeline'u


Defekt A: unfirehose-chat uchwycił systemowe prompty agenta jako tury użytkownika. unfirehose-chat buduje z plików JSONL sesji harness w ~/.claude/, ~/.fetch/, ~/.uncloseai/. Pipeline ingestowy konwertował wielosekcjowe systemowe prompty agenta (# Agent X, ## Identity, ## Rules itp.) na slot tury użytkownika w parach > user / < assistant. Model nauczył się, że 'użytkownicy' mówią w wielosekcjowym markdownzie i odtwarzał te ozdoby we własnych wyjściach.


Wada B: hermes3-* ominęła wszystkie filtry. DEEP_CLEAN_SKIP w Makefile wykluczał hermes3-general, hermes3-creative i hermes3-roleplay z make deep-clean na fałszywym założeniu, że dane destylowane z LLM były wstępnie wyczyszczone. Wyczerpujące skanowanie pokazało, że istniejące filtry, po zastosowaniu, odrzuciłyby 87-93% linii hermes3 (zbyt duże akapity >2000 znaków przekraczające block_size=1024; odpowiedzi tłumaczeniowe w CJK/cyrylica/arabski; sekwencje o niskiej różnorodności bigramów).


Łatka v2.5 (commit de24332, 2026-04-18)


Dwie zmiany strukturalne.


Zmiana 1: has_system_prompt_shape() w filter-dataset.c. Wykrywa wyciekłe systemowe prompty po KSZTALCIE, nie po dopasowaniu znaków. Trzy sygnały połączone:

1. 3+ nagłówki markdown w jednej turze = odrzucenie.

2. 2+ nagłówki z długością tury >=500 znaków = odrzucenie.

3. Fraza odcisków palców shardu agenta (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) w połączeniu z jakimkolwiek nagłówkiem lub długością >=400 = odrzucenie.


Reguła izolacji: sprawdź pierwszą turę użytkownika przy separatorze / (ze spacjami, nie goły /, który fragmentuje ścieżki URL) aby uniknąć fałszywych pozytywów na legalnym markdown w odpowiedziach asystenta.


Zmiana 2: hermes3-* przeniesione poza DEEP_CLEAN_SKIP. Nie ufaj niczemu nieprzefiltrowanemu.


Wskaźniki odrzuceń po aktualizacji


źródłow-liniachout-liniachodrzucone
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45,25744,5381.6% (szum)
smoltalk11,81211,8120.0%

Filtry bazowe już wychwytują 87-93% zanieczyszczeń hermes3; DEEP_CLEAN_SKIP był kluczowym defektem nośnym. Nowy detektor kształtów dodaje ~0.1% dodatkowych odrzuceń ogółem, skoncentrowanych w unfirehose-chat, gdzie usuwa specyficzne wycieki agent-shard, których istniejące filtry nie wychwytują.


Dlaczego Kształt Pokonuje Charakter

Ozdoby ewoluują. Filtr dopasowujący znaki, który usuwa , nic nie zrobi z w przyszłym tygodniu. Filtr oparty na kształcie (liczenie nagłówków, liczenie znaków, rozpoznawanie fraz-fingerprints) uogólnia się na warianty ozdób. Wzorzec: wykrywanie zanieczyszczeń musi używać heurystyk strukturalnych.

Dlaczego Filtrować Według Kształtu

Filtry v2.5 odfiltrowują przecieki agent-shard na podstawie KSZTAŁTU (liczba nagłówków, długość, frazy fingerprint) zamiast na podstawie ZNAKÓW (dopasowywanie konkretnych symboli jak ozdobniki). Podaj jeden praktyczny powód, dlaczego to ma znaczenie & jeden konkretny tryb awarii, którego filtr tylko na znakach NIE wychwyci.

Ramię Bandita bez Danych

v3 Uruchomione 2026-04-18

Ta sama architektura i hiperparametry co v2; wyczyszczone dane po patchy v2.5. Zero przecieków ozdobników w audytach próbkowych. v3 działało czysto do kroku 112K.

[BLOCK_TYPE v3_polish/zombie_arm]

Krok 112,619: Przykładowy audyt wychwytuje wzorzec
[BLOCK_TYPE v3_polish/zombie_arm]

Przykładowy audyt ujawnił spójne tury konwersacyjne (haiku, Q&A, dialog), ale okresowe fazy skupione na ramionach wiedzy (gutenberg, repo-docstrings, repo-docs) wyciekały fragmenty przypominające kod oraz szum tokenizacji repozytorium. Jedna próbka w kroku 112,080 osiągnęła stratę 0.13: anomalnie niską, sygnalizującą zapamiętane pod ciągi repo-docs zamiast wyuczonego rozkładu czatu. [BLOCK_TYPE v3_polish/zombie_arm]

[BLOCK_TYPE v3_polish/zombie_arm]

Zombie Arm
[BLOCK_TYPE v3_polish/zombie_arm]

Diagnoza: exclude_sources poprawnie usunęło repo-docstrings na starcie treningu, ale trwały stan bandyta niósł resztkowe ramię repo-docstrings z wagą 1.546 z poprzedniego uruchomienia. Przeładowanie stanu przywróciło je do puli UCB, mimo że nie istniał plik .btok do próbkowania, tworząc zombie pociągnięcie, które zniekształciło księgowość eksploracji. [BLOCK_TYPE v3_polish/zombie_arm]

[BLOCK_TYPE v3_polish/zombie_arm]

Lekcja: pliki stanu bandyta (.state.json) dryfują między restartami w zaskakujący sposób. Wykluczenia konfiguracji nie kasują pamięci resztkowych ramion. Potrzebne pas i szelki: cap = 0.0 obok exclude.


Konfiguracja polska

Perturbacja programu nauczania tylko. Architektura, stan optymalizatora, harmonogram szybkości uczenia oraz historia strat zachowane z step_112600.bin.


Źródłov3 basev3 polish
repo-docscap 0.3wykluczone (cap 0.0)
repo-docstringswykluczonewykluczone + cap 0.0
repo-commitscap 0.4cap 0.2
dictionarycap 0.5cap 0.25
gutenbergcap 0.8 / floor 0.3cap 0.7 / floor 0.4
irc-qa-strict--cap 0.3
unweapon--cap 0.3
synthetic-chat--cap 0.4
hermes3-generalfloor 0.5floor 0.7
hermes3-creativefloor 0.4floor 0.55

| hermes3-roleplay | floor 0.4 | floor 0.5 | [BLOCK_TYPE v3_polish/zombie_arm]

| chat | floor 0.4 | floor 0.6 | [BLOCK_TYPE v3_polish/zombie_arm]

| smoltalk | floor 0.3 | floor 0.5 | [BLOCK_TYPE v3_polish/zombie_arm]

| oasst | floor 0.3 | floor 0.5 | [BLOCK_TYPE v3_polish/zombie_arm]

| dolly | -- | floor 0.4 | [BLOCK_TYPE v3_polish/zombie_arm]

| curriculum_warmup_steps | 20000 | 0 | [BLOCK_TYPE v3_polish/zombie_arm]

[BLOCK_TYPE v3_polish/zombie_arm]

Polski Protokół

1. SIGUSR1 do CUDA wymusza natychmiastowy checkpoint na następnej granicy 100 kroków.

2. Proxy zatrzymuje się.

3. .samples.json & .state.json zarchiwizowane (log próbek & stan bandyta zapisany jako zapis historyczny).

4. .loss.json zachowany -- skumulowana historia treningu; nigdy nie archiwizowany.

5. Proxy restartuje. Polska konfiguracja przesłana.

6. CUDA wznawia od step_112600.bin z nowym stanem bandyta pod nowymi limitami & dolnymi granicami.


Historia strat kontynuowana bez przerw.

Dlaczego polerowanie, a nie restart

Krok 112,619 osiągnął 56% zaplanowanego treningu. Zespół wybrał **CURRICULUM PERTURBATION** (zachowaj wagi, zmień limity górne i dolne) zamiast **FULL RESTART** (ponowna inicjalizacja w kroku 0). Podaj dwa powody, dlaczego polerowanie-pivot było poprawne oraz jedno konkretne ryzyko, które wprowadziłoby przejście do kroku 0.

Co wyprodukowało polerowanie

Przykładowy audyt, godziny po pivocie

W ciągu godzin od polskiego zwrotu, przykładowy audyt potwierdził zbieżność z czterema oryginalnymi celami ANDREA-120M.


Faktyczne przypomnienie (biologia), krok 112 584, strata 0,30, ppl 1.

> [extinction prompt]

> < black spider montano is alive, carolina parakeet is extinct.

Dwa poprawne fakty. Zewnętrzna ocena: 9,5/10.


Faktyczne przypomnienie (przetwarzanie sygnałów), krok 112 668, strata 0,74, ppl 2.

> [Fourier transform prompt]

> < Transformata Fouriera rozkłada sygnały na składowe częstotliwościowe, umożliwiając analizę charakterystyk sygnału i filtrowanie w dziedzinie częstotliwości.

Definicja z podręcznika w jednym zdaniu. Zewnętrzna ocena: 9.5/10.


Przestrzeganie ograniczeń (haiku), krok 112,248, strata 1.05, ppl 3.

> Napisz haiku o deszczu, używając trzech słów zaczynających się na 'r'.

> < Rytmiczny refren deszczu, Strumyczki na szybie, Ukojenie od bólu życia.


Wiedza o narzędziach (Python), krok 112 500, strata 1,94, ppl 7.

> Jak znaleźć nieaktualne pakiety w projekcie Python?

> < Użyj pip list --outdated names, aby zobaczyć listę pakietów pip w zarządzaniu projektem...

Prawidłowe narzędzie się pojawia; sformułowanie nieprecyzyjne.


Sześć dziedzin w 700 krokach

Biologia, przetwarzanie sygnałów, poezja, narzędzia Python, dialog konwersacyjny, dialog operacyjny. Sześć niepowiązanych dziedzin w ramach 700 kroków mówi nam, że bandyta i model współpracują. Szerokość dziedzin JEST sygnałem konwergencji.


Ocena zewnętrzna

Niezależny recenzent ocenił próbki jako 'solidne jak na model z 120M parametrów -- imponująca spójność i retencja wiedzy na tej skali', z próbkami o papudze karolińskiej i transformacie Fouriera ocenionymi na 9.5/10 i 'przewyższającymi swoje możliwości w zadaniach wiedzy'.


Czego nauczyła każda faza


v1 nauczyła: pięć kumulujących się błędów niszczy trening. Żaden pojedynczy fix nie ratuje; wszystkie pięć muszą zadziałać jednocześnie.


v2 nauczyła: architektoniczne poprawki są konieczne, ale niewystarczające. Warstwa danych może je pokonać cicho.


v2.5 nauczył: filtrowanie zanieczyszczeń według kształtu, nie znaku. Wzorce są stabilne; symbole ewoluują.


v3 base nauczył: stan bandyty dryfuje między restartami w zaskakujący sposób. Samo wykluczanie nie wystarcza; wymagany jest limit 0.0 z pasem i szelkami.


v3 polish nauczył: gdy awaria jest w polityce, a model jest zdrowy, perturbuj politykę. Zachowaj wagi. Zachowaj historię strat. Idź naprzód.


Jedna Prawda

Konwergencja nie jest pojedynczym wydarzeniem; to łańcuch poprawek. Każda faza ujawniła jedną wadę, naprawiła ją i odkryła następną. ANDREA-120M osiąga 9.5/10 w kroku 112,584, ponieważ v1, v2, v2.5, v3 base i v3 polish każde wykonało swoją pracę.

Która Faza Nauczyła Najtrudniejszej Lekcji

Spośród pięciu faz (v1, v2, v2.5, v3 base, v3 polish), którą uznałbyś za tę, która nauczyła najbardziej przenoszonej na inne dziedziny lekcji inżynierskiej? Wybierz jedną. Podaj lekcję własnymi słowami i wyjaśnij w 2-3 zdaniach, dlaczego ta lekcja uogólnia się poza trening modeli językowych.