Skip to content

[GenAI/Texte 11b] Matériel, coût, débit : relier format numérique, VRAM, bande passante et coût par million de tokens sur notre carte (EPIC #19543, pli 3) #22428

Closed

Description

@jsboige

Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA

Part of #19543 (pli 3, ligne « Matériel, coût, débit »). Série d'accueil : GenAI/Texte, accrétion 11b de 11_Quantization.ipynb.

Constat re-vérifié au 2026-10-25 (main 294e5fb)

Les ingrédients existent séparément, la relation n'est enseignée nulle part :

  • GenAI/Texte/11_Quantization.ipynb : les formats de quantification (int4/int8) comme sujet de précision ;
  • GenAI/Texte/10b_Inference_Mechanics.ipynb : KV-cache construit et mesuré, préfill vs décodage, continuous batching ;
  • 03-DeepLearning/3.9* (formats flottants) et 3.11 (budget mémoire d'entraînement).

0 occurrence de roofline, « toit de », « coût par million » dans GenAI/Texte/*.ipynb et 03-DeepLearning/*.ipynb (grep du 2026-10-25) : aucun carnet ne relie format numérique → VRAM réelle → débit observé → coût par million de tokens, sur nos cartes. C'est exactement la lacune que la ligne du pli 3 nomme.

Livrable

GenAI/Texte/11b_Materiel_Debit_Cout.ipynb — le carnet qui ferme la boucle sur une carte réelle de la flotte (RTX 4060 Laptop 8 Go, mesurée localement) :

  1. Le toit bande passante/calcul (roofline) from scratch (numpy) : intensité arithmétique d'une matmul, pourquoi le décodage token-par-token est borné par la bande passante mémoire alors que le préfill est borné par le calcul. La bande passante mesurée (stream numpy/torch) confrontée à la spécification constructeur (classée Cité).
  2. VRAM par format, mesurée : le même petit modèle chargé en fp32/fp16 sur CUDA (torch.cuda.memory_allocated), puis int8/int4 réels via bitsandbytes — le Go/paramètre observé contre le Go/paramètre théorique de chaque format.
  3. Débit mesuré préfill vs décodage sur l'endpoint local Ollama (qwen2.5:7b-instruct-q4_K_M) : tokens/s du préfill (bulk) et du décodage (un token à la fois) relevés des timings de l'API, plusieurs tailles de contexte, écart affiché.
  4. La fermeture du toit : en décodage, chaque token relit les poids — le débit maximal théorique = bande passante / taille des poids. La carte rend-elle ce que le toit annonce ? L'écart théorie/mesuré est lu (overhead d'exécution, KV-cache, quantification à la volée), pas caché.
  5. Coût par million de tokens : côté local, la puissance mesurée (nvidia-smi pendant l'inférence) × prix de l'électricité (hypothèse déclarée) + amortissement du matériel ; côté API, les tarifs publics des grands fournisseurs (classés Cité). Les deux régimes confrontés, leurs points de croisement lus.
  6. Trois exercices C.1 (stubs sans erreur volontaire).

Critères d'acceptation

  • Carnet exécuté de bout en bout sous Papermill, 0 erreur, sorties committées (C.2), aucune erreur volontaire (C.1).
  • La bande passante mémoire est mesurée et confrontée à la spec (Cité vs Mesuré classés).
  • La VRAM par format (fp32/fp16/int8/int4) est mesurée sur CUDA, Go/paramètre observé vs théorique affiché.
  • Le débit préfill vs décodage est relevé des timings de l'API, pas affirmé en prose, avec l'écart sur plusieurs contextes.
  • La fermeture du toit (bande passante / taille de poids vs débit décodage mesuré) est calculée par le code et son écart lu.
  • Le coût par million local (mesure + hypothèses déclarées) et API (Cité) sont confrontés.
  • Ligne README de série + navigation 11 → 11b ; catalogue byte-identique à main.

Hors périmètre

  • Multi-cartes flotte (3090, 3070 Ti) : la reproductibilité du carnet sur une autre carte est une exercice, pas une dépendance — les mesures livrées sont celles de la carte locale, déclarées.

Sans parent supplémentaire : la ligne « Matériel, coût, débit » du pli 3 de #19543.

Activity

  1. jsboige commented on Oct 24, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2027:CoursIA -- paths: MyIA.AI.Notebooks/GenAI/Texte/11b_Materiel_Debit_Cout.ipynb, MyIA.AI.Notebooks/GenAI/Texte/README.md

    Grain: DEEP/notebook-python — lane myia-po-2027:CoursIA — prev: LIGHT/guard #22416

    Fille du pli 3 de #19543, ligne « Matériel, coût, débit », ouverte après re-vérification du constat (0 occurrence roofline/coût par million, grep du 2026-10-25). Conforme à la règle de l'EPIC : la lane qui a clôturé #22084 ouvre la ligne suivante.

  2. jsboige commented on Oct 25, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2027:CoursIA -- PR #22462 -- paths: MyIA.AI.Notebooks/GenAI/Texte/11b_Materiel_Debit_Cout.ipynb, MyIA.AI.Notebooks/GenAI/Texte/README.md

  3. added 5 commits that reference this issue on Oct 25, 2026
  4. jsboige commented on Nov 2, 2026

    @jsboige
    OwnerAuthor

    [CLOSURE PREFLIGHT]
    schema: 1
    lane: myia-po-2028:CoursIA-3
    issue: 22428
    verdict: CLOSE
    acceptance:

    • Carnet execute de bout en bout, 0 erreur, sorties committes, aucune erreur volontaire -> PR Add(notebook): GenAI/Texte 11b Materiel, debit, cout (See #22428) #22462 (mergee le 2026-10-28T04:36:29Z) ; sur origin/main MyIA.AI.Notebooks/GenAI/Texte/11b_Materiel_Debit_Cout.ipynb compte 44 cellules dont 17 de code, toutes avec un execution_count non nul, 20 sorties, 0 sortie de type erreur ; aucune occurrence de raise NotImplementedError
    • La bande passante memoire est mesuree et confrontee a la specification (mesure et cite classes) -> cellule de mesure du carnet : stream triad CUDA = 205,0 Go/s (Mesure) face a 256,0 Go/s derives de l'horloge memoire mesuree (8001 MHz) ; l'ecart au theorique (80 %) est affiche, et la bande passante CPU (1,8 Go/s) est mesuree au meme titre
    • La VRAM par format est mesuree sur CUDA, octets par parametre observes contre theoriques affiches -> cellule 13 : torch.cuda.memory_allocated sur fp32 / fp16 / bf16, face aux 4 / 2 / 2 octets theoriques ; cellule 15 : int8 et int4 NF4 quantifies par bitsandbytes, octets par parametre mesures (0,516 o/param pour le NF4 contre 0,55 retenu) ; la section 3 oppose observe et theorique
    • Le debit prefill contre decodage est releve des timings de l'API, sur plusieurs contextes -> cellules 20 et 22 : le debit est calcule a partir de eval_count / eval_duration (decodage) et prompt_eval_count / prompt_eval_duration (prefill) renvoyes par l'API, sur des prompts de 0, 256 et 1024 jetons (decodage) et de 256, 1024 et 4096 jetons (prefill), avec la dispersion sur plusieurs essais ; le resume chiffre l'ecart a plus de deux ordres de grandeur
    • La fermeture du toit (bande passante sur taille des poids contre debit decode mesure) est calculee par le code et son ecart est lu -> la section 5 calcule le debit maximal theorique (bande passante mesuree divisee par la taille des poids) et le confronte au debit decode mesure ; le bilan lit 103 % du toit et en explique l'ecart (le triad ecrit pour deux lectures, le decodage relit presque sans ecrire)
    • Le cout par million local (mesure et hypotheses declarees) et le cout API sont confrontes -> cellules 2 et 28 : hypotheses declarees dans le code (prix du kWh, prix de la carte, duree d'amortissement, facteur d'utilisation), puissance relevee par nvidia-smi pendant l'inference ; la section 7 oppose le local et les deploiements heberges, et la cellule 30 calcule les seuils de bascule
    • Ligne README de serie et navigation 11 vers 11b ; catalogue byte-identique -> PR Add(notebook): GenAI/Texte 11b Materiel, debit, cout (See #22428) #22462 : MyIA.AI.Notebooks/GenAI/Texte/README.md +3/-2 (ligne du carnet) et MyIA.AI.Notebooks/GenAI/Texte/11_Quantization.ipynb +1/-1 (renvoi vers 11b) ; aucun fichier de catalogue n'est touche par la PR
      residue: waiver: les mesures de la carte RTX 4060 Laptop du carnet ne sont pas rejouables sur ce siege, qui porte une RTX 3070 Ti Laptop (autre carte, autre bande passante, autre budget VRAM) ; la preuve retenue est la sortie commitee sur origin/main : bande passante GPU mesuree 205,0 Go/s (stream triad), VRAM totale 8188 MiB, int4 NF4 a 0,516 octet par parametre, debit de decodage a 103 % du toit
      open-prs: 0
      comments-reviewed: 2
      [/CLOSURE PREFLIGHT]

    Dossier tierce du secretariat myia-po-2028:CoursIA-3 sur l'issue « Materiel, cout, debit » (pli 3 de l'EPIC GenAI). Verdict CLOSE, avec une limite de mesure nommee en residue.

    Ce que j'ai lu au source. Le body pose un constat de lacune de contenu, reverifie le 2026-10-25 : les ingredients existent separement (formats de quantification dans le carnet 11, KV-cache et prefill/decodage dans le carnet 10b), mais zero occurrence de roofline ou de « cout par million » dans la serie — aucun carnet ne relie format numerique, VRAM reelle, debit observe et cout. Le livrable annonce est le carnet 11b_Materiel_Debit_Cout.ipynb avec six volets, et sept criteres d'acceptation. J'ai lu les deux commentaires du fil (claim et livrable du 2026-10-25, lane myia-po-2027:CoursIA).

    La livraison. PR #22462, mergee le 2026-10-28T04:36:29Z : trois fichiers, +1289/-3 — le carnet nouveau, la ligne de README de serie, et le renvoi depuis 11_Quantization.ipynb. Aucun fichier de catalogue n'est touche, ce qui satisfait le dernier critere.

    Les sept criteres, mesures sur l'arbre. Le carnet compte 44 cellules dont 17 de code, toutes executees, 20 sorties, zero sortie d'erreur, et aucune erreur volontaire. Le toit est construit dans le carnet (numpy/torch), pas cite : la bande passante GPU est mesuree (stream triad, 205,0 Go/s) et confrontee au derive (256,0 Go/s a partir de l'horloge memoire mesuree), l'ecart etant affiche. La VRAM par format est mesuree par torch.cuda.memory_allocated sur fp32 / fp16 / bf16, puis par quantification bitsandbytes pour int8 et int4 NF4 (0,516 octet par parametre mesure, contre 0,55 retenu), la section 3 opposant observe et theorique. Le debit prefill contre decodage n'est pas affirme en prose : il est calcule dans le carnet a partir des compteurs de l'API (eval_count / eval_duration, prompt_eval_count / prompt_eval_duration), sur plusieurs tailles de prompt, avec la dispersion sur plusieurs essais. La fermeture du toit est calculee par le code, et l'ecart est lu : le debit decode mesure atteint 103 % du toit, et le bilan en donne la raison. Le cout par million local combine des hypotheses declarees dans le code et une puissance relevee par nvidia-smi pendant l'inference ; la section 7 le confronte aux deploiements heberges et la cellule 30 calcule les seuils de bascule.

    La limite que je porte. Ce siege porte une RTX 3070 Ti Laptop ; le carnet a ete mesure sur une RTX 4060 Laptop 8 Go. Les valeurs committes sont celles de la carte de la lane, et elles ne se rejouent pas ici : meme mesure sur une autre carte, elles changent. La preuve que je retient est la sortie commitee, dont je verifie ci-dessus la nature — des mesures, pas des bandeaux de repli : aucune occurrence de not installed, ModuleNotFoundError, CUDA unavailable ou Traceback dans les 3 791 caracteres de sortie. C'est le point que la regle de reparation (et non de contournement) demande de verifier.

    Perimetre de ma mesure. Body, fil complet, etat de merge, puis lecture du carnet et de ses sorties sur l'arbre a la tete courante. Je n'ai pas re-execute le carnet : il demande une carte et un service Ollama local que ce siege n'a pas en configuration identique. Je ne decide pas du sort de l'issue : la cloture est le geste de l'adjoint titulaire ou du coordinateur, sur lecture G.9.

    Independance. L'issue et la PR sont portees par myia-po-2027:CoursIA ; aucune n'est une lane de ma machine (myia-po-2028:*). Je n'en ai ni ecrit ni fusionne.

  5. myia-ai-01 commented on Nov 2, 2026

    @myia-ai-01
    Collaborator

    Fermeture coordinateur (myia-ai-01), sur le dossier [CLOSURE PREFLIGHT] CLOSE de myia-po-2028:CoursIA-3, relu contre le body. Livré par PR #22462 (mergée le 2026-10-28T04:36:29Z) : GenAI/Texte 11b exécuté de bout en bout, 0 erreur ; bande passante mesurée (stream triad 205,0 Go/s) face aux 256,0 Go/s dérivés ; VRAM mesurée par format via torch.cuda.memory_allocated, int8 et int4 NF4 compris ; débits prefill et décodage calculés depuis les compteurs de l'API sur plusieurs contextes ; fermeture du toit calculée par le code, avec son écart lu ; coût par million local (hypothèses déclarées, puissance relevée par nvidia-smi) confronté au coût API ; README +3/-2 et renvoi 11 vers 11b ; catalogue intact. Les 7 critères sont couverts. Le Concern du user du 25/10 sur la PR (modèles hébergés plutôt qu'obsolètes) a été traité avant le merge. Résidu sous waiver nommé : les mesures sont celles de la RTX 4060 Laptop et ne se rejouent pas sur une autre carte ; la preuve retenue est la sortie commitée, vérifiée sans bannière de repli.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions