Skip to content

Add(genai,#21626): enveloppe GPU de la famille NeRF sur l'etage pionnier 8 Go -- pic 4318 Mio (52,7 %), le NeRF tient la ou le 0,8 B GRPO n'a que 4 % de marge - #21630

Merged
myia-ai-01 merged 9 commits into
mainfrom
feature/21626-3d-enveloppe-vram-8go
Oct 23, 2026
Merged

myia-ai-01 merged 9 commits into
mainfrom
feature/21626-3d-enveloppe-vram-8go

Conversation

@jsboige

@jsboige jsboige commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/training — lane myia-po-2028:CoursIA-2 — prev: DEEP/training #21624

Résumé

L'EPIC Origami #18605 répartit le travail GPU en trois étages ; le premier — pionnier, petite carte 8 Go — est le rôle où l'on défriche avant de passer un lead à l'étage moyen. Pour la famille 0,8 B en GRPO+QLoRA, l'enveloppe est mesurée (#21620, PR #21624) : pic 7 844 Mio / 8 192 = 95,7 %, donc 4 % de marge.

Cette PR mesure l'autre moitié de l'EPIC : la famille NeRF (Pli 2 livré), dont la mesure d'enveloppe n'existait pas — ses deux volets, l'entraînement (3D-01) et l'évaluation (3D-02-NeRF-Critic), ce dernier étant le second critère d'acceptation de #21626.

Volet entraînement — 3D-01-NeRF-From-Scratch

Mesure Valeur
Pic VRAM 4 318 Mio / 8 192 Mio = 52,7 %
Température max 73 °C (seuil d'abandon 85 °C non franchi)
Durée du run complet 207,6 s
Débit — Lego (2 000 it.) / scène jouet (1 000 it.) 15,8 it/s · 17,2 it/s
Fidélité finale (PSNR, Lego) 21,92 dB

La fidélité se rejoue une troisième fois : 21,92 dB sur ce poste (identique au run précédent), 21,85 dB sur la carte 16 Go de référence — 0,07 dB d'écart sur deux cartes.

Volet évaluation — 3D-02-NeRF-Critic

Mesure Valeur
Pic VRAM 7 740 Mio / 8 192 Mio = 94,5 %
Mémoire au repos (avant le run) 428 Mio (l'après-run n'était pas relevé par la sonde)
Température max 72 °C (seuil d'abandon 85 °C non franchi)
Utilisation GPU max 100 %
Durée du run complet 1 222,3 s (20,4 min)
Plateau de l'entraînement (scène jouet, puis Lego 100×100) 3 001 Mio, puis 4 217 Mio (51 % de la carte)
Fidélité — scène jouet, 1 600 it. 21,76 dB (96 s)
Fidélité — Lego, 3 000 it. 20,15 dB (L=0), 22,45 dB (L=4), 22,26 dB (L=10)
Fidélité — bruit de pose, 800 it. 19,84 dB (σ=0°) → 18,01 dB (σ=2°)
Fidélité — transfert de focale 19,76 dB (native→native), 18,92 dB (télé→télé), 6,66 dB (grand angle→native)
Coût du comptage de points 9,4 ms (N=8) → 15 084 ms (N=256, 1 048 576 points)

Volet comparaison — le Pli 1 (Fourier 3.4d)

L'issue demandait de comparer le profil des deux plis sur la même carte 8 Go (« compatible avec un même run conjoint, ou faut-il enchaîner les deux ? »). La mesure répond, mais pas par un chiffre de VRAM : le harnais du Pli 1 est CPU-borné en NumPy pur (Adam et gradient écrits à la main ; son propre verdict indique « sur CPU, en NumPy pur, en ~30 s »). Il n'importe ni torch ni aucun moteur CUDA.

Mesure Valeur
Durée du run complet 64,2 s (5 entraînements : baseline + 3 σ + témoin négatif)
VRAM de la carte 427 Mio au repos → 444 Mio au pic observé (delta ≤ 17 Mio, bruit ambiant)
VRAM attribuable au harnais 0 Mio — aucun contexte CUDA créé
RAM hôte — pic de l'arbre de processus 288 Mio
Fidélité rejouée baseline 3,226e-01 · σ=1,0 → 1,404e-02 · σ=5,0 → 1,012e-02 · σ=50 → 4,115e-01

Les figures rejouées sont celles du carnet committé : le run reproduit la référence, il ne la modifie pas.

La conclusion est une non-concurrence de ressources : Fourier occupe 288 Mio de RAM hôte et zéro octet de VRAM, la famille NeRF occupe 52,7 % puis 94,5 % de la carte. Un run conjoint est possible côté mémoire vidéo ; ce qui ne se partage pas, c'est la carte entre deux jobs CUDA. La question « run conjoint ou enchaînement ? » ne se pose donc pas en VRAM mais en temps GPU — et le Pli 1 n'en consomme pas.

La lecture qui compte pour la ventilation

Le premier étage n'est pas un « petit GPU » générique, il est un étage à deux vitesses — et la mesure le précise désormais des deux côtés :

Pipeline Pic VRAM sur 8 Go Marge
NeRF — entraînement (3D-01) 4 318 Mio (52,7 %) 47 %
NeRF — évaluation (3D-02) 7 740 Mio (94,5 %) 5,5 %
Fourier features (3.4d, Pli 1) 0 Mio attribuable (hors GPU) —
0,8 B GRPO + QLoRA 7 844 Mio (95,7 %) 4 %

Le point important n'est pas le total mais où arrive le pic : le profil échantillonné à 5 s montre un plateau stable à 4 200 Mio pendant les vingt minutes d'entraînement et d'évaluation, puis une montée de 3 523 Mio dans les vingt dernières secondes — la cellule de comptage de points N=256 (1 048 576 points, 15 s à elle seule). Entraîner un NeRF sur 8 Go n'est pas le problème ; évaluer un NeRF de façon dense l'est.

Conséquence opérationnelle : un lead RL part directement à l'étage moyen (4 % de marge sur le pionnier) ; le pionnier garde sa vocation de défrichage pour le socle NeRF et les petits apprentissages, mais son évaluation dense doit monter d'un étage.

Ce que cette PR ne couvre pas (dit)

Aucun carnet modifié

L'exécution se fait sur une copie hors dépôt : 3D-01, 3D-02 et 3.4d sont dans le scope de claims d'autres lanes (PR #21413, #20544) et n'ont pas été touchés. Le livrable est le manifeste de mesure (scripts/results/3d_enveloppe_8go/3d01_enveloppe_8go.json), son pendant évaluatif (scripts/results/3d_enveloppe_8go/3d02_enveloppe_8go.json), celui du Pli 1 (scripts/results/3d_enveloppe_8go/3d4d_fourier_8go.json), cette note (docs/genai/3d-enveloppe-vram-8go.md) et son entrée d'index (docs/README.md) — 5 fichiers, aucun code de production. Les trois manifestes sont rangés sous scripts/results/ (chemin de l'acceptance de #21626), pas sous les carnets.

Les 5 points de review

# Point État
1 Scope réel Une chose : l'enveloppe GPU de la famille NeRF sur l'étage 8 Go, sur ses deux volets, plus le comparatif qui la rend exploitable.
2 Validation automatisée post-fix Le livrable est une mesure : 42 échantillons nvidia-smi à 5 s pour 3D-01 et 242 pour 3D-02, pic, température et profil par phase relevés dans les manifestes, courbes PSNR issues des exécutions, durées et débits mesurés. Les valeurs sont relues dans l'artefact committé, pas dans une affirmation.
3 Cohérence pédagogique Aucun contenu pédagogique touché ; la note est une mesure d'infrastructure, et elle renvoie aux carnets sans les réécrire.
4 Exécution réelle Exécution GPU réelle des deux volets : 21 cellules de code pour 3D-01, run complet pour 3D-02 (scène jouet, grille du critic, Lego 100×100, bruit de pose, focales, comptage de points), 0 erreur, exception: null, execution_count non nuls.
5 Régression check Aucune collision : aucune PR ouverte ne touche docs/genai/3d-enveloppe-vram-8go.md ni scripts/results/3d_enveloppe_8go/ ; aucun marqueur de catalogue ; 5 fichiers (docs/genai/3d-enveloppe-vram-8go.md, docs/README.md, scripts/results/3d_enveloppe_8go/3d01_enveloppe_8go.json, scripts/results/3d_enveloppe_8go/3d02_enveloppe_8go.json, scripts/results/3d_enveloppe_8go/3d4d_fourier_8go.json), aucun code de production. Les nombres ajoutés en prose sont des valeurs mesurées recopiées depuis les manifestes, pas des seuils : aucun baseline ni seuil du dépôt n'est déplacé par cette PR.

Reproductibilité

# poste myia-po-2028, RTX 3070 Ti 8 Go, kernel python3
# copie hors depot du carnet, puis :
python scripts/notebook_tools/notebook_tools.py execute <copie>/3D-01-NeRF-From-Scratch.ipynb --timeout 3600
python scripts/notebook_tools/notebook_tools.py execute <copie>/3D-02-NeRF-Critic.ipynb --timeout 5400
python scripts/notebook_tools/notebook_tools.py execute <copie>/3.4d-Fourier-Features-Biais-Spectral-Python.ipynb --timeout 900
# nvidia-smi échantillonné à 5 s (2 s pour le run Fourier) en parallèle

Issue #21626 (fille de l'EPIC #18605). GPU réservé au ledger avant tout chargement (obs-55b043a6b21cc586 pour 3D-01, obs-12e553f00d6132f3 pour 3D-02 ; held → released), un seul job à la fois. Le run du Pli 1 est le seul des trois à n'avoir pas réservé la carte : il ne charge aucun moteur CUDA, donc rien ne s'exécute sur le GPU — la réservation aurait immobilisé une ressource inutilement demandée. La carte a néanmoins été échantillonnée pendant le run (c'est cette trace qui établit qu'elle reste au repos) et la RAM hôte suivie par lecture de la RSS de l'arbre de processus au même pas de 2 s.

Références

Closes #21626 — les quatre critères d'acceptation de l'issue sont couverts par cette PR (volet 3D-01, volet évaluatif 3D-02, manifestes sous scripts/results/3d_enveloppe_8go/, verdict mesuré pour l'étage pionnier).

🤖 Generated with Claude Code

…ier 8 Go

L'EPIC Origami #18605 repartit le travail GPU en trois etages ; le premier
(pionnier, petite carte 8 Go) est le role de defriche. Pour la famille 0,8 B en
GRPO+QLoRA, l'enveloppe est mesuree : pic 7844 Mio / 8192 (95,7 %) -- 4 % de
marge. Ce grain mesure l'AUTRE moitie de l'EPIC, la famille NeRF (Pli 2
livre), dont la mesure d'enveloppe n'existait pas.

Mesure (poste myia-po-2028, RTX 3070 Ti Laptop 8192 Mio, torch 2.8.0+cu126,
kernel python3, nvidia-smi echantillonne a 5 s) :
- pic VRAM 4318 Mio / 8192 = 52,7 % ; temp max 73 C (seuil 85 non franchi)
- run complet 207,6 s ; 15,8 it/s sur la scene Lego (2000 it.), 17,2 it/s
  sur la scene jouet (1000 it.)
- fidelite finale 21,92 dB : identique au run precedent sur ce poste, 0,07 dB
  de la reference 16 Go

Lecture : le premier etage n'est pas un "petit GPU" generique, il est un etage
a deux vitesses -- la famille NeRF y a de la place (47 % de marge), un
entrainement RL meme sur 0,8 B n'y a que 4 %. Un lead RL part donc directement
a l'etage moyen ; le pionnier garde sa vocation (defriche NeRF, Fourier, petits
apprentissages).

Aucun carnet modifie : execution sur une copie hors depot (3D-01 et 3D-02 sont
dans le scope de claims d'autres lanes, PR #21413 et #20544). Livrable : le
manifeste de mesure + cette note.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…E.md (garde docs-index-guard)

Le garde docs-index-guard exige que chaque doc vivant soit atteignable depuis docs/README.md. Entree ajoutee dans la table GenAI, a une position distincte de celle du doc de reproductibilite (PR #21607) pour eviter un conflit de fusion entre les deux PRs.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Rouge docs-index-guard reproduit puis réparé — preuve locale

Même cause que sur #21607 : un document vivant sous docs/ doit être atteignable depuis docs/README.md. Le document d'enveloppe VRAM n'y était pas.

Correctif : entrée ajoutée dans la table GenAI de docs/README.md. J'ai volontairement placé cette entrée à une position différente de celle du doc de reproductibilité (#21607) — l'une en tête de table, l'autre en fin — pour que les deux PRs ne se chevauchent pas sur le même hunk.

Vérification locale (exécutée depuis le worktree de la branche) :

$ python scripts/check_docs_index.py
OK: 258 doc(s) vivant(s) sous docs/, tous atteignables depuis docs/README.md.

Le PR gate reste en cancelled (famine de runners) — rien à côté.

— lane myia-po-2028:CoursIA-2

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21630 (Add(genai,#21626): enveloppe GPU de la famille NeRF sur l'etage pionnier 8 Go -- pic 4318 Mio (52,7 %), le NeRF tient la ou le 0,8 B GRPO n'a que 4 % de marge) 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.

@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 20, 2026
@jsboige

jsboige commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

Diagnostic du job Scripts Tests (CPU) : base perimee, pas le contenu de cette PR.

Le job a echoue sur un seul test :

scripts/tests/test_check_activity_leak.py::TestDiffParity::test_new_file_paragraphs_are_added
AssertionError: [] is not true : le commit fondateur ajoute un corrigendum dense

Ce test est corrige sur main par #21695 (commit 4e715ab5a, fusionne le 2026-10-21T00:45:05Z), et il passe localement sur main (33 passed, mesure sur la tete 71c9098ee). La tete de cette branche etait anterieure a ce correctif, et le ref de fusion du job avait ete fige avant 00:45Z : le job executait donc l'ancienne version du test, celle qui suppose une ancre historique purgee par #20252.

Mesure de la derivation, sans interpretation :

  • tete de branche avant rafraichissement : 0fc230a3
  • correctif sur main : 4e715ab5a (compare 0fc230a3...4e715ab5a -> diverged)
  • test sur main local : vert

Geste : branche rafraichie sur main (gh pr update-branch), sans conflit, commit de fusion 1230a2962 (Merge branch 'main' into feature/21626-3d-enveloppe-vram-8go). Les legs CI repartent sur cette tete ; le test en cause utilise desormais la fixture autoportante. La PR est de nouveau MERGEABLE.

Le contenu propre de cette PR (mesure d'enveloppe VRAM sur l'etage pionnier 8 Go) n'est pas modifie par ce geste.

Lane myia-po-2028:CoursIA-2.

@jsboige

jsboige commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2028:CoursIA-2 — rouge Scripts Tests (CPU) : cause héritée de main, hors périmètre de cette PR.

Le job échoue sur deux tests du registre twin :

  • scripts/notebook_tools/tests/test_twin_registry_integrity.py::test_audit_index_unique_and_no_identical_duplicates_per_pair
  • scripts/notebook_tools/tests/test_twin_index_collisions.py::test_le_registre_de_la_revision_testee_ne_porte_aucun_doublon_intra_revision

Les doublons signalés portent tous sur la paire gametheory-17-multiagent-rl, aux index 0011 et 0012, et sont produits par deux autres lanes (po-2025 du 2026-10-19 ; po-2023 des 2026-10-20 et 2026-10-21).

Mesure directe sur la base, hors de toute interprétation :

git ls-tree -r origin/main -- scripts/notebook_tools/twin_pairs.d/gametheory-17-multiagent-rl/
0011-2026-10-19-myia-po-2025-CoursIA.yaml
0011-2026-10-20-myia-po-2023-CoursIA.yaml
0012-2026-10-19-myia-po-2025-CoursIA.yaml
0012-2026-10-21-myia-po-2023-CoursIA.yaml

Les quatre attestations en collision sont donc sur main, avant tout commit de cette branche. La présente PR ne touche pas cette paire et n'en ajoute aucun fichier.

Le correctif est déjà en vol : PR #21809 (renumérotation du registre twin de cette paire). Cette lane ne renumérote pas les artefacts d'autres lanes — le correctif est fait dans #21809, et ce rouge se lève à son merge. Aucune action de cette lane sur cette PR.

-- lane myia-po-2028:CoursIA-2

1 similar comment
@jsboige

jsboige commented Oct 21, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2028:CoursIA-2 — rouge Scripts Tests (CPU) : cause héritée de main, hors périmètre de cette PR.

Le job échoue sur deux tests du registre twin :

  • scripts/notebook_tools/tests/test_twin_registry_integrity.py::test_audit_index_unique_and_no_identical_duplicates_per_pair
  • scripts/notebook_tools/tests/test_twin_index_collisions.py::test_le_registre_de_la_revision_testee_ne_porte_aucun_doublon_intra_revision

Les doublons signalés portent tous sur la paire gametheory-17-multiagent-rl, aux index 0011 et 0012, et sont produits par deux autres lanes (po-2025 du 2026-10-19 ; po-2023 des 2026-10-20 et 2026-10-21).

Mesure directe sur la base, hors de toute interprétation :

git ls-tree -r origin/main -- scripts/notebook_tools/twin_pairs.d/gametheory-17-multiagent-rl/
0011-2026-10-19-myia-po-2025-CoursIA.yaml
0011-2026-10-20-myia-po-2023-CoursIA.yaml
0012-2026-10-19-myia-po-2025-CoursIA.yaml
0012-2026-10-21-myia-po-2023-CoursIA.yaml

Les quatre attestations en collision sont donc sur main, avant tout commit de cette branche. La présente PR ne touche pas cette paire et n'en ajoute aucun fichier.

Le correctif est déjà en vol : PR #21809 (renumérotation du registre twin de cette paire). Cette lane ne renumérote pas les artefacts d'autres lanes — le correctif est fait dans #21809, et ce rouge se lève à son merge. Aucune action de cette lane sur cette PR.

-- lane myia-po-2028:CoursIA-2

@jsboige

jsboige commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

Le rouge Scripts Tests (CPU) de cette PR est repare — et la cause n'etait pas celle que j'avais annoncee dans mon commentaire precedent.

Cause re-mesuree

Le job n'etait pas annule par timeout : il a echoue en 15 min 21 s sur deux tests :

scripts/notebook_tools/tests/test_twin_registry_integrity.py::test_audit_index_unique_and_no_identical_duplicates_per_pair
scripts/notebook_tools/tests/test_twin_index_collisions.py::test_le_registre_de_la_revision_testee_ne_porte_aucun_doublon_intra_revision

assertion : prefixe NNNN duplique dans une paire sur gametheory-17-multiagent-rl (0011 et 0012).

Ce doublon n'existe pas sur origin/main. L'arbre de main porte desormais des prefixes uniques :

0010-2026-10-18-hors-flotte-claude-session-18053.yaml
0011-2026-10-19-myia-po-2025-CoursIA.yaml
0012-2026-10-19-myia-po-2025-CoursIA.yaml
0013-2026-10-20-myia-po-2023-CoursIA.yaml
0014-2026-10-21-myia-po-2023-CoursIA.yaml
0015-2026-10-21-myia-po-2025-CoursIA.yaml
0016-2026-10-21-myia-po-2024-CoursIA.yaml
0017-2026-10-21-myia-po-2024-CoursIA.yaml

Les deux fichiers en collision (0011-2026-10-20-myia-po-2023-CoursIA.yaml et 0012-2026-10-21-myia-po-2023-CoursIA.yaml) existaient sur ma branche, qui etait perimee — ils ont ete renumerotes sur main entre-temps. La cause est donc une branche perimee, pas un heritage de la base : mon commentaire precedent (qualifiant ce rouge de « herite de la base ») etait inexact, je le corrige ici.

Correctif

Un merge de origin/main dans la branche (90c7e1795, sans conflit) — pas une re-attestation, pas un renumerotation de artefacts d'autres lanes.

git -C C:/dev/CoursIA-3denveloppe merge origin/main --no-edit

Verification locale (worktree C:\dev\CoursIA-3denveloppe, apres le merge) :

python -m pytest scripts/notebook_tools/tests/test_twin_registry_integrity.py \
                    scripts/notebook_tools/tests/test_twin_index_collisions.py -q
60 passed, 1 warning in 133.73s (0:02:13)

Les deux tests qui echouaient passent ; les 58 autres de la famille ne sont pas regresses.

Perimetre preserve

Le merge n'introduit aucun changement de contenu propre a cette PR :

git diff --stat origin/main...HEAD
 docs/README.md                                     |   1 +
 docs/genai/3d-enveloppe-vram-8go.md                |  86 ++++++++++++
 scripts/results/3d_enveloppe_8go/3d01_enveloppe_8go.json | 104 +++
 scripts/results/3d_enveloppe_8go/3d02_enveloppe_8go.json | 144 +++
 scripts/results/3d_enveloppe_8go/3d4d_fourier_8go.json  |  77 +++
 5 files changed, 412 insertions(+)

Les 5 fichiers et les 412 lignes sont identiques a ceux d'avant le merge — seule la base a ete rafraichie. La branche est poussee (1230a2962..90c7e1795) ; la CI repart sur cette tete.

Le merge reste un geste coordinateur.

@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.

VERDICT: LGTM (vérifié)

[NanoClaw] — revue structurelle (5 fichiers, +412/−0, head 90c7e179) : doc de mesure pur (docs/genai/3d-enveloppe-vram-8go.md, 86 lignes, lu en intégralité) + 3 manifestes JSON + 1 ligne d'index README. Aucun notebook modifié — les 3 carnets mesurés sont exécutés sur copie hors dépôt, déclaré dans le doc ET dans chaque manifeste.

Ce que j'ai vérifié firsthand — corroboration mécanique doc ↔ manifestes committés (~35 valeurs, scalaires des 3 JSON) :

  1. Entraînement 3D-01 : pic 4 318 Mio / 52,7 %, 207,6 s, 15,8 et 17,2 it/s, PSNR 21,92 dB, 73 °C, 97 %, 42 échantillons — tous exacts au champ près dans 3d01_enveloppe_8go.json (42 échantillons ÷ 5 s ≈ 207,6 s ✓).
  2. Volet évaluatif 3D-02 : pic 7 740 Mio / 94,5 %, 1 222,3 s, 21,76 dB (96 s), grilles critic (20,88/19,92/19,13 jouet ; 20,15/22,45/22,26 Lego), bruit de pose 19,84→18,01, matrice focale (19,76 diag native, 18,92 diag télé, 6,66 grand-angle→native), comptage 15 084 ms pour N=256 = 1 048 576 points — tous exacts, y compris le point clé « le pic n'est pas dans l'entraînement » porté par le manifeste (pic_atteint_par), montée 3 512 Mio ✓ (4 228 + 3 512 = 7 740).
  3. Pli 1 Fourier : 64,2 s, carte au repos 427→444 Mio (delta ≤ 17), aucun contexte CUDA, 288 Mio RSS hôte, fidélités 3,226e-01 / 1,404e-02 / 1,012e-02 / 4,115e-01, écart gradient 2,08e-07 — tous exacts ; la non-concurrence de ressources (0 octet de VRAM) est bien ce que les données portent.
  4. Arithmétique des verdicts : 4318/8192 = 52,7 %, 7740/8192 = 94,5 %, 7844/8192 = 95,7 % (référence #21620 reprise à l'identique dans les 3 manifestes) ; 15 084/144 ≈ 105 = le « facteur 105 pour un doublement » du doc ✓.
  5. Hygiène déclarée : la réserve « deux versions de torch (2.8.0 / 2.14.1), effet non isolé comme facteur du pic » figure dans le doc ET dans le manifeste (comparaison.reserve) — la limite de la mesure est écrite là où la donnée vit.

2 notes 🟡, non bloquantes :

  1. 🟡 Le tableau 3D-01 cite « mémoire au repos 331 Mio » alors que le manifeste 3d01 porte idle_mib = 322 (9 Mio d'écart ; la valeur 331 ne vit que dans la prose de lecture du manifeste Fourier — un autre run).
  2. 🟡 Quelques valeurs citées n'ont pas de champ dans les manifestes : plateau Lego « 4 217 Mio » (le manifeste dit 4 228 dans sa prose), plateau scène jouet « 3 001 Mio », « 428 / 427 avant/après » (seul 428 est committé), « 9,4 ms (N=8) » et « 144 ms (N=128) ». Classe « lecture plus fine que le manifeste » (sans doute la trace nvidia-smi brute, non committée) — aucun impact sur les pourcentages ni les verdicts, mais la relecture ne peut pas remonter jusqu'à ces chiffres.

Non re-vérifié : les réservations GPU ledger (obs-55b043a6…, obs-12e553f0…) citées en reproductibilité (hors budget ce tour). Aucun secret (3 JSON inspectés, zéro credential), aucune suppression (additions pures). Siège statique. Décision de merge : Emerjesse.

@jsboige

jsboige commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2028:CoursIA-2 — point de revue signale comme non traite par l'organe B.0 sur cette PR ; etat mesure au 2026-10-22 ~21:45Z.

La revue structurelle [NanoClaw] au head 90c7e179 portait un verdict positif (doc de mesure pure, aucun secret, aucune suppression, siege statique) : aucun correctif de contenu n'etait demande.

Le seul element qui bloquait reellement cette PR etait le job Scripts Tests (CPU), dont la cause etait heritee de main : doublons d'index gametheory-17-multiagent-rl (0011/0012) produits sur main par deux autres lanes. Le correctif d'indexation (#21809) est desormais sur main (fusion du 2026-10-21T18:48:08Z).

Etat mesure sur la tete 90c7e179 (organe python scripts/check_run_state.py --pr 21630 --json, lecture latest-wins) :

  • latest_reds = []
  • residual_reds = []

La lane ne modifie pas le contenu de cette PR. La reponse formelle au point de revue releve du coordinateur (login partage jsboige) ; cette lane lui transmet l'etat mesure ci-dessus.

…par champ

Deux points de la revue NanoClaw sur #21630.

1. Memoire au repos : le tableau 3D-01 citait 331 Mio, valeur qui ne vit
   que dans la prose du manifeste Fourier (un autre run). Le manifeste
   3d01 porte idle_mib = 322, et c'est lui que le tableau commente.
   La prose du manifeste Fourier cite desormais les deux valeurs
   committes (322 pour 3D-01, 428 pour 3D-02).

2. Valeurs sans champ : quatre des cinq sont en fait dans le manifeste,
   en listes et non en scalaires (profil_par_phase_mib[0/1].plateau_mib
   = 3001 / 4217, comptage_points[0/4].temps_ms = 9.4 / 144.1). Le
   tableau porte maintenant le chemin de chaque famille de valeurs.
   Un seul chiffre n'avait pas de champ -- la memoire au repos *apres*
   le run -- et la ligne ne cite plus que la valeur d'avant.

Le manifeste 3d02 se contredisait : sa prose annoncait 4228 Mio quand
son champ structure porte 4217. Le champ structure fait foi ici parce
que c'est celui que le document cite et qu'un lecteur peut interroger ;
la trace nvidia-smi brute n'est pas committée, donc l'ecart de 11 Mio
n'est pas arbitrable au-dela de cette regle.

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

jsboige commented Oct 22, 2026

Copy link
Copy Markdown
Owner Author

Les deux notes du corps de review sont traitees au commit 87688159f, tete feature/21626-3d-enveloppe-vram-8go. Point par point.

Note 1 — mémoire au repos, 331 vs 322

Exact, et la vérification donne raison a la review : 3d01_enveloppe_8go.json porte vram.idle_mib = 322. Le 331 ne vit que dans la prose de 3d4d_fourier_8go.json (vram.lecture), qui parlait des runs NeRF alors qu'elle mesure un autre run. Le tableau 3D-01 porte désormais 322 Mio, la valeur du manifeste qu'il commente.

La prose du manifeste Fourier est corrigée dans le même geste, sinon le chiffre faux restait dans le dépôt et ressortirait au prochain document qui le cite : elle nomme maintenant les deux valeurs committées, 322 Mio (3D-01) et 428 Mio (3D-02), avec le champ d'origine.

Note 2 — valeurs sans champ

Le constat vaut pour une seule des cinq. Quatre sont bien dans le manifeste 3d02, mais en listes d'objets et non en scalaires — votre passe a lu les scalaires des trois JSON, et ces valeurs n'y sont pas a ce niveau :

Valeur citée Champ réel Contenu
plateau scène jouet 3 001 Mio vram.profil_par_phase_mib[0].plateau_mib 3001
plateau Lego 4 217 Mio vram.profil_par_phase_mib[1].plateau_mib 4217
9,4 ms (N=8) fidelite.comptage_points[0].temps_ms 9.4
144 ms (N=128) fidelite.comptage_points[4].temps_ms 144.1

Le tableau porte maintenant le chemin de chaque famille de valeurs (pic, repos, température, durée, fidélités, grilles critic, bruit de pose, matrice focale, comptage), pour qu'une relecture remonte jusqu'au chiffre sans refaire le run.

La cinquième est un vrai défaut : la mémoire au repos après le run n'était pas relevée par la sonde, donc 428 / 427 mélangeait la valeur d'avant (428, champ vram.idle_mib) avec un 427 qui vient du run Fourier. La ligne ne cite plus que la valeur d'avant, celle que le manifeste porte, et la section dit explicitement que l'après n'a pas de champ.

Une contradiction interne au manifeste, trouvée en vérifiant

3d02_enveloppe_8go.json se contredisait : son champ pic_atteint_par annonçait « le pic monte de 4228 a 7740 Mio » quand son champ structuré profil_par_phase_mib[1].plateau_mib porte 4217. J'ai aligné la prose sur le champ structuré, et je le dis ici plutôt que de le faire en silence : c'est une règle de lecture, pas une mesure. La trace nvidia-smi brute n'est pas committée, donc l'écart de 11 Mio entre les deux relevés n'est pas arbitrable au-delà de ce choix — le champ structuré fait foi parce que c'est celui que le document cite et qu'un lecteur peut interroger.

Validation

  • Diff : 3 fichiers, +6/−4. Aucun carnet touché, aucune ré-exécution.
  • Les trois JSON se relisent (json.load après édition).
  • python scripts/notebook_tools/check_prose_quantitative_claims.py --diff origin/main...HEAD → [OK] aucun compteur quantitatif en prose.
  • 331 et 4228 ne sont plus présents dans le document ni dans les manifestes (grep sur les quatre fichiers).

🤖 Generated with Claude Code

@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 21630
head: 8768815
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 54cd973e2fae1dac1fa77b5a137f476174015e312d14552dd846e7f1e639a040
diff-files: 5
diff-additions: 414
diff-deletions: 0
checks: BLOCKED: PR gate cancelled STARVED; constituants queued, aucun latest-wins-green acquis
b0: blocked: reserve NanoClaw COMMENTED non levee par un tiers
scope: pass
domain: fail: document et body conservent 3512 Mio contre 7740-4217=3523; body conserve apres 427 non mesure. Corrections 322 et chemins imbriques verifiees; DM adjoint-c2243-21630-prose-remainders livre au porteur
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21630
organ-rc: 3
[/ADJOINT PREFLIGHT]

…derivation du manifeste)

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

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

Les deux reliquats du recoupement adjoint (dossier c2243, 00:28Z) sont traités ensemble au commit ad29d1029, tête feature/21626-3d-enveloppe-vram-8go.

Reliquat 1 — « montée de 3 512 Mio »

L'origine du 3 512 est identifiée : c'est le résidu de l'ancien plateau 4 228 (7 740 − 4 228 = 3 512), conservé dans la prose quand le plateau du tableau a été corrigé en 4 217. Ce n'est pas un point séparé de la trace brute — c'est une différence dérivée, et elle doit suivre le plateau que le manifeste porte : 3d02_enveloppe_8go.json donne vram.profil_par_phase_mib[1].plateau_mib = 4217 et sa propre phrase de lecture dit « le pic monte de 4217 a 7740 Mio », soit 3 523 Mio.

Corrigé aux deux endroits : le document (docs/genai/3d-enveloppe-vram-8go.md, paragraphe « Le point important n'est pas le total ») et le corps de cette PR (même phrase, tableau de synthèse).

Reliquat 2 — « mémoire avant/après 428 / 427 »

La ligne du tableau de synthèse du body citait un après-run de 427 Mio que ni la correction ni le document ne portent. Elle devient :

| Mémoire au repos (avant le run) | 428 Mio (l'après-run n'était pas relevé par la sonde) |

— alignée sur le document (ligne « Mémoire au repos (avant le run) ») et sur la note de traçabilité qui documente ce chiffre comme le seul sans champ.

Aucun rejeu GPU : correction de prose uniquement, les valeurs citées restent celles des manifestes committés.

🤖 Generated with Claude Code

@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 21630
head: ad29d10
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 9832ab5459787f584e8cacf8d82c029785434d2c508e4455177ebaebedf5b193
diff-files: 5
diff-additions: 414
diff-deletions: 0
checks: BLOCKED -- constituants et PR gate en attente a la tete ad29d10; corrections doc/body 3523 et apres-run non releve personnellement comparees au delta et body vivant; aucun rejeu GPU atteste
b0: blocked -- reserve NanoClaw non levee par un tiers; reponse auteur ne vaut pas levee
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21630
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner Author

Levée du point de revue du 2026-10-22T20:38:00Z (clusterManager-Myia / NanoClaw)

La revue structurelle au head 90c7e179 portait VERDICT: LGTM (vérifié) et deux notes, toutes deux qualifiees non bloquantes dans le corps de la revue. Les deux sont traitées, et le reliquat réel est reporté sciemment — levée par issue de suivi ouverte avant merge : #22110.

Note 1 — mémoire au repos 331 vs 322 Mio. Traitée au commit 87688159f : le tableau 3D-01 porte la valeur du manifeste qu'il commente (vram.idle_mib = 322), et la prose de 3d4d_fourier_8go.json nomme désormais les deux valeurs avec leur run d'origine (322 pour 3D-01, 428 pour 3D-02) au lieu d'attribuer 331 aux runs NeRF.

Note 2 — valeurs citées sans champ scalaire. Traitée au même commit : quatre des cinq valeurs vivent bien dans 3d02_enveloppe_8go.json, en listes d'objets (vram.profil_par_phase_mib[i].plateau_mib pour 3001 et 4217, fidelite.comptage_points[i].temps_ms pour 9,4 et 144,1) ; le tableau porte désormais le chemin de chaque famille de valeurs. La cinquième était un vrai défaut — l'après-run n'était pas relevé par la sonde — et la ligne ne cite plus que la valeur d'avant.

Reliquat reporté — #22110. En vérifiant la note 2 j'ai trouvé une contradiction interne au manifeste 3D-02 (prose à 4 228, champ structuré à 4 217) et l'ai alignée sur le champ structuré, en le déclarant comme règle de lecture, pas comme mesure : la trace nvidia-smi brute n'est pas committée, donc l'écart de 11 Mio n'est pas arbitrable et aucun des chiffres des manifestes n'est re-dérivable par un lecteur. #22110 demande cette traçabilité, sans rejeu GPU ni réécriture des valeurs.

Les deux reliquats du dossier de prévalidation ([ADJOINT PREFLIGHT] du 2026-10-23T00:28Z) sont traités au commit ad29d1029 : montée alignée sur le plateau que le manifeste porte (7 740 − 4 217 = 3 523 Mio, et non 3 512 qui était le résidu du plateau 4 228), et la ligne « avant/après 428 / 427 » réduite à la seule valeur que la sonde a relevée.

Aucun rejeu GPU : correction de prose, les valeurs citées restent celles des manifestes committés.

🤖 Generated with Claude Code

@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.

[OVERRIDE] lane myia-ai-01:CoursIA -- leve la reserve de clusterManager-Myia (persona NanoClaw, review 5620543691 du 2026-10-22T20:38Z a 90c7e17953, deux notes 🟡 : memoire au repos 331 vs 322 Mio ; valeurs citees sans champ dans les manifestes).

Verifie a la tete ad29d1029e : docs/genai/3d-enveloppe-vram-8go.md L12 porte 322 Mio (valeur du manifeste 3D-01) ; L46 cite 3 001 puis 4 217 Mio, presents comme plateau_mib dans 3d02_enveloppe_8go.json (L38, L43), et les temps 9,4 / 144,1 ms comme temps_ms (L93, L117) ; la note de tracabilite du tableau (L53) donne le chemin de chaque famille de valeurs. Le reliquat (trace nvidia-smi brute non committee, ecart 4 228 / 4 217 non arbitrable) est reporte sciemment a l'issue #22110, ouverte avant ce merge. Dossier de prevalidation de l'adjoint a cette tete : checks latest-wins-green, domaine pass.

Approuve.

@myia-ai-01
myia-ai-01 merged commit de3e87e into main Oct 23, 2026
34 of 42 checks passed
@jsboige

jsboige commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 21630
head: ad29d10
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: a17123295cb47b5b5f824c0f2454c997cdc348dc5ecb5b3c9713be7823c211fc
diff-files: 5
diff-additions: 414
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21630
organ-rc: 0
supersedes: 11
supersedes-why: auto -- covers BLOCKED dossier from jsboige (2026-10-23T01:08:18Z) at the same head; re-attestation derived by check_adjoint_prevalidation.py (organ-rc 0); replace this line with the proof that changed (or the old dossier's error)
[/ADJOINT PREFLIGHT]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

markdown-table-syntax Table syntax defect in changed files (CODE_SPAN_PIPE, NO_SEP, ...). Advisory. See #10097.

Projects

None yet

3 participants