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

un

Gast
1 / ?

Sechzehn Tage region region region

Der Lauf, der endete

ANDREA-120M v1 startete am 2026-03-22 & terminierte am 2026-04-15 bei Schritt 165.000 von 200.000 geplanten. EMA-Verlustminimum: 3.23 bei Schritt 110K (Zufallswahrscheinlichkeit: ln(8449) = 9.04, also sah der Verlust respektabel aus). Samples taten es nicht.


Schritt 80K: region region region region region region region
Schritt 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Schritt 140K: games, games, games, games, games, games
Schritt 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy

Sechzehn Tage RTX 4090 Rechenleistung. 130W kontinuierlich. Müll ab Schritt 80K.


Von microGPT zu ANDREA-120M


Warum microGPT funktionierte, aber 120M nicht

ANDREA-12M verwendete denselben Trainingsproxy & bestand. Kleinere Gewichtsmatrizen erwiesen sich als robuster gegenüber Gradientenschocks. Das Skalieren auf 120M Parameter multiplizierte jede Zerbrechlichkeit. Fünf Fehler kumulierten.


Fünf kumulierende Fehler


Fehler 1: Kein Gradient Clipping. Quellenübergänge alle 7-42 Schritte erzeugten unbegrenzte Gradientenspitzen. Ein einzelner schlechter Batch bei 120M kann das Modell in einen degenerierten Attraktor schieben, aus dem der Optimizer nicht entkommen kann. Das 12M-Modell überlebte, weil kleinere Gewichte die Schocks vertrugen.


Fehler 2: Kein LR-Warmup. Lernrate sprang sofort von 0 auf den Peak bei frisch initialisierten Gewichten. Das Modell fiel in ein schlechtes Becken, bevor irgendwelche Repräsentationen entstehen konnten.


Fehler 3: Kein Weight Decay. Vanilla Adam erlaubte beliebig große Gewichte, die Wiederholungsmuster bei 120M Kapazität verstärkten.


Fehler 4: Keine Überwachung der Sample-Qualität. eval_chat_quality() war nur mit dem legacy Multi-Phase-Runner verbunden; der Firehose-Curriculum hat es nie aufgerufen. Das Modell produzierte Müll ab Schritt 80K, unentdeckt für 10+ Tage.


Fehler 5: Bandit belohnte repetitive Quellen. repo-docs, repo-docstrings & unfirehose-chat hatten die höchsten Scores (Mittelwerte 340-453), weil listenstrukturierter Inhalt die Kreuzentropie trivial reduziert. Der Bandit fütterte das Modell mit mehr von dem, was es degenerieren ließ.


Kumulation

Kein einzelnes Versagen allein hätte v1 zum Kollabieren gebracht. Jedes verstärkte die anderen. Gradientenschocks (1) ohne Aufwärmphase (2) trafen ein frisch initialisiertes Modell mit beliebig großen Gewichten (3), was zu Wiederholungen führte, die der Bandit belohnte (5), während niemand die Ausgabe überwachte (4). Fünf sich überschneidende Ursachen, ein Kollaps.

Warum fünf Versagen, nicht eines

Wähle beliebige **ZWEI** der fünf v1-Versagen aus. Für jedes erkläre in **einem Satz**: (a) was das Versagen war; (b) wie es spezifisch mit einem anderen der fünf Versagen interagierte, um den Schaden zu kumulieren.

Ein Fix pro Fehler

v2-Konfiguration (2026-04-15)


FixBehebt FehlerImplementierung
Gradient clippingF1 (kein Clipping)Globaler L2-Norm, max_norm=1.0; drei CUDA-Kernel (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) berechnen & wenden vor-Adam an
LR-WarmupF2 (kein Warmup)Lineare Rampe 0 bis Peak über 2000 Schritte. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (kein Weight Decay)Entkoppelter Weight Decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Kohärenz-gesteuertes Early StoppingF4 (kein Monitoring)Bewerte jede Probe (Bigram/Trigram/Wort/Zeichen-Diversität). Automatischer Halt nach 5 aufeinanderfolgenden Proben unter 30
Curriculum-WarmupF5 (Bandit frisst Wiederholungen)Erste 20K Schritte beschränkt auf 7 Chat/Prosa-Quellen; Firehose aktiviert danach; Repo-Docstrings vollständig ausgeschlossen

Zusätzlich sample_every von 200 auf 100 Schritte reduziert (Audit-Frequenz verdoppelt), & Repo-Docs-Cap von 0.5 auf 0.3 gesenkt.


