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

un

invité
1 / ?
retour aux leçons

Seize jours de region region region

L'exécution qui s'est terminée

ANDREA-120M v1 a été lancé le 2026-03-22 & terminé le 2026-04-15 à l'étape 165 000 sur 200 000 prévues. Minimum de perte EMA : 3,23 à l'étape 110K (hasard aléatoire : ln(8449) = 9,04, donc la perte semblait respectable). Les échantillons, non.


Étape 80K : région région région région région région région
Étape 110K : ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Étape 140K : jeux, jeux, jeux, jeux, jeux, jeux
Étape 165K : Budy Budy Budy Budy Budy Budy Budy Budy Budy

Seize jours de calcul RTX 4090. 130W continu. Déchets à partir de l'étape 80K.


De microGPT à ANDREA-120M


Pourquoi microGPT a fonctionné mais pas 120M

ANDREA-12M a utilisé le même proxy d'entraînement & a réussi. Des matrices de poids plus petites se sont avérées plus robustes aux chocs de gradient. L'échelle à 120M paramètres a multiplié chaque fragilité. Cinq échecs cumulés.


Cinq échecs cumulés


Échec 1 : Pas de clipping de gradient. Les transitions de source tous les 7-42 pas produisaient des pics de gradient non bornés. Un seul mauvais lot à 120M peut pousser le modèle dans un attracteur dégénéré dont l'optimiseur ne peut s'échapper. Le modèle 12M a survécu car des poids plus petits toléraient les chocs.


Échec 2 : Pas de réchauffement du LR. Le taux d'apprentissage a sauté de 0 à son pic immédiatement sur des poids fraîchement initialisés. Le modèle est tombé dans un mauvais bassin avant que des représentations puissent se former.


Échec 3 : Pas de décroissance de poids. Adam vanilla a permis des poids arbitrairement grands qui ont amplifié les motifs de répétition à une capacité de 120M.


Échec 4 : Pas de surveillance de la qualité des échantillons. eval_chat_quality() n'était connecté qu'au runner multi-phases legacy ; le curriculum en mode firehose ne l'invoquait jamais. Le modèle a produit des déchets à partir de l'étape 80K, indétectés pendant plus de 10 jours.


Échec 5 : Bandit récompensant les sources répétitives. repo-docs, repo-docstrings et unfirehose-chat ont obtenu les scores les plus élevés (récompenses moyennes 340-453) car le contenu structuré en liste réduit trivialement l'entropie croisée. Le bandit a nourri le modèle avec plus de ce qui le faisait dégénérer.


Effet de composition

Aucun échec isolé n'aurait fait s'effondrer v1. Chacun amplifiait les autres. Les chocs de gradient (1) sans échauffement (2) frappaient un modèle fraîchement initialisé avec des poids arbitrairement grands (3), produisant de la répétition que le bandit récompensait (5) pendant que personne ne surveillait la sortie (4). Cinq causes intersectantes, un effondrement.

Pourquoi cinq échecs, pas un

Choisissez N'IMPORTE QUELS DEUX des cinq échecs de v1. Pour chacun, expliquez en une phrase : (a) ce qu'était l'échec ; (b) comment il interagissait spécifiquement avec un autre des cinq échecs pour aggraver les dommages.

Une correction par échec

Configuration v2 (2026-04-15)


