Skip to content

docs(genai,#14549): Wan 2.2 5B TI2V — VAE Kijai Wan 2.1 + --offload-cpu debloquent le VAE decode, verdict SOTA-OK - #17356

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/14549-wan22-offload-cpu
Sep 23, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/14549-wan22-offload-cpu

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/genai — lane myia-po-2023:CoursIA — prev: MED/refactor #17347

Wan 2.2 5B TI2V Run B — --offload-cpu + VAE Kijai Wan 2.1 : le VAE decode passe, verdict SOTA-OK (voie (d) c.446-bis, #14549)

Diagnostic de départ (mesuré c.446-bis, repris tel quel)

Wan 2.2 5B TI2V était bloqué RECOVERABLE-LOCAL sur un seul goulot : le VAE decode monolithique de WanVae.DecodeNative:229 tente un cudaMalloc unique — 26 552 MiB @ 33 frames, 23 897 MiB @ 17 frames — sur une RTX 3090 de 24 576 MiB avec DiT (3,27 GB) + UMT5 (3,65 GB) résidents. DiT charge, denoise passe 100 %, seul le decode final OOM.

Correction de nom (leçon phantom-tool-name, appliquée firsthand)

Le plan voie (d) de c.446-bis citait --stream-weights : ce flag n'existe pas dans le CLI v3.3.0.0. Le flag réel, vérifié --help avant lancement : --offload-cpu (« Stream the DiT weights from RAM instead of holding them resident in VRAM »).

Trois runs mesurés firsthand (2026-09-22, RTX 3090 = Device 0, bannière ggml_cuda_init citée dans le ledger)

Mesure A2 (33f, résident) c.446-bis A3 (17f, résident) c.446-bis B1 (9f, offload-cpu, VAE Wan 2.2) B2 (9f, offload-cpu, VAE Kijai Wan 2.1) B3 (= B2 + --seed 42)
VRAM pendant denoise ~9,6 GB ~9,6 GB 5 734 MiB (DiT streamé) 5 734 MiB 5 734 MiB
Denoise 1,9 s/step 1,0 s/step 0,6 s/pass mean (pénalité offload quasi nulle) idem idem
VAE decode 26 552 MiB → OOM 23 897 MiB → OOM 23 372 MiB → OOM 3 337 ms — PASSE 2 992 ms — PASSE
VRAM pic sampler OOM avant decode OOM avant decode 5 734 MiB (alloc refusé) 7 719 MiB —
MP4 produit aucun aucun aucun 640x352 × 9f h264, 257 KB, 62,8 s idem, 61,3 s

Contribution nouvelle B1 : l'alloc monolithique est quasi-constante ~23,4-26,5 GB de 9 à 33 frames (−12 % pour ÷4 frames) — réduire les frames n'est pas une voie ; la taille de la VAE l'est. B2 change UNE variable (le VAE) et le decode passe.

QA objective — pattern c.268 (reproductible, hors vision)

Extraction ffmpeg + analyse pixels rouges (PIL/numpy, seuils r>150, r−g>60, r−b>60) :

  • B2 : objet rouge 9/9 frames (6-588 px), centroïde vertical en oscillation y 0,86 → 0,00 → 0,30 — pattern de rebond conforme au prompt « a small red ball bouncing ».
  • B3 : 16 140 px rouges total (1 468-3 625 px/frame), oscillation verticale y 0,38 → 0,21 → 0,46 — rebond confirmé sur un second run à seed différente.

La VAE Wan 2.1 décode sémantiquement les latents Wan 2.2 — ce n'est pas du bruit de decode. QA vision œil-sur-artefact peut être contre-signée par lane vision en complément, non en substitution.

Verdict axe Vidéo Wan 2.2 5B TI2V : SOTA-OK

Le vrai outil (TensorSharp CLI v3.3.0.0 + DiT Wan 2.2 Q4_K_M + UMT5-XXL) proprement installé et invoqué ; 2 MP4 bout-en-bout produits et QA-validés, pic VRAM 7,7 GB / 24,5 GB. Caveat documenté : le combo gagnant exige la VAE Wan 2.1 Kijai bf16 — le chemin vendor Wan 2.2 VAE (.pth converti ou non) reste OOM (alloc quasi-constante, DiT offloadé ou non) ; la recovery structurelle reste la voie (c) (patch upstream DecodeNative — la ligne B3 band 1/1 montre que le banding existe en interne).

Table des 4 axes après ce grain : Texte SOTA-OK binaire (c.257) · Image SOTA-OK (c.266-273) · Wan 2.1 SOTA-OK (c.445) · Wan 2.2 SOTA-OK (c.33).

Findings incidents

  • --seed ne gouverne pas la seed vidéo : --seed 42 passé, seeds utilisées 978075981 (sans flag) / 1246342748 (avec flag) — aucun claim de reproductibilité seed-vidéo, documenté verbatim.
  • --offload-cpu à 5B : pénalité denoise nulle (0,6 s/pass identique résident) — l'OOM était portée par la VAE, pas par le DiT.

Acceptance #14549 — état après Run B

Critère État
1 — binaire chargé firsthand RTX 3090 ✔ (sustained)
2 — ≥1 axe exécuté bout-en-bout + QA ✔ Wan 2.1 (c.445) · Wan 2.2 désormais ✔ aussi
3 — verdict écrit par axe ✔ 4/4 axes, tous SOTA-OK (Wan 2.2 avec caveat combo)
4 — comparaison honnête vs Python/Docker Image ✔ · Vidéo : voie 3 B.0 (a)/(b) reste ouverte (ComfyUI Wan non installé — hors fenêtre worker)

Périmètre strict

  • 1 fichier modifié : docs/ledgers/14549-tensorsharp-multimodal.md (section c.33 append-only, +77 lignes).
  • Artefacts (MP4, logs, CSV VRAM, frames QA) hors-repo dans C:\Users\jsboi\tensorsharp-investigation\wan_outputs\ — chemins cités dans le ledger.
  • Pas de ComfyUI Wan (voie 3 B.0, futur grain) · pas de patch upstream (voie (c)) · pas de script conversion officialisé (voie (e)).

See #14549

🤖 Generated with Claude Code

… --offload-cpu debloque le VAE decode, verdict SOTA-OK (2 MP4 QA-valides)

Run B1 (9f, offload, VAE Wan2.2 convertie): OOM 23372 MiB — alloc monolithique
quasi-constante 23,4-26,5 GB sur 9/17/33 frames, insensible au nombre de frames.
Run B2 (variable unique: VAE Kijai Wan 2.1 bf16): SUCCES — vae-decode 3337 ms,
MP4 640x352 9f en 62,8 s, pic VRAM 7719 MiB. QA pixel objective: objet rouge
9/9 frames, oscillation verticale du centroide (rebond).
Run B3 (B2 + --seed 42): second succes (61,3 s) + finding: la seed video
n'est pas gouvernee par --seed (1246342748 vs 42) — non reproductible, documente.

Flag reel verifie --help firsthand: --offload-cpu (le --stream-weights du plan
voie (d) n'existe pas — lecon phantom-tool-name).

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

jsboige commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17356
head: 91d6e7a
complete: true
body: read
comments-reviewed: 0
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 854cdff05ce89bfd049c58563d025e927b56f3564bc44769adcc16ff376e0ba0
diff-files: 1
diff-additions: 77
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: not-applicable
verdict: READY
[/ADJOINT PREFLIGHT]

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.

2 participants