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.
| Configuration | Temps total | Prefill | Note |
|---|---|---|---|
| 5090 PCI16 seule | 51,8 s | 3 910,2 tok/s | machine 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 s | 3 102,5 tok/s | le lien TB5 (5,9 Go/s) bride le pipeline : 3 102 vs 3 910 tok/s (−21 % par jeton) → +25 % de temps |
| 5090 TB5 seule | 264,9 s | 756,9 tok/s | 5 × plus lente que la PCI16 au repos (lien PCIe bridé) |
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énario | Configuration | Total | Détail mesuré |
|---|---|---|---|---|
| 🥇 G | G | 1 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 |
| 🥈 F | F | 1 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 |
| 3 | A | 1 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 |
| 4 | C | 1 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 |
| 5 | B | 1 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 |
| 6 | E | 2 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 | échec | 2 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 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.
| Point | 5090 PCI16 seule (au repos) | 3 cartes [0,1,2] |
|---|---|---|
| Prefill 200K | 51,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és | 74,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és | 130,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.
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).
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.
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.
--batch-mtp reste à tester.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.
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é.