Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 3 additions & 1 deletion MyIA.AI.Notebooks/RL/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ Le RL se comprend mieux en voyant l'agent apprendre. Six visualisations suivent
| 15 | [rl_15_grpo_group_relative_policy](rl_15_grpo_group_relative_policy.ipynb) | GRPO (Group Relative Policy Optimization) vs PPO sur CartPole-v1 — avantage relatif intra-groupe (sans critic) vs GAE bootstrapé, multi-seed 6 (0/1/7/42/99/123), Wilcoxon signed-rank + IC95% bootstrap. Prong B discrimination moteur. Sous-grain #13436 de l'EPIC #1454. **Verdict v3 (REPAIR c.644) : INCONCLUSIVE** (le claim initial v1 « GRPO BEATS PPO » souffrait de défauts done-mask + pad-mask — c.642 a corrigé en INCONCLUSIVE, puis c.644 a détecté 4 post-fix incohérences résolues : Wilcoxon n=4 inatteignable, verdict tri-state asymmétrique, hypothèse descriptive fausse réfutée, titre PR ré-aligné — verdict v3 INCONCLUSIVE maintenu, moyennes v3 = 299.36 vs 197.65, std = 55.26 vs 104.99) | 40-45 min |
| pt-0 | [rlpt_0_reward_model_from_scratch](rlpt_0_reward_model_from_scratch.ipynb) | Reward model from scratch (Bradley-Terry) : apprendre r(x, y) depuis des paires de préférences sur le monde de rlpt_1 — MLE BT sans `trl.RewardTrainer`, évaluation honnête vs plafond de Bayes, calibration (ECE), identification affine, multi-seed 4 | 35-40 min |
| pt-0b | [rlpt_0b_preference_dataset_bias](rlpt_0b_preference_dataset_bias.ipynb) | Biais d'un dataset de préférences, mesurés sur monde synthétique à longueurs variables : les trois biais classiques (longueur, position, annotateurs) injectés à paramètres connus, dégât mesuré contre le plafond de Bayes d'un juge **oracle non biaisé**, puis les mitigations du cahier des charges (length-controlled, swap-augmentation, annotator embedding) plus une quatrième qui sert de contrôle — verdict mesuré : aucune ne franchit 2σ, le length-controlled est **structurellement** sans effet sur une métrique de classement, l'orthogonalisation de longueur **aggrave** le biais | 40-45 min |
| pt-0c | [rlpt_0c_reward_hacking_case_study](rlpt_0c_reward_hacking_case_study.ipynb) | Anatomie d'un reward hacking **qui prend** — le pendant de `rlpt_3` : reward model Bradley-Terry appris sur des préférences à biais de longueur, PPO from scratch sur ce proxy, puis **bras de contrôle** (récompense longueur-contrôlée + oracle) qui identifie le biais comme cause. Mesures : qualité vraie 0,4545 → 0,0170 sous le proxy biaisé, contre 0,9905 sous contrôle ; basculement situé sur l'action de tête du proxy (argmax non correct à α ≈ 2,0), stable sur 4 graines | 35-40 min |
| pt-0e | [rlpt_0e_trl_DPO_SOTA](rlpt_0e_trl_DPO_SOTA.ipynb) | `trl.DPOTrainer` (bras SOTA) contre DPO from scratch et reward model explicite de `rlpt_0` sur le **même monde et les mêmes paires de préférences**, à budget égal (même β, même lr, mêmes époques) — multi-seed {0,1,7,42} départagé au plafond de Bayes : verdict **B ≈ C > A** (DPO maison 0.679 / trl 0.678 / RM 0.661 vs plafond 0.695 ; B vs C indiscernables à ±0.008 près), marges implicites B↔C corrélées ρ≈0.98 = même math ; la différence robuste est le **coût fixe** de la pile (×22 sur jouet CPU) — inclut la garde de frontière prompt/complétion (piège trl : prompt sans espace finale) | 25-35 min |
| pt-0f | [rlpt_0f_comparaison_GRPO_TRL_et_PPO_maison](rlpt_0f_comparaison_GRPO_TRL_et_PPO_maison.ipynb) | `trl.GRPOTrainer` (bras SOTA **en ligne**) contre le PPO maison de `rlpt_1` sur le **même monde et le même juge RM** (`rlpt_0`), à budget apparié (2 304 réponses évaluées par bras, même β_KL) — multi-seed {0,1,7,42} : verdict **INCONCLUSIVE** (gain maison 0.588±0.070 / trl 0.551±0.183, écart −0.037 < 2σ) ; la différence robuste est le **critic** (value net appris vs moyenne de groupe — la baseline est LE choix de design) et le coût d'écriture (60 vs 36 lignes, 61s vs 42s) — inclut le fait structurant mesuré dans l'env : `trl.PPOTrainer` a **disparu** de trl 1.10.0 (assert garde-frontière), la comparaison SOTA se fait contre le successeur factuel | 25-35 min |
| pt-1 | [rlpt_1_ppo_lm_rlhf](rlpt_1_ppo_lm_rlhf.html) | PPO pour alignement d'un petit LM (RLHF toy, from scratch, char-level) : reward model jouet, KL vs politique SFT de référence, multi-seed 4 — la signature RLHF, différenciée de rl_6c (PPO CartPole) et rl_6e (GRPO) | 40-45 min |
Expand All @@ -69,6 +70,7 @@ Les sous-séries [`rlpt_*`](.) et [GenAI/PostTraining](../GenAI/PostTraining/REA
| « Comment marche PPO-RLHF en petit, sans framework ? » | [`rlpt_1`](rlpt_1_ppo_lm_rlhf.html) | RLHF from scratch sur LM char-level — on voit les gradients, le reward model jouet, la KL vs la politique SFT de référence, multi-seed 4. |
| « Comment GRPO est câblé *intérieurement* (group rollouts, avantage intra-groupe, no critic) ? » | [`rlpt_2`](rlpt_2_grpo_minimal.html) | GRPO Qwen3.5-0.8B local **sans `trl` complet** — la boucle d'entraînement est écrite à la main, on voit chaque rollout, chaque reward. |
| « Le reward hacking est-il un attracteur spontané sur petit modèle ? Comment l'inoculer ? » | [`rlpt_3`](rlpt_3_reward_hacking.html) | Cas clinique minimal : 3 voies pour tenter de déclencher le hack, inoculation comme variable expérimentale, verdict reproductible (seed fixée). |
| « Pourquoi le reward hacking arrive-t-il — le reward model est-il vraiment la cause ? » | [`rlpt_0c`](rlpt_0c_reward_hacking_case_study.ipynb) | Isolation de cause : le biais de longueur est **lu dans les poids** du reward model appris, puis **retiré** — la qualité se rétablit (bras de contrôle), et le basculement est situé sur l'action de tête du proxy. |
| « DPO offline vs GRPO online à budget égal — qui gagne ? » | [`rlpt_4`](rlpt_4_dpo_vs_ppo.html) | Comparaison à budget 40 steps, préférences auto-fabriquées, verdict multi-seed {42,0,1,7} honnête Diebold-Mariano, dispersion inter-seed documentée. |
| « GRPO + RLVR sur un vrai LLM, avec `trl` + reward vérifiable + détecteurs Goodhart en ligne ? » | [PT-11a](../GenAI/PostTraining/PT_11a_grpo_qwen35_rlvr.ipynb), [PT-11b](../GenAI/PostTraining/PT_11b_grpo_qwen_rlvr_on_verifiers.ipynb) | La chaîne *SOTA 2024-2025* appliquée : `trl.GRPOTrainer` + Qwen3.5-0.8B QLoRA 4-bit + Z3/SymPy vérificateur + `rewardspy.watch_trl` en ligne. |
| « Quels sont les 6 détecteurs statistiques du reward hacking ? » | [PT-07](../GenAI/PostTraining/PT_07_rewardspy_reward_hacking.ipynb) | Le catalogue `rewardspy.detectors` (Component Dominance, Length Drift, etc.). Outil — `rlpt_3` est le cas d'usage. |
Expand Down Expand Up @@ -144,7 +146,7 @@ Le notebook 11 aborde la partial observability : l'agent ne voit plus l'état vr

Le notebook 12 enrichit l'objectif lui-même : au lieu d'apprendre l'espérance du retour comme un DQN, C51 (Categorical DQN, Bellemare et al. 2017) apprend sa **distribution complète** $Z(s,a)$ sur un support à atomes fixes, via une projection catégorielle de la cible de Bellman — ce qui débloque les politiques sensibles au risque (CVaR) impossibles avec une valeur scalaire, et ouvre la lignée QR-DQN / IQN / Rainbow.

Le notebook 13 termine sur l'exploration par motivation intrinsèque : RND (Random Network Distillation) transforme l'erreur de prédiction d'un réseau cible figé en bonus de nouveauté, débloquant les récompenses parcimonieuses hors de portée d'epsilon-greedy. Une **sous-série Post-Training** (`rlpt_*`) prolonge cette lignée vers le RL appliqué aux modèles de langage : reward model appris depuis des préférences Bradley-Terry, from scratch (rlpt_0), PPO-RLHF from scratch sur un petit LM char-level (rlpt_1), GRPO sur Qwen3.5-0.8B avec reward vérifiable (rlpt_2, run réel 8 Go), l'anatomie du reward hacking et son inoculation (rlpt_3), puis la comparaison offline-vs-online entre DPO et GRPO à budget égal (rlpt_4). Chaque notebook de la sous-série stub ≥3 exercices, ancre ses interprétations sur des sorties réellement exécutées (C.2), et documente son verdict d'honnêteté multi-seed — la série constitue la **transition naturelle** entre rl_6e (GRPO from scratch) et le pipeline capstone ICT-25 / Post-Training (#5105).
Le notebook 13 termine sur l'exploration par motivation intrinsèque : RND (Random Network Distillation) transforme l'erreur de prédiction d'un réseau cible figé en bonus de nouveauté, débloquant les récompenses parcimonieuses hors de portée d'epsilon-greedy. Une **sous-série Post-Training** (`rlpt_*`) prolonge cette lignée vers le RL appliqué aux modèles de langage : reward model appris depuis des préférences Bradley-Terry, from scratch (rlpt_0), PPO-RLHF from scratch sur un petit LM char-level (rlpt_1), GRPO sur Qwen3.5-0.8B avec reward vérifiable (rlpt_2, run réel 8 Go), l'anatomie du reward hacking et son inoculation (rlpt_3), le cas où le hack **prend** avec isolation de la cause par bras de contrôle (rlpt_0c), puis la comparaison offline-vs-online entre DPO et GRPO à budget égal (rlpt_4). Chaque notebook de la sous-série stub ≥3 exercices, ancre ses interprétations sur des sorties réellement exécutées (C.2), et documente son verdict d'honnêteté multi-seed — la série constitue la **transition naturelle** entre rl_6e (GRPO from scratch) et le pipeline capstone ICT-25 / Post-Training (#5105).

## Prerequisites

Expand Down
Loading
Loading