[36] La fenêtre de promotion du modèle passe de 3 à 14 jours #194

Merged
lenaic merged 3 commits from gabriel/36-critere-promotion into develop 2026-09-08 11:33:17 +00:00
Member

Ferme le premier des trois points relevés par @lenaic sur le #36 ce matin.

Le constat

L'ADR 0013 écrivait « la MAE du candidat sur les trois derniers jours ». Sur cette fenêtre, le modèle qui porte l'alias production depuis 09h55 perd de 14,9 kW. La règle en vigueur n'autorisait donc pas la promotion en vigueur.

Ce qui change de signe, et ce n'est pas le modèle

Trois fenêtres mesurées sur enervision_prod, fenêtre de lecture 09/07 → 08/09 07 h :

fenêtre appris test MAE modèle MAE persistance verdict
3 j 9 611 504 25,12 10,22 perd de 14,9
10 j 8 344 1 680 19,20 20,20 gagne de 1,0
14 j 7 763 2 352 16,01 22,22 gagne de 6,2

La persistance passe de 22,2 à 10,2 kW sur les trois derniers jours : ces heures-là ne bougent presque pas, et la référence y devient quasi imbattable sans que le modèle y soit pour rien.

Le motif retenu

Quatorze jours est la plus courte fenêtre qui contient deux week-ends. Ce motif ne dépend d'aucun des trois chiffres ci-dessus, et c'est la seule raison pour laquelle il est opposable : une fenêtre choisie parce qu'elle gagne ne se défend pas devant un jury, une fenêtre choisie sur un motif puis mesurée se défend même quand elle perd.

La fiche publie le tableau en entier, y compris la fenêtre où le modèle perd, et dit explicitement que les trois ont été regardées avant que la règle ne soit fixée. Réécrire l'ordre serait pire que l'assumer.

Deux points que l'amendement écrit aussi

  • --jours-test commande à la fois le jugement et l'apprentissage. Passer de 3 à 14 jours retire 1 848 exemples à l'entraînement (11 jours × 24 h × 7 sites). Les séparer serait plus juste et part au #118 ; à cette échéance, l'écrire vaut mieux que le taire.
  • Le 2,018 kW du 07/09 n'est pas irreproductible. Les trois exécutions qui le portent tournent sur enervision_preprod (fenêtre 30/07 → 04/09) ; toutes celles du 08/09 sur enervision_prod (09/07 → 08/09). Base différente, série nettement plus régulière. Il lui manquait le nom de sa base, pas une explication — d'où une réexplication plutôt qu'un retrait. Reste à annoter la #170 en conséquence.

Le modèle bat la persistance sur six sites et perd sur SITE003 (10,11 contre 5,67). Dit dans la fiche plutôt qu'attendu au détour d'une question.

Le défaut du code suit la règle écrite (3e commit)

Amender la fiche seule aurait laissé un piège : _JOURS_TEST_DEFAUT valait toujours 3, donc un entraînement lancé sans option aurait appliqué l'ancien critère, et il aurait fallu se souvenir de --jours-test 14 à chaque fois. Le défaut passe à 14.

  • services/inference/model/config.py — le défaut, avec le renvoi à la fiche
  • tests/unit/model/test_reglages_modele.py — le test qui garde ce défaut
  • services/inference/README.md et docs/runbooks/reentrainement.md — les deux endroits qui énonçaient encore « trois jours »

Le manuel dit désormais que changer l'option à la main change le critère, pas seulement le découpage, et qu'un essai se fait avec --sans-registre.

tests/unit/model : 95 passés, 1 sauté.

Ce qui suit cette PR

Une fois fusionnée : relance de l'entraînement avec --jours-test 14, dans cet ordre, pour que la version promue le soit sous une règle déjà écrite et déjà commitée. Si elle perd, elle n'est pas promue et c'est la persistance qui est servie — l'ADR 0013 le prévoit déjà.

Relecture

La fiche reste en état proposée : elle demande à être acceptée par les deux personnes qui portent EC06. Cet amendement est écrit par le PO parce que le critère bloquait une promotion aujourd'hui — @justine ou @olivier, votre approbation ici vaut acceptation de la fiche, et l'état passera à « acceptée ».