Back-Test

Kohärenz-Gate auf v1 back-getestet: hätte bei Schritt 132K ausgelöst, 3,8 Tage Compute gespart. Das Gate allein hätte v1s verschwendeten Compute um ~30 % gekürzt; die anderen vier Fixes verhindern, dass v1 je diesen Gate-Trigger erreicht.


Was v2 NICHT behoben hat

Datenkontamination. v2 vertraute hermes3-* Quellen als 'vorab gereinigt', weil sie von einem LLM-Lehrer stammten. DEEP_CLEAN_SKIP in der Makefile schloss hermes3-general, hermes3-creative und hermes3-roleplay von make deep-clean aus. unfirehose-chat erfasste Agent-Systemprompts als Benutzerzüge. Diese zwei Defekte lauerten auf der Datenschicht und waren bereit, an die Oberfläche zu kommen.

Behebungen zu Fehlern zuordnen

Drei von v2s Behebungen verbinden sich klar mit je einem v1-Fehler. Ordnen Sie zu: (a) Gradienten-Clipping (max_norm=1.0); (b) LR-Warmup (2000-Schritte lineare Rampe); (c) AdamW mit weight_decay=0.01. Nennen Sie für jede die v1-Fehlfunktion, die sie behebt, und erklären Sie in einem Satz, WARUM diese spezifische Behebung dieser Fehlfunktion entgegenwirkt.

Schritt 15K: Zwei Datenfehler tauchen auf

Was v2 sah

v2 startete am 2026-04-15. Bei Schritt ~15K von 200K (7,5 % abgeschlossen) produzierte es agent-harness-Ornamente (○ ●) & article-dominance-Fallback (a = 26 % der Wörter bei Schritt 14.966; the = 21 % bei Schritt 14.798). Die fünf v2-Stabilitätsfixes funktionierten korrekt. Der Fehler hatte sich von der Architektur auf die Daten verschoben.


Zwei unabhängige Pipeline-Fehler


