Skip to content

[Epic Origami #18605 - Pli 2 followup] Mesure d'enveloppe VRAM NeRF/3D-01/3D-02 sur la RTX 3070 Ti 8 Go (etage pionnier) -- donnee qui manque a l'arc avant le Pli 3 #21626

Closed

Description

@jsboige

Part of #18605

Constat : la mesure d'enveloppe VRAM du premier étage manque encore pour la famille NeRF/3D-04/3D-05, et c'est ce qui arme l'étage pionnier de la Pli 2 (livrée) et de la Pli 3 (claimée par po-2023 sur RTX 3090 24 Go).

L'EPIC #18605 (Origami coord-based neural representations) a son Pli 1 livré (PR #18791, 3.4d-Fourier-Features-Biais-Spectral-Python.ipynb) et son Pli 2 livré (#19949, série GenAI/3D/ créée par #20231) — les 4 carnets NeRF (3D-01 à 3D-04) sont sur main. Le Pli 3 est claimé par myia-po-2023:CoursIA (#20390) et s'exécute sur l'eGPU RTX 3090 24 Go.

La donnée qui manque pour l'arc : l'enveloppe VRAM de la famille NeRF/3D-04 sur la petite carte 8 Go (RTX 3070 Ti). C'est exactement la même question que pour la famille 0,8 B (issue #21620) — mais sur un autre ordre de grandeur : NeRF est un réseau dense d'aiguillage spatial 5D (5 × 256 + 4 = 1 284 → 256 → 128 → 1), 100-200 itérations Adam, et 4 à 8 couches de positional encoding 2⁰-2¹⁰. La mesure d'enveloppe du Pli 1 (Fourier, sur la même 8 Go) avait déjà dépassé 5 Go sur ai-01, et le harness du Pli 2 (3D-01-NeRF-From-Scratch.ipynb) est conçu pour le même harnais Gradio/TensorBoard.

Livrable attendu

Une mesure d'enveloppe VRAM sur la RTX 3070 Ti 8 Go du siège myia-po-2028 (lane pionnière), avec :

  1. Run borné du 3D-01-NeRF-From-Scratch.ipynb (paramètres de référence, scènes Lego / Saturne), sur GPU CUDA, avec un budget de 50-100 itérations — suffisant pour mesurer le pic VRAM et le débit sur petite carte.
  2. Variante sur 3D-02-NeRF-Critic.ipynb (entraînement réduit) : confirme que l'enveloppe tient pour le volet évaluatif.
  3. Comparaison avec la Pli 1 (Fourier) : les notebooks 3.0 et 3.4d partagent un harnais commun — leur profil VRAM sur 8 Go est-il compatible avec un même run conjoint, ou faut-il enchaîner les deux ? Le chiffre tranche.
  4. Verdict pour l'étage pionnier : un lead NeRF complet (200 itérations, évaluations held-out) rentre-t-il dans 8 Go, ou bien l'étage moyen est-il d'emblée requis pour ce qui est la moitié de l'EPIC ?

Aucune modification de notebook. La mesure crée un manifeste JSON sous scripts/results/3d_enveloppe_8go/, comme la mesure ML de cette semaine. L'addition de 3D-04 (qui dépend du moteur gsplat, voir le constat de #21614) n'est pas dans ce grain : ce sera un autre sous-grain, et l'enveloppe 8 Go aura d'ici là une ligne de base.

Acceptance

  • 3D-01 exécuté de bout en bout (C.2), pic VRAM mesuré, débit mesuré (it/s)
  • 3D-02 (volet évaluatif) tourne sans OOM et donne un verdict lisible
  • Manifeste JSON committé sous scripts/results/3d_enveloppe_8go/
  • Verdict mesuré : un lead NeRF complet (200 itérations + eval) rentre-t-il sur 8 Go, ou faut-il l'étage moyen d'emblée ?

Hors scope : toute correction de carnet, tout ajout d'exercice, toute régression sur le contenu pédagogique. Le grain mesure l'enveloppe ; le reste est aux Plis 2-3.

Protocole

  • GPU : réservé avant tout chargement au ledger CoursIA-gpu-reservation-ledger (debt_ledger.py append --ledger gpu-reservation --entity myia-po-2028#gpu0), un seul job à la fois, abandon au-delà de 85 °C, released à la fin.
  • Outils : scripts/notebook_tools/notebook_tools.py execute (kernel python3, env mcp-jupyter — torch 2.8.0+cu126).
  • Sortie échantillonnée : nvidia-smi à 5 s, log dédié pour la mesure de pic (même pattern que la mesure ML du 2026-10-20).

— lane myia-po-2028:CoursIA-2 (siège myia-po-2028)

Activity

  1. jsboige commented on Oct 20, 2026

    @jsboige
    OwnerAuthor

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

    [CLAIMED] lane myia-po-2028:CoursIA-2 -- paths: docs/genai/3d-enveloppe-vram-8go.md

    Grain : mesurer l'enveloppe VRAM de la famille NeRF sur l'étage pionnier (8 Go) — la donnée qui manque à l'arc GPU de l'EPIC #18605 pour la moitié NeRF de l'EPIC, le Pli 3 (gsplat) restant sur l'eGPU 24 Go désigné.

    Ce que je mesure, et rien de plus : le pic VRAM et le débit du harness 3D-01-NeRF-From-Scratch (puis 3D-02-NeRF-Critic, volet évaluatif) exécutés sur la RTX 3070 Ti 8 Go du siège, avec un budget borné, et une comparaison avec l'enveloppe de la Pli 1 (Fourier, 3.4d, qui partage le même harnais) — pour dire si un run NeRF complet (200 itérations + évaluations held-out) rentre dans 8 Go, ou si l'étage moyen est requis d'emblée.

    Aucune modification de carnet. L'exécution se fait sur une copie hors dépôt ; le livrable est un manifeste JSON + une note de mesure. Les notebooks 3D-01/3D-02 du dépôt sont dans le scope de claims d'autres lanes (#21413, #20544) : je n'y touche pas.

    Protocole : GPU réservé au ledger avant tout chargement (debt_ledger.py append --ledger gpu-reservation --entity myia-po-2028#gpu0, state: held, avec échéance), un seul job à la fois, abandon au-delà de 85 °C, released à la fin ; sortie nvidia-smi échantillonnée à 5 s pour le pic ; harness scripts/notebook_tools/notebook_tools.py execute (kernel python3, env mcp-jupyter, torch 2.8.0+cu126).

    Périmètre : ni merge, ni clôture d'issue d'autrui, ni /coordinate.

  2. jsboige commented on Oct 20, 2026

    @jsboige
    OwnerAuthor

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

    [DELIVERED] lane myia-po-2028:CoursIA-2 -- PR #21630

    L'enveloppe GPU de la famille NeRF sur l'étage pionnier 8 Go est mesurée.

    Mesure Valeur
    Pic VRAM 4 318 Mio / 8 192 Mio = 52,7 % (42 échantillons nvidia-smi à 5 s)
    Température max 73 °C (seuil d'abandon 85 °C non franchi)
    Durée du run complet 207,6 s (3,5 min)
    Débit 15,8 it/s (Lego, 2 000 it.) · 17,2 it/s (scène jouet, 1 000 it.)
    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.

    La lecture qui sert la ventilation GPU de l'EPIC #18605. Le premier étage n'est pas un « petit GPU » générique, il est un étage à deux vitesses :

    Pipeline Pic sur 8 Go Marge Verdict
    NeRF (3D-01, 2 000 it. + éval) 4 318 Mio (52,7 %) 47 % tient largement — le pionnier peut défricher le socle A1
    0,8 B GRPO + QLoRA (#21620) 7 844 Mio (95,7 %) 4 % au bord — rien de plus lourd ne passe

    Conséquence opérationnelle : un lead RL part directement à l'étage moyen, même sur 0,8 B ; le pionnier garde sa vocation (défriche NeRF, Fourier, petits apprentissages). C'est exactement la donnée qui manquait pour armer la répartition.

    Ce que ce grain ne couvre pas : le volet évaluatif 3D-02-NeRF-Critic n'est pas rejoué (il figurait dans l'acceptation de l'issue — reste à faire) ; le pipeline 3DGS/gsplat du Pli 3 n'est pas mesuré (moteur CUDA gsplat absent de ce poste, cf. #21614) — son enveloppe reste à prendre sur l'eGPU 24 Go désigné par l'EPIC. Ce n'est pas une mesure de performance ML : c'est une capacité d'étage.

    Aucun carnet modifié : exécution sur une copie hors dépôt (3D-01 et 3D-02 sont dans le scope de claims d'autres lanes, PR #21413 et #20544). Livrable : manifeste de mesure (MyIA.AI.Notebooks/GenAI/3D/_measurements/3d01_enveloppe_8go.json) + note (docs/genai/3d-enveloppe-vram-8go.md), 2 fichiers, 142 lignes.

    GPU : réservé au ledger avant tout chargement (obs-55b043a6b21cc586, held), relâché à la fin (obs-de952cd16191039d, released, 331 Mio résiduels).

    Périmètre : ni merge, ni clôture d'issue d'autrui, ni /coordinate.

  3. added 4 commits that reference this issue on Oct 20, 2026
  4. jsboige commented on Oct 20, 2026

    @jsboige
    OwnerAuthor

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

    [DELIVERED] lane myia-po-2028:CoursIA-2 -- PR #21630

    Tranche 2 du grain : les deux volets de la famille NeRF sont mesurés, et la comparaison avec le Pli 1 demandée par le livrable est faite. Les quatre critères d'acceptation sont couverts.

    Volet évaluatif (3D-02-NeRF-Critic) — le critère 2

    Mesure Valeur
    Pic VRAM 7 740 Mio / 8 192 Mio = 94,5 %
    Mémoire au repos (avant / après) 428 / 427 Mio
    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)

    Pas d'OOM, run complet, 0 erreur, exception: null. Le point important n'est pas le total mais où le pic arrive : plateau stable à 4 200 Mio pendant les vingt minutes, puis une montée de 3 512 Mio dans les vingt dernières secondes — la cellule de comptage de points N=256. Entraîner un NeRF sur 8 Go n'est pas le problème ; évaluer un NeRF de façon dense l'est.

    Comparaison avec le Pli 1 (Fourier 3.4d) — le critère 3 du livrable

    L'issue demandait si les deux plis sont compatibles avec un même run conjoint ou s'il faut enchaîner. 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 dit « 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 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 (baseline 3,23e-01, écart de gradient 2,08e-07), 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.

    Les quatre critères d'acceptation

    # Critère État
    1 3D-01 exécuté de bout en bout, pic VRAM et débit mesurés couvert — pic 4 318 Mio (52,7 %), 15,8 it/s (Lego) et 17,2 it/s (scène jouet), 207,6 s, 42 échantillons nvidia-smi à 5 s, 0 erreur
    2 3D-02 (volet évaluatif) tourne sans OOM et donne un verdict lisible couvert — run complet, pic 7 740 Mio (94,5 %), aucun OOM, verdict sur les quatre axes (critic / bruit de pose / focales / comptage de points)
    3 Manifeste JSON committé sous scripts/results/3d_enveloppe_8go/ couvert — 3d01_enveloppe_8go.json, 3d02_enveloppe_8go.json, 3d4d_fourier_8go.json dans ce répertoire (chemin littéral de l'acceptance)
    4 Verdict mesuré : un lead NeRF complet rentre-t-il sur 8 Go, ou l'étage moyen est-il requis d'emblée ? couvert — voir ci-dessous

    Le verdict (critère 4)

    Le socle NeRF rentre sur 8 Go ; l'évaluation dense, non. Un lead NeRF complet (2 000 itérations Lego + 1 000 it. jouet + évaluation, soit 3 000 itérations) tient à 4 318 Mio (52,7 %) avec 47 % de marge — la question « faut-il l'étage moyen d'emblée ? » reçoit donc non pour le socle, et oui dès que l'on ajoute l'évaluation dense : le comptage de points N=256 porte à lui seul 7 740 Mio (94,5 %), soit 5,5 % de marge, la même arithmétique que le run 0,8 B GRPO+QLoRA (95,7 %).

    Autrement dit : l'étage pionnier défriche la famille NeRF (Pli 1 compris, qui ne consomme aucune carte), mais son évaluation dense doit monter d'un étage.

    Ce que cette livraison ne couvre pas

    Reproductibilité

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

    Voir #21630 · Relatif à #18605

  5. added a commit that references this issue on Oct 23, 2026
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