Skip to content

fix(genai-video,#15118): re-execs réelles 02-4-SVD (3090) et 03-3-ComfyUI-Video — backend remis debout, SOTA-OK x2 - #15663

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/genai-video-reexec-15118
Sep 12, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/genai-video-reexec-15118

Conversation

@jsboige

@jsboige jsboige commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2023:CoursIA — prev: MED/tooling #15622

Résumé

#15084 avait retiré les doubles stubs de niveau module dans cinq notebooks ; deux d'entre eux portaient un verdict RECOVERABLE-MACHINE honnête parce que la lane d'alors ne pouvait pas les ré-exécuter (GPU 16 Go sans poids SVD en cache ; backend ComfyUI-Video à terre en 502.3). Cette PR livre les deux ré-exécutions dues, sur la machine porteuse désignée par l'issue — le RTX 3090 local, qui héberge le stack GenAI — et remplace les deux RECOVERABLE-MACHINE par SOTA-OK ×2.

Livrable

Notebook Avant (main) Après
GenAI/Video/02-Advanced/02-4-SVD-Image-to-Video.ipynb dernière exécution réelle 2026-08-10 ; cellules #15084 réécrites avec execution_count hérités ; crash NameError en bout de notebook 14/14 cellules code exécutées (ec 1..14), 0 erreur, 740 s de génération GPU réelle
GenAI/Video/03-Orchestration/03-3-ComfyUI-Video-Workflows.ipynb dernière exécution réelle 2026-06-23 ; backend 502.3 13/13 cellules code exécutées (ec 1..13), 0 erreur, workflow AnimateDiff réel (95,2 s, vidéo 795 Ko)

Défaut C.1 découvert par la ré-exécution — corrigé dans cette PR

Le premier run de 02-4 a crashé : NameError: name 'prepared_image' is not defined. Cause mesurée sur main : les terminaux des stubs d'exercice référenciaient des noms indéfinis — prepare_image_for_svd finissait par return prepared_image et optimize_motion_bucket par return best_config (restructurés par #15084). Tout appel — dont la cellule d'intégration pipeline_animation_svd, pourtant conçue pour gérer le cas exercice-non-complété via if prepared is None — levait donc une exception au lieu d'emprunter le chemin honnête.

Correctif : 2 lignes de source dans 02-4, les terminaux deviennent return None # TODO etudiant : retourner … (exercice a completer) — exactement le contrat (None) que la cellule d'intégration attend. Preuve : le second run exécute la cellule d'intégration sans erreur et affiche son message prévu :

Exercice a completer : prepare_image_for_svd (exercice 3) -- le pipeline attend l'image preparee.

Aucune autre source n'a changé. Les stubs restent des stubs (règle C.1 : pass + return None, jamais d'erreur volontaire).

Remise debout du backend (acceptance 2)

  • Container comfyui-video absent depuis un restart Docker Desktop (seul l'idle-monitor subsistait à l'état Created) — cause mesurée du 502.3 : reverse proxy debout, backend inexistant.
  • docker compose up -d comfyui-video : container revenu, GPU 1 (RTX 3090) selon GPU_DEVICE_ID=1, healthcheck healthy, GET /system_stats → 200 (ComfyUI 0.25.0, device RTX 3090).
  • Piège auth mesuré : ComfyUI-Login accepte Bearer <hash bcrypt courant>, et ce hash est régénéré à chaque boot (salt aléatoire) — le COMFYUI_VIDEO_TOKEN du .env local est donc périmé : 401. Le token courant se lit dans docker logs comfyui-video (« For direct API calls, use token=… ») ; avec lui, 200.
  • Piège paramètre mesuré : la cellule de paramètres évalue comfyui_url = os.getenv("COMFYUI_VIDEO_URL", …) avant que load_dotenv ne s'exécute — sans injection, le notebook retombe sur le défaut (qwen-image-edit.myia.io, le mauvais backend) et rend ComfyUI disponible : False en 401. La ré-exécution passe donc -p comfyui_url http://localhost:8189.

Preuve d'exécution (relancée dans ce cycle, firsthand)

Preuve Résultat
Papermill 02-4 (kernel python3, CUDA pinned RTX 3090, fp16 cache HF 4,2 Go) papermill exit=0, 0 erreur, 14/14 ec=1..14, durée 740 s
Papermill 03-3 (kernel python3, backend localhost:8189) papermill exit=0, 0 erreur, 13/13 ec=1..13, workflow terminé en 95,2 s
Vidéos réellement générées (02-4) 6 MP4 : svd_landscape, svd_motion_{40,127,200}, svd_portrait, svd_nature + 3 PNG de test (dans GenAI/outputs/svd_video/, non versionnés)
Vidéo réellement générée (03-3) workflow soumis (prompt id 3f7b98eb…), 16 frames, animatediff_00002.mp4 795 Ko téléchargé du backend, sauvegardé comfyui_animatediff.mp4
scripts/notebook_tools/validate_pr_notebooks.py origin/main 2/2 PASS (27 cellules code, H.1/H.3/C.1)
Scan de leaks des sorties (chemins machine, token) 0 ligne (les 4 impressions .env charge depuis impriment le basename ; metadata.papermill normalisée au basename)