CorrectionVise l'échecImplémentation
Limitation des gradientsF1 (pas de limitation)Norme L2 globale, max_norm=1.0 ; trois noyaux CUDA (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) calculent et appliquent avant Adam
Échauffement du LRF2 (pas d'échauffement)Rampe linéaire de 0 à pic sur 2000 étapes. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (pas de weight decay)Decoupled weight decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Coherence-gated early stoppingF4 (pas de monitoring)Score chaque échantillon (diversité bigram/trigram/mot/char). Arrêt automatique après 5 échantillons consécutifs en dessous de 30
Curriculum warmupF5 (bandit mange la répétition)Premiers 20K pas restreints à 7 sources chat/prose ; firehose activé après ; repo-docstrings exclus entièrement

Plus sample_every réduit de 200 à 100 pas (cadence d'audit doublée), & plafond repo-docs réduit de 0.5 à 0.3.


Back-Test

Coherence gate back-testé sur v1 : aurait déclenché au pas 132K, économisant 3.8 jours de calcul. La gate seule aurait réduit le calcul gaspillé de v1 de ~30% ; les quatre autres fixes empêchent v1 d'atteindre ce déclencheur de gate.


Ce que v2 N'a PAS Corrigé

Contamination des données. v2 a fait confiance aux sources hermes3-* comme étant « pré-nettoyées » parce qu'elles provenaient d'un enseignant LLM. DEEP_CLEAN_SKIP dans le Makefile a exclu hermes3-general, hermes3-creative, & hermes3-roleplay de make deep-clean. unfirehose-chat a capturé les invites système des agents comme des tours utilisateur. Ces deux défauts attendaient au niveau des données, prêts à refaire surface.

Associer les Corrections aux Échecs

Trois des corrections de v2 se connectent directement à un échec de v1 chacune. Associez : (a) gradient clipping (max_norm=1.0) ; (b) LR warmup (rampe linéaire sur 2000 étapes) ; (c) AdamW avec weight_decay=0.01. Pour chacune, nommez l'échec de v1 qu'elle adresse & expliquez en une phrase POURQUOI cette correction spécifique contre cet échec.

Étape 15K : Deux défauts de données émergent

Ce que v2 a vu

v2 lancé le 2026-04-15. À l'étape ~15K sur 200K (7,5 % terminé), les échantillons produisaient des ornements agent-harness (○ ●) & repli article-dominance (a = 26 % des mots à l'étape 14 966 ; the = 21 % à l'étape 14 798). Les cinq correctifs de stabilité v2 fonctionnaient correctement. L'échec s'était déplacé de l'architecture vers les données.


Deux défauts indépendants de pipeline


Défaut A : unfirehose-chat a capturé les invites système agent comme tours utilisateur. unfirehose-chat construit à partir des fichiers JSONL de session harness à ~/.claude/, ~/.fetch/, ~/.uncloseai/. Le pipeline d'ingestion a converti les invites système agent multi-sections (# Agent X, ## Identity, ## Rules, etc.) dans l'emplacement tour utilisateur des paires > user / < assistant. Le modèle a appris que les 'utilisateurs' parlent en markdown multi-sections, & a reproduit ces ornements dans ses propres sorties.


Défaut B : hermes3-* a contourné tous les filtres. DEEP_CLEAN_SKIP dans le Makefile a exclu hermes3-general, hermes3-creative, & hermes3-roleplay de make deep-clean sous la fausse hypothèse que les données distillées par LLM étaient pré-nettoyées. Un scan exhaustif a montré que les filtres existants, une fois appliqués, rejetteraient 87-93 % des lignes hermes3 (paragraphes surdimensionnés >2000 caractères débordant block_size=1024 ; réponses de traduction en CJK/Cyrillique/Arabe ; séquences à faible diversité bigramme).


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


Deux changements structurels.


Changement 1 : has_system_prompt_shape() dans filter-dataset.c. Détecte les fuites de prompts système par FORME, et non par correspondance de caractères. Trois signaux combinés :

1. 3+ en-têtes markdown en un tour = rejeter.

2. 2+ en-têtes avec longueur de tour >=500 caractères = rejeter.

3. Phrases d'empreinte agent-shard (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) combinées avec n'importe quel en-tête ou longueur >=400 = rejeter.


Règle d'isolation : vérifier le premier tour utilisateur au séparateur / (avec espaces, pas / nu qui fragmente les chemins d'URL) pour éviter les faux positifs sur le markdown légitime dans les réponses de l'assistant.


Changement 2 : hermes3-* déplacé hors de DEEP_CLEAN_SKIP. Ne faire confiance à rien de non filtré.


Taux de Suppression Après le Patch


sourcein-linesout-linessupprimées
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45,25744,5381,6 % (bruit)
smoltalk11,81211,8120,0 %

Les filtres de base capturaient déjà 87-93 % de la contamination hermes3 ; DEEP_CLEAN_SKIP était le défaut porteur de charge. Le nouveau détecteur de forme ajoute ~0,1 % de rejet supplémentaire au total, concentré dans unfirehose-chat où il supprime des fuites spécifiques d'éclats d'agent que les filtres existants manquent.


Pourquoi la Forme est Supérieure au Caractère

Les ornements évoluent. Un filtre basé sur les caractères qui supprime ne fait rien contre la semaine prochaine. Un filtre basé sur la forme (compter les en-têtes, compter les caractères, reconnaître les phrases à empreinte digitale) généralise à travers les variantes d'ornements. Modèle : la détection de contamination doit utiliser des heuristiques structurelles.

Pourquoi Filtrer Par Forme

Les filtres v2.5 détectent les fuites agent-shard par **SHAPE** (nombre d'en-têtes, longueur, phrases de fingerprint) plutôt que par **CHARACTER** (correspondance de symboles spécifiques comme les ornements). Donnez une raison pratique pour laquelle cela importe & un mode de défaillance concret qu'un filtre basé uniquement sur les caractères **NE** détecterait **PAS**.

Un bras de bandit sans données

v3 Lancé le 2026-04-18

Même architecture & hyperparamètres que v2 ; données nettoyées après le patch v2.5. Zéro fuites d'ornements dans les audits d'échantillons. v3 a fonctionné proprement jusqu'à l'étape 112K.


Étape 112,619 : L'audit d'échantillon détecte un schéma

L'audit d'échantillon a révélé des tours de conversation cohérents (haïku, Q&R, dialogue) mais des phases périodiques axées sur les bras de connaissances (gutenberg, repo-docstrings, repo-docs) ont fuité des fragments semblables à du code et du bruit de tokenisation de dépôt. Un échantillon à l'étape 112,080 a atteint une perte de 0.13 : anormalement basse, signalant des sous-chaînes mémorisées de repo-docs plutôt qu'une distribution de chat apprise.


Le Bras Zombie

Diagnostic : exclude_sources a correctement supprimé repo-docstrings au début de l'entraînement, mais l'état persistant du bandit portait un bras résiduel repo-docstrings avec un poids de 1.546 d'une exécution précédente. Le rechargement de l'état l'a réintroduit dans le pool UCB même si aucun .btok n'existait pour échantillonner, produisant une traction zombie qui a déformé la comptabilité d'exploration.


Leçon : les fichiers d'état bandit (.state.json) dérivent de manière surprenante lors des redémarrages. Les exclusions de configuration n'effacent pas la mémoire résiduelle des bras. Ceinture et bretelles requises : cap = 0.0 aux côtés d'exclude.


Configuration polonaise

Perturbation du curriculum uniquement. Architecture, état de l'optimiseur, calendrier du taux d'apprentissage et historique des pertes tous préservés depuis step_112600.bin.


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

Protocole Polonais

1. SIGUSR1 vers CUDA force un point de contrôle immédiat à la prochaine limite de 100 étapes.

2. Le proxy s'arrête.

3. .samples.json & .state.json archivés (journal d'échantillons & état du bandit sauvegardés comme enregistrement historique).

4. .loss.json conservé -- historique cumulatif de l'entraînement ; jamais archivé.

5. Le proxy redémarre. Configuration Polish soumise.

6. CUDA reprend à partir de step_112600.bin avec un nouvel état de bandit sous de nouveaux plafonds & planchers.


L'historique des pertes continue sans interruption.

Pourquoi polir, pas redémarrer

L'étape 112 619 était à 56 % de l'entraînement prévu. L'équipe a choisi **PERTURBATION DU CURRICULUM** (préserver les poids, changer les plafonds & planchers) au lieu de **REDÉMARRAGE COMPLET** (réinitialiser à l'étape 0). Donnez deux raisons pour lesquelles le pivot-polissage était correct & un risque spécifique que repartir à l'étape 0 aurait introduit.

Ce que le polissage a produit

Audit d'échantillon, heures après le pivot

Quelques heures après le pivot polonais, un audit d'échantillon a confirmé la convergence sur les quatre objectifs originaux ANDREA-120M.


Rappel factuel (biologie), étape 112 584, perte 0,30, ppl 1.

> [extinction prompt]

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

Deux faits corrects. Notation externe : 9,5/10.


Rappel factuel (traitement du signal), étape 112 668, perte 0,74, ppl 2.

> [Invite à la transformée de Fourier]

> < La transformée de Fourier décompose les signaux en composantes de fréquence, permettant l'analyse des caractéristiques du signal & le filtrage dans le domaine fréquentiel.

Définition en une phrase du manuel. Notation externe : 9.5/10.


Respect des contraintes (haïku), étape 112,248, perte 1.05, ppl 3.

> Écrivez un haïku sur la pluie en utilisant trois mots qui commencent par 'r'.

> < Refrain rythmique de la pluie, Ruisseaux sur la fenêtre, Répit de la douleur de la vie.


Connaissances des outils (Python), étape 112 500, perte 1,94, ppl 7.

> Comment trouver les paquets obsolètes dans un projet Python ?

> < Utilisez pip list --outdated names pour voir la liste des paquets pip dans la gestion de votre projet...

Outil correct émerge ; formulation imprécise.


Six domaines en 700 étapes

Biologie, traitement du signal, poésie, outils python, dialogue conversationnel, dialogue ops. Six domaines non liés en 700 étapes nous indique que le bandit & le modèle travaillent de concert. L'étendue des domaines EST le signal de convergence.


Évaluation Externe

Un examinateur indépendant a évalué des échantillons : « solides pour un modèle de 120M de paramètres -- cohérence impressionnante & rétention des connaissances à cette échelle », avec les échantillons sur le perroquet de Caroline & la transformée de Fourier notés 9.5/10 & « performant au-delà de son poids sur les tâches de connaissances ».


Ce Que Chaque Phase A Appris


v1 a appris : cinq échecs composés font s'effondrer l'entraînement. Aucune correction isolée ne sauve ; les cinq doivent atterrir en même temps.


v2 a appris : les corrections architecturales sont nécessaires mais pas suffisantes. La couche de données peut les vaincre silencieusement.


v2.5 a enseigné : filtrer la contamination par forme, pas par caractère. Les motifs sont stables ; les symboles évoluent.


v3 base a enseigné : l'état bandit dérive à travers les redémarrages de manière surprenante. Les exclusions seules ne suffisent pas ; un plafonnement à 0.0 ceinture-et-bretelles est requis.


v3 polish a enseigné : quand l'échec est dans la politique & que le modèle est sain, perturber la politique. Conserver les poids. Conserver l'historique des pertes. Avancer.


Une Vérité

La convergence n'est pas un événement unique ; c'est une chaîne de corrections. Chaque phase a exposé un défaut, l'a corrigé, & a révélé le suivant. ANDREA-120M obtient 9.5/10 à l'étape 112,584 parce que v1, v2, v2.5, v3 base, & v3 polish ont chacun fait leur travail.

Quelle Phase a Appris la Leçon la Plus Difficile

Parmi les cinq phases (v1, v2, v2.5, v3 base, v3 polish), laquelle diriez-vous qu'a enseigné la leçon d'ingénierie la plus transférable ? Choisissez-en une. Énoncez la leçon en vos propres mots & donnez 2-3 phrases expliquant pourquoi cette leçon se généralise au-delà de l'entraînement de modèles de langage.