À quel point le modèle doit-il être surpris ?
Des Logits aux Probabilités
Après 12 blocs transformeurs, ANDREA-120M produit un vecteur de vocab_size nombres par position de token : les logits. Pour ANDREA-120M, vocab_size = 8449, donc chaque position produit 8449 logits. Les logits sont des scores non normalisés ; certains positifs, certains négatifs, sans contrainte de sommer à 1.
Softmax convertit les logits en une distribution de probabilités :
p_i = exp(logit_i) / sum_j exp(logit_j)
Après softmax, tous les 8449 nombres se situent entre 0 et 1, et leur somme est égale à 1. Le modèle attribue une probabilité à chaque jeton suivant possible.
Perte d'entropie croisée
L'entraînement nécessite une fonction de perte : un nombre qui mesure à quel point la prédiction du modèle était erronée pour une réponse correcte donnée. L'entropie croisée fonctionne pour la modélisation du langage :
loss_t = -log(p_correct_token_t)
Prenez la probabilité prédite par le modèle pour le vrai token suivant (celui dans les données d'entraînement). Prenez le logarithme négatif de cette probabilité. C'est la perte pour une position.
Pourquoi le logarithme négatif
Trois propriétés font de -log(p) une fonction de perte naturelle :
- -log(1) = 0: Quand le modèle prédit le bon token avec 100 % de confiance, la perte est zéro.
- -log(0) = ∞: Quand le modèle attribue une probabilité nulle au bon token, la perte est infinie. (En pratique, softmax ne sort jamais exactement 0 ; la perte reste finie mais grande.)
- Monotone : À mesure que la probabilité prédite pour le bon token augmente, la perte diminue de manière fluide.
Une confiance plus élevée sur la bonne réponse = perte plus faible. L'objectif d'entraînement est simple : maximiser la probabilité prédite pour le token suivant réel.
Perte par séquence
ANDREA s'entraîne sur des séquences de longueur 1024 (la fenêtre de contexte). Chaque séquence produit 1024 prédictions de token suivant. La perte de la séquence est la moyenne sur toutes les positions :
sequence_loss = mean(-log(p_correct_t)) pour t dans 0..1023
Les pertes de séquence sont ensuite moyennées sur le lot (ANDREA-120M utilise batch_size = 8). Un seul nombre scalaire par étape d'entraînement. Ce nombre est ce que trace la courbe de perte.
Calcul de la perte pour une position
Perplexité = exp(perte)
Une Échelle Plus Intuitive
Les valeurs de perte comme 2.0 ou 3.43 ne transmettent pas immédiatement ce que le modèle peut faire. La perplexité traduit la perte sur une échelle plus intuitive :
perplexité = exp(perte)
Perplexity répond à une question simple : parmi combien de tokens équiprobables le modèle choisit-il effectivement ? Une perplexity de 7 signifie que le modèle se comporte comme s'il choisissait parmi 7 tokens plausibles suivants à chaque position. Une perplexity de 1 signifie une prédiction parfaite.
Paires Loss-Perplexity courantes
| Loss | Perplexity | Ce que ça donne comme ressenti |
|---|---|---|
| 0.0 | 1.0 | Prédiction parfaite |
| 1.0 | 2.7 | Choisir parmi ~3 jetons plausibles |
| 2.0 | 7.4 | Territoire final SMMA ANDREA-12M |
| 3.0 | 20.1 | Texte raisonnable mais incertain |
| 3.43 | 30.9 | Minimum ANDREA-120M v1 (avant polissage) |
| 5.0 | 148 | Entraînement précoce, apprentissage de la distribution du vocabulaire |
| 9.04 | 8449 | Baseline au hasard pour le vocabulaire d'ANDREA-120M |
La perplexité remet les valeurs de perte en contexte : une perte de 2.0 signifie que le modèle choisit efficacement parmi ~7 jetons, et non parmi 8449.
La référence du hasard pur
Un modèle qui ne sait rien et devine uniformément attribue une probabilité 1/V à chaque token, où V = vocab_size :
p_uniform = 1 / V
loss = -log(1/V) = log(V)
Pour ANDREA-120M avec V = 8449 :
loss_uniform = ln(8449) ≈ 9,04
Pour ANDREA-12M avec V = 2305 :
perte_uniforme = ln(2305) ≈ 7,74
Toute perte au-dessus de cette ligne de base signifie que le modèle performe pire que le hasard. Toute perte en-dessous signifie que le modèle a appris quelque chose : il concentre la masse de probabilité sur un sous-ensemble plus petit de tokens que l'uniforme ne le ferait.
Lire une Valeur de Perte
Lissage du Bruit au Niveau des Étapes
La Perte Brute Est Bruyante
La perte par étape varie de manière erratique. Le bandit d'ANDREA choisit une source différente toutes les 7-42 étapes ; certaines sources (définitions de dictionnaire) produisent des pertes faciles ; d'autres (paragraphes de Gutenberg) produisent des pertes plus difficiles. Tracer la perte brute par étape contre le numéro d'étape produit une dispersion chaotique.
Moyenne mobile modifiée lissée (SMMA) atténue le bruit & révèle la tendance. Le proxy d'entraînement d'ANDREA calcule la SMMA comme suit :
SMMA[0] = loss[0]
SMMA[t] = (SMMA[t-1] * (N-1) + loss[t]) / N
Avec N = 100 (fenêtre de lissage par défaut d'ANDREA), chaque nouvelle valeur SMMA mélange 99 % de la SMMA précédente avec 1 % de la nouvelle perte d'étape. Les pics soudains sont absorbés ; les changements soutenus apparaissent progressivement.
Pourquoi pas juste une moyenne simple ?
Une moyenne mobile simple sur les 100 derniers pas nécessite de stocker 100 valeurs de perte. SMMA stocke une valeur (la moyenne courante) & une constante (la taille de la fenêtre). Peu gourmand en mémoire, trivial en calcul, & suffisamment lisse pour lire une courbe.
Différents poids de lissage répondent à différentes questions :
- N = 10 : suit les changements à court terme ; utile pendant les transitions de phase
- N = 100 : valeur par défaut d'ANDREA ; suit les progrès à moyen terme
- N = 1000 : uniquement la tendance à long terme ; utile à la fin de l'entraînement
Ce qu'ANDREA suit
Toutes les 100 étapes, le proxy d'entraînement écrit loss.json avec le SMMA actuel, la perte brute, le numéro d'étape, & les ventilations par source. Le tableau de bord à training.ai.unturf.com/dashboard interroge ce fichier toutes les 10 secondes. Les spectateurs externes voient les progrès en direct ; le tableau de bord est en lecture seule.
La vraie courbe d'ANDREA-12M
La recette qui a atteint SMMA 2.0
| Étapes | Perte Moy. | Notes |
|---|---|---|
| 0--2.5K | 4.50 | Init. aléatoire, apprentissage précoce |
| 2.5K--5K | 3.88 | Baisse rapide en phase de structuration |
| 5K--10K | 3.30 | Approche de la limite de cohérence |
| 10K--20K | 2.80 | Bandit trouvant le mélange optimal |
| 20K--25K | 2.40 | Plateau --- pénurie de données |
| 25K--30K | 2.50 | Données Hermes introduites + redémarrage LR |
| 30K--35K | 2.35 | Hermes intégré, nouveaux minima |
| 35K--40K | 2.10 | Focus sur 4 bras, descente abrupte |
| 40K--43.6K | 2.00 | Territoire de connaissance, SMMA sous 2.0 |
Trois phases se distinguent :
1. Descente abrupte précoce (0-10K). La perte tombe de 4.50 à 3.30 alors que le modèle apprend la distribution du vocabulaire et la structure de base des tours. La base de référence au hasard ln(2305) ≈ 7.74 reste bien au-dessus de cette courbe ; le modèle concentre rapidement la masse de probabilité une fois les embeddings stabilisés.
2. Plateau (20K-25K). La perte stagne à 2.40. Le bandit avait épuisé sa marge de manœuvre avec son mélange actuel de sources. Les données Hermes ajoutées à l'étape 25K, plus un redémarrage chaud du LR, ont brisé le plateau.
3. Descente finale (35K-43,6K). Curriculum réduit de 16 sources à 4 (hermes3-general + dictionary + gutenberg + chat). Déclin de la perte plus raide que le bandit à bras complet. SMMA final : 2.0.
ANDREA-120M v1 : Une courbe cautionnaire
Même calcul de vocabulaire : ln(8449) ≈ 9.04. ANDREA-120M v1 a atteint SMMA 3.43 à l'étape 110K (son minimum), puis a divergé :
| Étapes | Perte EMA | Tendance |
|---|---|---|
| 26K--40K | 4.29 | En convergence |
| 70K--85K | 3.60 | Meilleure région |
| 85K--110K | 3.43 | Minimum |
| 110K--125K | 3.54 | En divergence |
| 140K--155K | 4.05 | En divergence |
| 155K--165K | 4.54 | Effondrée |
Valeurs de perte numériquement raisonnables tout au long (3.43 se situe bien en dessous de la base aléatoire de 9.04). Mais les échantillons étaient en collapse de répétition : Budy Budy Budy Budy. La perte racontait une histoire trompeuse ; les audits d'échantillons ne correspondaient pas.
L'arrêt anticipé à cohérence contrôlée de v2 (activité 78) a ajouté un signal parallèle : diversité bigramme, diversité trigramme, présence de mots anglais, diversité des caractères. Lorsque les quatre scores restent en dessous de 30 pendant 5 échantillons consécutifs, l'entraînement s'arrête automatiquement. Ce signal aurait détecté v1 à l'étape 132K, économisant 3,8 jours de calcul.
Ce que chaque phase vous dit
La leçon 120M v1
Deux signaux indépendants
ANDREA-120M v1 a atteint SMMA 3.43 à l'étape 110K. Numériquement : 273× meilleur que le hasard (perplexité 31 vs taille du vocabulaire 8449). Ça a l'air génial sur la courbe.
Échantillon à l'étape 110K ::
''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
La perte et la cohérence sont des signaux indépendants. Une faible perte signifie que le modèle concentre efficacement la masse de probabilité. La cohérence signifie que le modèle produit du texte que les humains peuvent lire. La première n'implique pas la seconde.
Pourquoi cet écart existe-t-il
Un modèle peut réduire la perte en :
1. Apprenant les vrais schémas linguistiques (bon) : accord sujet-verbe, expressions courantes, associations factuelles.
2. Mémorisation d'artefacts structurels (mauvais) : motifs de répétition à haute fréquence, particularités spécifiques au dataset, attracteurs dégénérés.
Les deux réduisent la loss. Le premier produit des échantillons que les humains aiment. Le second produit Budy Budy Budy Budy. L'objectif d'entraînement seul ne peut pas les distinguer.
ANDREA-120M v3 Polish : Où Loss & Cohérence Se Sont Rencontrés
Après le polish v3 (étape 112K et suivantes), ANDREA-120M produit :
Étape 112 584, loss 0.30, ppl 1::
> [extinction prompt]
< La **ara** montano noire est vivante, le **perroquet de Caroline** est éteint.
Les deux faits corrects. Le perroquet de Caroline déclaré éteint en 1939 ; le singe araignée noir encore existant. Faible perte (0.30) ET rappel factuel cohérent.
Étape 112 500, perte 1,94, ppl 7::
> Comment trouver les paquets obsolètes dans un projet Python ?
< Utilisez `pip list --outdated` pour voir la liste des paquets pip...
Perte plus élevée (1,94 → ppl 7) mais l'outil correct émerge des données d'entraînement. La fluidité de la formulation se développe encore au 56 % de l'entraînement.
La Discipline des Deux Signaux
Les pipelines d'entraînement modernes surveillent LES DEUX :
- Courbe de perte. Vous indique si le modèle apprend quelque chose de quantifiable.
- Audit d'échantillons. Vous indique si ce que le modèle a appris est utile.
v2 a ajouté l'arrêt anticipé avec cohérence (activité 78). Le polissage v3 était une perturbation de curriculum déclenchée par des audits d'échantillons, et non par des valeurs de perte. La perte seule est nécessaire mais jamais suffisante.