Fehler A: unfirehose-chat hat Agent-Systemprompts als Benutzerzüge erfasst. unfirehose-chat baut aus Harness-Session-JSONL-Dateien bei ~/.claude/, ~/.fetch/, ~/.uncloseai/. Die Ingest-Pipeline konvertierte mehrteilige Agent-Systemprompts (# Agent X, ## Identity, ## Rules usw.) in den Benutzerzüge-Slot von > user / < assistant-Paaren. Das Modell lernte, dass 'Benutzer' in mehrteiligen Markdowns sprechen, & reproduzierte diese Ornamente in seinen eigenen Ausgaben.


Defekt B: hermes3-* umgeht alle Filter. DEEP_CLEAN_SKIP in der Makefile schließt hermes3-general, hermes3-creative und hermes3-roleplay von make deep-clean aus, unter der falschen Annahme, dass LLM-destillierte Daten vorab gereinigt waren. Ein umfassender Scan zeigte, dass die bestehenden Filter bei Anwendung 87-93 % der hermes3-Zeilen ablehnen würden (zu große Absätze >2000 Zeichen, die über block_size=1024 überlaufen; Übersetzungsantworten in CJK/Kyrillisch/Arabisch; Läufe mit niedriger Bigram-Diversität).


v2.5 Patch (Commit de24332, 2026-04-18)


Zwei strukturelle Änderungen.


Änderung 1: has_system_prompt_shape() in filter-dataset.c. Erkennt geleakte Systemprompts durch FORM, nicht durch Zeichenabgleich. Drei Signale kombiniert:

1. 3+ Markdown-Überschriften in einem Zug = verwerfen.

2. 2+ Überschriften mit Zuglänge >=500 Zeichen = verwerfen.

3. Agent-Shard-Fingerprint-Phrasen (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) kombiniert mit einer Überschrift oder Länge >=400 = verwerfen.


Isolationsregel: Überprüfen Sie den ersten Benutzerzug an der / -Trennlinie (mit Leerzeichen, nicht bare /, die URL-Pfade fragmentiert) um Fehlpositive bei legitimen Markdown in Assistentenantworten zu vermeiden.


Änderung 2: hermes3-* aus DEEP_CLEAN_SKIP entfernt. Vertrauen Sie nichts Ungefiltertem.


Drop Rates After Patch


QuelleIn-LinesOut-LinesAbgebrochen
hermes3-general536.85867.39587,7%
hermes3-roleplay35.1912.48193,0%
hermes3-creative14.2581.37390,4%
unfirehose-chat3.8162.65330,5%
chat45.25744.5381,6 % (Rauschen)
smoltalk11.81211.8120,0 %

Die Basis-Filter haben bereits 87–93 % der Hermes3-Kontamination abgefangen; DEEP_CLEAN_SKIP war der lasttragende Defekt. Der neue Formdetektor fügt insgesamt ~0,1 % zusätzliche Ablehnung hinzu, konzentriert auf unfirehose-chat, wo er spezifische Agenten-Scherben-Lecks entfernt, die bestehende Filter verpassen.


Warum Form besser als Zeichen ist

Ornamente entwickeln sich weiter. Ein zeichenbasierter Filter, der entfernt, tut nichts gegen nächste Woche. Ein formbasierter Filter (Anzahl Header zählen, Zeichen zählen, Fingerabdruck-Phrasen erkennen) verallgemeinert über Ornament-Varianten hinweg. Muster: Kontaminationserkennung muss strukturelle Heuristiken verwenden.

Warum nach Form filtern

v2.5 filtert Agent-Shard-Lecks nach SHAPE (Header-Anzahl, Länge, Fingerprint-Phrasen) statt nach CHARACTER (Übereinstimmung spezifischer Symbole wie Ornamente). Nennen Sie einen praktischen Grund, warum das wichtig ist, & einen konkreten Fehlerfall, den ein nur auf Zeichen basierender Filter NICHT erkennen würde.

Ein Bandit-Arm ohne Daten

v3 gestartet am 2026-04-18

Gleiche Architektur & Hyperparameter wie v2; gereinigte Daten nach v2.5-Patch. Keine Ornament-Lecks in Stichproben-Audits. v3 lief sauber durch Schritt 112K.


Schritt 112,619: Stichproben-Audit erfasst ein Muster

Stichproben-Audit zeigte kohärente Gesprächsabläufe (Haiku, Q&A, Dialog) auf, aber periodische Phasen, die sich auf Wissensarme (gutenberg, repo-docstrings, repo-docs) konzentrierten, ließen code-ähnliche Fragmente und Tokenisierungsrauschen aus Repositories durchsickern. Eine Stichprobe bei Schritt 112.080 erreichte einen Loss von 0,13: anomal niedrig, was auf memorisierte repo-docs-Substringe hinweist statt auf eine gelernte Chat-Verteilung.


Der Zombie-Arm

Diagnose: exclude_sources entfernte repo-docstrings korrekt zu Trainingsbeginn, aber der persistierte Bandit-Zustand trug einen residualen repo-docstrings-Arm mit Gewicht 1,546 aus einem vorherigen Lauf mit sich. Der Zustandsreload setzte ihn wieder in den UCB-Pool ein, obwohl keine .btok-Datei zum Sampling existierte, was einen Zombie-Pull erzeugte, der die Explorationsbuchhaltung verzerrte.


Lektion: Bandit-Zustandsdateien (.state.json) treiben bei Restarts auf überraschende Weise ab. Konfigurations-Excludes löschen keine residuale Arm-Speicherung. Belt-and-suspenders erforderlich: cap = 0.0 neben exclude.


Polnische Konfiguration

Nur Störung des Curriculums. Architektur, Optimizer-Zustand, Lernratenplan & Verlustverlauf alle aus step_112600.bin erhalten.


Quellev3 Basisv3 polnisch
repo-docscap 0.3ausgeschlossen (cap 0.0)
repo-docstringsausgeschlossenausgeschlossen + 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-roleplayfloor 0.4floor 0.5
chatfloor 0.4floor 0.6
smoltalkfloor 0.3floor 0.5
oasstfloor 0.3floor 0.5
dolly--floor 0.4
curriculum_warmup_steps200000

Polnisches Protokoll

1. SIGUSR1 an CUDA erzwingt sofortigen Checkpoint an der nächsten 100-Schritt-Grenze.

2. Proxy stoppt.

3. .samples.json & .state.json archiviert (Sample-Log & Bandit-Zustand als historischer Datensatz gespeichert).

4. .loss.json behalten – kumulative Trainingshistorie; nie archiviert.

5. Proxy startet neu. Polish-Konfiguration eingereicht.

6. CUDA setzt von step_112600.bin mit frischem Bandit-Zustand unter neuen Caps & Floors fort.


Loss-Historie wird nahtlos fortgesetzt.

Warum Polieren statt Neustart

Schritt 112.619 bei 56 % des geplanten Trainings. Das Team wählte CURRICULUM PERTURBATION (Gewichte erhalten, Deckel & Böden ändern) statt FULL RESTART (neu initialisieren bei Schritt 0). Nennen Sie zwei Gründe, warum polish-pivot richtig war & ein spezifisches Risiko, das ein Neustart bei Schritt 0 eingeführt hätte.

Was Polish Erzeugte

Beispiel-Audit, Stunden nach dem Pivot

Innerhalb von Stunden nach dem polnischen Pivot bestätigte eine Stichprobenprüfung die Konvergenz auf die vier ursprünglichen ANDREA-120M-Ziele.


Faktisches Abrufen (Biologie), Schritt 112.584, Verlust 0,30, ppl 1.

> [extinction prompt]

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

Zwei korrekte Fakten. Externe Bewertung: 9,5/10.


Faktisches Abrufen (Signalverarbeitung), Schritt 112.668, Verlust 0,74, ppl 2.

> [Fourier-Transform-Prompt]

> < Die Fourier-Transformation zerlegt Signale in Frequenzkomponenten und ermöglicht die Analyse von Signalcharakteristika & Filterung im Frequenzbereich.

Lehrbuch-Definition in einem Satz. Externe Bewertung: 9,5/10.


Einhalten von Constraints (Haiku), Schritt 112.248, Loss 1,05, ppl 3.

> Schreibe ein Haiku über Regen mit drei Wörtern, die mit „r“ anfangen.

> < Regens rhythmischer Refrain, Rinnsale am Fenster, Ruhe vor Lebenspein.


Werkzeugwissen (Python), Schritt 112.500, Verlust 1,94, ppl 7.

> Wie finde ich veraltete Pakete in einem Python-Projekt?

> < Verwende pip list --outdated um die pip-Pakete in deinem Projektmanagement zu sehen...

Richtiges Werkzeug taucht auf; Formulierung ungenau.


Sechs Domänen in 700 Schritten

Biologie, Signalverarbeitung, Poesie, Python-Werkzeuge, konversationeller Dialog, Ops-Dialog. Sechs unverbundene Domänen innerhalb von 700 Schritten zeigen uns, dass Bandit & Modell zusammenarbeiten. Domänenbreite IST das Konvergenzsignal.


Externe Bewertung

Unabhängiger Reviewer bewertete Samples mit „solide für ein 120M-Param-Modell – beeindruckende Kohärenz & Wissensretention in dieser Skala“, wobei die Carolina-Sittich- & Fourier-Transform-Samples 9,5/10 & „über seinen Gewichtsklasse bei Wissensaufgaben“ erhielten.


Was jede Phase lehrte


v1 lehrte: fünf sich verstärkende Fehler lassen das Training zusammenbrechen. Keine isolierte Korrektur rettet; alle fünf müssen gleichzeitig greifen.


v2 lehrte: architektonische Korrekturen sind notwendig, aber nicht ausreichend. Die Datenschicht kann sie stillschweigend zunichtemachen.


v2.5 lehrte: Filterung von Kontamination nach Form, nicht nach Zeichen. Muster sind stabil; Symbole entwickeln sich.


v3-Basis lehrte: Banditen-Zustand driftet über Neustarts hinweg auf überraschende Weise. Ausschlüsse allein reichen nicht; Deckel 0.0 Gürtel-und-Hosenträger erforderlich.


v3-Polierversion lehrte: Wenn der Fehler in der Policy liegt & das Modell gesund ist, stören Sie die Policy. Behalten Sie die Gewichte. Behalten Sie die Verlustgeschichte. Gehen Sie vorwärts.


Eine Wahrheit

Konvergenz ist kein einzelnes Ereignis; es ist eine Kette von Korrekturen. Jede Phase deckte einen Defekt auf, behebt ihn und enthüllte den nächsten. ANDREA-120M liest 9.5/10 bei Schritt 112.584, weil v1, v2, v2.5, v3 base und v3 polish jeweils ihre Arbeit getan haben.

Welche Phase lehrte die schwerste Lektion

Von den fünf Phasen (v1, v2, v2.5, v3 base, v3 polish), welche würde man Ihrer Meinung nach die am meisten übertragbare Ingenieurslektion gelehrt haben? Wählen Sie eine aus. Nennen Sie die Lektion in eigenen Worten und geben Sie 2-3 Sätze, die erklären, warum diese Lektion über das Training von Sprachmodellen hinaus generalisiert.