From 400724270914eab111f1b3493925b4168475b7bf Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Sun, 20 Sep 2026 21:10:08 +0200 Subject: [PATCH] Test ordered one-slot DFlash2 placements and preserve results --- docs/DFLASH2_MEDIUM_QUICK_20260920.md | 2 + docs/DFLASH2_ONE_SLOT_20260920.md | 99 ++++++++++++++++++ docs/INFERENCE_OPTIMIZATION_TODO_20260920.md | 2 + experiments/dflash2-medium-20260920/README.md | 29 +++++ .../check_reviewed_code.py | 20 ++++ .../dflash-code-checks.json | 11 ++ .../priority1-restore.json | 61 +++++++++++ .../dflash2-medium-20260920/priority1.json | 19 ++++ .../priority2-restore.json | 61 +++++++++++ .../dflash2-medium-20260920/priority2.json | 19 ++++ .../dflash2-medium-20260920/priority3.json | 19 ++++ .../config.json.gz | Bin 0 -> 218 bytes .../gpu.json.gz | Bin 0 -> 236 bytes .../result.json.gz | Bin 0 -> 281 bytes .../server-args.json.gz | Bin 0 -> 439 bytes .../server.log.gz | Bin 0 -> 1241 bytes .../config.json.gz | Bin 0 -> 218 bytes .../gpu.json.gz | Bin 0 -> 627 bytes .../loaded.json.gz | Bin 0 -> 3647 bytes .../partial.json.gz | Bin 0 -> 8534 bytes .../result.json.gz | Bin 0 -> 8545 bytes .../server-args.json.gz | Bin 0 -> 440 bytes .../server.log.gz | Bin 0 -> 2027 bytes experiments/dflash2-medium-20260920/run.py | 7 +- .../dflash2-medium-20260920/supervise.py | 16 ++- 25 files changed, 360 insertions(+), 5 deletions(-) create mode 100644 docs/DFLASH2_ONE_SLOT_20260920.md create mode 100644 experiments/dflash2-medium-20260920/check_reviewed_code.py create mode 100644 experiments/dflash2-medium-20260920/dflash-code-checks.json create mode 100644 experiments/dflash2-medium-20260920/priority1-restore.json create mode 100644 experiments/dflash2-medium-20260920/priority1.json create mode 100644 experiments/dflash2-medium-20260920/priority2-restore.json create mode 100644 experiments/dflash2-medium-20260920/priority2.json create mode 100644 experiments/dflash2-medium-20260920/priority3.json create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/config.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/gpu.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/result.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server-args.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server.log.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/config.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/gpu.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/loaded.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/partial.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/result.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server-args.json.gz create mode 100644 experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server.log.gz diff --git a/docs/DFLASH2_MEDIUM_QUICK_20260920.md b/docs/DFLASH2_MEDIUM_QUICK_20260920.md index 1134452..a24603a 100644 --- a/docs/DFLASH2_MEDIUM_QUICK_20260920.md +++ b/docs/DFLASH2_MEDIUM_QUICK_20260920.md @@ -1,5 +1,7 @@ # DFlash2: kurzer Medium-Test auf Athena +Nachtrag: [Ein-Slot-Folgeversuch mit Draft auf 3060 funktioniert](DFLASH2_ONE_SLOT_20260920.md). Der folgende Abschnitt dokumentiert den ursprünglichen Zwei-Slot-Test. + 20.09.2026. **Ergebnis: Laden fehlgeschlagen, keine Durchsatzmessung möglich.** Die vorhandene llama.cpp-Version unterstützt DFlash2 einschließlich Selector und diff --git a/docs/DFLASH2_ONE_SLOT_20260920.md b/docs/DFLASH2_ONE_SLOT_20260920.md new file mode 100644 index 0000000..c9e81bc --- /dev/null +++ b/docs/DFLASH2_ONE_SLOT_20260920.md @@ -0,0 +1,99 @@ +# DFlash2 auf Athena: Ein-Slot-Vergleich + +20.09.2026, im Anschluss an den gescheiterten Zwei-Slot-Kurztest. + +**Ein Slot mit Draft auf der RTX 3060 funktioniert im Kurztest. Ein klarer +Geschwindigkeitsvorteil gegenüber der gespeicherten MTP-Referenz ist nicht +sichtbar. Kein produktiver Wechsel.** + +## Gewünschte Reihenfolge und Ergebnis + +| Priorität | Konfiguration | Ergebnis | +|---|---|---| +| 1 | Ein Slot, Qwen 80:20, Draft auf 5080 | Initialisierung scheitert an Gerätezuordnung der geteilten Ausgabematrix | +| 2 | Ein Slot, Qwen 80:20, Draft auf 3060 | Laden, Deutsch, Code und kurze Prefill-/Recall-Probe bestanden | +| 3 | Ein Slot, mehr Qwen auf 3060 (70:30), Draft auf 5080 | Nicht ausgeführt: nur als Rückfall bei Fehlschlag von Priorität 2 vorgesehen | + +Beim ersten Ein-Slot-Lauf scheitert die Laufzeit mit +`pre-allocated tensor (output.weight) in a buffer (CUDA1) that cannot run the operation (NONE)`. +Der Draft ist auf CUDA0 begrenzt, während die verwendete Ausgabematrix auf CUDA1 +liegt. Anders als beim ursprünglichen Zwei-Slot-Versuch ist dies kein gemeldeter +CUDA-Malloc-Fehler. Der Testprozess brach ab, der Host blieb erreichbar. + +## Durchsatz + +| Messung | DFlash2, ein Slot, 160K Kontext | Gespeicherte Pure/MTP-Zwei-GPU-Referenz | +|---|---:|---:| +| Deutsche Erklärung, Ausgabe | 37,8 tok/s | 57,3 tok/s | +| Python-Code, Ausgabe | 75,5 tok/s | 73,4 tok/s | +| Prefill, 4.196 Eingabetokens | 1.437,6 tok/s | kein gleicher 4K-Messpunkt dieses Referenzprofils | +| Ausgabe nach dieser 4K-Eingabe | 41,1 tok/s | kein gleicher 4K-Messpunkt dieses Referenzprofils | +| Recall der drei eingebauten Fakten | 3/3 | — | + +Die Referenz verwendet dasselbe Pure-Modell, 80:20-Layer-Split und Microbatch 128, +aber **262.144 statt 160.000 Kontext, MTP2 statt DFlash2**. Das sind Vergleiche +vollständiger Konfigurationen, keine isolierten DFlash-Beschleunigungsfaktoren. +Es wurde kein neuer Qwen-Referenzlauf durchgeführt. + +Deutsch erzeugte 768 Tokens in 20,29 Sekunden, Code endete nach 671 Tokens in +8,87 Sekunden; die Referenz erzeugte in beiden Aufgaben 768 Tokens. Gleiche +Eingaben und Seeds bedeuten bei unterschiedlicher spekulativer Verarbeitung +keine identischen Ausgaben. Ein Durchlauf je Aufgabe; geringe Unterschiede +wie die rund 3 % beim Code sind kein belastbarer allgemeiner Geschwindigkeitsgewinn. + +DFlash-Draft-Akzeptanz: Deutsch 417/2444 = 17,1 %, Code 517/1071 = 48,3 %, kurze +Recall-Aufgabe 300/1460 = 20,5 %. Das sind angenommene Draft-Tokens, keine +Qualitätswerte; der Zusatzaufwand lohnt bei geringer Annahme weniger. + +## Speicher und Kontext + +Getestet: Pure IQ4_XS, bestehendes llama.cpp-Image b29c606, Q4_K_M-DFlash2, +160.000 Kontext, ein Slot, q4_0-K/V für Hauptmodell und Draft, Microbatch 128, +Batch 2048, Draft-Länge 7. Text ohne Vision-Projektor, TTS auf 3060 resident. + +| GPU | Belegung nach Laden | Höchste gesampelte Belegung | Freier Speicher am gemessenen Peak | +|---|---:|---:|---:| +| RTX 5080 | 14.632 MiB | 14.660 MiB | 1.643 MiB | +| RTX 3060, inklusive TTS | 10.320 MiB | 10.378 MiB | 1.910 MiB | + +Die Konfiguration mit 160K Kontext wurde geladen. **Die tatsächlich größte +Testeingabe hatte 4.196 Tokens.** Damit ist weder ein voller 160K-Langkontexttest +noch die Stabilität bei Vision oder paralleler Last erbracht. Die gemessenen +Reserven rechtfertigen keine automatische Hochrechnung einer maximalen Kapazität. + +## Antwortqualität + +Alle drei synthetischen Fakten wurden gefunden. Das Codebeispiel besteht den +geprüften Fehlerpfad „erste Aufgabe scheitert, spätere gelingt“. Wenn alle +Aufgaben scheitern, erzeugt es jedoch einen **NameError**, weil `builtins` ohne +Import verwendet wird. Die manuell geprüfte Antwort und der reproduzierbare +Teiltest sind archiviert. Die Deutschantwort enthält sprachliche und sachliche +Unschärfen; die Ausgabe endet am festgelegten Tokenlimit. + +Diese kleinen Durchsatzaufgaben erlauben keine Freigabe als qualitativ gleichwertig +und belegen auch keinen durch DFlash verursachten Intelligenzverlust. Eine +allgemeine Qualitätsbewertung oder deterministische Äquivalenzprüfung wurde +in diesem kurzen Versuch nicht durchgeführt. + +## Abschluss + +Das bisherige Medium-Profil mit seinen ursprünglichen zwei Slots wurde nach +jedem Versuch wiederhergestellt; die Ein-Slot-Änderung war nur im isolierten +Testcontainer aktiv. Medium, Router, Controller, Gateway und TTS gesund, +Router readiness und minimale Modellantwort geprüft. Keine Xid-, OOM-Kill-, +Kernel-Panic- oder GPU-fallen-off-Meldungen im geprüften Kerneljournal. +Keine Treiber-, Kernel- oder Netzwerkänderungen, kein Neustart des Hosts. + +Ein aktiver Produktionsrequest verzögerte beide Teststarts; der zweite musste +auf die Verarbeitung einer langen Eingabe warten. Keine laufende Anfrage wurde +absichtlich abgebrochen. Der gespeicherte Supervisor wartet künftig zusätzlich +auf gesunde Router-/Controller-Checks, bevor er die Wiederherstellung meldet. + +**Empfehlung:** DFlash2 ist in dieser Ein-Slot-Anordnung technisch nutzbar, +aber nach diesem Kurztest kein überzeugender Ersatz für das vorhandene MTP. +Weitere Arbeit wäre gezieltes Draft-/Platzierungs-Tuning mit anschließender +Qualitäts- und Langkontextprüfung, keine produktive Aktivierung des jetzigen Falls. + +Konfigurationen, Rohantworten, Serverlogs, GPU-Samples und Prüfbelege: +`experiments/dflash2-medium-20260920/` im Repository, entsprechend +`/data/benchmarks/dflash2-medium-20260920/` auf Athena. diff --git a/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md b/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md index 1954b9f..56b51b4 100644 --- a/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md +++ b/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md @@ -35,3 +35,5 @@ Stand: 20. September 2026. Modellfamilie bleibt Qwen3.8-27B. ## DFlash2-Kurztest 20.09.2026: [Medium-Ladetest](DFLASH2_MEDIUM_QUICK_20260920.md) mit 160.000 Kontext/zwei Slots scheitert an zusätzlichem Draft-VRAM auf der 5080. Keine Durchsatz- oder Qualitätswerte. Bisheriges Medium wiederhergestellt; Punkt 3 bleibt offen und benötigt ein anderes Speicherlayout. + +Ein-Slot-Folgeversuche: [Bericht](DFLASH2_ONE_SLOT_20260920.md). Draft auf 5080 scheitert an Gerätezuordnung; Draft auf 3060 besteht kurze Texttests. Deutsch 37,8 tok/s, Code 75,5 tok/s: kein klarer Vorteil gegenüber gespeicherter MTP-Referenz. Dritter Rückfalltest nicht nötig. Vollständige Bewertung/Tuning in Punkt 3 bleibt offen. diff --git a/experiments/dflash2-medium-20260920/README.md b/experiments/dflash2-medium-20260920/README.md index 6ec9022..324b9c3 100644 --- a/experiments/dflash2-medium-20260920/README.md +++ b/experiments/dflash2-medium-20260920/README.md @@ -55,3 +55,32 @@ Target loaded; draft allocation of1079.61MiB onCUDA0 failed with CUDA malloc OOM. No benchmark inference executed. Supervisor restored original production; health/smoke/kernel checks passed. No performance or quality conclusion can be drawn. See results/ and restore-verification.json. + +## User-ordered one-slot follow-up + +The user authorized this order after the initial two-slot allocation failure: + +1. One slot, target80:20, draft on5080. +2. One slot, target80:20, draft on3060, regardless of whether the first works. +3. Only if step2 fails: one slot, target70:30, draft back on5080. Moving both + additional target layers and the draft onto3060 would compete for its memory; + this fallback instead makes space on5080 for the draft. + +Context remains160000 and other quick-probe settings are unchanged. These tests +are temporary; production containers retain their original two-slot arguments. +Case JSON now controls slot count and draft device (historical quick.json keeps +its original two-slot meaning). Failed attempts include an explicit error field. + +An active production request postpones startup for up to180 seconds; no live +request is deliberately interrupted. The existing drain check still protects +requests racing with the transition. Each attempt has its own result directory; +previous results and the frozen Qwen reference are never overwritten. + +## One-slot results + +Priority1 fails during draft graph initialization: output.weight resides onCUDA1 +but draft backends are restricted toCUDA0. Priority2 works; priority3 therefore +not run. German37.79 tok/s, code75.51 tok/s, 4196-token prefill1437.56 tok/s, +recall3/3. Allocation160000 is not full-context validation. Original two-slot +production restored and checked after both cases. See +../../docs/DFLASH2_ONE_SLOT_20260920.md for comparison caveats and quality findings. diff --git a/experiments/dflash2-medium-20260920/check_reviewed_code.py b/experiments/dflash2-medium-20260920/check_reviewed_code.py new file mode 100644 index 0000000..878dbfd --- /dev/null +++ b/experiments/dflash2-medium-20260920/check_reviewed_code.py @@ -0,0 +1,20 @@ +import ast,asyncio,json,pathlib,re,typing,gzip +p=pathlib.Path(__file__).resolve().parent/'results/medium-slot1-priority2-draft-cuda1/result.json.gz' +d=json.loads(gzip.decompress(p.read_bytes()));content=d['decode'][1]['choices'][0]['message']['content'] +source=re.search(r'```python\s*\n(.*?)```',content,re.S).group(1) +# Reviewed above: only asyncio task orchestration and exception handling, no I/O. +node=next(n for n in ast.parse(source).body if isinstance(n,ast.AsyncFunctionDef) and n.name=='first_success') +scope={'asyncio':asyncio,'Any':typing.Any,'List':typing.List,'Awaitable':typing.Awaitable} +exec(compile(ast.Module(body=[node],type_ignores=[]),'','exec'),scope) +async def check(all_fail): + async def task(delay,fail): + await asyncio.sleep(delay) + if fail:raise ValueError('synthetic failure') + return 7 + try: + r=await asyncio.wait_for(scope['first_success']([task(.001,True),task(.005,all_fail)]),timeout=1) + return {'returned':r,'pass':not all_fail and r==7} + except Exception as e: + return {'error':type(e).__name__+': '+str(e),'pass':all_fail and type(e).__name__=='ExceptionGroup'} +out={'scope':'Two checks of manually reviewed decode answer, not broad quality evaluation','fast_failure_then_success':asyncio.run(check(False)),'all_fail':asyncio.run(check(True))} +print(json.dumps(out,indent=2)) diff --git a/experiments/dflash2-medium-20260920/dflash-code-checks.json b/experiments/dflash2-medium-20260920/dflash-code-checks.json new file mode 100644 index 0000000..8383f32 --- /dev/null +++ b/experiments/dflash2-medium-20260920/dflash-code-checks.json @@ -0,0 +1,11 @@ +{ + "scope": "Two checks of manually reviewed decode answer, not broad quality evaluation", + "fast_failure_then_success": { + "returned": 7, + "pass": true + }, + "all_fail": { + "error": "NameError: name 'builtins' is not defined", + "pass": false + } +} diff --git a/experiments/dflash2-medium-20260920/priority1-restore.json b/experiments/dflash2-medium-20260920/priority1-restore.json new file mode 100644 index 0000000..b2904ce --- /dev/null +++ b/experiments/dflash2-medium-20260920/priority1-restore.json @@ -0,0 +1,61 @@ +{ + "checked_at": 1789931025.6105647, + "uptime": "21:03:45 up 3 days, 9:58, 1 user, load average: 1.34, 0.91, 0.73", + "containers": { + "mike-ai-llama-medium": { + "running": true, + "health": "healthy", + "image": "sha256:5e3c12c145b8045e5731b44b6b97033f24b327ae3d4a3fa85ecdd159cc844907", + "started": "2026-09-20T19:03:00.899996682Z" + }, + "mike-ai-router": { + "running": true, + "health": "healthy", + "image": "sha256:0448758bec6968b29263bcac0f8b4682c6d3029d626f7c12334698c11ef096bb", + "started": "2026-09-20T19:03:11.359298419Z" + }, + "mike-ai-profile-controller": { + "running": true, + "health": "healthy", + "image": "sha256:a5f156d94c4921e671fafa524cf9c0fe91e1cbec0113c1f19c136204d63f243f", + "started": "2026-09-20T19:03:11.213886021Z" + }, + "mike-ai-wireguard-gateway": { + "running": true, + "health": "healthy", + "image": "sha256:0d24e93c85a1c420b52b17666ede5fbd4672d92ab8dc28ea4ac5ba144ebc41d0", + "started": "2026-09-17T09:05:07.164533904Z" + }, + "mike-ai-qwen3-tts": { + "running": true, + "health": "healthy", + "image": "sha256:b363a01d08b1bbecbfc3ca6f585368fae2cfdc591f9ecca6643738369f9a9d98", + "started": "2026-09-19T13:47:00.227813668Z" + } + }, + "router": { + "/health": { + "status": "ok", + "router": "alive" + }, + "/ready": { + "status": "ok", + "router": "alive", + "upstream": "ready" + } + }, + "smoke": { + "content": "OK", + "usage": { + "completion_tokens": 2, + "prompt_tokens": 19, + "total_tokens": 21, + "prompt_tokens_details": { + "cached_tokens": 0 + } + } + }, + "kernel_errors": [], + "gpu": "name, memory.used [MiB], memory.total [MiB], temperature.gpu\nNVIDIA GeForce RTX 3060, 10930 MiB, 12288 MiB, 56\nNVIDIA GeForce RTX 5080, 15714 MiB, 16303 MiB, 61", + "disk": "Filesystem Size Used Avail Use% Mounted on\n/dev/nvme0n1p2 868G 187G 637G 23% /\n/dev/nvme1n1p1 916G 821G 49G 95% /data" +} diff --git a/experiments/dflash2-medium-20260920/priority1.json b/experiments/dflash2-medium-20260920/priority1.json new file mode 100644 index 0000000..862acc8 --- /dev/null +++ b/experiments/dflash2-medium-20260920/priority1.json @@ -0,0 +1,19 @@ +[ + { + "label": "medium-slot1-priority1-draft-cuda0", + "model": "pure", + "ctx": 160000, + "single": false, + "split": "80,20", + "ubatch": 128, + "parallel": 1, + "draft_max": 7, + "draft_kv": "q4_0", + "draft_device": "CUDA0", + "quality": false, + "prompts": [ + 4096 + ], + "minimum_headroom_mib": 512 + } +] diff --git a/experiments/dflash2-medium-20260920/priority2-restore.json b/experiments/dflash2-medium-20260920/priority2-restore.json new file mode 100644 index 0000000..8e999a7 --- /dev/null +++ b/experiments/dflash2-medium-20260920/priority2-restore.json @@ -0,0 +1,61 @@ +{ + "checked_at": 1789931253.8391275, + "uptime": "21:07:33 up 3 days, 10:02, 1 user, load average: 0.93, 0.95, 0.80", + "containers": { + "mike-ai-llama-medium": { + "running": true, + "health": "healthy", + "image": "sha256:5e3c12c145b8045e5731b44b6b97033f24b327ae3d4a3fa85ecdd159cc844907", + "started": "2026-09-20T19:07:06.261497776Z" + }, + "mike-ai-router": { + "running": true, + "health": "healthy", + "image": "sha256:0448758bec6968b29263bcac0f8b4682c6d3029d626f7c12334698c11ef096bb", + "started": "2026-09-20T19:07:16.676662725Z" + }, + "mike-ai-profile-controller": { + "running": true, + "health": "healthy", + "image": "sha256:a5f156d94c4921e671fafa524cf9c0fe91e1cbec0113c1f19c136204d63f243f", + "started": "2026-09-20T19:07:16.548271903Z" + }, + "mike-ai-wireguard-gateway": { + "running": true, + "health": "healthy", + "image": "sha256:0d24e93c85a1c420b52b17666ede5fbd4672d92ab8dc28ea4ac5ba144ebc41d0", + "started": "2026-09-17T09:05:07.164533904Z" + }, + "mike-ai-qwen3-tts": { + "running": true, + "health": "healthy", + "image": "sha256:b363a01d08b1bbecbfc3ca6f585368fae2cfdc591f9ecca6643738369f9a9d98", + "started": "2026-09-19T13:47:00.227813668Z" + } + }, + "router": { + "/health": { + "status": "ok", + "router": "alive" + }, + "/ready": { + "status": "ok", + "router": "alive", + "upstream": "ready" + } + }, + "smoke": { + "content": "OK", + "usage": { + "completion_tokens": 2, + "prompt_tokens": 19, + "total_tokens": 21, + "prompt_tokens_details": { + "cached_tokens": 0 + } + } + }, + "kernel_errors": [], + "gpu": "name, memory.used [MiB], memory.total [MiB], temperature.gpu\nNVIDIA GeForce RTX 3060, 10920 MiB, 12288 MiB, 45\nNVIDIA GeForce RTX 5080, 15714 MiB, 16303 MiB, 49", + "disk": "Filesystem Size Used Avail Use% Mounted on\n/dev/nvme0n1p2 868G 187G 637G 23% /\n/dev/nvme1n1p1 916G 821G 49G 95% /data" +} diff --git a/experiments/dflash2-medium-20260920/priority2.json b/experiments/dflash2-medium-20260920/priority2.json new file mode 100644 index 0000000..3adf1bd --- /dev/null +++ b/experiments/dflash2-medium-20260920/priority2.json @@ -0,0 +1,19 @@ +[ + { + "label": "medium-slot1-priority2-draft-cuda1", + "model": "pure", + "ctx": 160000, + "single": false, + "split": "80,20", + "ubatch": 128, + "parallel": 1, + "draft_max": 7, + "draft_kv": "q4_0", + "draft_device": "CUDA1", + "quality": false, + "prompts": [ + 4096 + ], + "minimum_headroom_mib": 512 + } +] diff --git a/experiments/dflash2-medium-20260920/priority3.json b/experiments/dflash2-medium-20260920/priority3.json new file mode 100644 index 0000000..b1bf106 --- /dev/null +++ b/experiments/dflash2-medium-20260920/priority3.json @@ -0,0 +1,19 @@ +[ + { + "label": "medium-slot1-priority3-draft-cuda0", + "model": "pure", + "ctx": 160000, + "single": false, + "split": "70,30", + "ubatch": 128, + "parallel": 1, + "draft_max": 7, + "draft_kv": "q4_0", + "draft_device": "CUDA0", + "quality": false, + "prompts": [ + 4096 + ], + "minimum_headroom_mib": 512 + } +] diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/config.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/config.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..a7bd8939daec480c8cb1763a5b9474c495527370 GIT binary patch literal 218 zcmV<0044t)iwFP!00002|5cC8j=~@mM)!RR!rCUKanzZenRx|QX42di9Bo4ENcAH*wCpzf?dI%B9K U?BmT3(N@pu1r{7>O*8=j08%AqtN;K2 literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/gpu.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/gpu.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..9d638ab57c55bf4d0840fbbecd0bd49f7b73339c GIT binary patch literal 236 zcmV`gWc+?ZD4(!36^Rjtb8 z*$zNo)mzw!OoH)}F^~X$G$laz(4_RCeZZPK4qk{qbel*s4w4O`+k(PAboVYB74VL- m@qgI{A}tIK^R-c-?&w%_7mDwRas*o2`U(8fGAOv ze=qnYwXB9SbMIWZ?+Bp`te`LC9_nyY&POLI6OGcCirMqPbM>x2Ic@8Pv z&k}9;EEzqD6*6}XD67(N7G&jcRB_b-locx+m2^?ur2Blc^gTFsiUxVJpb-$1nigdX znzD2n;->l!`?*BRbJ1;%Gw0$WS&Ts6KHp!r=Gj9?ar+l-M59M%1O1u+Aw}9&Q~A9< zT@F%v-JJw*G)8w?_F=xv^3Z?8A!;3<6FkPQo3?#U+q!tF%Dk-Wd>Rml24kcTVI5&+ fa3BYPL|kRi5$-Yk8&L*0-92`{b-kF0vjG4AxM_V@ literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server-args.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server-args.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..af584f2698ae0697137e02dee1bba999741e0ada GIT binary patch literal 439 zcmV;o0Z9HIiwFP!00002|9z89Z=)~}hVS_mRnHkhXwsy|YWK3oRaI%F)vB7n0B(%! z*oIB^*Du8%Av7sS2tV)Gemyh(J-fTR2WVtL{C@s1SPcJWarjH(A=yH<*#SGO;AlX# znlAW{pR2cDF9T1isx93L0LU2{H`tNL>jw2cXt_OtVgJaDmyc=x1g+#~YCvm+BT~d! znAZgMqzL>8XE^9x3wlLywAr8g&o?wo@fIbxzEzoHfZfsTxL;IsFCxK z;bp-44qCxVMnxd+OuS!xr0 hiL%8IcX6FZ(?4bZS_Ue9?vmM`*?(nS`MG2S008?y)fNB% literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server.log.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority1-draft-cuda0/server.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a52936e8ad02b4ef174f1dea14d837553fe5ffe1 GIT binary patch literal 1241 zcmV;~1Sb0*iwFP!00002|D9LcZsRr(ec!L(TkN*FQda|gSfqIfT4debE?Tr$Xeo)3 zm`J2TQn~c&JCvNYoK0%Q25gI$IcH`#ni;yb>)LMW*+G(^OH_0mp+a<>;8{;3={5%= zmGzQwoiSdC4Z5Q;7mDde^fSU}Mat_zX>`wYgLFgDSF624S6|WjZi9 zxRks@-#&~py+MC~*yl^c6e^h_c}vTgkmtQD^jT44Sp#z{iwpQiD|(hcA|`^;s+mu1dBeEek0QB)gF(zfE> z{30P)&A39VvmegZi0~3|f!=Q~(G7jv2`qru4Qwq4M>$0VWQswW-HgwS*JvD~GiUr)&h0(r*iI}z&MkHuSP#nT2T2d+FMkiRzdnug zc3ltE*+dtHiR}k2s5oIZM4^EX3c^KGt{{N&_Qs9^8~nyIE@WrlQ&u+`trYv0LcsfO zkhmy+)Ksm(D8y>m1xn8GnBi2mxMt2B#8)#|f&6XEkKi z=jcI+I631^%krHTirPxp?&?SP!7Fi^um5o$;wmYlA}SLY ze>pB{hPyt|SfwQ?D8Tt%aR8Qh#ZoYm3#pAp;h{chwL~8f#Bm(Y*()E$OWAivlc}PC zC{=w6u~19WHvn8z)f_g6ljC{Ka?C&cNPc2a)xP}+N!y}rBFViDkTwh;rfA#%o zPe-90dwklOv3%PBZBoq~k*1hN`P*q@AQUY`cV*tpO!VsFb>3^^MUTu`gD@c{7(2P~ z$=Ex<4GTQS4RM0sjC<}~eEik(cFLP~(RU9v>@F}sSLW%QE{bq^gl+;FlRza!H{p*C z3Fb&~>IbhPSyNj1rayN7KhGG0JbZBZ+8)@qedYnsC-C>tSh{XRqH3u=IDAc=(c(#g zH!Fmr1AU4rdR?FCf?%<(Z$YW?h|_6qABC{yx%->JcOEi1q9Ea(G^V7$;TuRje|}wg zj?cE+VwX;496=C}_+*Y9W*N;9!_+gb0u1LNiLxlLTE>S5tLB55EX=V*CbRhj4Bkt6 zG=lMQ$t*L^nbJh+tRsw@q>>-t_{j@7WoFP=BK*nOQ1D3_yJ-O9FYo>X64oDbR1g3F DY6@A4 literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/config.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/config.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d9ebb3fb43aa9695f41d11c09395b3be784c8a6f GIT binary patch literal 218 zcmV<0044t)iwFP!00002|5cC6Zo?oDMfd&+#5$IYO-+rC7uY5h-pSgbf;po-T%jwPb_2suu+v(l=j}xQedh@XK=6d`2cBw1T zpT~EXyVEbXg+dhZsItAdx-AGl`kmeR-EzeB{m~zrA!UluRaQ_D`_hb&d(sqp(jJ8E zKTlTo690l*K!}Q|EP=bC$sD+6hb@LQ23zV3unk12HFqxoyC4@!N}CTsJ3!pUmx4|B z4Es0iKxm3W!WW`#S*;Cb$j`0pKl4!3iyu0Du*c{&9-SlQ2;$0C;8KZJ;-kvtT zZHza8g!Y2qcTy9c{vL8z*Ni`}e>Il@F1XqJX^xZ7n6H$jcI zz2wNk+k00Pba>u1?1I5lp^1i0%QY2tv=!ep@rJHx#D=}k|CcLj77(%f;P zH9>s$?|l#L<%tRuEL>94w#e#k8l=rom;`I?@O~;`LJGxNoM>))FY%yZI86ATd9O}Z NKLG^nD1g8w008uZLLmSE literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/loaded.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/loaded.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b3c0e8f7982a9c629e1ea1b3e42bff208bc6ce15 GIT binary patch literal 3647 zcmV-F4#4priwFP!00002|HT_?bK5rZdwvB@oeu4Zq)75RV|k|6*QD3jsgrctsWTji zge24?K@+4cUF`n$+XeUlK~hrEOwV6zE*AU3?qU~!KRzR*=TXUeFUd#v8@>WMV*z~j zLgw=<9LPYV<3XHok??dq8TbjErvoqZ>A2U|Q$peEDRGvt0_deH0F94F@RNfij}`&4 zn$tkC0vHE8#mT3m{$y0l&So_AmPlZ7nuB7R&>&EZ#yLpI;)WDCoz!5r_ek>Y&@Cxy zxX(eI5%2NMIFij=B#8BZpsrv{vbF@g^d3=%0< zsH2{OJoR@L zWN8XcRw3nn6PgfQ6Q-m*oSYq=9iL3jj{4OYiiGsgmtoC@BV){8M-<21ghmS-9<>j% zRV*SFr40h9h}~O&PHbSTh=Dlxb9y>DIUAjf4IFT^9A|Vi(myAMN288ZM_bT;VFyV~Oc<$_@#(26+m|Tj$SEJ*c)A;agG#=*;Td-Qk+@paKs?H~2F{7y) zP?@?Bj2<602V)k|K*>;_8v}b5dCWkl3pr2NT?QEIP7FU;yCL`mhs45?*5R4Xc;n&8 zku?GtMm#Xz4Op~DG5<^~gq&-Kb|Fs$#5=D0s0Hk%6vO;z*gD8ky4C8`r*X>f8Bj_V zENw1wiQqGjYU7+LpE^4^9v_{K4<|LRqANEQw=9y1k}(3_mcRz!rOkm`#$rps$o0AO zXyRLNzKBG^Tqa~awdx>D6Gp?9fk?TjY#6bXwYLP*%|#L_tM|SYQ3`=K5K*x1)%=c1 z5kYP+a3hG(b{t^kX+kaH8Tm%<5J=0UBWV~1EHO6@?cBiVwNFI zZfiA;J4d~7{M9dq?r(3&fE*4dM`RX1)bV1fl1J}_`jjv39$0iRJRM9QxUQWhWx8L){Px0$4T(a+8yY59HAS_ZWc$AhlO_Pk-W5wQW)>q|V z$kK#+*3^t!=ozo=?}Z8~0ig4OYpS*R`1ODQBH_N`t5-&o>Ju(qxt1Vafjdr}7jccor~1Bj1EaA_c+YxIq_aKt9BIA>mOu#l$g$ zbd*UQ#8fk2rUtoL64b!>TO|oHotD#Vss`nTnOczxQzVp2*i}{@i!lxFId9cm0*fYr z6Y*$-8Y3x+LLqxOboNWz*%H8Nf)E?zv(~j+x~A_9l?#DWHDS-mxRdEtk*Mz%GI4*S zxtuq!k3(7^4*9D^iob~S5{5p*Hc0#YF&9GhIgc0TkD5bFef-D=fym=UlSk>pj*7nx zE|ib|zg$SM|7Tsu$VjCNHDUjh3;l|ml>;?p_|gufIeel6rEHZ}{?o-xI~AaIP?D^3 zYQtmRN6_Xm4|;peQ~7F@MBALD-5fa-6YHUIVlNZJX1bHNDd$jV!>8MX| zVW*B$ZPsYgBBEhsnj&d&70F?~`AU7Ah1{?z<ddyF=_MFv{ zFP2WDK-@qKcAq%<+!+4~#Dg6JTe40`p5)|l!)fq@ z{boqsW^pX=U{$3kNhs7eN(Qo*n{vNTv@CrU#UM?0BHP)}t4)^f@~&%JEv)ikMk=(( zL-Hm76h@RwLG6*Sc@_j~_)bIyDy2&pqw=;-V8`V?G&$#jN@!a@mKQ@jED9l= z%~WoFvR$;*Y>h~3M|(~%;Wy}7!2t7bdS8)uD6&TXU1VfQ??Dw0EmatEF7V70HJN9T zX7N%_I9K{!-1KUEFuUV`axG;LTke}4&hOQ#Cxok6kMQeHP|KFRRy`F&&R;Y|Kr?Ik zUd_>ih_@61V^2Wf1>oeR9^~rs=ikAKaZtrUrK~zeRQ^LQuZYa%bG|Yacaho!eiihl zY^6>H-2&iZ4Wm%hB?SXtDRD}OJ4OsuX}e>kQ#rJC>I5;~ExB?!lwTL@Y6;*=GKd67 z3I#qOr%O-@njZqC6{?b-q%#u0?k8K=zbKTsDD7Qpj*wTc-&|e4`{wc;0kvVTt4ul^4lfKD$Se@vEeSK3k{Kf) zGVTz#NU(s$vY3LB-(LR=*>xe6P}l4(gLGk7C6{bwNTe_^9zwb<%2py&CWbUw?P6$X zm89mTs_0A+9<%~(K%+&5<>|k_|KaNTd+lTRU*63A=boAUp+?<|tvQ&*>namo!&Tay9q+O_ux98CAd|cMh z4aJ_f3UBSGJLULp(Yqzz#CpR9r%Lg9=cTd(aA&cL@ibM(w?y5Ifx{(hS9MX-qVIat z*J@-y##?)|KVH5Zj6XDLYDExa*lVRZsP%4^4?ss?$*Y{)Zs2b44m*Jzqpe{1#Kx_= zWrMgXPK}3Z^&|%4o}+UVlv6P*7P|oFF^+PFz_Y-6VI%H$wtg*&PqloTrr4{9Cz$H@ z<{ofsN4H~7ZZ71-wCn+Gf7pFNT3YBbIoKYM2U4%C!N2L19lq@(JDe*PI}_}(m{DhJ z0XrH5X`?j>S_Nx!O*;$dJZj9;$qK=RwQ5PgDG_!M09p>{6KIrn1W1*2s+Dn^wg@O` zH)gcofo$W_O>g%@i#ECqSZ7SD#|z2*hLeL<40Uz@gEfzDjlhOEc3k>%#qOf9F&OTk zi?;&Ja+fFDfUT+HGyL#rrADcJn-sUG*ILMII9M;ShGm@u zOxwF|TqZ3Aw~ae`ZgGl>gQ}iVBlC zPvqt+l!^jgb2;Lh~|s#Tq?D}{R4d}*#5jkr;!!WLgjq)+rrnk=#q z7EMKISA^P;3X`PjrTh9%-R0)z3l`l+ysMErEJ@W@qsk?V?F(RrvLVjY{CF&OIJ|{3 zL@swewMMlG`LPGgr1R}AWlVkA!Sk)Ieyewxr!B4baUCn#v9E7;huwmBLpG|!K-tT5 zbkkF9p5@WS^6aZUt4AKN*^Z(1fjmiJ>mfhAy}HbChU5)R)Y+|iLy-zRrVz6~nTLfQ zFk?ypl?LNDSi7|cD_yB@*GTR*b&=PLgU1#WO#go;!~ZRtmX&Z}trtbOV?@_1{CV4j zisH`WDW~gl)^_cVx}@U(VoUjq{97vLVq1gy@Lt^|>kA75qG|lAgGOupg}s8aONmv> z_+>}gNCRz;km@il@HOLCTt16Lv#I^mEA*n}LzTAQ zJZ$Yp*P&zGRfH&QNZd@M=#L zO~m5ARNSgj=*BI&!LlRkM76KgIuUioG+r-vpy`)VXtGY69W+q4E8U~(nE93{wb!RJ zA@xX`XcrMhV-SOz`_;4_roO#EiV^;k8Ne^F! z1&qawN5nl(B)AM>wRW}B`^GET{NH!-N3GWX=J486ck8`zWs2&_v~4A>7~@5nAy)Md RFVCKy{SR+mi|(B@008T<^Gg5# literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/partial.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/partial.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f6d5c0977cc7ecdb0d831a5b71f0c8da9460d3f0 GIT binary patch literal 8534 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 Qi<>Y02VzPv!SHAR0QHd+H~;_u literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/result.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/result.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a904d7e7e180fb6e2a5634f186f7fb290821579 GIT binary patch literal 8545 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 bnSzuogEkoA9rW;vn=k$c6o^2>5@`Sc@uV1e literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server-args.json.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server-args.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..9036c3d252d4f4178e81b12aa1f62c71e7b4cf8b GIT binary patch literal 440 zcmV;p0Z0BHiwFP!00002|9z89kDD+MhVS_mt3783VUtaItadLwR#l}+RkfPH08WhU z*oG$k^=0u#2%9WO2tV)Gemyh(J$ra~1ZZSI{Biz1SPcJWar{f-DcM4{*#SGQ;AB9x zny&b_@2j_8KL(yuRa?3h0FW~@Zm=Vf*A41J&~keM!~T&QFQ3!?30ld~)PU9sN2G|e zFs}*hSrPb^j;puyhT7dzH8u`JZfi|gc%RP`3OlrUJ<$d>a-XHEZP41OxXhxaP$TCd z!^?mV9kha#jEX?^OzbfXdLKp#CMpN8weo`mN|PboQBZ1WY}kL3r2QMWQ&M|rou=zR z8?u_^CYFHt7+J=03aC^I9M7bETz{G%a*4&zKMn{fq8A~dWihYRDAH*AUh)2tOC_WN z<*So?S{WIDitI+pt-UVgrQP3Q05c*q9XV0Th$qd2o8o5Nu))`XGT#W=Q2=hA-pWA5FI_VGGy4zliHR&^1ONcp-_jQV literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server.log.gz b/experiments/dflash2-medium-20260920/results/medium-slot1-priority2-draft-cuda1/server.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c66f90d2b194001bcc2f2d39458e725abf0bc3d GIT binary patch literal 2027 zcmViNpMABndf%9{@yGx2FYXG#kNv@Et* zatwJZld@`d_|@d=jYGFK|I0wZ(}?Q`Ex$Qq?_g3WU&B)n>Pgba{0> zQye&x=P@{AoH8aa;A;|yzkL(D(t=(JU-Lltm#g4o76@PMUA=c>4k8sH@*+uSF+EQ% zGKna^K%hg{;5q^lMVASlp2}nmsyasJit$)oC?gWFFosq2T3*Q@!Wj1TmG}XTR+_J_ z#AX9~W%cJf1$%*p&|sSD6oU{R%CNbTfdVT6y+OP8 zz&6u{CU`Me6bwllZri#@Kz~PP@^nNuS*0 zo}_21ry{i*I&YsjZ9D>tCxy@=uu^Y)h%%n9xo8!eL%#EGn2~ z2D8|uUl+v$Sw4cUoBV_@6W)V5vnk}iOGYAx&)lI8`(1%E3x*h+wWiH7r-Tv#=y2-OR^Jz=o*Aw%7}PMpPE^w@Gqr=}^f3d9lyEe-ZPRnO2UJ~BC6sn)8h_HegZ4LY z7%EKZ;{eYz2!X>q4j7I4NHK^-*_|v;RV*2%ihokG z(HJZO9EO+_m zfMtHn(?~2d{BZtp8cL%hjesqFOe4S#_cSq5L7T04Mj-js)G#V@IP0tmxk(v!?SoC&n zc%L*_7Zpor|Ipb?3p^r_BEgQ5CC&sM8l8zZO3JBUtZ60f!_uL%pA>i+(U?PP_F*Zh zhhb5PxqK_|kTUhTVT}YH+%ltn>W8p2RVRTzQqXXUcLbhsHUyM`fYSo6B1wJLI8kQ; zPdTW^`vOnmQwW^!0D%`51YT45R^fp`3xXwKpQrGQL_`wVC$Ys>QGmiTp#wA?njNel zXnaU5b&x~(6|`@04PI1@S{%lB)VDZTPYUuIk#J%`gvJbIP9t-ZvR3Rp!Y50&^tpQal6Bq=#7v+hZElZ8R-fl%H@$Lns8j=V2^-E`2To_LXF*+h>4T6izm#GIvG^~ zwoXFol(>dSL`T=f;f(mksw%8iPXwt2B_WCh6HO~6jfuv(_g$QLEgmQ(?7PuekO+q< z3pp)F$G~K8V3SHoD4gcNC-;IR2t9LN(83cZen=bPpB&goDT!d*|M|1en2PjCDUT%T zBP8!Ar6Obisl%IOQYmR9xc0eYa3(xcN-m@C_^;Nz9D<-S$bYp#d`~GMX=*H${{Sdr JJ{G1P005vr(Yycv literal 0 HcmV?d00001 diff --git a/experiments/dflash2-medium-20260920/run.py b/experiments/dflash2-medium-20260920/run.py index 3c21696..8c33495 100644 --- a/experiments/dflash2-medium-20260920/run.py +++ b/experiments/dflash2-medium-20260920/run.py @@ -54,8 +54,8 @@ def run_case(case): save(out/'config.json',case) print('START',label,flush=True) single=case.get('single',False) - args=['--model','/models/'+MODELS[case['model']], '--alias','benchmark','--ctx-size',str(case['ctx']), '--flash-attn','on','--cache-type-k','q4_0','--cache-type-v','q4_0','--cache-ram','0','--threads','6','--threads-batch','6','--batch-size','2048','--ubatch-size',str(case.get('ubatch',512)), '--parallel','2','--kv-unified','--jinja','--reasoning','auto','--reasoning-preserve','--host','127.0.0.1','--port','5005','--metrics','--fit','off','--n-gpu-layers','all','--load-mode','none','--no-ui','--temperature','1.0','--top-p','0.95','--top-k','20','--device','CUDA0' if single else 'CUDA0,CUDA1','--main-gpu','0','--split-mode','layer','--tensor-split',case.get('split','1,0'),'--spec-type','draft-dflash','--spec-draft-n-max','7','--spec-draft-type-k','q4_0','--spec-draft-type-v','q4_0','--spec-draft-p-min','0.05','--verbosity','3'] - args += ['--spec-draft-model','/models/qwen38-dflash2/draft.gguf','--spec-draft-device','CUDA0','--spec-draft-ngl','all'] + args=['--model','/models/'+MODELS[case['model']], '--alias','benchmark','--ctx-size',str(case['ctx']), '--flash-attn','on','--cache-type-k','q4_0','--cache-type-v','q4_0','--cache-ram','0','--threads','6','--threads-batch','6','--batch-size','2048','--ubatch-size',str(case.get('ubatch',512)), '--parallel',str(case.get('parallel',2)),'--kv-unified','--jinja','--reasoning','auto','--reasoning-preserve','--host','127.0.0.1','--port','5005','--metrics','--fit','off','--n-gpu-layers','all','--load-mode','none','--no-ui','--temperature','1.0','--top-p','0.95','--top-k','20','--device','CUDA0' if single else 'CUDA0,CUDA1','--main-gpu','0','--split-mode','layer','--tensor-split',case.get('split','1,0'),'--spec-type','draft-dflash','--spec-draft-n-max','7','--spec-draft-type-k','q4_0','--spec-draft-type-v','q4_0','--spec-draft-p-min','0.05','--verbosity','3'] + args += ['--spec-draft-model','/models/qwen38-dflash2/draft.gguf','--spec-draft-device',case.get('draft_device','CUDA0'),'--spec-draft-ngl','all'] save(out/'server-args.json',args) cmd('docker','run','-d','--name',NAME,'--gpus','all','--network','host','--read-only','--tmpfs','/tmp:rw,nosuid,nodev,size=256m','--security-opt','no-new-privileges:true','--cap-drop','ALL','--pids-limit','512','--ulimit','core=0','--memory','26g','--memory-swap','26g','--shm-size','1g','--log-opt','max-size=32m','--log-opt','max-file=1','-e','NVIDIA_VISIBLE_DEVICES='+GPU0+','+GPU1,'-e','NVIDIA_DRIVER_CAPABILITIES=compute,utility','-v','/data/models:/models:ro',IMAGE,*args) stop=threading.Event(); samples=[] @@ -117,6 +117,9 @@ def run_case(case): r=prefill(n,42); result['prefill'].append({'target':n,'response':r}); save(out/'partial.json',result) print(label,'prefill',n,r.get('timings'),flush=True) result['finished']=time.time() + except Exception as exc: + result['error']=str(exc) + raise finally: stop.set(); thread.join(5) r=subprocess.run(['docker','logs',NAME],capture_output=True,text=True,timeout=30) diff --git a/experiments/dflash2-medium-20260920/supervise.py b/experiments/dflash2-medium-20260920/supervise.py index d035920..7ceffdd 100644 --- a/experiments/dflash2-medium-20260920/supervise.py +++ b/experiments/dflash2-medium-20260920/supervise.py @@ -10,8 +10,12 @@ signal.signal(signal.SIGTERM,stop_signal); signal.signal(signal.SIGINT,stop_sign # Refuse if the known production state has changed, or if requests are active. for name in NAMES: assert run('docker','inspect',name,'--format','{{.State.Running}}').stdout.strip()=='true',name -slots=json.loads(run('docker','exec',NAMES[-1],'curl','-fsS','http://127.0.0.1:8080/slots').stdout) -assert not any(s['is_processing'] for s in slots),'Production request active' +for attempt in range(60): + slots=json.loads(run('docker','exec',NAMES[-1],'curl','-fsS','http://127.0.0.1:8080/slots').stdout) + if not any(s['is_processing'] for s in slots): break + if attempt==0: print('WAIT production request active; no interruption',flush=True) + time.sleep(3) +else: raise RuntimeError('Production remained busy for 180s; no services stopped') assert not run('docker','ps','-q','--filter','name=^mike-ai-dflash2-test$').stdout.strip(),'Existing experiment' child=None try: @@ -36,5 +40,11 @@ finally: for _ in range(150): if run('docker','inspect',NAMES[-1],'--format','{{.State.Health.Status}}').stdout.strip()=='healthy': break time.sleep(2) + else: raise RuntimeError('Restored Medium did not become healthy') run('docker','start',NAMES[1],NAMES[0]) - print('RESTORED existing medium/controller/router',flush=True) + for _ in range(60): + statuses=[run('docker','inspect',name,'--format','{{.State.Health.Status}}').stdout.strip() for name in NAMES[:2]] + if all(status=='healthy' for status in statuses): break + time.sleep(2) + else: raise RuntimeError('Restored router/controller did not become healthy') + print('RESTORED existing medium/controller/router; all healthy',flush=True)