Repository navigation
feat(genai,#16058): TV-00a RoPE from scratch -- invariance relative mesuree - #16089
Conversation
…esuree Bloc A.2 de l'epic Variantes Transformer modernes : nouveau notebook TV-00a-RoPE-from-scratch (29 cellules, 10 code, kernel python3, CPU, torch 2.13 + numpy 2.2.6) + README du sous-repertoire TransformerVariants. Quatre lectures portees par des outputs reels du run : 1. R(m) rotation exacte ; d^2(m,n) invariant par translation (ecart max 0.0 exact sur trois positions absolues a ecart 4) -- mais PAS symetrique en q<->k (34.75 vs 25.12) : l'invariance est directionnelle, n-m != m-n. 2. Le PE additif echoue au meme test : 25.99/27.08/30.38 (16.9% d'ecart relatif) la ou RoPE mesure 0.0 -- structurel, pas numerique. 3. Translation de sequence : logit RoPE immuable a 2.7e-15 pres ; additif : 7.04 (un tiers du score). 4. Tache d'inversion (3 graines, 3722 params, budget identique) : RoPE domine en longueur vue (0.386 vs 0.266, dispersion +-0.001) mais l'ordre S'INVERSE en longueur 16 jamais vue (0.221 vs 0.241) -- l'idee recue << RoPE generalise mieux en longueur >> ne se reproduit pas sur ce banc ; lectures honnetes et cause plausible (offsets hors plage entrainee vs signal additif lisse). Densite 1614 (plancher 1200) ; 3 exercices stubbes C.1 ; execution reelle via notebook_tools.py (13.1 s, 10/10 cellules, 0 erreur) ; validate 1/1 ; hors registre twin ; hooks verts au premier essai. See #16058 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MD hierarchy drift -- 9af7383Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS — notebook RoPE solide et outputs authentiques (exécution séquentielle 1→10, progression de loss réelle, seed sweep), MAIS +6 HEADING-IN-LIST imputables au diff (signal CI #11831), non corrigés à ce head.
Revue [Hermes] sur head 9af7383a. Notebook lu intégralement (29 cellules), défauts localisés firsthand :
- +6 HEADING-IN-LIST (cells 21, 23, 25 — paires
- # Indice : …/- # Etape 1 : …) : un heading#au sein d'un item de liste est un défaut de rendu GitHub (#11831), signalé par la CI au push (01:20Z) et toujours présent au head. Recommandé :- **Indice :** …/- **Étape 1 :** …. - Authenticité vérifiée : 10/10 code cells avec
outputs+execution_countséquentiel 1→10 ; cell 18 = exécution réelle (progression loss[add]1.98→1.94 vs[rope]1.65, seed sweep0.3854/0.2349, tableau final) — pas de prints statiques. - CI bots 5/5 : claim-check PASS, H.4 PASS, PR Validation PASS (10/10), Golden-Set 8/8.
- Tranche A.2 d'un epic multi-cycles :
closingIssuesReferences= 0 — rien d'armé, le découplage est correct.
Le fond pédagogique est au niveau des standards du repo (invariance relative mesurée, comparaison PE/RoPE, cellule d'interprétation). Le seul blocage matériel est le drift de rendu markdown, cosmétique mais signalé et chiffré (+6) par la CI du repo.
…es d'exercices Les lignes « - # Indice : ... » des trois cellules markdown d'exercices sont des titres-dans-liste pour le garde markdown-rendering (3 violations ERROR nouvelles). Reformules en « **Indice :** » + « - Etapes : (1) ... ; (2) ... ; (3) ... ». Les marqueurs # Indice/# Etape restent dans les stubs de code (convention C.1), ou ils sont des commentaires legitimes. Verifie localement avec le script exact de la CI : detect_markdown_rendering.py --check -> OK, --report -> 0 violation. Markdown-only : cellules code et outputs inchanges (C.2), validate 1/1. See #16058 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
VERDICT: LGTM (contrainte token : COMMENT only, cap #15511 — relais merge à un siège qualifiant) [Hermes] — review de #16089 sur head Vérifications réelles :
Mineur (non bloquant) : la 4e décimale « 0,2205 » du tableau final vs 0,2206 recalculé — arrondi d'affichage de la moyenne, sans effet pédagogique. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Review qualifiante ai-01 au head exact 2ac747f7e47b403ae71c732312aada3863b82aea après lecture personnelle du body, de tous les commentaires, de la review Hermes avec son état et son corps, des threads inline et des 1 171 lignes du diff.
Le notebook établit correctement la rotation par paires, l'invariance par translation et son caractère directionnel, puis confronte RoPE au PE additif sur une tâche entraînée à architecture et budget identiques. Les sorties supportent les chiffres annoncés : invariance à 0,0, logit translatée à 2,7e-15, écart additif 7,04, et renversement honnête du rang en longueur 16. Les 10 cellules code sont exécutées séquentiellement avec sorties réelles ; les trois exercices sont des stubs C.1 valides.
Les six HEADING-IN-LIST de la réserve Hermes ont été corrigés en markdown au head exact ; le check correspondant, les ratchets notebook, les sorties-required et le PR gate sont verts. Threads inline : 0. B.0 : rc=0. Le point d'arrondi 0,2205/0,2206 est non substantiel et explicitement identifié.
Verdict : APPROVED. Le merge reste une décision séparée et ne sera tenté qu'après re-grounding instant-T.
…esuree (#16089) * feat(genai,#16058): TV-00a RoPE from scratch -- invariance relative mesuree Bloc A.2 de l'epic Variantes Transformer modernes : nouveau notebook TV-00a-RoPE-from-scratch (29 cellules, 10 code, kernel python3, CPU, torch 2.13 + numpy 2.2.6) + README du sous-repertoire TransformerVariants. Quatre lectures portees par des outputs reels du run : 1. R(m) rotation exacte ; d^2(m,n) invariant par translation (ecart max 0.0 exact sur trois positions absolues a ecart 4) -- mais PAS symetrique en q<->k (34.75 vs 25.12) : l'invariance est directionnelle, n-m != m-n. 2. Le PE additif echoue au meme test : 25.99/27.08/30.38 (16.9% d'ecart relatif) la ou RoPE mesure 0.0 -- structurel, pas numerique. 3. Translation de sequence : logit RoPE immuable a 2.7e-15 pres ; additif : 7.04 (un tiers du score). 4. Tache d'inversion (3 graines, 3722 params, budget identique) : RoPE domine en longueur vue (0.386 vs 0.266, dispersion +-0.001) mais l'ordre S'INVERSE en longueur 16 jamais vue (0.221 vs 0.241) -- l'idee recue << RoPE generalise mieux en longueur >> ne se reproduit pas sur ce banc ; lectures honnetes et cause plausible (offsets hors plage entrainee vs signal additif lisse). Densite 1614 (plancher 1200) ; 3 exercices stubbes C.1 ; execution reelle via notebook_tools.py (13.1 s, 10/10 cellules, 0 erreur) ; validate 1/1 ; hors registre twin ; hooks verts au premier essai. See #16058 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix(genai,#16058): TV-00a -- 3 defauts heading_in_list dans les enonces d'exercices Les lignes « - # Indice : ... » des trois cellules markdown d'exercices sont des titres-dans-liste pour le garde markdown-rendering (3 violations ERROR nouvelles). Reformules en « **Indice :** » + « - Etapes : (1) ... ; (2) ... ; (3) ... ». Les marqueurs # Indice/# Etape restent dans les stubs de code (convention C.1), ou ils sont des commentaires legitimes. Verifie localement avec le script exact de la CI : detect_markdown_rendering.py --check -> OK, --report -> 0 violation. Markdown-only : cellules code et outputs inchanges (C.2), validate 1/1. See #16058 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: DEEP/genai — lane myia-po-2026:CoursIA — prev: DEEP/notebook-python #16083
Objet
Première tranche de l'epic #16058 « Variantes Transformer modernes from scratch » : bloc A.2, le notebook RoPE-from-scratch, le plus borné des trois notebooks du bloc A (A.1 variantes d'attention et A.3 MoE suivront — multi-cycles). Création from scratch : nouveau notebook + README du nouveau sous-répertoire
GenAI/Texte/TransformerVariants/(précédent de sous-répertoire dans la série :LLMs-Locaux-Serving/; la numérotation plate 01-23 est prise, le « 22_ » de l'issue périmé). Placement calibré sur la lane sœur qui attaque l'epic jumeau #16059 (PR #16080,GenAI/FineTuning/FT-00a).Quoi
TV-00a-RoPE-from-scratch.ipynb— 29 cellules (10 code, 19 markdown), français, kernelpython3, CPU, torch 2.13 + numpy 2.2.6 (env vérifié avant le claim, règle F). Aucune dépendancetransformers/xformers/flash-attn(exigence A.4 de l'issue). 3 exercices stubbes C.1 (base élargie LLaMA-3, RoPE partiel, interpolation linéaire), tous avec# Indice/# Etape N, aucunraise NotImplementedError.Les lectures qui portent le tier (chacun ancré sur un output réel du run)
1. L'invariance relative est EXACTE — et elle n'est que par translation. Trois paires de positions absolues
(3,7),(10,14),(100,104), même écart 4 :d²imprimé trois fois 34.746126188450376, écart max0.0exact (float64). Et une surprise non prévue par le résumé habituel :d²(3,7) = 34,75 ≠ 25,12 = d²(7,3)— pas de symétrie q↔k, carR_{n−m} ≠ R_{m−n}: l'invariance de RoPE est directionnelle.2. Le PE additif échoue au même test, structurellement. Même écart 4 : 25,99 / 27,08 / 30,38 — 16,9 % d'écart relatif selon la position absolue, là où RoPE mesure 0,0.
3. La translation de séquence ne change aucune logit RoPE.
s(3,7)vss(43,47): identiques à 2,7 × 10⁻¹⁵ (epsilon float64) ; le PE additif bouge de 7,04 (un tiers du score).4. La tâche d'inversion (mesure honnête, 3 graines) renverse l'idée reçue. À budget et architecture identiques (3 722 params, Adam, 400 pas) : RoPE domine en longueur vue (0,386 vs 0,266, dispersion inter-graines ±0,001) mais l'ordre s'inverse en longueur 16 jamais vue (0,221 vs 0,241) — « RoPE généralise mieux aux longueurs non vues » ne se reproduit pas sur ce banc. Cause plausible lue dans la prose : offsets relatifs hors de la plage entraînée (±15 vs ±11) contre signal additif lisse en position. La leçon mesurée : la propriété brute ne suffit pas, les techniques d'extension (exercices 1 et 3) existent pour cela.
Preuve
scripts/notebook_tools/notebook_tools.py execute --kernel python3: SUCCESS, 13,1 s, 10/10 cellules,execution_count1-10 tous posés, 0 output vide, 0 erreur (C.2/H.1).validate_pr_notebooks.py origin/main <nb>: 1/1 passed, 10 cells.grep -nE "raise NotImplementedError|assert False|1/0"→ 0 ; les 3 stubs s'exécutent et impriment « Exercice à compléter ».below_threshold=0.TransformerVariants/RoPE dansscripts/notebook_tools/twin_pairs.d/(les 6 hits grep sont des faux positifs du sous-chaîne « rope » dans « Proper/propriétés ») → aucune rebaseline due.Perimetre
Deux nouveaux fichiers :
MyIA.AI.Notebooks/GenAI/Texte/TransformerVariants/TV-00a-RoPE-from-scratch.ipynb+README.mddu sous-répertoire. Aucun fichier existant modifié, aucun script, catalogue non touché (l'inscription du nouveau notebook revient au cron<24 h).Residuel
Bloc A.1 (MHA/MQA/GQA/SWA) et A.3 (MoE) du bloc from-scratch, bloc B (SOTA, nécessite GPU + modèles quantifiés), comparatif final A vs B — non entamés. Voir #16058 pour l'acceptation complète.
See #16058
🤖 Generated with Claude Code