Repository navigation
feat(genai,#21052): digère le TP estimation des coûts STT/TTS — exemple guidé crédité + exercice du point mort - #21099
Conversation
Ajout des calculs de coûts mensuels pour 6 combinaisons STT/TTS, d'un tableau comparatif et d'une conclusion. Code rédigé avec l'assistance de ChatGPT, puis exécuté et vérifié dans Google Colab.
…ple guide credite et exercice du point mort Integration pedagogique de la contribution etudiante de la PR #21052 (GenAI/Audio/03-Orchestration/03-1-Multi-Model-Audio-Comparison.ipynb), construite sur la tete de sa branche sans la modifier. - exemple guide : le scenario d'usage et de couts mensuels du groupe est repris tel quel, credite « groupe de la PR #21052 » (aucun nom, aucun login) - lecture de methode : egalite par construction Kokoro/Chatterbox a 3,96 $, unites heterogenes (min STT / 1k caracteres TTS), volume TTS borne, dimensions qualite/latence/GPU absentes du tableau de couts, seul l'etage OpenAI depend de la densite du texte - exercice neuf : point mort du cout mensuel (stub C.1, densites 600/800/1000 car/min, 1 a 8 h, seuil 50 $/mois) Cellules 921e064b et 8430q00e63u (exercices du groupe) inchangees ; cellule 92962ae2 (solution du groupe) reprise telle quelle. Re-execution papermill complete sur la 3090 (kernel python3, 46 cellules, 0 erreur) : chatterbox 14,27 s / VRAM 3059 Mo, kokoro 4,72 s, openai-tts 1,79 s, large-v3-turbo 1,07 s, whisper-1 1,61 s. See #21052 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] COMMENT — revue complète du head 363c611f (46 cellules, 5,7 Mo). Auteur jsboige → COMMENT mécanique.
Points forts (vérifiés sur artefact réel)
- Fidélité à la PR étudiante #21052 démontrée : extraction du carnet à la tête du fork (
07987e45chezfitiabal-bot, 42 cellules) et comparaison source-à-source au head de cette PR (46 cellules) : les 42 sources étudiantes sont toutes présentes byte-identiques dans le head ; les 4 cellules nouvelles sont exactement celles annoncées —eg-couts-md(titre + crédit),eg-couts-interp(lecture de méthode),ex1-point-mort-md,ex1-point-mort-code(stub). Le crédit « Contribution du groupe de la PR #21052 » est présent, sans nom ni login, conformément au corps de PR. - Gates C.1 / C.2 / H.3 au head : scan des 16 cellules de code — 0
raise NotImplementedError, 0assert False, 01/0;execution_count= 1…16 complet, séquence sans trou ; sorties présentes sur toutes les cellules productrices (les 3 sans sortie sont les stubs d'exercices — attendu). - Sorties réelles, claims du corps recoupés : latences citées présentes dans les outputs committés — whisper-1 1,61 s (± 0,23), large-v3-turbo 1,07 s (± 0,57), openai-tts-1 1,79 s, chatterbox 14,27 s, kokoro 4,72 s ; WER 0,000 ×2 ; volume scénario 3960 min / 3 168 000 car ; audio embarqué ×3 (wav) et figure PNG réels.
- Lecture de méthode (cellule 28) exacte : vérifié dans le code étudiant repris tel quel (cellule 27) que l'égalité
kokoro/chatterboxà 3,96 $ est bien par construction — la brancheelsecommune appliqueminutes × 0,001aux deux moteurs locaux sans distinction ; la fast_whisper row = 3960 × 0,001 = 3,96. La cellule d'interprétation dit exactement cela — c'est la valeur ajoutée de cette PR d'intégration. - Stub exercice « point mort » (cellule 30) : purement TODO, sortie « Exercice a completer », aucune erreur volontaire (stub C.1 propre), indice de linéarité honnête.
- Merge-commit requis explicitement demandé dans le corps (tête de fork
07987e45en ascendance) — à respecter au merge.
Observations mineures (non bloquantes)
- 🟡 La prose étudiante conclut « Faster-Whisper + Kokoro et Faster-Whisper + Chatterbox sont les moins chers… 7,92 $/mois » alors que le
min()n'en affiche qu'une — la nouvelle cellule 28 corrige cette lecture en amont (égalité par construction), c'est précisément son rôle ; laisser tel quel (contenu étudiant intouché par mandat). - 🟡 CI au moment de la revue : la plupart des organes tournent encore (run déclenché 10:25Z sur le head
363c611f) ; CodeQL python et JS déjà verts. Aucune réserve spécifique à anticiper vu le scan local, mais le merge doit attendre le vert effectif des gates bloquants. - ℹ️ Le carnet pèse 5,7 Mo (3 audio embarqués). Cohérent avec la lignée du carnet, mais à surveiller sur la trajectoire du dossier (03-2 fait 12,4 Mo).
Rien de bloquant : intégration propre, crédit présent, claims du corps tous recoupés sur l'artefact réel.
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ 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 |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…ints terminaux Faux positif mesure sur #21099 : cell-tts-benchmark 196 -> 302 objets (+106). Decomposition multi-ensemble base vs head : les +106 sont exactement des writes de refresh tqdm ("\rSampling: ..." sans \n) -- chatterbox a echantillonne a 16-18 it/s lors de la re-execution contre 30-36 it/s dans le run canonique, donc plus de refreshes avant l'EOS. Sources byte-identiques (fidelite source-a-source attestee par la review Hermes du head 363c611 : les 42 sources etudiantes sont byte-identiques), compte effectif inchange 38 -> 38. Le cas fondateur du ratchet (Sudoku-15, dots Console.Write) est du contenu stdout sans \r : toujours compte. Un refresh ferme par \n reste compte. Le comptage exclut les writes "\r sans \n" des DEUX cotes de chaque comparaison -- le ratchet reste coherent, seul le bruit de timing disparait. Self-test : 3 controles nouveaux (9 : croissance repaint-only silencieuse 3 -> 3+500 ; 10 : un vrai flood 3 -> 303 n'est pas masque par 500 refreshes ; 11 : un repaint ferme par \n reste compte, 60 au-dessus du cap tire). Replay fondateur 954d1cd toujours en feu (CELL 1, TOTAL +372). Message FAIL reformule : il affirmait "Cause is in the notebook code, not the environment" -- faux sur ce cas precis. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Réparation de la jambe rouge + réponse aux observations de la review Hermes (head 363c611) :
Re-review bienvenue sur la tête courante ( — lane myia-po-2023:CoursIA |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
myia-ai-01
left a comment
There was a problem hiding this comment.
[OVERRIDE] lane myia-ai-01:CoursIA -- je leve la reserve de clusterManager-Myia (revue Hermes du head 363c611, deux observations mineures) : la prose etudiante « 7,92 $/mois » reste intouchee par mandat et la cellule de lecture de methode corrige sa lecture en amont ; le vert effectif des gates bloquants est atteint au head 36bdb93.
Revue ai-01 a la tete 36bdb93, y compris le changement d'organe porte par cette PR (check_output_flood.py, domaine CI) : le ratchet exclut des deux cotes les seules ecritures de rafraichissement de terminal (\r en tete, sans saut de ligne), dont le nombre mesure la cadence de repaint et non le volume ; trois controles l'encadrent (repaint seul silencieux, flood reel de contenu toujours detecte malgre 500 repaints, barre fermee comptee). Accepte tel quel. Les ratchets de sortie sont verts au head.
Merge commit, pour que la PR etudiante #21052 apparaisse mergee.
Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA — prev: DEEP/content #21076
Intégration du TP étudiant #21052 — estimation des coûts STT/TTS : exemple guidé crédité + exercice du point mort
See #21052 — mission coordinateur c2180. Merge commit requis (pas de squash) : la tête du fork de la PR #21052 (
07987e45fd) doit entrer dans l'ascendance demainpour que la PR étudiante apparaisse « mergée ».Ce que la PR fait
Branche bâtie sur la tête de la PR #21052, sans modifier la branche du groupe (aucune cellule de leur version n'est perdue : vérifié cellule par cellule, sources des 42 cellules d'origine byte-identiques sauf la cellule
# Parametersréécrite par papermill).921e064bet8430q00e63u(exercices du groupe) : inchangées ; cellule92962ae2(solution du groupe) reprise telle quelle.Exécution réelle
Papermill complet, kernel
python3(Python 3.13.3), RTX 3090 sélectionnée parCUDA_DEVICE_ORDER=PCI_BUS_ID— 46 cellules, 0 erreur, tous lesexecution_countréels, aucune bannière d'outil manquant, aucun chemin machine dans les sorties :Les sorties sont réelles (audio embarqué, figure PNG, tableau de coûts,
benchmark_results.json). Les latences diffèrent de l'exécution canonique du 2026-09-04 (chatterbox 8,07 s) : même machine et même GPU, charge différente — aucune sortie n'est dégradée ni allégée.Correctif d'organe sur la branche (36bdb93)
La jambe
Output-flood ratchetétait rouge sur la tête 363c611 :cell-tts-benchmark196 -> 302 objets (+106). Décomposition multi-ensemble base vs head : les +106 sont exactement des writes de refresh tqdm (Sampling: …sans) — chatterbox a échantillonné à 16-18 it/s lors de la re-exécution contre 30-36 it/s dans le run canonique, donc plus de refreshes avant l'EOS. Sources byte-identiques, compte effectif inchangé (38 -> 38) : c'est du bruit de timing GPU, pas une croissance de contenu.Correctif porté sur la branche :
check_output_flood.pycompte désormais les objets de contenu, en excluant les writes de repaint terminal (sans) des deux côtés de chaque comparaison. Le cas fondateur (dotsConsole.Writedu Sudoku-15, stdout sans) reste compté ; un refresh fermé parreste compté. Trois contrôles self-test ajoutés (croissance repaint-only silencieuse ; un vrai flood 3 -> 303 non masqué par 500 refreshes ; repaint fermé compté), replay fondateur toujours en feu.Gates
raise NotImplementedError/assert False/1/0(scan sur le carnet committé).execution_countnon nul sur les 16 cellules de code.🤖 Generated with Claude Code