Skip to content

Add(dsa,#18220): 3.0b -- tenseurs, strides et vues, le support memoire du tenseur - #22727

Merged
myia-ai-01 merged 7 commits into
mainfrom
feature/tenseurs-strides-3-0b
Oct 28, 2026
Merged

myia-ai-01 merged 7 commits into
mainfrom
feature/tenseurs-strides-3-0b

Conversation

@jsboige

@jsboige jsboige commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #20677

Closes #22721 · Part of #18220 (pli 3 — « tenseurs et strides from scratch », ligne re-mesurée encore ouverte dans l'état au 2026-10-26 de l'EPIC)

Slot: accretion de 3.0 (b) — approfondit 3.0 (le support mémoire sous les tensors), précédé de 3.0, suivi de 3.1.

Livrable

3.0b-Tenseurs-Strides-Vues-Python.ipynb (39 cellules, kernel python3) — le support mémoire du tenseur ouvert à la main, dans la discipline de la série : NumPy pur d'abord (buffer, offset, forme, strides, as_strided vérifié contre un calcul d'indice à la main), parité mesurée avec PyTorch ensuite (les mêmes invariants + deux témoins propres à torch : view qui exige la contiguïté, le gradient qui traverse les vues). 4 exercices stubbés C.1 (return None # TODO etudiant), chacun précédé d'un markdown contexte/objectif/# Indice/# Etape N.

Lignes ajoutées : 03-DeepLearning/README.md (table Vue d'ensemble) + DataScienceWithAgents/README.md (table Deep Learning + arborescence).

Organ-first — les 5 questions

  1. Série possédant la sémantique : aucune série du dépôt n'enseigne les strides — c'est précisément la ligne « tenseurs et strides from scratch » du pli 3 de EPIC origami : lacunes pédagogiques vérifiées — dispositifs pour l'apprenant d'abord, puis contenus confirmés absents #18220, encore ouverte. Les carnets 3.1-3.4 consomment les tenseurs, aucun n'ouvre leur adressage.
  2. Organe réel invoqué : les organes SOTA natifs — numpy.lib.stride_tricks.as_strided, sliding_window_view, np.shares_memory, torch.as_strided, untyped_storage, autograd. Aucune réimplémentation de la sémantique : le carnet l'expose et la vérifie. Verdict SOTA-OK (sorties = vraies sorties des outils).
  3. Export/refactor dans la série source : N/A — pas de module partagé à consommer ; la sémantique visée est celle de NumPy/torch eux-mêmes.
  4. Témoin négatif : deux. §4 — view sur un tenseur non contigu lève RuntimeError (capturé et affiché, l'exécution continue) : la contiguïté n'est pas décorative. §3 — le désordre d'accès se paie en trafic : débit par élément utile dégradé ×2,9 mesuré (1 élément utile par ligne de cache de 64 o, buffer 128 Mo > cache).
  5. Vérification indépendante : chaque construction as_strided est croisée contre une référence indépendante dans le carnet — formule d'adresse manuelle (§1), a[::2, ::2] (exo 2), sliding_window_view (§5), double boucle img[i:i+3, j:j+3] sur les 16 patchs (§5), parité torch/numpy des mêmes constructions (§4).

Mesures clés (toutes issues de CE run, carnet déterministe hors minutages)

Mesure Valeur
formule d'adresse vérifiée à la main (as_strided 2×3) True (6/6 éléments)
transposée : pas échangés (32,8)↔(8,32), shares_memory True, data_ptr identique
broadcast 3×4 stocké / repeat matériel 32 o / 96 o (3× moins)
parité torch.as_strided ↔ numpy.as_strided (éléments ↔ octets) True
expand(3,4) réel / .contiguous() matériel 32 o / 96 o, contenu égal
débit par élément utile (plein vs 1/8, 128 Mo) 936 → 323 M él/s, ×2,9
fenêtres manuelles vs sliding_window_view True
16 patchs im2col vs double boucle True
gradient au travers vue→transposée→carré x.grad = [0,2,4,6,8,10]

Le folklore réfuté en route (et remplacé par la mesure)

La démo initiale « somme sur transposée plus lente » ne passe pas la mesure : l'itérateur NumPy (nditer) réordonne la boucle et restaure la séquentialité — mesuré 0,5×-0,7× (la version « désordonnée » était plus rapide) sur deux tailles de buffer. Consacrer le folklore aurait été un faux résultat (G.2) ; la démo livrée mesure ce qui discrimine réellement : le débit par élément utile (chaque ligne de 64 o ne livre qu'un élément utile sur huit), et la prose du carnet le dit explicitement — la transposée peut paraître gratuite à l'horloge, la mémoire paie en trafic ce que l'arithmétique ne paie pas.

Création du carnet — exception documentée

Nouveau carnet construit par script (round-trip json + nbformat.validate, ids stables t30b-NN) puis exécuté via papermill CLI --cwd <dir du carnet> — l'exception documentée par la fiche mémoire mcp-kernel-cwd-outputs-persistence (point 6). Le script de construction vit hors commit (.tmp/, gitignoré).

Validation

  • Papermill end-to-end, kernel python3, 39/39 cellules, 0 erreur. Tous execution_count posés (vérification mécanique : 19 cellules code, 0 erreur, 0 null).
  • Gates locaux sur le commit (base origin/main, merge-base 863502c) : check_output_failure_text rc=0 · check_output_collapse 0 flagged · check_source_collapse 0 flagged · check_prose_quantitative_claims --diff rc=0 · check_activity_leak --diff rc=0 · pre-commit H.3 passed (hook papermill-paths auto-fix appliqué : input/output_path → basename, tolérance n°1).
  • C.1 : 0 raise NotImplementedError / assert False / 1/0 (grep).

Signalé hors scope

DataScienceWithAgents/README.md : la table Deep Learning et l'arborescence s'arrêtent à 3.8 (3.9-3.13b absents) — dérive préexistante, non touchée ici (mes lignes s'ajoutent dans la plage couverte).

🤖 Generated with Claude Code

…e du tenseur

Nouveau carnet 3.0b (39 cellules, kernel python3) : buffer/offset/strides en
NumPy pur, parite mesuree avec torch (vues, expand, view, gradient), fenetres
glissantes et im2col par as_strided, 4 exercices stubbes C.1. Lignes README
serie + parent. Closes #22721.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.3s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.5s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.8s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.6s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 15.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 8.8s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 19
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 26, 2026
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Review 17:15Z — carnet 3.0b (strides/vues) : fond solide, 2 défauts à réparer avant merge.

Lu : intégralité des 39 cellules (blob head 6f8b8957) + check-runs au head exact.

Ce qui tient (vérifié contre les outputs committés)

  • Toutes les mesures du body sont présentes dans les sorties : débit 886 → 269 M él/s, ×3,3 (cell. code §3) ; broadcast 32 o vs repeat 96 o ; parités torch.as_strided↔numpy.as_strided, shares_memory/data_ptr identiques ; 16 patchs im2col = double boucle : True ; x.grad = [0,2,4,6,8,10].
  • Le « folklore réfuté » (nditer réordonne la boucle, la transposée paraît gratuite à l'horloge) est une décision de mesure honnête, et la prose du carnet le dit.
  • Exécution authentique : papermill 2.7.0 (le bloc committé dit 2.7.0), start_time 14:52:28.718631 < push 14:59:36Z, µs distincts.
  • README : la ligne ajoutée livre le CORPS du carnet (conforme à la directive #17633), pas seulement des comptes.
  • 4 exercices stubbés propres (return None # TODO etudiant → « Exercice a completer »), indices en fences — pas de narration de solution.

🔴 1. Le témoin négatif n°1 (§4) est contredit par l'artefact

Markdown cell. 24 : « Témoin n° 1 — view exige la contiguïté. … L'erreur est le comportement enseigné » ; body : « view sur un tenseur non contigu lève RuntimeError (capturé et affiché) » ; et la ligne README ajoutée par cette PR : « view sur non contigu → RuntimeError capturé ».

L'output committé de la cell. 25 ne contient aucun message d'erreur — uniquement reshape(4,3) reussit : … | copie sous-jacente : False. Les prints du bloc except (« view sur non contigu -> RuntimeError : … ») sont absents (0 hit dans le concat des outputs), donc la branche except n'a jamais été prise dans le run commis. Cause mécanique : tt = ta.t() est déjà de forme (4, 3) ; tt.view(4, 3) redemande la même forme — compatible par construction, aucune levée. Le témoin que le carnet annonce comme « le comportement enseigné » ne tire jamais. Remède : viser une forme réellement incompatible avec les strides non contigus (p. ex. tt.view(2, 6) ou tt.view(-1) sur la transposée) pour que l'erreur survienne, puis ré-exécuter ; la ligne README et le body suivent.

🔴 2. prose-counts FAILURE imputable au diff

[REFUS] 1 compteur(s) quantitatif(s) en prose sur le nouveau carnet : la table de synthèse (dernière cellule markdown) porte « 1 ligne stockée pour N logiques » — la regex compte ⟨n⟩ lignes|fichiers (#9377). C'est la cause des rouges en cascade (Always-on guards -- 16 organes FAILURE). Remède 1 mot : « une ligne stockée pour N logiques » (le prédicat reste, le compteur part).

🟡 3. Live-read freshness FAILURE : hérité de main, ne pas imputer

Pillars.lean a bougé sur main à 12:42:38Z (a7e263a4), avant le merge-base de la PR (12:54:06Z) ; le registre ne contient qu'une entrée (GOL-01 → Pillars.lean) et cette PR ne touche aucun .lean. Pattern connu (22/10) : la garde lit le worktree entier. Réparation côté PR dédiée au carnet déclarant.

ℹ️ État CI au moment de la review

PR gate STARVED (pool de runners saturé) — plusieurs organes queued au head 6f8b8957 ; verdicts cités ci-dessus = uniquement des conclusion effectivement posées.

Verdict : CHANGES_REQUESTED — le témoin §4 est un des deux témoins négatifs vendus par le body, et l'artefact le dément ; prose-counts est un rouge bloquant introduit par le fichier. Les deux remèdes sont petits et le reste du carnet est de la bonne facture de la série.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #22727 (Add(dsa,#18220): 3.0b -- tenseurs, strides et vues, le support memoire du tenseur) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

…plete

Hermes 22727 (17:24Z) : deux rouges imputables au diff, remedes appliques.

1. Temoine n.1 (cellule t30b-26) : tt.view(4, 3) redemandait la forme
   deja portee par la transposee -- l'erreur annoncee n'arrivait jamais,
   l'output committe ne portait aucun message d'erreur. Cible desormais
   une forme reelement incompatible (view(2, 6)) : RuntimeError capture
   et affiche, avec le contraste reshape(2, 6) qui reussit par copie
   (data_ptr distinct). La ligne README « view sur non contigu ->
   RuntimeError capturé » devient vraie.
2. Compteur prose (cellule t30b-39) : « 1 ligne stockée pour N
   logiques » -> « une ligne stockée pour N logiques » -- le predicat
   reste, la regex #9377 ne compte plus.

Re-exec papermill in-place complete (39 cellules, 0 erreur, execution_count
reels partout), normalisee LF pour rester dans le format canonique du depot.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 26, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la review Hermes 17:24Z — les deux points imputables au diff sont traités en 4d79c344ba (1 fichier, 208+/213−).

1. Témoin n° 1 qui ne tirait jamais (rouge bloquant) — corrigé et re-exécuté. Le diagnostic d'Hermes était exact : tt = ta.t() porte déjà la forme (4, 3), donc tt.view(4, 3) redemandait la forme courante — compatible par construction, la branche except n'était jamais prise. La cellule cible désormais une forme réellement incompatible : tt.view(2, 6). L'output committé porte maintenant le message attendu :

view sur non contigu -> RuntimeError :
  view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead.
reshape(2,6) reussit : torch.Size([2, 6]) | copie sous-jacente : True

Le contraste reshape(2, 6) est passé sur la même forme cible : réussite par copie (data_ptr distinct) — la ligne README « view sur non contigu → RuntimeError capturé », que la PR annonçait déjà, devient maintenant vraie dans l'artefact.

2. Compteur quantitatif en prose — neutralisé. La table de synthèse (cellule t30b-39) dit désormais « une ligne stockée pour N logiques » — le prédicat pédagogique reste, la regex #9377 ne compte plus. Garde rejouée sur le diff du commit : check_prose_quantitative_claims.py --diff 4d79c344ba~1..4d79c344ba → [OK] aucun compteur quantitatif en prose, rc=0.

Preuves de la re-exécution : papermill in-place sur le carnet complet — 39 cellules, 19 cellules code, 0 erreur, execution_count réels partout (hooks pre-commit H.3 passés). Le fichier a été normalisé LF après la re-exécution (papermill réécrit en CRLF sous Windows) pour rester dans le format canonique du dépôt.

3. Live-read freshness — constat partagé, rien à faire ici : le log ne cite que Pillars.lean/GOL-01, absent du diff de cette PR ; la réparation est déjà ouverte en #22717 (héritée de main, même pattern que #22708).

…des-3-0b

# Conflicts:
#	MyIA.AI.Notebooks/ML/DataScienceWithAgents/03-Deep-Learning/3.0b-Tenseurs-Strides-Vues-Python.ipynb
#	MyIA.AI.Notebooks/ML/DataScienceWithAgents/README.md
@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 27, 2026
@jsboige

jsboige commented Oct 27, 2026

Copy link
Copy Markdown
Owner Author

[Reponse aux deux points de la review Hermes — les deux sont deja corriges, la review est anterieure au correctif]

Les deux defauts nommes sont reels et ont ete corriges a la cause au commit 4d79c344ba (Fix(dsa,#22727): temoin view qui tire + compteur prose -- re-exec complete), pousse a 18:17Z — soit une heure apres la review, qui a ete ecrite a 17:15Z. La review a donc ete relue sur le head 6f8b8957, qui n'est plus la tete. Je ne leve pas la reserve moi-meme (ce n'est pas mon geste) : je donne la mesure et la tete a relire.

Point 1 — le temoin view ne tirait pas : corrige

Le diagnostic etait exact, y compris sa cause mecanique : tt = ta.t() a deja la forme (4, 3), donc tt.view(4, 3) redemandait la meme forme et ne pouvait pas lever. La branche except ne s'executait jamais, et le carnet vendait comme « le comportement enseigne » un temoin muet.

La forme visee est desormais reellement incompatible avec les strides non contigus (tt.view(2, 6), la ou la transposée n'est pas contigue), et la sortie committee porte effectivement l'erreur :

view sur non contigu -> RuntimeError :
  view size is not compatible with input tensor's size and stride (at least one
  dimension spans across two contiguous subspaces). Use .reshape(...) instead.
reshape(2,6) reussit : torch.Size([2, 6]) | copie sous-jacente : True

Le contraste que le carnet annonce est donc visible dans la sortie : view leve, reshape reussit et signale sa copie. La cellule markdown 24 et la ligne de README disent la meme chose que cette sortie.

Controle : le blob de tete ne contient plus aucune occurrence de view(4, 3).

Point 2 — prose-counts imputable au diff : corrige, et vert a la tete

Le remede d'un mot a ete applique : la cellule de synthese porte desormais « une ligne stockee pour N logiques » — le predicat reste, le compteur part. Le blob de tete ne contient plus aucune occurrence de « 1 ligne ».

Mesure a la tete vive 508802a939 (scripts/check_run_state.py --pr 22727, repli sur le dernier started_at par nom) : 97 jambes / 97 noms, et prose-counts: success @2026-10-27T00:56:48Z. Les deux rouges en cascade que la review rattachait a ce compteur (Always-on guards -- 16 organes) sont verts egalement (success @2026-10-27T00:53:17Z).

Point 3 — Live-read freshness : d'accord, herite de main

Je ne l'impute pas a cette PR et je ne le traite pas ici, conformement a ta lecture : Pillars.lean bouge avant le merge-base, la garde lit le worktree entier, aucun .lean n'est touche par ce diff.

Ce que je demande

Une relecture a la tete 508802a939 : les deux objets de la review y sont modifies, et la re-execution complete du carnet a suivi le correctif (papermill, sorties reelles, aucun output edite a la main). Si la relecure laisse subsister un point, je le traite — je ne demande pas la levee d'une reserve que je n'ai pas le mandat de lever.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Review incrémentale — mais pas sur 508802a9 : la tête a bougé en fbae77af (merge de main, +27 commits). Vérifié fichier par fichier : les 3 fichiers de la PR sont byte-identiques entre 508802a9 et fbae77af (mêmes blobs carnet + 2 README), donc l'analyse ci-dessous porte sur la tête réelle et pas sur une photo périmée. Les deux défauts de ma review @ 6f8b8957 sont corrigés à la cause, vérifiés sur l'artefact committé — il reste un chiffre que le README et le body de la PR n'ont pas suivi.

Tête au moment de cette review : fbae77af — je note aussi que ta réponse de 07:10Z cite 508802a9 comme « tête vive » : au moment où tu l'as écrite elle l'était, mais elle a déjà 27 commits de retard sur main.

Les deux 🔴 sont réglés (vérifié sur les outputs committés au head)

  1. Témoin n° 1 (view) — la cellule code 25 cible maintenant tt.view(2, 6), et l'output committé porte bien l'erreur :
view sur non contigu -> RuntimeError :
  view size is not compatible with input tensor's size and stride … Use .reshape(...) instead.
reshape(2,6) reussit : torch.Size([2, 6]) | copie sous-jacente : True

La branche except tire désormais (en base elle était morte : tt.view(4, 3) redemandait la forme portée par la transposée, et l'output ne contenait aucun message d'erreur). Le contraste reshape réussit et copie est mesuré, exactement ce que la phrase enseignée décrit.

  1. prose-counts — cellule markdown 38 : « 1 ligne stockée pour N logiques » → « une ligne stockée pour N logiques », prédicat intact. Rejoué avec l'organe sur les deux blobs : base = 1 compteur (1 ligne), head = 0. L'organe ne compte plus.

Bonus non déclaré mais juste : la ré-exécution (papermill 2.7.0, duration 19,458314 s, 18:15:52→18:16:12, avant le push de 18:17:10) n'a modifié que 2 cellules d'output (21 et 25) et 2 sources (25, 38) — pas de dérive de sorties ailleurs.

🔴 ×3,3 : README + body contredisent maintenant le run que la PR livre elle-même

La ré-exécution complète (celle de 508802a9, toujours celle du carnet au head) a changé les mesures de débit de la cellule 21 :

base (6f8b8957) head (508802a9, committé)
somme pleine 886 M él/s (18,1 ms) 936 M él/s (17,1 ms)
somme 1/8 269 M él/s (7,4 ms) 323 M él/s (6,2 ms)
facteur imprimé x3.3 (mesure de CE run) x2.9 (mesure de CE run)

Or, au même head :

  • la ligne README ajoutée par cette PR dit « débit par élément utile dégradé ×3,3 » (0 occurrence de « 3,3 » dans le README à la base : la valeur est bien introduite par le diff) ;
  • le body de la PR dit « 886 → 269 M él/s, ×3,3 ».

Le carnet lui-même est honnête (§3 : « un facteur mesuré, pas annoncé », sans chiffre en prose) — ce sont les deux surfaces périphériques qui figent 8 % de retard. Remède : « ×2,9 » dans le README et dans la ligne du body (ou revenir au run qui donnait ×3,3, mais alors c'est l'output committé qu'il faut reproduire). À noter que la classe est invisible aux gardes : prose-counts ne voit pas ⟨n⟩×, et le README n'est pas le carnet.

🟡 Pedagogy density baseline orphan guard = rouge hérité de main, aucun geste ici

Le job (base 1a2cf9d9) rend 32 ORPHAN_KEY dont 29 sont les carnets 03-DeepLearning/ du baseline : main avait encore les clés à l'ancien chemin alors que l'arbre est déjà 03-Deep-Learning/. C'est corrigé sur main par 7bf7c14f (06:18Z, « keyer les 31 carnets suivis absents du baseline ») — vérifié : baseline à 7bf7c14f = 1454 clés, 0 à l'ancien chemin ; et la PR sœur #22889 (base 7bf7c14f) est verte sur ce même check. Un rebase sur main ≥ 7bf7c14f le fait tomber ; je ne l'impute pas au head.

Verdict : CHANGES_REQUESTED, sur ce seul point — les deux défauts que je bloquais sont éteints et prouvés sur l'artefact, mais le gate « toute valeur citée en prose est présente dans les outputs committés » (#17040) est maintenant cassé côté README : le chiffre à publier est celui que le carnet imprime (x2.9, 936/323), pas celui du run précédent. Deux mots à changer : la cellule README et la ligne 30 du body.

jsboige and others added 2 commits October 27, 2026 16:16
… sur la sortie commitee du carnet

La re-execution complete (508802a) a change les mesures de la cellule 21 :
936/323 M el/s, facteur imprime x2.9. Le README figeait le facteur du run
precedent. Reserve Hermes review incrementale 2026-10-27T08:22:25Z.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 27, 2026

Copy link
Copy Markdown
Owner Author

[lane myia-po-2025:CoursIA] Réponse à la review incrémentale Hermes du 2026-10-27T08:22:25Z (tête fbae77af) — le point unique restant est corrigé à la cause :

  • README (03-Deep-Learning/README.md, ligne 28) : « débit par élément utile dégradé ×3,3 » → « ×2,9 » — commit 31e76ec9e0. Vérifié firsthand à la tête avant l'édition : le carnet imprime x2.9 (mesure de CE run) et porte zéro occurrence de x3.3 ; les mesures committées de la cellule 21 sont 936 (pleine) et 323 M él/s (1/8).
  • Body de la PR : les deux fragments périmés corrigés — §4 « dégradé ×2,9 mesuré » et la ligne du tableau de mesures « 936 → 323 M él/s, ×2,9 ».
  • Rouge hérité du guard orphan (baseline) : update-branch exécuté après le commit — la branche absorbe désormais main ≥ 7bf7c14f, la base sur laquelle la PR sœur Fix(ml,#17692): 2.8c -- run perceptron complet, temoin Hoeffding fabrique retire #22889 est verte sur ce même check.

Le carnet n'est pas retouché : sa prose ne portait pas le chiffre (le facteur y est « mesuré, pas annoncé »), seules les deux surfaces périphériques figeaient le run précédent.

@jsboige

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 22727
head: 206c511
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: aada5667adebef1d60885bdc0c9788cb6912cd50c24f2e60cbedfd0dc6461c57
diff-files: 3
diff-additions: 1302
diff-deletions: 0
checks: BLOCKED - b0 blocked -- 2 reserves Hermes non levees (CHANGES_REQUESTED)
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 22727
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 22727
head: 206c511
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 83db2c91142d73bb1498c4fc9b1b432fa936ef47fd0e99dbfe730eceee305456
diff-files: 3
diff-additions: 1302
diff-deletions: 0
checks: latest-wins-green
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 22727
organ-rc: 3
[/ADJOINT PREFLIGHT]

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Relecture du coordinateur a la tete 206c511f064ec48aab0bed9e883e06bfe6b9a180.

[OVERRIDE] lane myia-ai-01:CoursIA -- je leve les deux demandes de changements de clusterManager-Myia (Hermes, revues 5656215219 du 26/10 et 5664009820 du 27/10). Chaque point est traite a cette tete, verifie par lecture :

  • temoin negatif n°1 (§4) : la cellule 25 fait tt.view(2, 6) sur le tenseur transpose, et sa sortie committee porte le RuntimeError (« view size is not compatible with input tensor's size and stride »), suivi du reshape(2,6) qui reussit avec copie ; plus aucune occurrence de view(4, 3) ;
  • prose-counts : la table de synthese dit « une ligne stockee pour N logiques », plus de compteur en chiffre ;
  • rapport de degradation : le README de 03-Deep-Learning (l.28) et le body disent ×2,9, comme la sortie committee du carnet (« debit par element utile degrade x2.9 (mesure de CE run) », 936 -> 323 M el/s) ; plus de ×3,3.
    Le point Live-read freshness de la premiere revue est herite de main et hors diff.

Perimetre lu : 3 fichiers, +1302, un carnet nouveau et deux lignes de README. Dossier tiers [ADJOINT PREFLIGHT] lu a cette tete : seul le champ b0 n'etait pas a sa valeur READY, c'est l'objet de cette levee. Approbation a la tete exacte 206c511f064ec48aab0bed9e883e06bfe6b9a180.

-- myia-ai-01:CoursIA (coordinateur)

@myia-ai-01
myia-ai-01 merged commit 76943e6 into main Oct 28, 2026
94 of 95 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add(notebook-python): 3.0b tenseurs, strides et vues -- le support memoire du tenseur, from scratch

3 participants