From c78a083d4c05640d674e9ceb43accb61d2d36b88 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Sun, 20 Sep 2026 21:31:01 +0200 Subject: [PATCH] Validate Medium microbatch 256 with authorized lower reserve --- ATHENA.md | 2 + docs/INFERENCE_OPTIMIZATION_TODO_20260920.md | 2 + docs/MEDIUM_MICROBATCH_20260920.md | 2 + docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md | 52 +++++++++++++++ .../medium-microbatch-20260920/README.md | 8 +++ .../reserve448-comparison.json | 30 +++++++++ .../reserve448-restore.json | 61 ++++++++++++++++++ .../reserve448.json | 17 +++++ .../medium-ub256-reserve448/config.json.gz | Bin 0 -> 182 bytes .../medium-ub256-reserve448/gpu.json.gz | Bin 0 -> 609 bytes .../medium-ub256-reserve448/loaded.json.gz | Bin 0 -> 3627 bytes .../medium-ub256-reserve448/partial.json.gz | Bin 0 -> 8615 bytes .../medium-ub256-reserve448/result.json.gz | Bin 0 -> 8625 bytes .../server-args.json.gz | Bin 0 -> 453 bytes .../medium-ub256-reserve448/server.log.gz | Bin 0 -> 2057 bytes 15 files changed, 174 insertions(+) create mode 100644 docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md create mode 100644 experiments/medium-microbatch-20260920/reserve448-comparison.json create mode 100644 experiments/medium-microbatch-20260920/reserve448-restore.json create mode 100644 experiments/medium-microbatch-20260920/reserve448.json create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/config.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/gpu.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/loaded.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/partial.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/result.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server-args.json.gz create mode 100644 experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server.log.gz diff --git a/ATHENA.md b/ATHENA.md index 1cfbacc..82d8f7a 100644 --- a/ATHENA.md +++ b/ATHENA.md @@ -145,3 +145,5 @@ Bei neuen Modelltests die [gesicherte Qwen-Referenz vom 20.09.2026](benchmarks/a Abschluss des 20.09.: [Effizienz-/NVFP4-Prüfung](docs/ATHENA_EFFICIENCY_REVIEW_20260920.md). Pure/MIX bleiben produktiv; Medium startet nach abgefangenem GPU-Pufferfehler ohne Pipeline-Parallelisierung. Bei künftigem Tuning zuerst Speicherreserve und tatsächlichen Durchsatz prüfen. Native NVIDIA-NVFP4-Gewichte wurden nur auf Kapazität geprüft, nicht benchmarked. [Microbatch-Folgetest](docs/MEDIUM_MICROBATCH_20260920.md): 256 lädt, unterschreitet aber die VRAM-Reserve (461 MiB frei auf 5080); keine Inferenzmessung mit 256. Produktiv bleibt 512, kein belegter Gewinn und keine automatische Folgeänderung. + +Aktualisierung: [256 mit explizit genehmigter Reserve448](docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md) besteht Kurztests. +7,1 % Prefill bei24K, kurze Decodes nahezu gleich; noch keine allgemeine Betriebsfreigabe. Produktiv unverändert512. diff --git a/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md b/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md index 6963066..d43db57 100644 --- a/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md +++ b/docs/INFERENCE_OPTIMIZATION_TODO_20260920.md @@ -45,3 +45,5 @@ Ein-Slot-Folgeversuche: [Bericht](DFLASH2_ONE_SLOT_20260920.md). Draft auf 5080 ## Medium-Microbatch-Kurztest [512 gegen 256](MEDIUM_MICROBATCH_20260920.md): 256 lädt ohne vorherige Pufferfehler-Meldung, lässt aber nur 461 MiB auf der 5080 frei. Schutzabbruch vor Inferenz; kein Geschwindigkeitsgewinn belegt. 512 wiederhergestellt. Für einen eventuellen Folgetest zuerst mehr 5080-Reserve durch angepassten Split schaffen. + +Nach expliziter Freigabe: [Reserve448-Folgetest](MEDIUM_MICROBATCH_RESERVE448_20260920.md) bestanden. 256 liefert +7,1 % Prefill im einmaligen 24K-Kurzvergleich; kurze Decodes nahezu gleich. Alle drei Fakten korrekt, keine volle Langkontext-/Vision-/Parallelitätsfreigabe. Produktiv weiter512. diff --git a/docs/MEDIUM_MICROBATCH_20260920.md b/docs/MEDIUM_MICROBATCH_20260920.md index edcd569..4e04c20 100644 --- a/docs/MEDIUM_MICROBATCH_20260920.md +++ b/docs/MEDIUM_MICROBATCH_20260920.md @@ -1,5 +1,7 @@ # Medium: Microbatch 512 gegen 256 — Kurztest +Nachtrag: [256 mit gesenkter Startreserve erfolgreich getestet](MEDIUM_MICROBATCH_RESERVE448_20260920.md). Der folgende Bericht dokumentiert den vorherigen Schutzabbruch. + 20.09.2026. **256 lädt ohne den bisherigen Pufferfehler, hat aber zu wenig Reserve für die festgelegte Testfreigabe. Deshalb keine produktive Umstellung und noch kein Geschwindigkeitsvergleich für 256.** diff --git a/docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md b/docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md new file mode 100644 index 0000000..23ca292 --- /dev/null +++ b/docs/MEDIUM_MICROBATCH_RESERVE448_20260920.md @@ -0,0 +1,52 @@ +# Medium Microbatch 256: Kurztest mit reduzierter Reserve + +20.09.2026. **Nach ausdrücklicher Freigabe wurde die Startreserve ausschließlich +für diesen Test von 512 auf 448 MiB gesenkt. Microbatch 256 besteht die kurzen +Inferenztests.** Die übrigen Schutzmaßnahmen blieben aktiv. + +Nach Laden waren 461 MiB auf der 5080 frei. Die neue Grenze erlaubt diesen Fall; +es ist eine Freigabeprüfung nach dem Laden, kein dynamisch reservierter +Speicherblock. Während der Messung sank der gesampelte freie Speicher auf 443 MiB. +Keine weitere Absenkung war nötig. Andere Testkonfigurationen behalten ihre +bisherigen Grenzen; am NVIDIA-Treiber oder am Produktivprofil wurde nichts geändert. + +## Vergleich zum unmittelbar vorherigen 512-Kontrolllauf + +| Aufgabe | Microbatch 512 | Microbatch 256 | Änderung | +|---|---:|---:|---:| +| Deutsch, 768 Ausgabetokens | 57,2 tok/s | 57,5 tok/s | +0,6 % | +| Code, 768 Ausgabetokens | 74,9 tok/s | 75,5 tok/s | +0,7 % | +| Prefill, 24.674 Eingabetokens | 1.782,0 tok/s | 1.909,2 tok/s | +7,1 % | +| Ausgabe nach 24K, 512 Tokens | 54,8 tok/s | 60,0 tok/s | +9,6 % | +| Synthetischer Fakten-Recall | 3/3 | 3/3 | gleich | + +Die kurzen Deutsch-/Code-Ausgabetexte sind zwischen den Armen identisch. +Die Recall-Aufgabe hat denselben korrekten Faktenfund, aber unterschiedlichen +anschließenden Erklärungstext. Insbesondere der 9,6-%-Decode-Unterschied ist daher +kein isolierter Vergleich identischer Tokenfolgen. Ein Lauf je Konfiguration; +kleine Unterschiede können Messschwankungen sein. Keine allgemeine Qualitäts- +oder Geschwindigkeitsgarantie. + +Pure, 160K Kontext, zwei Slots, 85:15-Split, Vision geladen, MTP3 und alle übrigen +Modellargumente blieben wie beim 512-Kontrolllauf. Die Reserve selbst verändert +die Inferenzberechnung nicht. Die maximal tatsächlich geprüfte Eingabe war 24.674 +Tokens; keine 160K- oder Bildanfrage und keine parallele Last getestet. + +Die bisherige Pufferfehler-/Pipeline-Rückfallmeldung erschien bei 256 nicht. +Das belegt einen Start ohne diesen Rückfall, aber nicht allein eine bestimmte +Pipeline-Auslastung. Peak: 5080 bei 15.860 MiB, 3060 einschließlich TTS bei 10.648 MiB. + +## Einordnung und Abschluss + +Die vorherige 512-MiB-Grenze war für diesen Kurztest zu konservativ: 461 MiB freie +Startreserve reichten tatsächlich für alle drei Aufgaben. Daraus folgt nicht, +dass diese Reserve für jede 160K-/Vision-/Mehrnutzerlast genügt. + +**256 ist ein sinnvoller Kandidat für besseres Prefill, kein großer Decode-Sprung.** +Für eine dauerhafte Umstellung fehlen noch passende Langkontext-/Vision- und +Parallelitätsprüfungen; diese wurden heute nicht automatisch angeschlossen. + +Das bisherige Medium mit Microbatch 512 ist wiederhergestellt. Medium, Router, +Controller, Gateway und TTS gesund; readiness und minimale Modellantwort geprüft. +Keine erfassten Kernel-Panic-, Xid-, OOM-Kill- oder GPU-fallen-off-Meldungen seit +Testbeginn. Rohdaten und Prüfbelege unter `experiments/medium-microbatch-20260920/`. diff --git a/experiments/medium-microbatch-20260920/README.md b/experiments/medium-microbatch-20260920/README.md index e3be9da..93f88d6 100644 --- a/experiments/medium-microbatch-20260920/README.md +++ b/experiments/medium-microbatch-20260920/README.md @@ -33,3 +33,11 @@ Judge walltime, prompt/decode rates, VRAM and the three-needle recall together. only461MiB free on5080, below the512MiB guard. No256 inference was executed. Args differ only in --ubatch-size. Production512 restored and checked. See ../../docs/MEDIUM_MICROBATCH_20260920.md. Do not claim a256 speedup or quality result. + +## Explicitly authorized lower-reserve follow-up + +reserve448.json lowers only this256 case to448MiB loaded free-memory minimum. +It passed all three short probes: +7.1% prefill, short decodes essentially tied. +Recorded peak free memory443MiB; the guard is a startup threshold, not a reserved +allocation or runtime minimum. No full160K/vision/concurrency qualification. +Production512 restored. See reserve448-comparison.json and reserve448-restore.json. diff --git a/experiments/medium-microbatch-20260920/reserve448-comparison.json b/experiments/medium-microbatch-20260920/reserve448-comparison.json new file mode 100644 index 0000000..cd67a86 --- /dev/null +++ b/experiments/medium-microbatch-20260920/reserve448-comparison.json @@ -0,0 +1,30 @@ +[ + { + "metric": "Deutsch", + "ub512": 57.15738655264799, + "ub256": 57.501411483474186, + "percent_change": 0.6018905894329407, + "identical_output_text": true + }, + { + "metric": "Code", + "ub512": 74.94202496673532, + "ub256": 75.46417601433642, + "percent_change": 0.6967399771127925, + "identical_output_text": true + }, + { + "metric": "Prefill24674", + "ub512": 1782.0307827509184, + "ub256": 1909.171738718156, + "percent_change": 7.134610535232744, + "identical_output_text": false + }, + { + "metric": "DecodeAfter24674", + "ub512": 54.7725897809568, + "ub256": 60.0406255316709, + "percent_change": 9.61801472558026, + "identical_output_text": false + } +] diff --git a/experiments/medium-microbatch-20260920/reserve448-restore.json b/experiments/medium-microbatch-20260920/reserve448-restore.json new file mode 100644 index 0000000..7306edb --- /dev/null +++ b/experiments/medium-microbatch-20260920/reserve448-restore.json @@ -0,0 +1,61 @@ +{ + "checked_at": 1789932566.9422781, + "uptime": "21:29:26 up 3 days, 10:24, 1 user, load average: 0.70, 0.42, 0.44", + "containers": { + "mike-ai-llama-medium": { + "running": true, + "health": "healthy", + "image": "sha256:5e3c12c145b8045e5731b44b6b97033f24b327ae3d4a3fa85ecdd159cc844907", + "started": "2026-09-20T19:28:57.246456642Z" + }, + "mike-ai-router": { + "running": true, + "health": "healthy", + "image": "sha256:0448758bec6968b29263bcac0f8b4682c6d3029d626f7c12334698c11ef096bb", + "started": "2026-09-20T19:29:07.653040573Z" + }, + "mike-ai-profile-controller": { + "running": true, + "health": "healthy", + "image": "sha256:a5f156d94c4921e671fafa524cf9c0fe91e1cbec0113c1f19c136204d63f243f", + "started": "2026-09-20T19:29:07.536349965Z" + }, + "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/medium-microbatch-20260920/reserve448.json b/experiments/medium-microbatch-20260920/reserve448.json new file mode 100644 index 0000000..0d58701 --- /dev/null +++ b/experiments/medium-microbatch-20260920/reserve448.json @@ -0,0 +1,17 @@ +[ + { + "label": "medium-ub256-reserve448", + "model": "pure", + "ctx": 160000, + "parallel": 2, + "single": false, + "split": "85,15", + "ubatch": 256, + "mtp": 3, + "vision": true, + "prompts": [ + 24576 + ], + "minimum_headroom_mib": 448 + } +] diff --git a/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/config.json.gz b/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/config.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..f1ba9e2ae66ea53014f603966256a7fdae4be63c GIT binary patch literal 182 zcmV;n07?HJiwFP!00002|0R#j3WG2Zgzr8@$XTIUlS*Hu6iIYj16dRDBZbm;@0#ps z=3{o2{Wgqot29`CXB=TQ8M~|pA-ez(!U5wr@%BuiTWiYa02M9iL!g%zngYBE%Gwee z3W#QZTOj*VHbO<-nsoL|qU}X3%37smJGX?a$C4*^E&4FgxSebYxmNh#(5Fb~L6)&$ k6gNrgS$EBDFyp*|T7z>qqtO(lN19*r2Us7!rtts(0II%Gp#T5? literal 0 HcmV?d00001 diff --git a/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/gpu.json.gz b/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/gpu.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..b646d963364923c59d34f8d849f64e19ee5b80d2 GIT binary patch literal 609 zcmV-n0-pUJiwFP!00002|J~VNYZE~b0Py#GiX+cun4OuOKfVc~^u-4e5lSD51}Ruu zZ2BaAcduzn6WL%E@9Nlx5ORB$%>0;}?CzZ`hT+Hf8iwWi{9?6yF%y3Th1mg^}l$wQG)0Ve2BkSZA z7=M~7<>vOZ+}6jfP@;%LYVNHT`R}-W3T_7?A@$tlT|KS0ba@v9s;py$XYscGtetqD zHvzecD5v($u-5r4#fQjBpSJ)P3&u3FljdDJP7$9;eJik->wJ4BKFRcChQ;M>$OqJS zv?7a6ZwEGWmMq-%RFm&sZo>(<2|>`pBXxCaNx)sE;3g1uB+@M2?G2%LF5Uv7E@GCt zos_iR+fVln0#}fTN|C02w-*&P!QUlM0`5?m)aKi*nxw*OT5!=WZ$_x22~+L~${hPA v-QH8IcbK4tRg2u*n3Y?&k6S>wuqSUPDf)N&DPOC+7pIF~-%SYZ<|6@(D?x zHy+KWlWI8Q8I{T%PbOz)#yE>m_}+AGpvVFVI_k-hhyKy5%tmK6R%T~*R_4z}&n&FW zx>L3!r$_c_woQ1<;;e-rk{?R=|vABlUASosDK^qj>`pXdzff6krE++S|-?L4`}Y48TctE$(qX+klU5c<9U7 zaY1Q3Js*w7^YO$awMznzhLWi|os=bvW^PDD=Auu{r|rpv#Wa*W)Ym2$B4Upj0Cgr; zDf^HE#I6&Ty~*VU{u)Step>rlO@p zD`{^7s$20il3MTmgU1;--hjv9u2-`=DtHXB!GMjyN9`~`%2S9e>>2S!k4$DOSR~Jfvt{ zLm3Pca*(3`^U>~=HmCODEtszCf~n$HTrPw zx)+)~*rbF9aaQWoD5AT=#d9*3Yp9P)>Si$93-9Hu@)H;DVieZhom zbnY)++$#zR_3@*a1SIztZ5pKwJJSF5m{2kQ|1u#-{;xG5BO;Y1)E@h*Oz3B%EDfm5 z!K{# z6Wp=XLdP(Ma>zofAZC6mTR2W5Q8XkwB#|b9LYb1(B`CgBPSgW1C-aT+BvHv^BYDXy zK&TOL>wQhHO$+@3oIDn_94&2eG3pcC*oEU%$r@FvJsNhV&5~kQq8t{0eW+9=ml?8<=fMi|t_#O&_ zsD)GU@9s<8rP`F~FU*f8f4RoG5Br!XXm#wyQN+>H!Lu~m zed4ID3I7WDUDF2+M4b{nDbQoWY0-pyGbHcwB;k0nDnpbY6zUtv134*F`M6IMFMa97 zz)g1`J6h4(eVXpFuD4CGu*!!O8CNV1$(s;B7?CCgwMWWUc^K~CJLNfulx<*+ikm)x zj2rmS=#U$>BUFeyl3EmfjMxIAXG)+E%0(c%fDrnDSa$3}DIrM%o@lIc05l>>4wWR zU@OV|ihFnt4f_uX1!nvJB}IL5DGf;Lg*nz0U2=88Gj#Tc zD&q_O%s3B)#uuX zkt<|bf&a>LvZ1#iiieug%3N_gGet>Od8|l0R|{T9c`vSeH98pGaYCAwR7jKW>mIJ} z)v6~Pm#gmK*Y6-!llNNnq>;RM+GYXOtoVDmLJK0^hI8~i4vrUsk(Y9i*Ox#13R+CU z$`2}GuW@?_A}11{Du5=357FtC*prW|p{2q7zN zcPwQprw%TiAjH)skVc36tAbr_0elGto&Z5X!vk=(0imGzAy8VOD8)%SBOzozVIlui z3v*HGyObP9UcP$s`t8*>msdFOmPJ@srKqO?`A+K@;RSj1)4Que!HPRb3c)I1exd8< z;6tzvF@(5ErNiOy!r*}{L+;&>C>I%7G6F1PhQLjN4K%jJWR(2!>IaCfYay9>%Rb}~ zE)1;{oGlHGBqaJnM0dJuC0s^g2$NM7Lq*FVwK7FTV~X*h6<|XeuX8L<|NiZFuit*F zjLZb?lO=?w%hy+guGAI{2pBHFLBf-vq=B5?(jdf;(=Xz+#Q7lyRUk|l+<;zCp`kKf z$)A@)GJvA$Cgyh`^Vcd~`CLY-i~(9i0zow;5F3G^8ck&v)lRnpR=qxJ^(s0XJ!t^$ z4^Jvs%Eqt^X02Z5I0ibxF4V?{V`z6gE^FwPU{9>fH!|u`F}|DiZqE0S-jm>DDPHfq zWOM-PEOF7F7V`L($h$ExxOC^rE^49su6uQ@Mh0Yjut)pt`SZc}eXFLH2!V$aE6zc! zcWc-HbOa54rI9xqxNE$_P9bC13YJf7+`3yf@GE_4Je0d9&>2r06{Db>N?^0t1sIQU zlsg2P8t!Qm@NsABXAyj%_}jOnxr=y$DSz+p0S|U`NA~3AMqVt+9e(9n>t5O6H;v?ob48t*Aj@JzU9vS~G;q>ZYZ6)+vzcZy3aB`0tW?1Yhqbn9 zLBJ^ij$i;<4(JnToOL)z6?LkeaU7cml(<_f>~|oCsC45y{?NjPw>8%3(@F8Zsr%%> z3L(!9V6tZMRu62cT-+og$CYxysHsM zY)REuqsS$R!y90_vcb;6{J7T{4sYQMmdng1_o%j@IQD>*bamLIjHM4pSbn3cKWJU% zX^Ztfu46|#^7>(OIL?XpM5Brg*FD+hH7r_h&tsXhdgKn9?F4Ech?5jj5BdJx z>&pUWNZ!y?p54kf6dA{33cmcEd06NHF(w(1VK7O;om+db(iIAi_2h0<>$t8D9xWgk z{{Kvb|5G|GD`Bmzr`p}oqiY)eymTSGxbt|*>AIY4ns!HB(s2NBpnOL9mdaVDHK-47 z%oLSha{>c9g9!V0(mAk0Fhgv_-qP8J2=!aa)NQvu*aN zVzw1uQ+`F|vrx2~+E2Yg*DW84bol0JZ_ix3)o8su?Y=yy`ZUY^f#m|zj24#Z_Gv*; zw-_Bmvwt}F{=hN&lA}(cz8a99Vti(}A**1^1R0RB8JBwQ7YA)b)Y@**SCU)^uM3<@MT!YSkih#-1B&f+rYOwR~fx;ypk>cf2VlV+W6m` xp!U?g@!q&nMfGI5sii;?#)~wAE$jc@NK)hf4JrKJnnw?h{tFj9M{B}0007iO@Dcz3 literal 0 HcmV?d00001 diff --git a/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/partial.json.gz b/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/partial.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..293e2a981b7009c28d104e891b62acd842ce7686 GIT binary patch literal 8615 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 D4uFhm literal 0 HcmV?d00001 diff --git a/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server-args.json.gz b/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server-args.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e920d8e56fd7518d215941394cef4f4b333c5ad GIT binary patch literal 453 zcmV;$0XqI4iwFP!00002|9z89Z`&{ohVS_mMbBYkyRnlV*A4@A9EJe{hM{0=I#yy! zsw8{Ke*F~dBcGjfv7VP?Nb&Wr$-~1VKqo3{AE(E|e0d;Ze`Yx!Y*@I?(ePUW9_6b_uqHX|<;f@F%v#@Lk%s~?DeCfqoaz`CLQf<$j zG?z@FZ|f;r7OS9{MiEwig5rw88co?;X(KzEDoYlzT7M(vF;Akxwhb%J0^SYKb5=8o zSH5L@i{W7V(1J6*aR7TGZX`P{X;K3Pr4iZ>pJvNhVt;X8QYbIwNs`AclTobHaW%}x zSTh91VIzBJ@j%MQ*=d4!bj)aA2e{y|7cQV@@m{Huq|jKi`u=8db4Eyz?vTu$^K-ll zHyz-$9h2#WDLZ6iyS`e$TDHubwK)!RYK?25T#RF@e46H`Tq;M?IZ!FAZ7Cx!bVuz+ vfO~JXJMy`&>$LbNV)$Q#gpToWSEn@&q}D<+a|r)F`91juyPrLiUIYLDRDsxW literal 0 HcmV?d00001 diff --git a/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server.log.gz b/experiments/medium-microbatch-20260920/results/medium-ub256-reserve448/server.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..07220e4461f5d970bb71d300354033ff3217fbbe GIT binary patch literal 2057 zcmV+k2=@0MiwFP!00002|E*Zta;wM{eV?!BH`^%-^_^~4%|kL(sdCjxGPjfDO@k#Y zGe)2T$me(}AD^{BAcT5`?7j9Jm5UwUIbhycF&fZjIm|D+2q+`8x_&! z?&z*uY>OnT7D@J)-?5jtc*x77dS%};#jc~(@4K>MUz6&IRZlVdZI-^UfBwdP_;k;r zVtw-+Z+!{r;HxZNSa&5^Qr)p%G41m`OG>s%%IG1DSN%zTeA4GKX0zEYna^ffj{odB zFW4&H7V$Ew;uW5KjUU>__0JntjW*Guj0>#v4t54tZ;s>R zbAI^O&%e-e%D5t*QJUso=`YKRWSwLsyT1C%)eVcX70Yt=*B|fMbNsrWFu{EFgjbhQ z#vWo8Va{?_P&$gFd}i0nA}`BXt!VMUm0%JMZU}G3{_G2T=qSi zH=dJ6_L}d|eoIWM;(~3991XZB8|H|XDB@`OddsTfl|`%C>}*y8nE~5u4~F2q@96A0 zPReo@mvdpAmfw+W6DX9X)8Xl|1ix&M-~>Za+C=mAIC1mM1}pr1_P4(ad&tb*v^`Pr zR69wOCVyb{RC#5ZS5$YBZkE-zdI0yra$L9U`DL-olE(yazGqiev5WU!oFPx0mtm(< znKjGkyzp>+xH9N$S9e_C0z8;?A?xO&^w>2y1^0VM)-bNm>8uJbiBo{4&`YKTHQ5lawD64$i zE8RQVbDDgh^%YSfioO;#T@_2=0~?Cd&Bo7fw#I76-)Xkas+rJi*le-42g<)wK1T+# z#kvV3;uD6zx27B80`z}1FKJ+*%KeyeG)8Vvz)A;R`SaZJ}d|a)XEzoM92*P6IkXfSOX#y ziVDbe(Q=fbmIy!M;sg;Y?fM4YM1vzl$Pp-ELyDTlcGo9D!LcixB0`Dd)B%Fv>NF7^ zL3ob{owRS6kUTht-scyR9nxFUR>E2DdiI@}AV8FzB0;1Iyax$LJz;}tO!it_s*bS0 z5@y)q80(mXBpSNYTlo=3TKmossz?nTf!qDwk)pE|#D!BIab(?LMJBLArVlB*ts@*T zarDxBdgxBl78+3=XiE=hOSreR1?EwigCA zq%JOiP`g~t1XeWSw(qRuKgfxr|UeGpnPMLKjQsS6L5Z~K8k zGK9ww7mwEko;Mp0Ntybg0<$nGJ1N1PX5_3wpe&u90#xaxK+%^5J^-a<3kp)oH=qO> zL!JPIgMbHo?k)yOO6LZk3~xa}SE)THZAfU0f`Xhj;{9#mOi)_Uu5=8_wV*7?>IRh1 z(6!^BAhgkH-201xvdZZJC~I3#V1Ltq;?4wqJW?p~`d|_Ai-B@l4GTRqEhy}CEhrp3 zxE==u8nzsY%?_Yp@b>`u{E)}?stNF2Ti z7%E6A*YMmh4+NR?q}NrWdnnY$N|8Jb1)1>NI;V_(>vIOJ>ANGY5%NeW zT2j()l%nOMv~mPYoC$286tVSyGhG`ogOk)jDSph!38m=jk8PbvJ=x@_QiMV>^%p;? nnIolWLjR6ZwCVuD8ad&h+kklYn;)WPhFbCeZ9>bzvmF2cfQ$5G literal 0 HcmV?d00001