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

un

ospite
1 / ?
torna alle lezioni

Sedici Giorni di region region region

L'Esecuzione Che È Finita

ANDREA-120M v1 è stato lanciato il 2026-03-22 & terminato il 2026-04-15 allo step 165.000 dei 200.000 pianificati. Minimo EMA loss: 3.23 allo step 110K (casualità random: ln(8449) = 9.04, quindi la loss sembrava rispettabile). I sample no.


Passo 80K: regione regione regione regione regione regione regione
Passo 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Passo 140K: giochi, giochi, giochi, giochi, giochi, giochi
Passo 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy

Sedici giorni di calcolo RTX 4090. 130W continui. Spazzatura dal passo 80K in poi.


Da microGPT ad ANDREA-120M


Perché microGPT ha funzionato ma 120M no

ANDREA-12M ha usato lo stesso proxy di addestramento & è passato. Matrici di pesi più piccole si sono dimostrate più robuste agli shock di gradiente. La scalatura a 120M parametri ha moltiplicato ogni fragilità. Cinque fallimenti si sono composti.


Cinque fallimenti composti


Fallimento 1: Nessun clipping del gradiente. Le transizioni di sorgente ogni 7-42 passi producevano picchi di gradiente illimitati. Un singolo batch cattivo a 120M può spingere il modello in un attrattore degenerato da cui l'ottimizzatore non può sfuggire. Il modello da 12M è sopravvissuto perché pesi più piccoli tolleravano gli shock.


Fallimento 2: Nessun warmup LR. Il learning rate è passato da 0 al picco immediatamente su pesi appena inizializzati. Il modello è caduto in un cattivo bacino prima che si potessero formare rappresentazioni.


Fallimento 3: Nessun weight decay. Adam vanilla ha permesso pesi arbitrariamente grandi che hanno amplificato pattern di ripetizione a capacità 120M.


Fallimento 4: Nessun monitoraggio della qualità dei sample. eval_chat_quality() era collegato solo al runner multi-fase legacy; il curriculum firehose non lo ha mai invocato. Il modello ha prodotto spazzatura dal passo 80K in poi, non rilevata per 10+ giorni.


Fallimento 5: Bandit ha premiato fonti ripetitive. repo-docs, repo-docstrings e unfirehose-chat hanno ottenuto i punteggi più alti (ricompense medie 340-453) perché il contenuto strutturato a lista riduce trivialmente la cross-entropy. Il bandit ha nutrito il modello con più di ciò che lo ha fatto degenerare.


Compounding

Nessun singolo fallimento da solo avrebbe fatto collassare v1. Ognuno amplificava gli altri. Shock di gradiente (1) senza warmup (2) colpiscono un modello appena inizializzato con pesi arbitrariamente grandi (3) producendo ripetizioni che il bandit premiava (5) mentre nessuno stava controllando l'output (4). Cinque cause intersecanti, un collasso.

Perché Cinque Fallimenti, Non Uno

Scegli QUALSIASI DUE dei cinque fallimenti di v1. Per ciascuno, spiega in una frase: (a) qual era il fallimento; (b) come interagiva specificamente con un altro dei cinque fallimenti per amplificare il danno.

Una Correzione Per Ogni Fallimento

Configurazione v2 (2026-04-15)