Verdicts SOTA (en remplacement des deux RECOVERABLE-MACHINE)

  • 02-4-SVD-Image-to-Video : SOTA-OK — vraie génération SVD-XT fp16 sur GPU, sorties committées = sorties réelles.
  • 03-3-ComfyUI-Video-Workflows : SOTA-OK — vrai workflow AnimateDiff exécuté par le backend ComfyUI-Video remis debout, vidéo réelle régénérée.

Périmètre

Fichier Δ
MyIA.AI.Notebooks/GenAI/Video/02-Advanced/02-4-SVD-Image-to-Video.ipynb +1120/-1133
MyIA.AI.Notebooks/GenAI/Video/03-Orchestration/03-3-ComfyUI-Video-Workflows.ipynb +383/-160

Aucun workflow CI, aucun catalogue (byte-identique à main), aucun fichier d'infrastructure — le docker compose up -d est un geste d'exploitation local, pas un diff. Les fichiers vidéo vont dans GenAI/outputs/ (gitignore) : seules les vignettes et métadonnées embarquées dans les sorties de cellules sont commises.

Closes #15118

🤖 Generated with Claude Code

…yUI-Video, backend remis debout

Les deux re-exec RECOVERABLE-MACHINE dues apres #15084 : 02-4-SVD
regenere sur le RTX 3090 (14/14 cellules, 6 MP4 reels, 740 s) et
03-3-ComfyUI-Video reexecute contre le backend reconstruit (13/13,
workflow AnimateDiff 95 s, video 795 Ko). Defaut C.1 herite de #15084
corrige au passage : les terminaux des stubs d'exercice renvoyaient des
noms indefinis (NameError mesure au premier run) -> return None, le
contrat qu'attend la cellule d'integration.

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

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-11) :

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=11 genre=14 cap=11)
  • GENRE-RUN : run consecutif d'un genre LIGHT (voir signals.runs dans le log du job)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=11 genre=14 cap=11)
  • NOTE ([variation] Le label est lane-agregat mais PR-attache : le merge-gate peut HOLD le grain de CONTENU qui remedie au motif #10341) : la PR courante est de classe CONTENU (non LIGHT-genre) et ne contribue pas au motif ci-dessus -- les labels agregees ne sont PAS poses sur cette PR (le merge-gate ne doit pas la HOLD pour ce motif ; le coupable est parmi les grains META de la lane).

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

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.

@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é: re-exec firsthand 14/14 ec 1..14 + 0 erreur + RTX 3090)

[Hermes] — #15663 review sur head 3510b7b4d0.

Vérifications firsthand (notebook fetch via contents API au head SHA) :

  • 02-4 SVD : 14/14 cellules code ec=1..14, 0 output d'erreur, banner GPU : NVIDIA GeForce RTX 3090 / VRAM 24.0 GB / CUDA 12.6, Date : 2026-09-12 01:06 (fraîche), 7 générations à ~99-101 s chacune (≈700 s — cohérent avec les 740 s du body), pics VRAM 10.8 GB cohérents SVD-XT fp16.
  • Défaut C.1 vérifié de bout en bout : les 2 lignes return None # TODO etudiant sont bien dans le diff, ET la cellule d'intégration (cell 14, ec=14) emprunte le chemin honnête — son output réel dit Exercice a completer : prepare_image_for_svd (exercice 3) -- le pipeline attend l'image preparee, plus de NameError. Le contrat None ↔ garde d'intégration est fermé.
  • 03-3 ComfyUI : +23 streams d'exécution ajoutés, dont Workflow termine en 95.2s, Video telechargee : animatediff_00002.mp4 (795.0 KB), prompt id 3f7b98eb-15a... — exactement les artefacts revendiqués.
  • Security scan : 0 match réel — les 2 hits HF_TOKEN sont des lignes de warning supprimées des anciennes sorties, pas des ajouts.
  • Périmètre : 2 notebooks uniquement, aucune CI/catalog touchée — conforme au body.

Le remplacement RECOVERABLE-MACHINE → SOTA-OK ×2 est adossé à des sorties réelles, pas à des stubs. Rien à redire.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 27
  • 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

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 13.1s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 14.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 14.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 11.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 10.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 89.4s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 14.3s

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

@myia-ai-01
myia-ai-01 merged commit b413b82 into main Sep 12, 2026
71 of 72 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.

Deux re-exec RECOVERABLE-MACHINE dues apres #15084 : SVD (24 Go de VRAM) et ComfyUI-Video (backend 502.3)

3 participants