Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1030,7 +1030,6 @@
"step 3: loss = 1.7523 grad_norm = 2.203 mean_token_accuracy = 0.6054\n",
"train_loss moyen = 1.949\n",
"```\n",
"\n",
"**Verdict honnête** : sur 3 steps le loss **oscille** (1.92 → 2.17 → 1.75) au lieu de décroître — 50 exemples, c'est trop court pour un SFT concluant. La section 8 montre toutefois qu'après la cure d'état (#12716), la génération SFT reste **cohérente** — pas d'effondrement : 3 steps produisent une reformulation légèrement différente, pas une sortie dégénérée. Un modèle déjà instruct-tuned (comme Qwen3.5-0.8B) peut être fragilisé par une LR LoRA agressive (2e-4) sur un petit subset — **hypothèse qualitative** (le grad_norm 4.78 au step 2 signale une optimisation turbulente), aucune mesure disjointe ne l'établit. Pour observer la convergence classique (loss décroissant), il faut un dataset plus grand (quelques milliers d'exemples) et plusieurs epochs — la structure du notebook est la même, seule l'échelle change.\n"
]
},
Expand Down Expand Up @@ -1254,7 +1253,6 @@
"Piège d'état (mesuré, #12716) : `SFTTrainer` laisse le **gradient checkpointing actif** et `use_cache=False` sur le modèle après `trainer.train()`. Pour un hybride Qwen3.5 (couches d'attention linéaire), générer dans cet état réinitialise l'état récurrent à chaque step et produit des sorties dégénérées (« UnESG. ») — le warning `use_cache=True is incompatible with gradient checkpointing` en tête de sortie en était la signature. On réinitialise l'état d'inférence avant de générer : l'état post-entraînement n'est pas l'état d'inférence.\n",
"\n",
"Après training, on compare deux completions sur un prompt nouveau, jamais vu en training : une fois en utilisant `base_model` (sans adapters), une fois en utilisant `peft_model` (avec adapters LoRA SFT actifs).\n",
"\n",
"**Pattern observé sur ce run (post-cure #12716, verdict honnête)** : les deux générations sont **cohérentes**. Le `base_model` (adapters désactivés) définit correctement un Reward Model ; le `peft_model` (adapters SFT actifs) répond aussi de façon fluide, avec une formulation légèrement plus maladroite (« modèle de prévisionnement »). **Pas d'effondrement** : le `UnESG.` cité plus haut est l'ancien symptôme d'état **pré-#12716**, disparu avec la cure — il ne doit pas être lu comme un résultat du SFT courant.\n",
"\n",
"Trois choses à bien séparer :\n",
Expand Down Expand Up @@ -1611,7 +1609,7 @@
"| LR LoRA | 2e-4 | 2e-4 (rapporté) |\n",
"| Format chat | ChatML Qwen (`<\\|im_start\\|>`/`<\\|im_end>`) | `User:/Assistant:` + EOT |\n",
"| Loss masking | `completion_only_loss=True` (TRL) | `ignore_index=-100` sur prompt |\n",
"| Convergence sur 3 steps | loss 2.18 → 1.89 (oscillant) | non publié |\n",
"| Convergence sur 3 steps | loss 1.92 → 1.75 (oscillant, train_loss 1.949) | non publié |\n",
"\n",
"Le verdict qualitatif est aligné : **avec un SFT court et peu de données,\n",
"RL ne crée pas la qualité — il l'amplifie ou la dégrade**. PT-04 documente\n",
Expand Down
Loading