CorrezioneColpisce il fallimentoImplementazione
Clip del gradienteF1 (nessun clipping)Norma L2 globale, max_norm=1.0; tre kernel CUDA (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) calcolano e applicano pre-Adam
Riscaldamento LRF2 (nessun warmup)Rampa lineare da 0 a picco su 2000 step. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (nessun weight decay)Weight decay desacoplato (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Coherence-gated early stoppingF4 (nessun monitoraggio)Punteggio per ogni campione (diversità bigram/trigram/parola/carattere). Arresto automatico dopo 5 campioni consecutivi con punteggio inferiore a 30
Curriculum warmupF5 (bandit mangia ripetizioni)Primi 20K step limitati a 7 fonti chat/prosa; firehose si attiva dopo; repo-docstrings esclusi completamente

Inoltre sample_every ridotto da 200 a 100 step (cadenza audit raddoppiata), & cappo repo-docs ridotto da 0.5 a 0.3.


Back-Test

Coherence gate back-testato su v1: si sarebbe attivato al step 132K, risparmiando 3.8 giorni di compute. Il gate da solo avrebbe ridotto il compute sprecato di v1 del ~30%; le altre quattro correzioni impediscono a v1 di raggiungere mai quel trigger del gate.


Cosa v2 NON Ha Corretto

Contaminazione dei dati. v2 ha considerato affidabili le fonti hermes3-* come 'pre-pulite' perché provenivano da un insegnante LLM. DEEP_CLEAN_SKIP nel Makefile ha escluso hermes3-general, hermes3-creative e hermes3-roleplay da make deep-clean. unfirehose-chat ha catturato i prompt di sistema dell'agente come turni utente. Questi due difetti aspettavano al livello dei dati, pronti a emergere.

Mappatura delle Correzioni ai Fallimenti

Tre delle correzioni di v2 si collegano chiaramente a un fallimento di v1 ciascuno. Abbina: (a) gradient clipping (max_norm=1.0); (b) LR warmup (rampa lineare di 2000 step); (c) AdamW con weight_decay=0.01. Per ciascuna, nomina il fallimento di v1 che affronta e spiega in una frase PERCHÉ questa correzione specifica contrasta quel fallimento.

Passo 15K: Due Difetti nei Dati Emergono

Cosa ha Visto v2

v2 è stato lanciato il 2026-04-15. Al passo ~15K su 200K (7,5% completato), i campioni producevano ornamenti agent-harness (○ ●) & fallback article-dominance (a = 26% delle parole al passo 14.966; the = 21% al passo 14.798). Le cinque correzioni di stabilità v2 funzionavano correttamente. Il fallimento si era spostato dall'architettura ai dati.


Due Difetti Indipendenti nel Pipeline


Difetto A: unfirehose-chat ha catturato i prompt di sistema agent come turni utente. unfirehose-chat costruisce dai file JSONL delle sessioni harness in ~/.claude/, ~/.fetch/, ~/.uncloseai/. Il pipeline di ingestione ha convertito i prompt di sistema agent multi-sezione (# Agent X, ## Identity, ## Rules, ecc.) nello slot del turno utente delle coppie > user / < assistant. Il modello ha imparato che gli 'utenti' parlano in markdown multi-sezione, & ha riprodotto quegli ornamenti nelle sue proprie uscite.


Difetto B: hermes3-* ha bypassato tutti i filtri. DEEP_CLEAN_SKIP nel Makefile ha escluso hermes3-general, hermes3-creative e hermes3-roleplay da make deep-clean sulla falsa ipotesi che i dati distillati dall'LLM fossero pre-puliti. Una scansione esaustiva ha mostrato che i filtri esistenti, quando applicati, avrebbero respinto l'87-93% delle righe hermes3 (paragrafi oversize >2000 caratteri che traboccano block_size=1024; risposte di traduzione in CJK/Cirillico/Arabo; run con bassa diversità bigramma).


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


Due cambiamenti strutturali.


Cambiamento 1: has_system_prompt_shape() in filter-dataset.c. Rileva i prompt di sistema trapelati per FORMA, non per corrispondenza di caratteri. Tre segnali combinati:

1. 3+ intestazioni markdown in un turno = scarta.

2. 2+ intestazioni con lunghezza turno >=500 caratteri = scarta.

3. Frasi fingerprint shard-agente (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) combinate con qualsiasi intestazione o lunghezza >=400 = scarta.


Regola di isolamento: controlla il primo turno utente al separatore / (con spazi, non / nudo che frammenta i percorsi URL) per evitare falsi positivi su markdown legittimo nelle risposte dell'assistente.


Cambiamento 2: hermes3-* spostato fuori da DEEP_CLEAN_SKIP. Non fidarti di nulla non filtrato.


Tassi di Drop Dopo il Patch


sourcein-linesout-linesdropped
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45.25744.5381,6% (rumore)
smoltalk11.81211.8120,0%

I filtri baseline stavano già catturando l'87-93% della contaminazione hermes3; DEEP_CLEAN_SKIP era il difetto portante. Il nuovo rilevatore di forma aggiunge ~0,1% di rifiuto aggiuntivo complessivo, concentrato in unfirehose-chat dove rimuove perdite specifiche di shard-agent che i filtri esistenti non colgono.


Perché la Forma Batte il Carattere

Gli ornamenti evolvono. Un filtro di corrispondenza caratteri che elimina non fa nulla contro la prossima settimana. Un filtro basato sulla forma (conta intestazioni, conta caratteri, riconosce frasi fingerprint) generalizza attraverso varianti di ornamenti. Pattern: il rilevamento della contaminazione deve usare euristiche strutturali.

Perché Filtrare per Forma

I filtri v2.5 filtrano le perdite agent-shard per SHAPE (conteggio header, lunghezza, frasi fingerprint) piuttosto che per CHARACTER (corrispondenza di simboli specifici come ornamenti). Fornisci una ragione pratica per cui questo importa & un modo di fallimento concreto che un filtro solo-character NON rileverebbe.

Un Braccio Bandit senza Dati

v3 Lanciato 2026-04-18

Stessa architettura & iperparametri di v2; dati puliti dopo la patch v2.5. Zero perdite di ornamenti negli audit di campione. v3 ha funzionato pulitamente fino al passo 112K.


Passo 112,619: L'Audit di Campione Rileva un Pattern

L'audit di campione ha rivelato sequenze conversazionali coerenti (haiku, Q&A, dialogo) ma fasi periodiche focalizzate su knowledge arms (gutenberg, repo-docstrings, repo-docs) che hanno fatto trapelare frammenti simili a codice e rumore di tokenizzazione del repository. Un campione al passo 112,080 ha raggiunto una loss di 0.13: anomalmente bassa, segnalando sottostringhe memorizzate di repo-docs piuttosto che una distribuzione di chat appresa.


Il Braccio Zombie

Diagnosi: exclude_sources ha correttamente rimosso repo-docstrings all'inizio dell'addestramento, ma lo stato persistente del bandit ha portato un braccio residuo repo-docstrings con peso 1.546 da una run precedente. Il reload dello stato lo ha reintegrato nel pool UCB anche se non esisteva un .btok da cui campionare, producendo una pull zombie che ha distorto la contabilità dell'esplorazione.


Lezione: i file di stato del bandit (.state.json) derivano in modi sorprendenti attraverso i riavvii. Le esclusioni di configurazione non cancellano la memoria residua del braccio. Serve una doppia protezione: cap = 0.0 insieme all'exclude.


Configurazione Polish

Perturbazione del curriculum solamente. Architettura, stato dell'ottimizzatore, programmazione del learning rate e storico delle loss tutti preservati da step_112600.bin.


Sourcev3 basev3 polish
repo-docscap 0.3escluso (cap 0.0)
repo-docstringsesclusoescluso + 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

Protocollo Polacco

1. SIGUSR1 a CUDA forza un checkpoint immediato al prossimo confine di 100 step.

2. Il proxy si ferma.

3. .samples.json & .state.json archiviati (log di campione & stato bandit salvati come record storico).

4. .loss.json mantenuto -- cronologia cumulativa dell'addestramento; mai archiviato.

5. Il proxy riavvia. Configurazione Polish inviata.

6. CUDA riprende da step_112600.bin con stato bandit fresco sotto nuovi cappi & pavimenti.


La cronologia delle loss continua ininterrotta.

Perché Polish, Non Riavvio

Step 112,619 seduto al 56% del training pianificato. Il team ha scelto CURRICULUM PERTURBATION (preserva pesi, cambia caps & floors) invece di FULL RESTART (re-inizializza a step 0). Dai due motivi per cui polish-pivot era corretto & un rischio specifico che andare a step 0 avrebbe introdotto.

Cosa Ha Prodotto Polish

Audit di Esempio, Ore Dopo il Pivot

Entro poche ore dalla svolta polacca, un audit di campione ha confermato la convergenza sui quattro obiettivi originali ANDREA-120M.


Richiamo fattuale (biologia), step 112,584, loss 0.30, ppl 1.

> [extinction prompt]

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

Due fatti corretti. Valutazione esterna: 9.5/10.


Richiamo fattuale (elaborazione del segnale), step 112,668, loss 0.74, ppl 2.

> [Prompt trasformata di Fourier]

> < La trasformata di Fourier decompone i segnali nei loro componenti di frequenza, permettendo l'analisi delle caratteristiche del segnale e il filtraggio nel dominio della frequenza.

Definizione in una frase dal libro di testo. Valutazione esterna: 9.5/10.


Rispetto dei vincoli (haiku), passo 112,248, loss 1.05, ppl 3.

> Scrivi un haiku sulla pioggia usando tre parole che iniziano con 'r'.

> < Ritornello ritmico della pioggia, Rivoli sul finestrino, Respiro dal dolore della vita.


Conoscenza degli strumenti (Python), passo 112.500, loss 1.94, ppl 7.

> Come trovo i pacchetti obsoleti in un progetto Python?

> < Usa pip list --outdated names per vedere l'elenco dei pacchetti pip nel tuo project management...

Strumento corretto emerge; formulazione imprecisa.


Sei Domini in 700 Passi

Biologia, elaborazione del segnale, poesia, strumenti python, dialogo conversazionale, dialogo operativo. Sei domini non correlati entro 700 passi ci dice che il bandit & il modello stanno lavorando in concerto. La breadth dei domini È il segnale di convergenza.


Valutazione Esterna

Un revisore indipendente ha valutato i campioni come 'solidi per un modello da 120M parametri -- impressionante coerenza e ritenzione della conoscenza a questa scala,' con i campioni sul parrocchetto della Carolina e la trasformata di Fourier valutati 9.5/10 e 'sopra la sua categoria nei compiti di conoscenza.'


Cosa Ha Insegnato Ogni Fase


v1 ha insegnato: cinque fallimenti cumulativi collassano l'addestramento. Nessuna correzione isolata lo salva; tutte e cinque devono atterrare contemporaneamente.


v2 ha insegnato: le correzioni architettoniche sono necessarie ma non sufficienti. Il livello dati può sconfiggerle silenziosamente.


v2.5 ha insegnato: filtrare la contaminazione per forma, non per carattere. I pattern sono stabili; i simboli evolvono.


v3 base ha insegnato: lo stato bandit deriva attraverso i riavvii in modi sorprendenti. Le esclusioni da sole non bastano; è richiesto un limite 0.0 belt-and-suspenders.


v3 polish ha insegnato: quando il fallimento è nella policy e il modello è sano, perturba la policy. Mantieni i pesi. Mantieni la cronologia delle perdite. Vai avanti.


Una Verità

La convergenza non è un singolo evento; è una catena di correzioni. Ogni fase ha esposto un difetto, lo ha corretto e ha rivelato il successivo. ANDREA-120M legge 9.5/10 al passo 112,584 perché v1, v2, v2.5, v3 base e v3 polish hanno ciascuno fatto il loro lavoro.

Quale Fase Ha Insegnato la Lezione Più Difficile

Tra le cinque fasi (v1, v2, v2.5, v3 base, v3 polish), quale diresti abbia insegnato la lezione di ingegneria più trasferibile? Sceglirne una. Enuncia la lezione con le tue parole e dai 2-3 frasi che spiegano perché questa lezione si generalizza oltre l'addestramento dei modelli linguistici.