← Tableau de bord

⚡ Strata — une tâche de ~200K jetons : ce qui est lent, ce qui est équivalent

Mesuré sur cette machine les 17–18 octobre 2026 (heure EDT) · Qwen3.8-Flash-Next UD-Q4_K_XL (103,7 Go, fenêtre 256K) · moteur Strata 0.1.44.1 · tâche = 1 requête : prompt ~200K jetons (199 773) + 24 générés, température 0, zéro réutilisation de cache (sections 1–2) · section 3 : 3 cartes [0,1,2] vs 1 carte — tâches réelles du 10-16 + runs H/H2 de décode long du 10-18 (comptage 2 600 et 11 000 générés) · machine : RTX 5090 PCI16 (lien 46,8 Go/s) + RTX 5090 TB5 (lien dégradé 5,9 Go/s) + RTX 3090 + 223 Go RAM.

1 · Une seule tâche, selon la carte

ConfigurationTemps totalPrefillNote
5090 PCI16 seule51,8 s3 910,2 tok/smachine au repos (bench G, 18/10). Le 74,9 s / 2 718,9 du 17/10 était mesuré pendant que la TB5 tournait (test E) : contention sur le débit RAM
5090 PCI16 + 5090 TB5 (réparties)65,0 s3 102,5 tok/sle lien TB5 (5,9 Go/s) bride le pipeline : 3 102 vs 3 910 tok/s (−21 % par jeton) → +25 % de temps
5090 TB5 seule264,9 s756,9 tok/s5 × plus lente que la PCI16 au repos (lien PCIe bridé)

2 · Deux tâches de 200K — les 7 scénarios

Total = temps jusqu'à la fin des deux requêtes. Les deux requêtes arrivent en même temps, sauf mention « enchaînées » (soumises l'une après l'autre).

#ScénarioConfigurationTotalDétail mesuré
🥇 GG1 instance · 5090 PCI16 seule · config solo (sans parallélisme, KV cache plein) · enchaînées 104,5 s 51,8 + 52,7 s à 3 910,2 / 3 827,7 tok/s · agrégat 3 823,4 · MTP actif (15/19 drafts) · machine au repos
🥈 FF1 instance · 5090 PCI16 seule · parallel 2 (2 contextes de 256K) 112,4 s req 1 finie à 59,1 s (prefill 3 795,9 tok/s) · req 0 à 112,4 s (3 641,7) · agrégat 3 554,7 tok/s
3A1 instance · 2 cartes réparties · enchaînées 130,0 s 2 × 65,0 s à 3 102,5 / 3 102,9 tok/s · agrégat 3 073,4
4C1 instance · 2 cartes réparties · config parallel-2, enchaînées 133,0 s 65,4 + 67,6 s à 3 088,3 / 2 976,2 tok/s · agrégat 3 004,0
5B1 instance · 2 cartes réparties · parallel-2, simultanées 136,7 s TTFT 66,4 s / 134,6 s — la 2e attend ; décode gelée à 0,4 tok/s pendant le préfill · agrégat 2 922,8
6E2 instances indépendantes · 1 carte chacune (TB5 + PCI16), simultanées 264,9 s PCI16 finit à 74,9 s (2 718,9, sous contention RAM avec la TB5 — seule et au repos : 51,8 s, bench G) ; TB5 traîne à 264,9 s (756,9) et dicte le total · reproduit ×3 (267,4 / 265,3 / 264,9)
❌ Déchec2 instances indépendantes · chaque carte partagée entre les 2 instances 383,0 s
0 jeton
moteurs morts (0xC0000409, commit RAM épuisé) puis figés (pagemisation WDDM, carte à 0 Mo libre)

3 · 3 cartes [0,1,2] vs 5090 PCI16 seule — même tâche ~200K

3 cartes = config strata-unsloth-ud-q4_k_xl.json (gpu [0,1,2] : PCI16 + TB5 + 3090, couches réparties sur les 3 GPU, MTP actif comme la config solo). Chiffres 3 cartes : tâches réelles de l'user, 2026-10-16 18:19 EDT — C:\Strata\strata-unsloth-ud-q4_k_xl.log (lignes 551, 556, 1311). PCI16 seule : bench G (10-18, tâche réelle, 24 générés) et runs H/H2 (10-18, décode long : tâche de comptage 1..N, 2 600 / 11 000 générés — acceptation MTP 99,7–99,9 %, contre 65–73 % sur les tâches réelles). L'instance 3 cartes n'a pas pu être refondue le 10-18 : GPU1 (3090) et GPU2 (TB5) occupés par les serveurs llama de l'user.

Point5090 PCI16 seule (au repos)3 cartes [0,1,2]
Prefill 200K51,8 s · 3 910,2 tok/s (G, 199 773 jetons, 10-18)60,0–62,7 s · 2 944–2 993 tok/s (178–188K jetons, 10-16) ; ≈ 69 s extrapolé à 200K
Décode (MTP actif)41,9 / 67,6 tok/s (24 gén, tâche réelle, G) · 125,1 / 144,4 (2 600 gén, H) · 142,2 / 147,1 (11 000 gén, H2) — comptage, acceptation 99,7–99,9 %90,9–100,2 tok/s (1 956–10 098 gén, tâches réelles, 10-16) — acceptation 65–73 %
Wall 200K + ~2K générés74,5 s (H, 2 600 gén, comptage)80,0 s (mesuré, 1 956 gén, tâche réelle)
Wall 200K + ~10K générés130,3–132,7 s (H2, 11 000 gén, comptage)173,5 s (mesuré, 10 098 gén, tâche réelle)