Ferme le premier des trois points relevés par @lenaic sur le #36 ce matin. ## Le constat L'ADR 0013 écrivait « la MAE du candidat sur les **trois derniers jours** ». Sur cette fenêtre, le modèle qui porte l'alias `production` depuis 09h55 **perd de 14,9 kW**. La règle en vigueur n'autorisait donc pas la promotion en vigueur. ## Ce qui change de signe, et ce n'est pas le modèle Trois fenêtres mesurées sur `enervision_prod`, fenêtre de lecture 09/07 → 08/09 07 h : | fenêtre | appris | test | MAE modèle | MAE persistance | verdict | |---|---|---|---|---|---| | 3 j | 9 611 | 504 | 25,12 | 10,22 | perd de 14,9 | | 10 j | 8 344 | 1 680 | 19,20 | 20,20 | gagne de 1,0 | | 14 j | 7 763 | 2 352 | 16,01 | 22,22 | gagne de 6,2 | La **persistance** passe de 22,2 à 10,2 kW sur les trois derniers jours : ces heures-là ne bougent presque pas, et la référence y devient quasi imbattable sans que le modèle y soit pour rien. ## Le motif retenu **Quatorze jours est la plus courte fenêtre qui contient deux week-ends.** Ce motif ne dépend d'aucun des trois chiffres ci-dessus, et c'est la seule raison pour laquelle il est opposable : une fenêtre choisie parce qu'elle gagne ne se défend pas devant un jury, une fenêtre choisie sur un motif puis mesurée se défend même quand elle perd. La fiche publie le tableau **en entier**, y compris la fenêtre où le modèle perd, et dit explicitement que les trois ont été regardées avant que la règle ne soit fixée. Réécrire l'ordre serait pire que l'assumer. ## Deux points que l'amendement écrit aussi - **`--jours-test` commande à la fois le jugement et l'apprentissage.** Passer de 3 à 14 jours retire 1 848 exemples à l'entraînement (11 jours × 24 h × 7 sites). Les séparer serait plus juste et part au #118 ; à cette échéance, l'écrire vaut mieux que le taire. - **Le 2,018 kW du 07/09 n'est pas irreproductible.** Les trois exécutions qui le portent tournent sur `enervision_preprod` (fenêtre 30/07 → 04/09) ; toutes celles du 08/09 sur `enervision_prod` (09/07 → 08/09). Base différente, série nettement plus régulière. Il lui manquait le nom de sa base, pas une explication — d'où une réexplication plutôt qu'un retrait. Reste à annoter la #170 en conséquence. Le modèle bat la persistance sur six sites et perd sur **SITE003** (10,11 contre 5,67). Dit dans la fiche plutôt qu'attendu au détour d'une question. ## Le défaut du code suit la règle écrite (3e commit) Amender la fiche seule aurait laissé un piège : `_JOURS_TEST_DEFAUT` valait toujours 3, donc un entraînement lancé sans option aurait appliqué l'ancien critère, et il aurait fallu se souvenir de `--jours-test 14` à chaque fois. Le défaut passe à 14. - `services/inference/model/config.py` — le défaut, avec le renvoi à la fiche - `tests/unit/model/test_reglages_modele.py` — le test qui garde ce défaut - `services/inference/README.md` et `docs/runbooks/reentrainement.md` — les deux endroits qui énonçaient encore « trois jours » Le manuel dit désormais que **changer l'option à la main change le critère**, pas seulement le découpage, et qu'un essai se fait avec `--sans-registre`. `tests/unit/model` : **95 passés, 1 sauté**. ## Ce qui suit cette PR Une fois fusionnée : relance de l'entraînement avec `--jours-test 14`, **dans cet ordre**, pour que la version promue le soit sous une règle déjà écrite et déjà commitée. Si elle perd, elle n'est pas promue et c'est la persistance qui est servie — l'ADR 0013 le prévoit déjà. ## Relecture La fiche reste en état **proposée** : elle demande à être acceptée par les deux personnes qui portent EC06. Cet amendement est écrit par le PO parce que le critère bloquait une promotion aujourd'hui — **@justine ou @olivier, votre approbation ici vaut acceptation de la fiche**, et l'état passera à « acceptée ».
gabriel self-assigned this 2026-09-08 11:23:42 +00:00
Le critère écrit le 06/09 jugeait le candidat sur les trois derniers jours.
Sur cette fenêtre, la persistance tombe à 10,2 kW contre 22,2 sur quatorze :
trois jours peuvent tomber entièrement sur une plage plate, où la référence
est presque imbattable sans que le modèle y soit pour rien. Le modèle promu
ce matin perdait donc sur le critère qui l'autorisait.

Quatorze jours est la plus courte fenêtre qui contient deux week-ends. Le
motif ne dépend d'aucun des trois résultats mesurés, et c'est la seule raison
pour laquelle il est opposable : une fenêtre choisie parce qu'elle gagne ne
se défend pas.

Le relevé des trois fenêtres est publié en entier, y compris celle où le
modèle perd, et la fiche dit que les trois ont été regardées avant que la
règle ne soit fixée. Elle note aussi que `--jours-test` commande à la fois
le jugement et l'apprentissage — 1 848 exemples de moins entre trois et
quatorze jours — et renvoie la séparation des deux au #118.

Le 2,018 kW du 07/09 est réexpliqué plutôt que retiré : il vient de
`enervision_preprod`, pas de la production. Il lui manquait le nom de sa
base.
adr: les deux mentions résiduelles de trois jours suivent le nouveau critère (#36)
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 9s
Intégration / Workflows — lint et audit de sécurité (pull_request) Successful in 24s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 39s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 5m45s
4923b7317c
inference: le défaut de --jours-test suit le critère de promotion (#36)
All checks were successful
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 41s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 9s
Intégration / Workflows — lint et audit de sécurité (pull_request) Successful in 26s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 5m43s
96e8cfcc3e
L'ADR 0013 amendée juge sur quatorze jours, mais `_JOURS_TEST_DEFAUT` valait
toujours trois. Un entraînement lancé sans option appliquait donc une règle
que la fiche ne reconnaît plus, et il aurait fallu se souvenir de
`--jours-test 14` à chaque fois. Le défaut est la règle : il la suit.

Le manuel de réentraînement disait « trois derniers jours » au paragraphe qui
énonce le critère ; il dit quatorze, et ajoute que changer l'option à la main
change le critère et pas seulement le découpage — sur trois jours la
persistance peut tomber à moitié de son erreur habituelle. Pour un essai,
`--sans-registre`.

tests/unit/model : 95 passés, 1 sauté.
lenaic approved these changes 2026-09-08 11:33:14 +00:00
lenaic merged commit 7f4dcd5c1a into develop 2026-09-08 11:33:17 +00:00
lenaic deleted branch gabriel/36-critere-promotion 2026-09-08 11:33:17 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
g2/enervision!194
No description provided.