Prefill : la solo est +33 % par jeton (3 910 vs ~2 970 tok/s) → ~17 s économisées sur 200K (51,8 s vs ~69 s extrapolé ; 60,0–62,7 s mesuré à 178–188K). Wall : la solo mène à ~2K et ~10K générés — en comptage, où ses drafts MTP sont presque toujours acceptés (99,7–99,9 %) contre 65–73 % sur les tâches réelles des 3 cartes : la comparaison côté décode n'est donc pas strictement à égale tâche. Sur une tâche réelle de 10K générés, le décode solo retombe (estimation : 11 000 gén au taux 3 cartes de 90,9 → ~176 s, soit au niveau du 173,5 s mesuré) : l'avantage de décode des 3 cartes annule les 17 s de prefill. L'avantage de prefill de ~17 s est mesuré des deux côtés et tient dans tous les cas.

4 · Conclusion

🏆 Le plus rapide : la 5090 PCI16 seule, les deux tâches enchaînées — 104,5 s

Une instance, config solo (sans parallélisme), et les deux tâches l'une après l'autre : −7 % vs le parallel 2 sur la même carte (F, 112,4 s), −20 % vs le meilleur scénario 2 cartes (A, 130,0 s), −61 % vs les 2 instances (E, 264,9 s).

🎛 3 cartes vs 1 carte (section 3) : le prefill est 1 carte, le décode réel est 3 cartes

Prefill 200K : la PCI16 seule est +33 % par jeton (3 910 vs ~2 970 tok/s) — ~17 s économisées (51,8 s vs ~69 s). Décode : les 3 cartes vont plus vite sur du décode long réel (90,9–100,2 tok/s, acceptation MTP 65–73 %, tâches du 10-16) que la solo sur du court réel (41,9–67,6, G). Sur une tâche de comptage prévisible (H/H2, 10-18, acceptation 99,7–99,9 %), la solo monte à 125–147 tok/s et mène bout à bout : 74,5 s vs 80,0 s à ~2K générés, 130,3–132,7 s vs 173,5 s à ~10K générés. Sur une tâche réelle de ~10K générés, les deux convergent (estimation ~176 s vs 173,5 s mesuré) : l'avantage de décode des 3 cartes annule les ~17 s de prefill.

⚖️ Même carte, deux tâches : le séquentiel bat le parallèle

G (enchaînées) 104,5 s < F (parallel 2) 112,4 s — le séquentiel finit 7,9 s plus tôt : le parallel 2 coûte +7,6 % sur des tâches préfill-lourdes. Les préfills ne peuvent pas se chevaucher (goulot RAM → GPU) ; le parallel 2 ne fait que partager le décode, tout en rétrécissant le cache (7 802 → 7 152 slots) et en désactivant MTP. Pour du préfill lourd : une instance solo, les tâches en file. Le parallel 2 ne devient intéressant que quand le préfill est court et le décode long (partagé) — à mesurer si le cas se présente.

🐌 Vraiment plus lent

⚖️ Équivalent (à ±5 % près)

🔎 Le mécanisme (pourquoi)

5 · Recommandation

Pour du 2×200K sur cette machine : une instance, la 5090 PCI16 seule, config solo, les deux tâches enchaînées — 104,5 s. Le parallel: 2 (112,4 s) coûte +7,6 % sur du préfill lourd : à réserver aux sessions à décode long. Garder la 2e 5090 pour autre chose — son lien TB5 bride le pipeline 2 cartes. Ne jamais lancer deux instances Strata complètes sur ce PC : la RAM de commit ne suit pas. Les 3 cartes gpu [0,1,2] restent un bon choix quand la tâche porte sur un décode long réel (plusieurs milliers de jetons) et que les GPU 1 et 2 sont libres : leur décode de 90,9–100,2 tok/s annule le surcoût de prefill de ~17 s (173,5 s mesuré à ~10K générés) ; pour du court, la PCI16 seule gagne.

Méthode : driver client twoinst_200k_test.py (requêtes HTTP vers l'API du serveur, temps mur + vitesses renvoyées par le moteur), nonces uniques (reused = 0 partout), température 0. Sections 1–2 : 24 jetons générés. Section 3 (H/H2) : tâche de comptage 1..N forcée par le prompt (le serveur n'expose pas ignore_eos), 2 600 / 11 000 générés, vérifiée ligne à ligne dans C:\Strata\strata-unsloth-ud-q4_k_xl-pci16-solo.log. Résultats bruts : C:\Strata-data\bench-q4-comparatif-20261016\ — G benchG-seq-solo\twoinst_G.json · F benchF\twoinst_F.json · A par200-seq\ · B par200-par\ · C par200-seq-par2\ · E benchE\twoinst_E.json · D twoinst-mix\twoinst_D.json · H benchH-decode\twoinst_H.json · H2 benchH2-decode10k\twoinst_H2.json. 3 cartes : C:\Strata\strata-unsloth-ud-q4_k_xl.log lignes 551/556/1311 (tâches réelles du 10-16 18:19 EDT). Document complet (mécanismes, incidents D, logs) : DOCUMENT-PARALLELISME-2026-10-18.md dans le même dossier. Tous les chiffres proviennent d'exécutions réelles sur cette machine, 16–18 octobre 2026. La 3090 a participé à la campagne 3 cartes du 10-16 (couches réparties) ; les tests à 1 ou 2 cartes l'ont laissée de côté.