From 76107d3e87ab94cc8b074fcc578be17370087836 Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Thu, 16 Jul 2026 23:59:10 +0800 Subject: [PATCH] Evaluate vLLM 0.20 profiles against Frontier --- docs/assets/simulator-fidelity/data.json | 60 + .../qwen235-prefill-config-ranking.png | Bin 0 -> 135942 bytes .../qwen235-t0-fixed-shape-ranking.png | Bin 0 -> 155272 bytes .../qwen30-mixed-config-ranking.png | Bin 0 -> 187630 bytes .../qwen30-vllm020-profile-ablation.png | Bin 0 -> 221239 bytes runs/fidelity-headroom/run_pilot_simulator.py | 18 +- .../analyze_op_trace_delta.py | 96 + .../analyze_p1_profile_ablation.py | 142 + .../analyze_routing_mismatch.py | 152 + .../analyze_s2_profile_ablation.py | 229 + .../qwen30-initial-op-trace-delta.json | 87 + .../artifacts/qwen30-p1-profile-ablation.csv | 37 + .../artifacts/qwen30-p1-profile-ablation.json | 511 ++ .../artifacts/qwen30-p1b-opprof-summary.json | 2171 +++++++ .../artifacts/qwen30-routing-mismatch.json | 1853 ++++++ .../artifacts/qwen30-s2-profile-ablation.json | 5222 +++++++++++++++++ .../artifacts/trace-support/support.json | 469 ++ .../experiment-card.md | 33 +- .../frozen/profile-v1/allreduce.json | 824 +++ .../frozen/profile-v1/attention.csv | 103 + .../profile-v1/attention_true_mixed_fused.csv | 31 + .../frozen/profile-v1/linear_op.csv | 37 + .../frozen/profile-v1/manifest.json | 53 + .../frozen/profile-v1/moe.csv | 73 + .../frozen/profile-v2/allreduce.json | 824 +++ .../frozen/profile-v2/attention.csv | 133 + .../profile-v2/attention_true_mixed_fused.csv | 31 + .../frozen/profile-v2/linear_op.csv | 37 + .../frozen/profile-v2/manifest.json | 53 + .../frozen/profile-v2/moe.csv | 73 + .../plot_profile_ablation.py | 142 + .../prepare_s2_profile_comparison.py | 133 + simulator-fidelity.md | 360 ++ 33 files changed, 13973 insertions(+), 14 deletions(-) create mode 100644 docs/assets/simulator-fidelity/data.json create mode 100644 docs/assets/simulator-fidelity/qwen235-prefill-config-ranking.png create mode 100644 docs/assets/simulator-fidelity/qwen235-t0-fixed-shape-ranking.png create mode 100644 docs/assets/simulator-fidelity/qwen30-mixed-config-ranking.png create mode 100644 docs/assets/simulator-fidelity/qwen30-vllm020-profile-ablation.png create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/analyze_op_trace_delta.py create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/analyze_p1_profile_ablation.py create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/analyze_routing_mismatch.py create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/analyze_s2_profile_ablation.py create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-initial-op-trace-delta.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1b-opprof-summary.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-routing-mismatch.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-s2-profile-ablation.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/artifacts/trace-support/support.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/allreduce.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention_true_mixed_fused.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/linear_op.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/manifest.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/moe.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/allreduce.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention_true_mixed_fused.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/linear_op.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/manifest.json create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/moe.csv create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/plot_profile_ablation.py create mode 100644 runs/frontier-qwen30-vllm020-profile-v1/prepare_s2_profile_comparison.py create mode 100644 simulator-fidelity.md diff --git a/docs/assets/simulator-fidelity/data.json b/docs/assets/simulator-fidelity/data.json new file mode 100644 index 0000000..6df95a9 --- /dev/null +++ b/docs/assets/simulator-fidelity/data.json @@ -0,0 +1,60 @@ +{ + "schema": "simulator-fidelity-figure-data-v1", + "objective": "maximum_tested_slo_feasible_offered_request_rate_per_gpu", + "qwen30_mixed": { + "sources": { + "real": "recovered-stores/aituner-interaction-runs-dash1-20260710/interaction-mixed-qwen30b-tp-mns-surface-high1-dash1-d8899c5-20260701T095858Z", + "comparison": "/home/gahow/phd/replayserve/runs/simfid_s2rb/results/metrics.json" + }, + "configs": [ + {"name": "tp1_mns8", "tp": 1, "mns": 8, "real": 2.1, "frontier_profile_only": 1.1, "frontier_calibrated": 1.7166666666666666}, + {"name": "tp1_mns16", "tp": 1, "mns": 16, "real": 2.35, "frontier_profile_only": 1.1, "frontier_calibrated": 2.3833333333333333}, + {"name": "tp1_mns32", "tp": 1, "mns": 32, "real": 2.283333333333333, "frontier_profile_only": 1.1, "frontier_calibrated": 2.3833333333333333}, + {"name": "tp1_mns64", "tp": 1, "mns": 64, "real": 2.283333333333333, "frontier_profile_only": 1.1, "frontier_calibrated": 2.3833333333333333}, + {"name": "tp2_mns8", "tp": 2, "mns": 8, "real": 2.275, "frontier_profile_only": 0.0, "frontier_calibrated": 1.7416666666666667}, + {"name": "tp2_mns16", "tp": 2, "mns": 16, "real": 2.275, "frontier_profile_only": 1.1916666666666667, "frontier_calibrated": 2.3}, + {"name": "tp2_mns32", "tp": 2, "mns": 32, "real": 3.283333333333333, "frontier_profile_only": 0.0, "frontier_calibrated": 3.75}, + {"name": "tp2_mns64", "tp": 2, "mns": 64, "real": 3.2583333333333333, "frontier_profile_only": 0.0, "frontier_calibrated": 3.75}, + {"name": "tp4_mns8", "tp": 4, "mns": 8, "real": 1.2833333333333334, "frontier_profile_only": 0.0, "frontier_calibrated": 1.3208333333333333}, + {"name": "tp4_mns16", "tp": 4, "mns": 16, "real": 2.441666666666667, "frontier_profile_only": 0.0, "frontier_calibrated": 2.5}, + {"name": "tp4_mns32", "tp": 4, "mns": 32, "real": 2.441666666666667, "frontier_profile_only": 1.3208333333333333, "frontier_calibrated": 2.5}, + {"name": "tp4_mns64", "tp": 4, "mns": 64, "real": 2.441666666666667, "frontier_profile_only": 1.3208333333333333, "frontier_calibrated": 2.5} + ], + "profile_only_metrics": { + "kendall_tau_b": 0.0, + "pairwise_exact_sign_accuracy": 0.3787878787878788, + "simulator_top_set": ["tp4_mns32", "tp4_mns64"], + "real_top_set": ["tp2_mns32"], + "top1_regret_worst": 0.25634517766497456 + }, + "calibrated_metrics": { + "kendall_tau_b": 0.9668009539030813, + "pairwise_exact_sign_accuracy": 0.9393939393939394, + "simulator_top_set": ["tp2_mns32", "tp2_mns64"], + "real_top_set": ["tp2_mns32"], + "top1_regret_best": 0.0, + "top1_regret_worst": 0.0076142131979695165 + } + }, + "qwen235_prefill": { + "source": "runs/frontier-multicase-sufficiency-v0/best_effort/fixed_cohort_evidence/v2_refined_comparison.json", + "configs": [ + {"name": "tp4_mns64_mbt8192", "tp": 4, "mns": 64, "mbt": 8192, "expert_parallel": false, "real": 0.05, "frontier": 0.0375}, + {"name": "tp4_mns128_mbt8192", "tp": 4, "mns": 128, "mbt": 8192, "expert_parallel": false, "real": 0.05, "frontier": 0.0375}, + {"name": "tp4_mns64_mbt16384", "tp": 4, "mns": 64, "mbt": 16384, "expert_parallel": false, "real": 0.075, "frontier": 0.0625}, + {"name": "tp4_mns128_mbt16384", "tp": 4, "mns": 128, "mbt": 16384, "expert_parallel": false, "real": 0.075, "frontier": 0.0625}, + {"name": "tp8_mns64_mbt8192", "tp": 8, "mns": 64, "mbt": 8192, "expert_parallel": true, "real": 0.05625, "frontier": 0.05}, + {"name": "tp8_mns128_mbt8192", "tp": 8, "mns": 128, "mbt": 8192, "expert_parallel": true, "real": 0.05625, "frontier": 0.05}, + {"name": "tp8_mns64_mbt16384", "tp": 8, "mns": 64, "mbt": 16384, "expert_parallel": true, "real": 0.05625, "frontier": 0.05625}, + {"name": "tp8_mns128_mbt16384", "tp": 8, "mns": 128, "mbt": 16384, "expert_parallel": true, "real": 0.05625, "frontier": 0.05625} + ], + "metrics": { + "spearman_rank_correlation": 0.9486832980505138, + "pairwise_non_tied_accuracy": 1.0, + "comparable_non_tied_pairs": 20, + "simulator_top_set": ["tp4_mns64_mbt16384", "tp4_mns128_mbt16384"], + "real_top_set": ["tp4_mns64_mbt16384", "tp4_mns128_mbt16384"], + "top1_regret_worst": 0.0 + } + } +} diff --git a/docs/assets/simulator-fidelity/qwen235-prefill-config-ranking.png b/docs/assets/simulator-fidelity/qwen235-prefill-config-ranking.png new file mode 100644 index 0000000000000000000000000000000000000000..34b404588a53dc0758a0d5129e4f16ca04ea0d61 GIT binary patch literal 135942 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

6z-YnlFpTyLNI+T2!-X2G)Spn{}oFndm{+R zx#IkQtp7d<=aBfM*3L33%T9CG@s$+N_ca^)r#cI+PHYHjzqMn`T3}RK-IrpZ$&UP( zm)`KHwpJF-TMC#{3|soL^&b9to*G22GO?L&DS@Z1b&UP0&LU=jlX8f`yM^|S)d3*U zly1)}8DyYlO)o|n+(i2P*wLX*Jn-brbvBh&Jon%*ruU?(TdRczfT*6Xdmua|B9&8% zAMwLtmoOj*-&B4emiRgz5JA+z+^l6ne;N^nU>@;a0iz8R#BQspso{ByT1M`CogNKC zP-nu%8@|F_Ovqv5WwS0t$0ayW%%{hU~_MkTA4v5+e`d$m4O(N!dT#G!{I!m2x zGt2VD%32cLL2?^?&VZ*8nQaeZ=K*GOYb~Fb1(}0I$vS=G|6%XU-+Ipbw{M1-vBlW4 zBtw#2*`pdnA`hpQOU$5tKp6By?if@vfyi|@;Y3S`-uzxr8y^j?_nO~5ZJjAv@ zJSxUkv|Y@2F}QnFjF>>-gssGdAbn^h6{CE&h7D_?;?G)4j_%OCNgp%G4DI276&I#V zY(Frief(1C6p!0jBld*ri^x+0W)MDj5zQS~S707waWx?yR4}!zZ$zk;zv3;Ak?Rn{ z#Tu5XTtNI5xjhjvR#d`2)p3nY@#DCGY1Vdo){o~#YAJsxiC;jm-(sSxG7(n~nj9fl zCwiDSslb6zNUsdONZBxH@@Uu^ZMy9IQsC;#X3Z1jVMoYj=Z9n?PdSDc;bPrl)c>G= z;>SdItTQ?5?tYX(HsGwl*@0?2#)hUZ$*mI^(-UeHrnAy6{jEa5`giH!_Emx5%xVfn zS)T7^h5#m6R@gaIQwIr&c}ypwiph#)6F(omuv*7;gRY<;&bjt2VZyD@;hcRVu%n(3 zA8kx9$_rXY-A?F7zwenA3uY^3?WZl)Uf&$F{uTO92GnG0GK;CImr{l_4!*Rzq@)CN zE;uOmReLq(1ifbUe1&sa%zSEGo~3Rc|Ni}E>bp}JhTp<@%qG;5u{}c{jD(mAvM0eT zAt*GBk}$tQrxi5efsCx|JJMssmeO{Lh4EXzrCS4`zo`4YTQ^EQ!M=|P+}YguRX|^w z+O4k-#W}tJOQ)*$@$uRG{Ny(Z;rFd>6Bw!ai-F3gx7*1b{VUzuF4`zEe}Qrt+n@^$ z&$lvwx}wWCVzWA6#c${-Bc4d~@2^IW`#yVB@801pLCLLGG*PH< za`M;pDpxkwk^((HfUzh7%P-$r_h4b_zk{skZKT9Tebt{GVtM`cS*1wrspTBs~A1=1z zbI+9?FiA_3{#dR6hd>qky%}!26@u<&H1|gD{syp-@zN$i zn)stV=2Q16cCG2MrA$v@$Y5`l9+xAG!f@fi&HE46z;6hG)E~e=CJWMrz+LW_0K!Q;JHeGSA`M zFhY}?QRAUV`__Z(o>@;s5)6C9xvbu9+<@=Fr~0w2X>$p?URNg{!Vc5epGRoi zma!6L=Db5+Mc;q1^!n3xRaK{`00WCDNq38WYxLN)t|w0XCgh-*_5a~*{3$m^FY{Xf z`nim%FlT2z1H*?pn(|}&FMq-4bU6NvXjrxt>jC2lH!c)L)ngQz<}FwNR4>IF*1KQJ z*Kl8Lj7o*N>n6rCKr$63$(zj3}X-W{EuF<2*g*V^UP_zSg(Ob%{_VmyE zCCN3)x^y&gDv5e?)~6*IeG@_Oa{V>DT#N-K6ayo&*5ebC(e}3xz>$Y51 z<>k+R4|2igY7=EYmR#$uzR*3Fzc=a`!}4DkuzN$JDN39)F=y~6Ly%FUW9XK@51zDD zO~A-fTe!M$1WbAP_N)H1YxyLcvnCqu#QG_BiWj_u$CSz`MX?@wHT`}jS1cJb1s;Y>)mAjsI}sr>;D zD`wF*HC5*xGwq58vG}=Ruq#jVErU8x8CkczKaTWDIWyeX_i6n`Ug)lGUu|9$t!E-Z zxa*ZVw0K<|H)ty+Oz{U>OhM8OCtN49UxzU8Ntqk_HDtJ?bCue!fJ{!(ilkm$ zYIGX;j4)seZqK{`jS+O~gx!Gy*LW`@oX_f|uhJ_r2GsOav|UkOVQw`XXp8PALUya% zhttERyAYwuPDmeq*>*PrD=Nyy5#wvqX47Rxg=}bRYkP-!Dq_nQon?A8=Fkx~RaxWD zYi=T?EDSM@KOLITwxY(;1Ct&}CHuWs$0v>819I>pwpjgEQrE&a{fEQ$5QHxAVU;>O zz8C@v-qKJ9e~I^upi!!3C^U(&RmOGyVk{}BP2?t|O8D*PjY`jDqb6dzx}A)Rk;+x z&_iIr!XuOlJ(IdDJ|&FS6A9tT3o#bCyE!U zLK_`xTO+$5^#P)9khvrTVWP#1m)-l++{((CFJ!{&7S-4`B~49D!DNG^JKV zunb}fOjrw(>)mq2*&(zfQw+jHb;sjKisPNNC(=EbqC|X5ew~oEolhwMR)qeWbhxv1 zD+PoJx6y9!_J<05rBvx_S3q!p!plum8^aM2iJC#22I^Hmh14{{uweShY@f-n{B{-B zvAI`iH-%d>*uWdOX;r=sW~T1ey)?PhkEk+)eKKQyOZWL4kB?X4gB+(Fl|o}7I_W2x z9uxhMjJkqZ3YaLN+G4FckjY=4cu@|7Vi4{+%rnV%o6%)Ci%#2398R z=*9uy370>mkoo&QO1em^2oGc-pGJ6cL24tQsyrQl=ut%r^l?uKW`UxWzx%^1w;v7z z2DKb>UbYhrwiqizB>RZFXPy$MNt{||=e3y@->|sAYgqboM$3t~NiaWR;NP9Ol6}vF z$OsEy-B4p^5`5MBEsJ%8=YhE1L_SHyy>dW2KmGRGiN*65{e_1o2q#7@J*ODQNmA*} zz$fGtvpWw^?E!l{q#YK7_705VC(NyPl2=f81OgIvxC7Gnz{$Koqk9Sh4Tl>`yL!y{ z5>0v;)Pfi|&tzyLsx1OHcRr%%wtMvG@l;t;fnr1GcCe~4qnGuE1q&K(Dbcs@8UP%j z77#w$RC~fI_td9@jUt=k+c8A|vG!Bb@o^FUi~Jtp*_dva-#bD)LZl7gE~->k=Hr!s z8Ao+?b_(4U6~u%ET87@jE`{4GFn%9zFWg;(VGLrI4<7?o{rT3ovd;oSufW9-atbGE zw5;Dp>>0o2TAcv&6<(dZ${e_-q67tkD6smx}V=!YB zPV}>89X)@32sH5`mgb@?fbgDpJ#O%kvB<@hSBT|1CTD>3nblICw#S;j z@@o-roDHga@rfvN|6^RK>pCi9vN*!vAi{c)!g?$g9)JqM9vOd1p$4Uf_xfbLd;#_& zB0y4Bi*ZwY!1eX@AK+&weipCg@4JhxjltZZkI;og?jUM0R=8=jnyM+jTmqTmlnZA< zT1P4{gqkP#`4;&h9p0D6D^Krra;wO4~_N8kSA1yVt7gfYRLJT?bx%yQx zpvpCsPH+N-N3GKtCOuUzWE98EyRJPG$od?q?&E03nkOQJGYtyy^J>+ig|{5cCL7kqv`k(~jIFu=iwtAI4--w)5GiADv0 zyJ6lW{teK+QMeY7_$RN*`?VVc&|bjcE8USm`Udkhy1fAF&BAv6SJ*Uv?pMEOeNA4xd=W-?{N)6l&~R6H+Px zylOJw3&SR9b-#b#g5&@DOnLc-blazhvCN`i@zKB2? z96WX5!i7TC&sq;(DksX3jJlZboZzj&N5=GQmFgi*>i_yHv-0Vf#O?x@{@;JK8Oi^5 zDbas-Ed6(7)PFZ%{dYgvf7h*%0sk8c{=W|e%jbO8HJ6wa4diQCIeyCa!V;LFU4fd~MA9;4mGzr}^` zL6dszKdZ%H4308S1=P0Kw-ZAZNb{3O>AL*|J%PRo(JmSavBUu;;1`exv2P7iJBY#_ z(9wLyhoCZ4Z^D9b4gJ2esU81@kUj}RCpse7FS@y9fRSs!H^n3aA61RdIjh=RRFun0 z>1YI3Ak=IO13yO5Butf%3OvMZkkWTCnkFq|wBP!j7k@zfwS4Q~Bl^)lo$WWnq&;yQ zZ7Xs07^343&)i$q9}Gi1FDfkT!TwT*6SS>Kbjj1d2sIXRDb?l6Po~APhwm|Noo;*v9{ne}kx41FEd07K#o%Y?ZQCUodP4a^(LP|vkn#7O z8JxkEA`I~URq7K=-kvb!7q&fH_I%1XaMZ^DNJ1O*O5VJP|8m)f7++ZJb?b&pi5L(T z5Mxx^N1$o}N~L!0psALJbDy$4x-Z}8oUPQTQDV^tZmesAFP`k}MsEPxJU74eeDRv= zy{?v3^f%YswR``5kEp~6V<&ApAhqfqXt)48C%Jl~trO11KnXq^6T88}PxAX;XFIp4 zJZFu|fFV73P0P@L%}UU!;DsuJ*C`JJV*tRR zKOZE~4Miyyb4mgg73^b>G)I~?UF;x?IA@HhnwaE&=B=_Z_-?oN`um?ff1U{z*}seP z8C#fI*ewj53LQrojsBz>TxJjZG==rI@R>Tj7p9t!_iHSBw%rQBT{V5C&_3;Lp(k&sdxjNyRZ{bD4;LW=42 zB!VFcA@Qu0$@zGr0lFqCB@U-yAi${K+^Tn8LEXUjdo z(5KHr?7M3_6T$wFRT}T>U`7Dm#=b2h6AxoeJ9H4>4B*c8)Cp+&05gcU_VDi+FcxrP7dNXqY%k&P3+Ebmapk{*AfV}gy zoq~$yYsD37_X~Kx|H`5O2>>i79vH08D0=g!S`z>gFl&9t5u*_vYx#^JuR~vwhvAQ% zGpQMTRk+fuNH>h!_BRa2H6k>l&Z8?{c)JpNEByxz9eSJ-Xaas>n0!_mzD;PMMeruh zVcjL@0@!^Uk)o_{-}{Fz<3sRYk-qi$-_%m{x3*-%$_Y%|qCVvy$RRK{V#2)+fL9Byw;lQtWvPxC^cP7^5zAr6P5+ac& zh+iU~rKJ2uI6DeT#XO-r!$Zg)D*OlG{>NLhY>X7%bKn2+IdY^|(G5Kiczjb%<&%iY zUH7W0Du`)uNSb?{#thLS!_=vl^?*eaCX$wUL4The(7(?~xw+w2J}`au&+wUB4t*8N zp)f8#&eT!G?FHB#c**RjD+uq-fqd4qAMaP;aRDYL-8n~Wy9-`FH~;zHMExXSQ(@t1 zVAk1~t$CM&e4?wUpx^I1foB`8ZN_>QEIWWAg$%gm!J<&Mqd5>;*9rgxzIvyHo9nx@%9I@%$<5Pf`X>J#PpgCOBz0Ud+l88uU9qq{TFFh3IflU%z(L1+aPEI z)~Wmr^n?lOKV;Q1AlGvao2QEv4il%Uh#@ueYBcblOrL@>FWH{>N?a>3Gy>*~=9{I6 zYLsDn#@BSKb3+;Q>InBQ>D8;@;-9g;7axSp!3zYuP3$A6#{iiGZ(wRF zsws>!uH!Ey{7cb&jxQ`dE-_L$&YN^@yxj|ibh1O&?a_9Q5CY=ah{6Mj=_X6dJ`8QM zU)P7v`=R*$T=7+L7zjL6n#Q|&!x0onBpZbLQxLgN(&;UD9+7N1yyn^bjCB4_NKs+& z%Rl}Pk`9!cLJ7C$*@1u+#3(US#;~4PFC{1ds2~oi$=0pE0n7_SdS*Eu;dI63-JVfq z8T~05S4j6M!fxcerp%1lvzMaJ4zn&*PMt9FeN*!n0;#YZ5{DL|QniVmr9e?pe)z?QSI#azv65=hV$@kk|}GF)A1|VUROKlf}`3+9N!P z)l$&Ff@@`6$PsGN^L3ScasiWbe~xh(ge?#fj2=Moe4rli5GY544v2x09z;jh9`!xn zaX4Tgd-yEosVRluVC)RPOf zWk+jKDO{&Uo1bQhNM5MN$>S^BqVAwS?u*<*+fcUI7`HEP%V^tftPVSpb)_G>yZdzi z=k={tWDWl=?99pGBMPndb%=eubNZqjH{pS!4R@cuaWn#ihp6Dq>-22xc2?Hah3+kN zQz~nNyOqa+gFD5VlYv50M*$X&T-UE=DGFph)-g`FFk2;WEJc7QOvL>(=eOz`k5WT( z)tB1g2~#wg?1|P6HXO2g^=jhO*IjXSz1Wu0BGSO|>izlt7ll!u}Mk2C%YNLyQ-Umi>-E(Tn&}L&p+Pj2ny&vN78R-xw?FxM%xv`Bjd zBga{L@ul%MozfP~fVQBYfBt#KfzO+u-1|XR&d=E6o>@Ns&8_-|c7N;J&B#;bh4e)H zHoB0cmoI0e%nwwEO&Hp}8#*2|P}wIYc=CgV#8}KQpk!=(Yk2c^OT$E+qWd(@Ca8PF z_BkX{__}|0dYVVu0bSs@iT#t}AEE!H==vEIt+sFhM#DtqD--jR^hUt}>KLjSJiD#z z@rb}6AzqE)9GK?*sfDljTBzA-jBJ^cTk75Uz3>+Qp)J=_we=}->u&$nlvh^Xim0Ws z6)VW(tU^DQ*VayD>|jOnd?7Zr;&M$lN;qU7tj*p_;!OAm9>_LwZx6wgE#`EZC#HPV zBh$*XJG;0HrTgkZU^nPMNVB?U|NeS~99!Z{kLmdc%3oZo%ud#ah0zTec-K)99VPCkp3W{TH2l6gb*oIzBSJ1CRQ9#zvGjxn z@|CwB=_WhJbHNoyjth-;r8s{yxAf4si&%iP9ikbUE^OT+UQpR>Yjm(EO^Ap8`Queg zLCYl6>-zWtA~C-l__3^ZBO7e8n$c1T^~o{Vyi-pQb&Ved%&}ynSg87~UtwWkZzdYf z9#Y}S=^dPZ@9y26%vZU8)Z1}?4$oQ`VU+K?%X-$u`uZ2&OBMp+eOl6V2%3qz(Pp&G5TbHsz|HRYLox1;J$jLdBV|zqZgXvJ(x0 zs!BT3J*nZshm<2xvCYll%=l=PzWw^?7V5F=eA_5WXPv?=Zyz07QKN^=T66uRDGZba zHpX8NCZeK*!r0o1K|ls!FOISHe!unp-m102xVZL! z5aFUkpHw@OX_G3~y}ONRht8gf8H184dfPWzxnaVNy-Ct8+~Lg0lfU1_M5cM`X8eYM zn6x8HNm7>Iyuf6-{tfdxQ*ihrN&)weGq33ToMj&)5}6UgZk>sFNgzEXF<`bxi@av%UFv*z$9@+UR#;0O;U+vJu^JLRC# zXuEU5g#&UehpvO}E@mr%*g0g-MO%=QO$GIMnPYGv;uTY446DwpQD>-Vkpyr02bRHWku@9vHo z1|w|;MGHGJd*6PayLvqZq#JsA=+xVp?H}0DF-JP{Hz10<0|qW^nTn_bIqCx~9?`~I zy)5|e)bgf@=Cy`3X%66IyrB;>Y-tDwY7+~meO$}5bECl$?d{xSr_mg&(v3%M zDK=MQT6Hf-l!f`}kaZbx)d6IZ%}uKI}(XSXHze|Jo+Sxo~Pxr0mlmC-Pjg}wEp zy1q5^N7ylLg!gT=++kaUDhMCgtcZ<=TYsT!<^qppapD&QvjqJXu!l)B;ptBw_RBYoNkR!iNPNMqDT6RfA2} zE&II(5wZtBwMA4B)jP%zQv*K{I>T@oU-f9vY*q|CW0Qn$G&lSKb<*Aunv3=#7WQ)# zBT!al@80<|)`9%xD2kCAKgVGQ_a4C8ecQ&hMOT35iMvWErHmhle%R3bOxnq034iH> z7;|K}4rsVi5c{^a)~m)Ezp%kdve_y2_egO4yPE6k(I?&7?4Xll7fQ%S+;S?bt+h!C zeqyX>?(W{57u^1HedX)bpIR4V@gNXUZb91ZL{gm*=Agm)^<@hi)^T3M&Z@%N3)44V zosg0*R3gBBITm-szjt@nBHdzsl-PrSnC>dvNttSQOMNmXYx*S+0yLztD#U z7B?p@^Qb(JVke2BfA7Fy|AV<|8P80s>vl5dEaEHV%ab~OdYG2hoAa=gQV+|Ezxebf z6U2O4MGyH@C*{|rt)O_BDj~r2K6r? z{pE6?*i6$xo7u1=OGxTvHLvysqCq&{n=az%`9osq2|xKas*1GPSDBCztw(LGGg0>u zGzuzskb+}q=Y%m1YE&s}uf4*DUy!X!$PJ|z7Jdg1yuqY9Xl5kKE!zP2&l(*0f%bPv9M)u~OCJDq+tQu_+5+KlS z0OkoPrHtY_k*g=x-lqZn+|r`Pd0FVwlVjY^lxPtyLZoAVoUDP5qpFLZJ?qO_??;$@ zsMdUwKG-5PdTCRq!#B4Tldhjw{cp*^y7)e8duS`3^cmxGZS1P0J05sUI@$AjudIU} zC5tW(uG;ir{L#^C3o83x{W#rZ>)cl|S9%;u44IrCwO~($=fN#oGnfLOFT6;+7TRTv z`iF}vvOCW+fFN1l+`M{C-(I!S_*7iyiW<7N)Yq>?C&dhjt@+b`7ZF{VG`&M;xhYwW z{_GlB!;y#c&biB*EfYIVd73&L)NoAHNvAs3t=nUP6OBxw}jUgEjLI>UA$s@mZJ<|51iOC z2An*!oSzlQQ8l2+9oj%rLPtCQ{M7ZjtbWyk(|TW16UaPg6_7E2^VN*2N`XL<`a5bE zu(Sl2Y-1JNyST$z^cQ}dxXH8=sKx%Jo!WV^FSlk#d{f@~efid#Dc9RR-LIQ+lgJqe zwTYW>0E)CI2tgF`E0CiOHAj9Oz(sko;M80{P@l-lAKm|0@@rta!Ik|i2LVjb$jJDT zxHS@jv5?S{%(VTjl&{mA>&X}f!8PPx-AWd)EJ3b3CovRtH~WaKwnlcPq^GYWU(Qx@TRS-8r*xRgZ*INvSQtO?L*D! z)Z6PfRDeM!VshW=z+74I1!pHL7xd%5Jl?j!njOY&shjnc!}DiPBgBaFAK0rwJVf{t z9XffYVLou#2#y|%4{o~n`z6o(eI&g$#xZm-trz>zL^VX8I3;bVLnlpC-uI0q=4l`J zo+HR*Z*5t*cZav(H!o$tc=?c-9pAobW7I$fTMc@p1q@%#MitOnLb7-oiZ<_#GB&^6 zX30~8j*;xI1e{3!R6utW%5%OAp41yJ3x3s<4E5sIueBM97C#JJV;$#IG~)cW)XfT2 zfF7}!Ugd>s2&6Gj(a+ngu${q@U>@w&<_Asc~{{$$=%JjOJp9x&TwUxlgPYxy1ddp`K#4+k20B>ba%Thd%$! z6z5cqL&8-j#R>a!tmV%|Vw-4H5cV+aQ@-)RRosPjPz$#F2r)K)JU_IT4&LRHr7MS$~MYg!c$8Wdf*mykQ9-xVn%cL6Vn%F z^YH3dON!OJx^TOGNul!gTCK25iQx*5tL?k$9J}tszUC&a;t|gF+-h~7fO7@pUD|iY z=FK+(Xc>=}r#O$?s?|bGBau$%&ZSJ4=~U0}oqZ^74*~>Jcd<0nB%W^;b*}>tRt;Po zZUW{PO&O+_H+q6~?U$@(Py_eW{QUgttvhR`ue+&nlWSBMRC=~UAj7L5(}tFF5zG`1 zeGM~VjZ>q1P&)*3q@3jo`B*^wB>M@gE^pQ^$@6tN*!aPu!KO~uEmd66!1TG6dCyEs zLuqGo>-mGHwC2p3mE%6!Qa34r%6Ime2_Z$*#N(Sl_xd?vS4~oV-e|q)soI2*bx1zW z)RWm~PPxL#otHdp7&xcGj-(G~^O&8Q0m>kGp{_L1@rYS?v()8(6Ont2pBF;)8rYOr zP^l(}w7_(fBy$(ZPc^#x(xRApNI~36()+kg6J^KFZ#}Hk+)~?Yw%3k&FaYFa z8}~BOWE4q2!DtK1Xmn%JogCEnl9TSeRe*;Ii+zSz1>1iz4=Ys;R6TR`+$4tQ!!`cHOcnjQDfw;;2BgiRr7jIIi-= znfd$jGU8<}5s82I{Yd+378Mj27`UB+MLvxO|0rw+6{SSX-@c(U>BJ>ocsRd~v&#-E zd7<3?EG#a#wt$bYZriqPK~{x(rfu2lxjDo0Raj7PgFhjD{U|-AS#I+Gjl95Oy3nN^ z%|>O4ZT3aRc?q`wKs896F>)$1e2uTVV=xz*(AtW*?%82z||Xo9DtL1mZjy3cfYaU`dCIWZ+W~9g-Wlz~j@*c1xB2(_cAE@|PHnsBStj-9xPWIkSD4?>hB}wx0R^S{7nY zWmiX?Bf;Q2>jr$N`=3Hd!c9~pA{LO$`|@tv>QiDh((!DxFBT0p)m-R(uJt*v7*1#1 zS?MC7CgX7?rko%=^`@P@y#?1}H~UO3dQ8w99slLY$f4QzWezZVuSFV5Di2mtoZq&a z!gMVe*y_T{iS?vlUh`yf(!S{jp(1VTN{T;UbX{fI=n8^0W0c<~435M^b>A8RL%iMV z+aXsi8BYx+X2d~80=T*C>+pz)*?-2YG5Kt%Z^6Mc6{&7&FpA%-iwXB9OH&d$=j0-)Y_4XBZ3B? zV_0=bA$j3I19uMeWWv$Va=dz)xO4OJt)Ek^OQu()h5|T3>eC{=l_OOlId7j7J+SYa(Y)n_}wNt{g z^iRYni%g$mZ=YVK-MFKuXm48Q5#5|hZGCBDdwY8zaJFuG;lSa;17Hyi&y1R)4u{aj z)0QyPOtW?FV_A8D0y-0QPtf5?YVZJHFdnq4ywbgpTC^KC=zLQy>R$WvC#+vn!ww;f z!Cd;DWH#Mz-GG`wd0nZd07*h81nNkz2VUIQq}96v1+9xSU*L2 zzyK5Z-fc9Id)d^I)XZSM-2VM7lG!jRvrQfyRW*=Sx3BctFRsWH^HFvZUn54jx>SIf zK-d=VQgO}DN=!a_{J3Gf?g;GZml|=~aH94s)?5;K6TdW`-oMWk96Opk7&xACllkGa z>ZnGh!sTd%oT`=;$KyB?oz-DiH&`p$K7|dM3 zUQf!>fj2tSvxK%uva8#f&aH$0365QRgdl97k$!o0U~WB=cBl5V`lnn<0LNCdZzrW<@$?!H5MiN&QO1H;qeFQ;HHUUia+;7NnwI{aEJ(WqO7DZyGBN+CT@zB5>4q2 zv)WGA_!Op_HcTD($H%iOj)%)hDyFefodLX&6~rsg^z}6_ghxHK-fhkcLD;?XTZ3i? zyi2TOR{|?Q%$yf2TxbOM>>6d{&WWjt$~T_rIV`_(oN`d@guG^h^$q=`m3Qc!YfFF3 ziq`75&!0aZc;4{ki~1V+xeRgh=rla8*~=Kb4jZoyu(1{iW~&1kI9T?#SCi=q!)4E= zoY(p|-3@|^&_TT(XJVxm)Ev>{oJ1m&l%Pv*}q zW}3#vmuj7|^O_HG7~foIDH4S+1E934Ar1n|X?Z5x`lys|M^P?e9ip(i`J(}ilp2>j zoBS9Eg-}iE>fNi?sRjwT=Er(>cbOzL$W^t@zo7LfLZ-GfQ6zf<0VL{%D zoU@6^EV+KXOBzsH7wAl)EcM?%{$WgeK+)~wR8HV9%i)&ZbpZLnAw0tSoY#Ssv7bHv z_x0P(1mer;55sYJi-`4%8ZZFkwQYNHVn6gAEVs$l7;Gz8_PLCV$$grH<6UQZ_v@F( zCxhrxsRDn}A?OJhWXKf#HS|Y!6fHjU4BttmJK^zgd7JI{IleE74BuJMAxOCW9W>rx z#P~tNzKE8f4L|QP_h;KynRYeg7gpk`VAdoZ*~`SL#}v!1f9-76%T{zwH2CC8)ih_y z{&$ai0sF1wf9R6hwJAsZ)ZLaL;mSd!Fvwh{^u~qxd$z2)y3jzRALx=CR&$l32+2tQ z-dqI6bH${JRhsHbH}XMOzO>m=7r}i!y?;GtXqsimrKtMm#;w?8=dK8y1^L)sV^(0eRNO$i*pW9}k7SsOE@J9ce-q~@ z<R!K+-BCtfc^mh2;i^CU?&7Hq3mF3L zYxr!Xo2)arYU{k%-GkSswtaauJvf*8zEDzq8DA&HFlM&!uSY!7SMBC%YIt!yME$x! zIUsNLH2UPtQK5l!A;nGOE2F%|C7RX7k6s>B^NavjP1?vL;MH2FD5`nY2nQZy^`~sQ zs~##C>GSI^+8Ma0 zsX3+Fym?w`8dQ4%ZQD%ODb_Ob%}XX$<#&Nd*(Ch&E%9lg-L^v++pThc`;jhg>^YN1Ja&Y5c)_Q~Sl|l<-rJ#C{3m8RgZfdqDBBNTR~+ zS7P+Sf_DQ7Pqn^yiQTno;NXshi`j;bOXyrWcq(BvgcmPBFSz&=qOk$!<5wDDq9b)G))#%eD^ z>-eS%CH6H_)nBM>K$ClmU*P{spP~AzmcI%&J3;uh>g+x{RvgJ!DpK>lYoS)`ifniJnt22{w6({_Z7Liwq=7SZJbUJrXOf`~9ZY5&tA`8cDR*BC% z=ihnT_`SXZmk&faHm6L%A{2Sx@yajC%F2c)7J_^ex1_nN^HY!ej!UVOjEoMkF{ypM z*8b`?>(KXc(JNi*^eqRLEv#m+{Zze7HxBio#!NL5<(5N>Pd~i+^zq z?@0B@(^C~K+ap3lL!aB5UXdO~s&mSAJ3h+pS)2&X$>sBQy|-g zfE}N!R(?g!>WPNv{58e@z&R@l?56%W)c<-eFL<&tNq1}xZCX(0xZ=X6R^hp=rX61{ zdB1d2c>ltCBSNs3Ae^Ya#|lmlur_@DX&qn@{^m_GBZ58MimET_H^OA)m(8^ud~o2y zcbEUQSc#|h+eV&@CF%x&s3~lDwr!^+r=}V_^GK1ibJU9>E#Hd_vKrALp)UxUbUXWyhK7oA=Z(xG-p zQt6RlM7&DTWsjG2?R;JXhrS07k`8tr#>s_sM4UZ3WnMPzI@}14nfcvItUJGJcZ3!wt z&Fy$I<-&vbOFMqk66_+!eF&f?O{pBRDZ0um;4E8QOq|T&fG*07+ri&9;H<6QrDS7^ zuMGB!FF)U(%WvcwZSY*SYPx>dHNbTV*D{dKK!>|Z?dD*FNM5WCm!h<|PulXB7JxYR zxcUKv+d1IcWqX$#Lw!(R@!V2hbFK70(FuV|7B3d~`~B*b8J72Nbh<>1m(TDOMQBnP zx?43KYLu~KhpqYZ%Q|GCb24tJ?s9WqJTAY8`-$!uvx&k9IFQRNtR1p$XF!P|8A^>-vG;qI9SvP#nNg_pq(hr8Izz8d}0 z47OHyYNN_-D9cKE^k^?T05-tLiloA|iXzH5mE%QJDcP$iZ`tTes8E3=O!YK+tx`Rt z1A3?pi*V=SC&(D|o|2v87XINnG3G?n*`okx{KbxsLWyISgZc~UMGlxHd6B7wl@tn)smm1NkuQT~`_L{HNU5zTN1csI0H401$?|P# zmfl?u`leD2v*r*uW_T*YmtZTMZEC+(%6Fo3RIOk+pi(n-m88c72aSJIQ0N`}ya5C4 z4<7`yWu zI8J$eQEuM1qeh8|Q}T;=n-P~cjq<2HcP{krL1MwM;0pLXwZ@29BLN)iI@F!vw}hVqPgQgo}drRSx^^ew%?(bLsnkkvqC%ns6BgA+vZ#0`y^$* zMC!-UeY0F77Kdl-L_E+H~XkeQ;MZCkXiAl z*@+e(_+^o(%>_0AOsW%XIGYPPZrMG-R2aT?_QvufNXQ z_GbEh1`{P$zaSFizK^HSE681TD8`aorwuoj9v@wK1ORAz^3hjL`CYzUSw(9GF z;Zs?bjBau+1cIZB^|_36A$|ElV6q_28`>;txv3peIMlP7qe5opRgR^AR0 zCcEOo6y-KMk=#rUD9P{psDGbTEbs3}uT-bLnKa(JM&BtIC$i(&$WN?nHjI>p7kCMi zDxp@o5K$2a)a0(w;)HA|hj=f2<}561mCAO9xDC#KF!68rZV_oksX*33iQ)~AY5k?~ z+%U)e;U}W3*!X0Vw7C|vJ#buJqCd_>$Fp6zfZ!q{T-*;bb*OK>Z@C7H*&zd$6!!;o zpYC#6i;>~>?$gIf>k}NdfMMRwFW^N*l13KfkL?UnD*r%lw$FS00yLw)sOzdbSm_LNfZg+zRqe2492%bdCoevH4UOInh?@Vbju0JGXi} z+@uM9(ssbmHzjptxJty_dx8ZQ=nm+fA1Tp-#4tzt?NoKzI0a8s5;pfcw_lX(Fat(; zUtVsmwUhBbn-RH_k@A8Fi_T)o=u4Khl7$iGPRWrBQElhOhex+eirBhl6g;Y_4BwYy^hv6%0O`G7O(Gy3m(dfx=gm1{}secfI$sl3U?c;tWq*O}lW7|n^m(Y* z)JGSSG9nu#45Ww>$B<@0tj_)td#ORZzqsKw{2P~*9b%Ikk-=nr9(4^NMz4fRIfeJi zdGNCU0s|{YBO$v?0#0tV*}b92Pv(@(X!95QzXD(YmIqqRoeC-@^PQ%&jhO z&B8W*JF$d+mdg*KRha&y5e;B&@OnM|haP&cA;14VM(7`o9+l(3)0t&5&(~KvdGrSI zy1SySg_BzGMkX1-@$@)os9P+r8ejYK?|H60Xsc+q@9h?pj)$p+W8;UjgwX30=K7!t z*;Ea)kh8#srhS^j)}*Nqu*(`ng!3ukGSk{LGsKp2-7><^(w zx&@&A6en^4DG6(OrZH(>*Rz*6VnNB#ukYP7zmw&T7Z5J%0q6@WVQrXQ7zTA%z}SN= zA;Ri_%*BaaRpIbL?(AOJjW%-KdA=1T&=TIIHda_7F0wMDiqjz)P)43MOJ2!T`MlPL z(s~>8-(>~!(-B)=gaBy<5TDboD&40z4~6i-ziy@YylBg*JI2O~^4KCaZ3<;+6tz*8N} zodvqJ1iurk?ZJ+Xzc6$#*E501_$Y?O8Gq7(ux;WuS#o-Yc9aC(AaND~a&Vz#@oqqE zp(mo8#(SGRd)6^EI_UM5KmYtQXs&_GtpVefNxEEZ=a!2=N7?1h>tIG->|!(s9v3dA zS9x`7kM|ue*kj6zML+%YQ$6Y|(0MM!EwY*T635duVY_D72op~9PR5?5tk`fiF)gGt zedek=cZEwa9|&1v5QfIL88D->b4Ord+Bv#}fXc*`<;89ncq4(O>n3J$%yT&nNp=EV zykD0v(y~6b@zCacL^a75FHBq~+r(4?v%KrhRLQ!jQxV3tv9?}7=$w%@$_yUN94Gti z8|uDbBl;RDtQA;MPt#zgG`ltUT_0|Ox&IwhxL|DgicEyGy{N)dCeIPpCA4< zw47wIfz2x#q!buye<5{JduqF9&z;NPEL|!5Kk&h3#!V9{m`KQfk&S>L&l5>7#|;3F z+0K3I-MjZ%z+tl~Zm5&bIN4_vSFnI9b8$7!7+*}=IeKIMtgjC=}(1`(- zmBYkXJf}Q|p1ZZZy@s~qG78GK*?+&YVck~?T%1mGRy5{s< zjZOPZ?Y@4#&aLvH!4H7qqe#dGqY#4qq8m2MTaU`!QdBRUOWN-ml15A@VJD)qNjhaYk zrzlgzCX6QXh-9A03%Bwgk^Ha0sXb(Tp>i(D7<_|pNUc^t&NGMcAIWLMJXGL(vqAAB zYDRyj;{_5IC8Bo^>nkMlX(csssUlQ63EtNU`iVW{T6Giv1Is06D|W7uttmB|{=~#NKIJK=Kmt~4Nsz-%iV|0?X;Y>= zL%Nos`bu|M%}(prr^2nQgqqCf;|tQ3`mQO{owz2C+wY#KjeA;BcR>vGF1WxPuS{BV z*w8&Y+AA5*8WehWgOQO2_{?(m0=LsqW(6fGmPL)U6TR9FcQG{4x26NBq^Uc7kWo;L zMX+Xgi?#TQO)5x>7ZuHvZ@*3AybNkHsP@j@_fcL^FOm!QMYkMGxtfrEwo;4e9a(dz zw6G;6%5vPnm@+3K&*pqZL#G%1N|u#c&7DK!);th&vr}8`y=k*9jdF~)>TlV8OR3$H zP*^3TNB%{b`45^udViUpawdfGqE}lGq|Bfc&Byw*Cxgt_Cmh&mt#C;L$Y%DCiEAH+ zv<25n=eg`Zs62U`OYE<+F0IY`@?o1ze8rt)sN9Q?l@yr+%~c|!m79%M#>p*Q_!@|# zqep0BRN3RJrTgz=f?Iiaqpm0u<6>-he;Oz=SAWv^aSFQ)d~EPw_A|<^wdudiy zQE?OYex%F5?dc@f(UqACz=Cda^a`ccn~F?DX_ds~x#TU+L#NZ;%hwJ7tc%pT#9R;QXKz9kyVa`<;Axm{?;T z;q9Azf|g1^FhCs>_RCE~^L>jV_xDh(o&c5y1IH<-Nnek}yh5Ow@1)F3ZGZ#menoL` z--9Vh4+_@{+rq{ADFF3I$zBT+&XpBT8?Sz*!Jnix!o|n(G0R*K$wy6oa&*MZEoW%v z%e12z^01(SI8wBOBAk#p_*Mk7g5SwloR{A06WyPrkjhp@5Wm;LX-vJjpl!rgbFJIj z6O**;YQJ!(pR~3Gg37cJ{K|}CUqwIi& z`l#0R&$xhPueZL3?4+5QJz#W zFVXJaF`_A9lk@QdwIh+YuB8roH~eiwnK|GxYH-82n&m5q-MQ2iwTcPjC&G-`mpRYv zJ1A^-#k1}EN3qss1k+EVCvAyPe-2Ir(x69{EsLTcD;MCHfZ0Bo54z(>JPj1}3HhJ# z*p!fYG&{HGeV&$blE$Rw!Ye-}}?-)`1MiP4ujF(IZ;y^^Pf5QPP8wrj}R2-moLTkmysrq3LJ~cQO z6kG|yEXxMONEaYlGiTnrq>=(sPY4{UfC2iQ{!o5loLWE5$Vw`WGuhG4&yG8Rw(gpc z%k4T$j%6Lzw!<9%234oo*U`KPV$A^?dz=Z=9I6=V~NVi~(52gTE3yp}GZa7sQU1|+$XRw3o1uYhGP?ijU! zzKIR;;n2+T)M9zZvPvjR~e; z9ci4TnvXh|gYfK=gIN04h8)JML+LvBq9H3YJiVM9WmgAX*?VSQ^@ueqT2stcl$|U! zm6=E}M3cQTsEH$?gB1D}lK@upO3$`mC;bT;PwZhLL&sRY0^F=}(^S@?1rE;WqKfTW zm+unZ$}Af%=Fz+k-Aei@lF&A~{cz)3-GAJH>D}|+_v>~tR1ht3-uCMM(_**JQgDiy!XMZ>cO?bkN$v{u#W%x9vq$Hgen85Lx)W)!O+;ZI1nFD z$uMK&LM1W*9U%?iMEY4#^awQ-4fNyfs-BR_w|SzXI~V62g@@4AoC;gIHbe|JAOI6t zLQvG8Gd1K@2p>J%#c~)96f*|9ZJjrITp+JyL`FcXi6 z$9RLfYa2IT5l@m&CGmj>GSe9m5cz_is7)WcS#u3#=Q&p3uzO~oP^lMU?SiEK7HCs7 z_pAQP7cH6zcO)~Y(lusVO5Ra+!}h`^RpObMAA z5uc5se}Mk2q_Nb6$8tOHyex$dQG^{aLPnRZ&hN@&u3qS^1Y01uAuiyM(W9p!5fZ8e za@`to4nJlxP4l!xwG*~JBP1rzlhuKcd;DH0jf}V>P08t=b z0LW@6VX$b_(o7hg$+|&;etzbVO@DkI^;vm_*Lu-55oSeSxdHvvqM~=^EevwpMh_*j zi8#o}RYmpB0a^z-+RI}6%=N3HM zjAhVG9KZtTBn_EZ=Dzq*nTbt(R3qX&m&DoS-cTPD-&%1+1iK~g{MY)OW}wtM7-ua0 zRIVUilvQ@`+owxKa~}PM4oi~&_V`gzL9%1UM-hoMh{KuuOj}fTUa-nSLl09*stJHy z6ugqqLJCHUH#+6slGR_JIsKu>{6SO1=OQoT`!t3RzEY?z+$XvbQvG-iq8kpIf4Y++ zXBMaVsp0xCM1I@of<$5z0V>$w&N3>}m%M}b)zy=D0z;-5i5RDYjOYKb_a0DHo!_@8 zX&PgTy<$BGqKKe?pnw_?4^jjv0s@Mn(gg$sDJE8==>b6jK?RhKbWw^Gq=(+YP^Bve zq{Eww7{&bVcw@Zr|BpNFyZ1Uq5<}T%?{9zKDs#@YR;Rte6>;=*h(l@ST~Uh(UK~5k z5<(S>DI;33r?*!bTZABZcHiv?Mftz2qBENZN^3f72uaHTPCcNbk3d4^u2?)=O$cs{ z)|5i@xe+R|lwg8mS_$$!J-NWWK?A2K1VZrfY;35VpYjn< z=)4E+U4Z+eGPd-=%%z`BPZ(1~AAo?P(8c@|9PAKMcMKD}4>TtXZ_@@7t&efuuSU$t zMD5e+q4xo9BszukNr!+L5)xt#F7)9$fw&qk_b4Zz z%j^9^Z!WKm{4OA{w?QC?*-@wapb_*gL{U(Vh)bG)1TdF`lBY7(<}0 zI=`I#x9Mjr;zoUmOxLOl9=hd^k5UyDO{tL3!VZuhy1=pO@;!&wVS(^r-eAh#^a38s zFbuTjh`IuS4|RfK`PFS+G=ILw`+$QDX^w0jMm$O_U~@8c#U#Ib=?w!K0?)H>S|AQ} z5gEMFu2B1P68qE-A7J-Ts z0+xw5}okzjpf9|H=hl3nl&VJdEn)Ac()s2mv_P)7K~0eC=N!b0IL}=c?1!pzIAn z7*05tsM)`7Zy@S_$}Ru5ufhMlAieDW+CKVkT*FnDk)%C@{siQVNA>-83#hReI~Ag# z$Bnb5a*WM;FjPYj`&pikh;TNuZIF#{CA}KVhY;_&#Mr>G1$-LHhyj}O8LL)3f6#%5 zv=?K)$P*xwZH^(A)AM9J`>^}=$(vkTiY#!~udHggJXV~zCNoD{TN{;;cYj&5DI8Hh zQH==h6kfi+;H3lT5@v#j8FfbKEb2y3y2fCVT;gbqrc&8zCalY!h&}4#I^abRbdN1A zx-yG%NXEe=T3_O{w)xc?jh-&2yaGEb&Tmmf462>W^)l%7|Z-cGYDMm&ce_ zLHC;bFJHYPl$)spuL}G?Ms)l3Wu7$@2Gu;}VnPiVhV1(GakH0mr&Ue5t9LT=+iD_yx5YIJ4;Pn(zK}HC`0R(~SN|&eI zRv%t5<;D{fX+(hbV=BS9Myvxj41i(KlCZZG%Zy^jn3LT>awC*nK}guLsc@JYj*lXJ z&s@HMqr4P=0h1yvNHKVQ^d8CitYcDk0bIQCLpcXWW((H8xeR;UQFWoK^ta0#MCJS_ z?-ob{#~qj3gMg(76+_C<-;o{;ai0>2Tc9nmL!Stew1yj_U${CFl~{@rpi|7oP(YOR zWRMxXBw|wFpC4^h zk9mt|jBCW*UN|5~{=X`PE865f6#0^XkRKUoUQ4->T^a>0k#fOw*0%4hVtOBfuArcY7*}Ocic$KfXy5vVv_97a7>6dr(NDi0=Zp4s z-e{uWfn=F-d$9ZHihU<{Ai${RX~|=M=OMq?gxUmOSWK#Kr5pvRXBJ)_R8FDjk4F8? zfJRgumiSvu@ypLY-{{?8jiLodGUBjZl)$r-FA=m!wJr3@utOJyCol764$ZML?`s8^%j2vG7}i+6<>qYc;~uy+?kdctT<@b>Q>3CcJ|eb8O-Y~FkT z+VHLX^DMPtG#0Vr-q$G>jL&_AHSGg_M6I_d%>s6K3mQ>M=*c7kH<;<=G-QHzmS|mx zXWOWYHZ~6i<0C9%K2`W5yCpgp6b;q3;Zu32!lg9)4p_+rOP1(cjB4*tLtptj=voj0 zV4D};Hn*_YlJC@Q)*BNu7XDAvOSa{L+MZs;pU|;WH=fE^d(qotJ?7A+_d#-}|6os3>6c)0vYXguNqP@S}QgNF&ngfYwoX^it&mR-js0a^Bql7tw z&elMWsILYFDnGhC;6bFNk8LE?(3X;`G?R+K;S_jxy3=|*=p1&Qb7_#E1JlWGh_m0CF2vh6p6#c6}vk3x~Cett(&^=<(_C(AC2+J{9mnC~hmdcF!lBUH@`J zQhWBG0sO({ejNC%8~aha8H%@xEspkbYIt@PWR^s{BLpHT1?g6ifQJGYpdSG3$JaJ( z=FD4}$H}A95P1TomIxl-?AC!X&B7#ug#M(hAmA!`?UVoqzZ#L&YrC}-e!~!q1H>uHp zne+1Z_oqV-thpU|FA3%_KJz{S8h-xrBhXOE5oZNtvjiA4as9~T3rW0Av1TEO_Yh!G z!wIVrz&)ow3w{c5JudN;nZr_w8A<>)fmDjq?cvsnu)D}khxO%q3uW6j?7;;=h#RTd z0^m~vwF=aI;iF5Ph=ILzP+ndTnZP=TEWHoe`3A&q@T`SUC>ki9fQXb8h>aA63P4i) z;(c>cc?Cok)TENaeZ&^ja|WRDRxb$E?_$@R$TK3)I+)@UFiTY1K}P}6Kme>8{W>IH z&O(2|{5zCTU?C3IXBUFerAlkS3lxR|oeh8?hv4oY_Qht?SBbSY*=?t)0In$^Kj?*0fC(9N zNikq$@}a=uif|^$I)i#R1>ljiCcsp66%`QI=Vn$yw5<%*3|)6Ok%SGD2uc4CuAKPT z>x!i^L^MiX8MGchlfrh4_q==0m`$@SS`qZ#VpyX%2~LKH1=`+N(@}T`+U-O_K(=83 zbB+kZ+j=m#yBWrdjxs9{K88xr1u8QUfLM>m#mgg)67XDxjzHEct<24puu9#g~H^WCY zTLrj<&EC34vdF z!D&$j0E5d5`uHh|Eu2>0ZJ*b4~vI&c8!y7b2IbvrKYJuijMD+v9?o@k+^ zjQ_F32o3`5fMPygJX0KjCGdV$ukE;lnZJwE>&UeTMNnHx8_%kv{5~=hO@=Bos5(f= zycl$%VHb(>}O{rggZGooyfU;)bh+2q61zO zGCVbFxWdp!*iU4))G$EjEp7Ltiz-TlfrHQ&Tk#vgX*I!4e2;T3;EIRT~P^qB2iF9J{>W4fWYai_^q%Z`e z&&JZl$Jq74IoONfbpwI(XYjys3ZVKKMz4m&pyIU7$~V>0D<$p2v7cJOHiC>O1Xo>* zFu_R}ip)pU_X(TQlYt&iyKsbs@+GMa*tBJMt(bex4zHbo-OL5x(x-(RK2Qy*TEkbLY(kSNg0%@IM1=k)?D@vLcsdh6X7}6pRj*vU_*8t&lgJ|Y zGpddyzlSKFkYt1#ivx1NTM;2ZlspS_rPoqjz=Oy|`6`5bW4cV~Y2{v?Pb;MPHw>F7 ze8G}&p3hAqteZk(bXGVeuk0BJA=4p-DKp>Q4KsB}&xw=1jIwI9;>d9n0NDR0DQ6Vd zA%GQj2Of_itfd0Fml&-;2w?Zr4y)ywz)=Y%0;JI0qOQp@Z^<(jVEu)xDTkSZaH|Y~ zE8pB}fh_?N(k?>-;5FzDPZ&Yz8%TCNZL5U91=J>9XDmSC0MIt#v%fwg+(O1Rd(Mn zRFOH3M@Y-;wy&My$t~RNQZAte$Kf-Z?Lq*@f0QZp)OGdXwEMAh5xrY*f?mBl9J}8f z@ATMY;4w6hTmBSWgFrJ*y<8!C6y`pGxnkL`ccH1uO#@e|q4f#jV4Qb2pSZ$S7nxGf zLD4{_49xHY?(V5WZ5u3Dt%zcCGOh_BwJHK{1yUoZ#f}=Iaxsw|l){r3m)=^8?xhA} z5*t9ug5*AR8y8H|*F(E?MB;<#pE!}9v-dDd?Qf#72&gX8o8f#+1cfCym$}{44$Dc9 zSZ`P;E^!42RZBhn>P{zud!(b!+Gz3%(XWG+*qFu=NvrWLKRyjvx0*T&VAm4Q1TP{e zTk07IPX2aTClUo!X)XmLqN4#kt!o{eX~BCXdsE^cG)XyV~c>*D$K$@#emzx`8)wk!35^M-wX_=>! zUk;~u=CEGDL%C&am+7zoA_}w7Sr6|lM-Rz2i%Vja0Ax=Y%_HyYxT3i@(Kq+c)1qr( zu9Oj~MdU>xC>yjac3I~dhlm&y zo+4buNbOXv#_&rptuwK&!D5{&nPb-|A5icxAR7%!ep$GYSl~8fnyA?=%bC{2f1S^I z$I$z1c&0>+JV*|Jd6gklx9soI^07=WHR%+Aa2} zF9h^7CxJ-;oJptv!mI@d3fmEQ5|xZ|c0%ar)}X!sozr z=6^J7nd@brjJ$|KPX@IsYtA30NE9p^V?F9{G*WG?!!4!mN+afIgC}q1egLt#6h6-e zwQ3aI)FfF*Qy(hAPHU?@lpi=m!q=LK<@Z9-vTxr$R`m=k6jidVT*T~+^wB^YDwj3u zKP{W3lisZ*z2+MZExGpr_jPg9_)sO)LOzW^RKc`?V5Vj@i2h7(Z?*!}&2C4ZfS;yJ zNl&Ul$m^s}otxfWoZSl}o^@RCO^6?`!;B=k^HK^^pcFox+;(m0$0Cfd+sld(!uu&h zl9rpTvA;Y)C?=$L$M3bZG57D^k4`@s7C8{Nq|9pG!Q%IYr3`5!^_b&|0Qloz^Qe~s z!6V=&bJ>{J6$JI{J{F?Do9`GTNg-hYQrEyy-It&6+HyKm*m>JC{o)qUcAaQ#KzJsQ zleRzaUqoOIU>J?uD09l0^L@;=v3gz`rMR2;84@A^tA9VI>QoB!0rXQaid1UBgJQn6 zYw7DFR=U_r^gvu+86RFSxX%MtARAp4Qjb<(=!(R%tivfbB_m=yJa27ZRijB~Z~8LR z@)E0FOL^o(ga%?$5Ht@Yq6Fmxq{0C?%|ywK3Iaj=b^Wu-$0tCvK1Fxzl0kf3s9UE% zvJBd;f=DYPyGTc_w&e;+&fP|a54;>x!*7$4YsyH^jy5eSqfPL7-lwyhkUB?@Y=c-zV)5;;C%R1OSZ93j8Nw@pF6fo~OY5 z1;n%UDjCpjF2Y z*NYcC#cn5klDyxJ5Ihs%dV6&NbZyCv09@z4SP&w?^J!70a z0u{A!p4%Ab+`8^nhSRF>66D?v?!yd=5^Gq|OV_eb&P|c+&EK-ReS>)STTNOCv^qt=poUoe;?1jKtaR9t6MpNZLSC>-q=a@vHd6_`3t2J%}u z0KjEH3Q^j=3VukPDr2y(VPB?$S9tTg;g|y{3GGLbC!8z!tG#^#bD|$nmb59ifqHrK z+rZJl2_y&Ax~#3o(q~x2RG`xtCUOce3rQY|B!x@nyrN?{k~9JobBZqh@dqJl%=~$N zz>Iu&I=Q@pUv~h3ItAelfk|d&il|6pi3&cCe&BF5xvg$jLB6!>3UPz7q236c`K})9qj^>VJc)&T^{);grVHq zhk-6hTJ4MN&X`C?_b)!L?iS^7;TvxLgUm9(c-EKF5R7U7Kynn29BQbP0HO0ZF53wl;>}>@t3%(%ZKk4M>yQ-h$H!Y+1X$_KDfr(jJ%v;j}yeAjy@s3j#4s zbVMvcQ4p`E^ZjX74q7Dfw+@Pt0*Xa_=x(=2yKMAdOaK#`C#gWX7@H$u@XB>B>oc7^ z@ZKKKRUo)0N^JrQg)-YS=jL~=RFuUIPHV~c7jekYV57>DSkgjvfgOr@8s7gpPfpj* zjd2St#wu0T4TQUfpLO$z#W&H{z%YrR- zFsYYFc#~*`ljOJOc>^CjLGzD=fO731!V+j!LxCPB5mq3a+q&Qg^jGxJ$q;_fja9(v z9R>nbGhzdw&&SXJ5RA=b_<=U-T{R}3FLt#ti@}-k34Cp&65XsE#c|QcOybpqz zLqNSw<9sF;s##Enqv))!7+~^4lpr@ZH=zhvFbBMA{n!yer@3o6ya2xJm23_kUD`@705KTjhu_MvPj*$YO*h6eY*Wl>Qcvk>_e`dS>arT7+j2(?pWFi~rZ9Q~ZL z;K$KCCpnq%!&JYT`oaiCl$>PlMEBG**D>pLdvsSwuV3;llXUwk^%ImXw^29J&n__{4eZ4+u~BO8 zUJbrs08- zrZOa|Y-067j_ExwcJBV(IdKTCLP&NB59GlBb=MKJ^k|tU%9#!j{0Xj%y6*tW+mZC! z_pCj=-7LtSUYw|SFQUiw=IjAwNqvQt`f|hyp%oXi5Srootu~hCRgaHeq|yq0WFoy2j{r z##1301MMh)8$Q0`CuJ7(+kx#qv=Ik+oV4joPmg-E?*NdeRLH&*j3A|4wlWpP^1z|z zAJc&BP9^*h>>?zRy>LdF3^68(JMN+FzL80PfSZI&c*(i-)C3Yi7mNBv1FXn;kb{HU zo5}5u@ma=9PVMjq+zH5C|BTc-kFL1(;+U6)eEKDNGW+sGOO-(cZV^+4{eP@_#vJiG z!+L;n?K&%BrAc`RbDL|o@Iz>Oby6%Kb|i1-MyY%xo7@rU%NdzF5x}cpjc}YOGu9iq+~Hr8iNX> zRp}#_Y+EYo8yk;HbZ@;QOEk`#!3OHl7K%HnkiDWHOKlU}HlrEeyTt*gq^U;&^{=9w zrjTv%3h5iS%&?>N@}T3B1ZU(dcPb5Z#O9+^Mj1JkA%gNY^gWF^k&FG)@Q%PA057?| zH+qP_!kZ;{5q=(hQ^o1wL1h%dm{6H1zWL@9O`Qw{m`#OrNJc`?3!EA?Qez1$jscQ- zSU*of?qFIrV1yB~bQJHK$R{G%N%sm1q)HnE06i&X;Vs2b=}*FLcz**#D@ZRqtgS&6 z=lY3j;-^ai%TQQrfQW)3M~HgogBpZS&<7CItVdK30voQ(p`hbfC1N%71n*GUIn}m; z48IAk7B}z+rdJE*sED)@co~edPXwUfrUGYo23A3CrCsk$pe%gIW0@%KuE=p5;pasg zWeUk)9qv2=vYoY~^1Lo-&5_ts6hI2{w2>Ys#(LPL<^pyD+1nmA+bP}`HAjPcf0i!( z?%ntRgv&@K4GIGttr^WQAXJ}7stEKSjih7;kH%sEa?Hg59rR6|XlyW)2egOdJ8A)d}r}YB&#oWs5uDtJ4j)3+Wf`q0UI~K@ZR+APiYFA*+Dxf}ya5 zC0P&XgZlm;B%{9AKwsE$I<9DZ`_s(j+YW&ARYR370!?Z&OWh42A1pzdOT%fPzgH|| zFI$7jEMCTfhooeNLSnSe62hcH_S>{V_M9C7d+Sr7r=eav@|Ofz zkX*cKEW#TNfm0@>6$v9yDs;$$P!gm84UGNeU>67or5#EmtFiR(UAI8W=pB+U@Obkc zMZl4;IAPe~RP#V$e=7NT;EOl_oBiZX**+bWfW0$a77Ogg^w`S`eXwO9JQSS;DZxMj z?O8uJ0gFk^oloIi5l97rHRmyVERj*yD_C)R=S!W4y2N;uQB7X3BgP70JcH_z(WZu9 zoY%(xh!cpqlH={KgMZj53+A3?iBJ<-(g1)L5avE5?FF>~(aFT?v!0O3mq=QY^}-G5 zuXrJvg|w{GKIS>lG!+nVM8;AqfO!YY8m{ z5ca!j#2%Fsx2a1iDaPTMN?><$MW!!7v0lu+S{IoPJ6w!HU;r1IS_#y|yX6Eh_aP9N zB`B95aWb_Q;W;LFCp>+D58@V3ZHKAX15rZ=1`TmCRI`Ucv9vb(zwUu;C&>?OG)$YI zl$VON9vnu>iW)L=ww#;ei#ZvJGRLj0Cd=49T&GI$oPZw`fa-$_6lfMf|13nQsBkJG zK$!|Yz+FQ;qk^+a=_O?#K-;M)*-U8-G$;q_ah1SVnydy~fv|FDiXNV=wU$N(Sc;S; zCsT^~25JC=5rv>Yiqjk%=->kWM9HNSS}oB$3>0Fk00E@A5i{DUs~xfH)G7}~0lEP% zV0MKM<%kkI1riaV?u^Vz{sF3p0z(jQRG|dWoaRChElpi@4n5vUY%Gy$+hwN%FrjKa z3I|}Msg{G)K8nkM=#&_9N{Eb-lVQ6*^mLu&zJIBm@SEKUq+;z{C9u{Twez=h$il&B1l zWI8AWKwFNLR8vIyw%`1;e^mosU5xWm0{D=W9RSA3gp$nw>v#$a7roA-1q3q%3_z-= z!iIQyNU#O`1Lh;oL()|Ycz|F_+Peat;~3&bD+Mx386gY3B9eVU^8GeHUjg)9A@KiT ziWC8MZT6p@8VqY!i7*cbJP4iD*4eDFg$IJBi3`mvv;lvs0N6mS%zEmOi{pTuTt@wg zsh1Ui0#$$Azj%=AmjV#!gMI{kLv`U?+!3qM^JB$M0hFYU6mabB!JT6D+hiPlWv4L* zr-qk96G3V>CfRlJsX22dOZZl;r*4rj=+O*)#CpwTh!w_#oWId$a;#E>A*GfkEUM?h z9^$gtgP+U1`i*_$;BYj6*`7ep$WeiK))JKdk%Qxg?Z4Ek931?KK&x=_6yWy>odfyE z*E;yVk_vYPrO`0_pLPRoBRx=0p2h-VVDRx zgn$PXj}4^5U2hmI1|s*_JAwc6kg8l0U1NJwR!*A0nyr6DU&R4wso zf{d>hsTnDbK3*5yM4}xCD)zJBE^&N#MZ-V0-Td+)tAf@X9Udpr6c;!zYY<1=m%C5Sw$4c)Jr z^=KX&MZ3G&kIeigC!M&1X;mjEx`PN#oT)@^0A-vI{$%j5k*`vy#|nfJMIQ;v`iHrM zg~L_3Ghn=QkpABE@=|jagv661RM+OLWiY8LB%D}NTbuX2zRkP8Q616e?R=R4Ohu~& z)(YvFJA-OUDFQv3M6KDdkgPxisv(G9)<4Ka>eG(3V@+rhARAS!%0?+03GYKg%Pc1 z);6QD9Wg^x9|%740KQ8KU36>LfwO=fmPM8K__+O~YYm?0n2^W-+p@h>uwY){+BIwD zBYufW`0|N=|K&p9yXNNR8#c^xPf!=S_IDwIIFt>DtoC$8qtO}wFH>o$Zs zLzqmyF^l5lAEwTta{c-Ri42H8Df@J_L6NMhrxX&kKOcB?ZvDk@qL zPH9JT8RA$M?EksaI2yW)?VnnUxB(hnU`XryJn5Pj#^=sW-~vFNGh%}xbm45ktiK_& zWCh|_QL2f}OVMx?hL!0WZy)-(28-gn|H-6FO#HR}cPuxGsz zWQL*=8JeXdhp2=F2XRfSweBb2w96|`Akw3eXcMCnu!$-YO``w{f-l*=SJXW-5W28C z4Ie=qf|b;_d&S}So)8c2T6Vic?q3on1@;F z<3J>q$xDJwe3J|Z6^1Uz0uLcEJq1>vGS%)GRS!e0^&Z{ong_6#sc*D~OI_tB43tVE z0+8rhu$dISk{k!;65%HQ?}jtqN%daty*&A)4Ro)Dy9D=nmD-=+&A-Rt=T&@g>0cfb zNhO1cNVfnO9!t0K3|g+>2m8R2(QObyMzeJANf;li3$b_+)|mQ3+;&gn(tmwzP8M*U zKgxc%7DbX&NFwWgXN6h)j`>4frbsO*u%JtE-sZ6&Pz!3G;Bbpm}ZW2Br#N>QLv%Ugh*VAuX zHDxWx^_SE^&RaY_CLc7bmjkgbbI&g2en})>+Z9W{yI|RS+3dG(51H43X;tI?ARB0r zA!Xc;^l&02o99D~sc6b0gfmPHsTOqvu9*Oiz)+HDFrP6ecoAe z)Egoan1H(lVJ*whv`aUFi~tVoO^AVk8P#(ZA@u5fvq*;kA*hAj&Wby>5-C8L12kUg z8o~%_VD~~umj^9O<;G{|#o}W*W$M&0(1{b3$EQX)=FYY|TK(suiK5-l8{nPZ-j`Ne zkug!TTO1aeRAm6`LCR0$hcr!vQamsP9{&D1*NtM4e}o=<fm04 zhVge!4Sx9RH)LqR$SjHcBt!-hACRBrhnwMisRd%KU4PBFh%Fb&3l>TI%Mh!9shEOy zABi8$I6sKZq{-kEeVWUIOCm=lMH|GI`KsL=L-;sLHU`vxQM#OBD>El>9g*yfsCB;QosemUP(w&edqE?4!vIs zt;NfcRJ>y<;TBa?W>Gg2gsRKz_j1ggYPb4ZU#4wLwPOphnpBPvzAjB_<$4txi9+hm z!N>XpT;Q1VrJ;Irm^$>-r415<{q!EOIJQnHBsw(p>{S97#QInn$F4V)Hv@rTWcc1& z90XEBfHj|sz&~O4`6yj@1ll6~HubonGz04+sDQ)e2bt~sV}Y6+j#pDRTYYQY&QUVA zN}Y0Z%F=!Np?ZV#f;)Xee*{1-$EEn0%1rp4#V(TG=Yv+Qux{>P(-1v zm#zlly(X|HsBB@!Aw{YR2gy;rFw>Rg0sS_Xn{@_ug*E@XsrUJvIsdgzRy)c#cgA4+ zZlYK>Y~Zv|QjD-rCGj)hu(y#vN-?SI@xZWS6LR;3Mb2}#-$kt`>3%ef96d|t?s0jz z?9F$p%>G=I?wb1RWE0N6eQ)`c8ylVXZgr{0XzP1V5oa=(i0a}NYn7mAjmo>A;Do4f zHIo|7Kx#X;_~F`f*4FB>)2B^S1R}uqunv>B(`onlSYEw!>9zG!#pU$2k9NGDJ{bl0 z5VQ8^vYpo(K<1ojEu=HC1ENP8nv1H{hmNzgx|Nt6qJju;aS_ml`Dr^FUSwvj&(pJL ze0x-&6A3qgFwXi|XEmCUs1N6nsNN4}fu0pdZ*H`qL6k8dL7fcWa?G7$_m{=LU#KYe zSq_dPfv`3Lwcv}j&^Gz82G!va(j;tJYvi{OB}|H&3>XzWBw8aXX0dTK3ivY4IY6KU zloXm60b{tDh3!Dr!?*Db>pmk%y#OERe}Khq0=WQZU^-&d7jb0V=MUruH1Xxn^K7>{ z3Eu_ogBzzY7&Nq!sRXQ;8d3m04F<4<4iheZa96NVt$1RBh?5Pq zVzW zjH4K(5_pue7C#qtH^s#*!u%kC)0{(>Pk~U zGuT*B#d;SiDdmAS!EDpYUw^%aQ#LWv$`ej4!hWcg8{nu|X$$~0HIOS!pw_lY0C*`caZ~3Pt&@ffgryvVoGCxm;fBFTkL+sp!Tn%QH2uV47%A+;E5zp8GDf$ zO+oL?b;j~L#@wOZL%YB1a{MJZ*%#MapLFqg*h#Dily5N%eRy3uz(DIp5~&Xmsp$vp zkkSdAe)s&i^UoZt72n!D)jUpS7?dT7_g zX88QCLk+&T`oI1>5Bru{oA~yBt)~O^2I2V7hSHYg!-o%}g$sj4B}!F^{7J7kw8eTa zN6q^7#$HdwHd&qyDkU=V%odKZs&8H5g>m5)+I#={qpk9PHxicQ|KzhX?v}EBcH-0U z{`7I}^QOmFcqsm~M{1_5;_?^PGE%SZzZKwO1|?ntx*KC-v;-69|(9xN?o zc44!kBIAv~X_@&m6q~J;uJjEDWY{rIlpA)sBx{$&N2Rt8r*sdq)z8P8B$V}a{R5ob z+w1-QAGngx==_49x6 z=>-=b$Vy)M^?a-f3GJNH#zJ7w>}!#i38YRfNfIe96x?eGs6Zv>o`sU?P<+N^=-L(^)A5%|RaG&@BKlWc_xC zqN*Va$tqF^FEK^RVo_TAc1lSyvUK)9gBv$9Z(D=&R)gYGv9*(`bRJuMUp1Z&f2_gj z+XYe#H0B*>TT~^}KD?Z6(Hi8{td=&U0wBU2jYEzD+qZmh0<@EPTganG=>PSy3voAX z=ps2(CKBfG_12Hn@ESb({pk_JNJ;hAH-zed(CiHR@sXq%I71{KpO~y2qrF8-1ax07 zRIzyf=lwg-_OqxBduu^J#=59~8dTwm;r`F9SV(-EK#|C@mYcnv0~B(2X@-ibYBMP2 zNPF1ncYLAE7&aOfbvJSn79Yg@`0jC3g_V?HaWq=W=PB$kb78mH5*; zgizDRMSIekmTyyuui2^fp;XgUMW;KNo!8Ep2A#x7WTzz-;6All49CX$)1m;Nl%=IA zT8vkq#JhBRbJ6d;h|EqRG4N4wf0~`|*|^eS)`n*+tJ}ICcwj!P(0_(xV(F{&TwU!@cCT4ajTSLh^4)# z4;m9)SbULu8(V4J>oTZ}3&|IKtP=ahuRa$3zKTgfH|dd>D5v*EmKAO>0^BDw3TH&) zkzp;4k2)HUu^O+fb$uK8tn2Btn#fS33(JI3LqmC?%&F>lS}bRuz!)E}c$fdZCXQ?L zqz_m?FX&HX3vKPdgCft4gsaDvZcE%$n%tRCMKitnqD(*RnDk`qX-3=?$K1q2qmYX| zsr~4`g58>A8PN=~+q1>*{3a%eS8QAN>r}qo^wq&%$X$)igialysVg8R7t4^x9s+PF z&!V6f2wr5YkR-a0R-E*|3w+aL_oJ^L`TXJBa(VNY)3}v&P`_w&_ZXB|1#Rs}L`y2X zfg5IXo~_2jgLWLfy;hT8a-&VZcQT}xo9!Wrn_=CP$;~d@&mUn{jSXv#&d#c766~BU z?MAs*SJ?0Xn^0g8jELS4b?f?n`TFrjOL3W7w{8u#DmZA24q+FE&D!ozspqBTsitks z#Wa7r`f4NWicW(Km^_*L2lm}R@b;$k3UyEK@s5Nlldx2)r<1w`6}yI3n%s-Td~pXr zn5>Ky=Qm}|+0wQ>XnE#IWc`NkX_C4umy^cwV+{mZIvNJgLu7rAy25g<^%FS3-R8oSoJcUwZVZ zswq}YGVvU?s-j1iT@Y(!Z%@qZ&wC%8mD238tXN5eqv_+aOcnfYEwNa1vNfhj|8SbNw@{?NXYMk+ zmQKyU{TZqiXZt&gj`)m^8n%9UB#lJd@y58CPY$n~#x1*b1bc#*Vb0bc>hf~}XSXyv z_}Pj#aLebj+&uNJs>-o1|6r9nZK{>Ll+i)me(3T z^0j&25+j$A;J7@MR*bvq&H*(su!dG2bXtf3%|~~^=5{>?cpxFHka_j>W7;uUUIEG z`4`KLU0ZCuc=;u1|y>!VKK8K{l7fUK==lQUw*g{k=O2iB3vNwkU`p*zshgd{e^Mk)g$kw zCw=@q+K`i7cJ@(=LVnu8tc7Z3*}w5O`*CaQ@C80uw^qmdc3AiFlwHRhtjl7Cv-I7Ju2rAJkibEy?J1_#9NVu6eR6#rNC?lZyL#?(^Mqw4Q8r z@E7K%tq^X#-ypmzrfGx45id@Q17)1-#LQUL>7299o9t#C&zFy|Q0|w%v%}8*imUyG zHwt>=D;&&pZ8(#wrj&II4$i8Gwv3halaTD+@v)LOKh?b0ul3J|6-!%EK9o)^8MW2* zvANZ1iO&r&X3P4=^30YTPNcWj$6hr4>F5=4k=5LNht4`Ud2Y&Gt##qlFw&QbybMh=hHFBLAgvl^WP`g7J_ zwKs7&HZE+fsGA z+CF@vBQaxEN!0AxSi7;lA;}1H?~Wf7(xPkc=|01cwVAH)xzg88AMD^YQkLS7`POTl zikte-$DSR7J%PT}7X5vx(nlI9rjEam_{U=!bqa6%{X33jAu8;>VaY273j;@*`uexn z{;H>btZ~EAkgE1~d11+2aia-gE}~->wA7}p?y5cdOvR61C)zyzo}Qd$ zPeDxbV86-_9?!a-bn>o#!)Pszl$zBR)4<#RFkj2J|74C%%Mf>eb%0plfFnO=t!2Df zl$>|8fbkE@UPwGK`4ZtBG5m`*QT?AO+i4T#V{zO^8sbXFpETTIWD2X?s<^LGbjBo2 z>uGm_-K>t7-*BEw_o1)X`rGB$awQoZ9~6!)HHodf?dBB`eAB-4M5V7(Nu7_vnOd`F zLav?34OUComBV4x!>3FCh%>D*ifHeC`l{`_+)u{ddOo39w#g$7bydX`(?uQ{A6Z*I zwJi7RV)6Mtp1G6RQ68$kNj&zXw@_$WWvrW5)Z4%i3wFz*+FYTF(kLf}YQ$$K zWSnfkVP{5oUnx~fig_^fPmRwjyJu|jZ{}j8XMz-DKowq)hQy0_Q&=gkv%mHTIr7E^)sjL4_2AAwUto-5*pO@wV3G#Sd)t#T0J3IA; zFyGQ9_Om#-tHQa3;bx=C^MAP`a8_}}`M+vPnvKfhcJZCju+R`PjjK!sKT^a}K~t2AG;v#KOdwQcyFWcfegz=epr z2phPB?7HfmZT0JIGCFJT>s6YR1TwxP3)E7P6t;DHZ zJ#MkR5pI$-=h(PN+#o#3lAc~4!-(j7lTP!OyY7}%?RQ!?vj-b2sqZhZQnBW0{thk9 zdq2u#NSylmmQ0XHaB##`MVgJp=f8-r+3T{cr94H6$7o={)Gx*%^~@eGWuxbTYx_Gr zR{C3<;@wa>Ue-T5ukB8!W~BIlb>WL=LH(=G8=VW-$*h>#`A^#R~{Z*oO zD~0k6-A^>SFt=>cYaYo_f4p@izvj)*(Ccxh4oh-YCA|I4ziPGg**a0|hwx5M!`JuE zpOtmLQg!@&tf}71;n>(CnHlOyF;7ZA-deCgw0por)GAF&P`6|IlK!qv7MU;tYyLoCU7lBJm06`8r9wi(-$rgX@p3=k<#+LE z$Dw(qiw;el6g#Y9{_;lGth04m`5vGgOw_)(GoaHqqO#F!PDNgVu0aHs4TK|E3kmHR zpFS9V2)Y>X{;}yN@f{iknN>Z<|J=x%vlg9p`BCQGp56Yw300A!$JGryQ%<)ZSsDK9 z%XZzVl`!V8fB8SL9I!aKHIs4d18d-}zW(9*fBmMC3Wb(FEw@LlG6jY^m8y(6ikE(I z?gzXOX@0%be<#xPzu091Llc&99LZLUmwP2ts{_BL%%`Q=Y{HXxr7uj0XTHI+nZYWb zUPSnO39-uOW0j3=>~0cn?MtaD9q3q=W*?qYb70w&@!tLV#rL!ka>u7jT$}U@69?zZ zYCb=C3+MRDpPi0B|J~>O@2_}V`(N#w`&2>}j-mfzYJmmsh7Hte1x@0f{K)w=_2=+V z%ly8I^icN?lm{lE3@GpSsVi<5$#3Tag}5JVlHrr>Umlp_LSYz>ZTKa>Nb?}<`pSOYPAVZy0XFHO!@Mz^5}-W{*P0jf!KKH@hads`=SrYvTO(bx+>cB zq@m~aJcU3Uv7l3yLXeB(BE9#6RPzKfW9qF)%2T=(jB?wD1J`Do3#_Hlb$i!a0F`V2 zS9&1K^#S)$A1{;-H3tW{X6Zk=>j}^yI=ycC*Bk#Zn`^p}0?-=wmOMb43gUgr1ji7# zHwbtD`FcwuK3rZ;PcK(!Pyr2RZsTj*xF@X$e^7MC0f;7bJ#9D77w>OGuLd9@D0=tU z&!4gtH>S}v2001Zz&1BRv6chjr9U9DmS=UNCN9a7q^(CRaTlhpsAFo$))_NT9ckik zVeQ|PX==~*Nd^{`)E@cF9Jk^T*bEp1Ez$fZAO&gx+uL0yNu5KW9Nq#T(Rqcq7$G#k z1_fcXAOHx;D;XKgckn}vHb4l%3_m*QLq@B4-(%1x$lSF~z$}PLBo}qzFMxqWb6;=#GP5uJ2562aVfI;q+OQYLgnvfrupkR z(t(h38ZK8;SHFWT{A371z>Dp&xpkvmX9?qBHD+yy$|39}GiB1I7CPqivk}UqwlQPS zh>;a8iFRibXjgY473)s=nx(Jnp9B&Y`|_=MEDjQ!!Nj(a zi5WwwLul0OZSO8vx*C&=>dgBaj5|<7uk#<$au-5}g;%n-HzNbbo0XtKThu?^?Y3>% z-ip>MsD`->9B>mBOUJ%9U}Y1edgXzBU+?yUORUt72`F0enOLj+F=LvhDJphU4HtEG zsog8J>4w}`=eKk;xc$zpK@SOCfYi6PcRg7PJIQl!5;*(Va=rSIXP||M{7I3I zK9mF7c^k`Iwo}cJre?Gq424|w-@tXd(D-2A)9=d{ELhMABvjk>;~PdM+MtVwJsw4U zPUP7fJb7pt#%Y*AN}8Z3#1VX+(8#?rW!MV#97fZ=#68a+@(iZ6Xl-05VmOB5aT^le zhp=Ko#RY9t^vLPwhn-{ds)%f;o{4c;H4dDbbqbZ0Swz5$rcJzziW^pH&}q53EY(p_ zxn^m(PcdMMFEY0EP0%@NikY^&+^2<>%i0F4|Xo zkj56zwH!$MRDR5jEFDwOto}8+pzGglkX$mHSzQ@9n3Qj4a;pqtC7l)xe|rfqXfyQ} zeRU<}KmP4XLX`KHJxTdgxd9cb3M^;N?ZVQWmc<(X37+?P!|I*{_#1=vPK-<-@TJyk z2JxTJsIo<0_(FVuu$Gju$bm(^r(aGhDTC|PY$=CZi5q$fwKWJWe8r;irnG9BJsPN& zCDl&nPd;Fm62g6H(s^tLEktBPu*A(FXyS9=pyJZa=&+&RlIG}8&X)Y}EkbZ&)otwr z@ES%ugNAyf>ug$>yqz+#qZga-uY3oDKNNI27L~1+;{l-Ok zqzC&#!^3kF9EOV8%3AK8)yBx3)XFE>o1SfqO720|tQ)`0%0%&7T6!PKn>}{lzp?xN zi+342Fj%ne%d6m7q-@p8qhr zksK=;5+ql~qU&ypNZO#B{PxZ`rNn4$)LZ1=Sp8cM-fk0~c%pmqw?rgZg?t7RyDvKL zV7Otx33#Eg4_74{DRh7ok{#_PDYLNL4{a(oC4YDcNw*-g5N$C@6^G)7OsL=3IJ_r5*1u7Q!hO@z_YY{J!D-5c zR93746Px?nY;g||y_+3I8dh#W=Sx`(52UXnQu0Q4Cr)7)juRLPaGX1c7%@R#;TcN= z8K_&fLgU)Iq@Be}MZxr0iVHx96_=m?x}i8q!;k;oSvNk`uMY9tFPC?tkmeSMyC8`4 zOY+g%^=_11r=j)x`&VO76g6Y%RvyWL7qewb^7ewEI0%N~kx|bGxRQsUDfA)+^-;l` z&E<6%AyiV}-qJ~LLs(8KWT8FADgN!+#z*qU!{?UDv&db7fjK)-?>NZzA3q$bI_dTd zq!9GbbK%xfhf1Po2AkpXqI=^Z;~T%;$#c&Kct?-~s!omm8cJ{^?EPZ(Cats49PsCpe(FL#@BarGn1DMqom!tKi)3ZxbVAzTcraro=MJOM*v-#+5M7f7U zJtwVzfikubO-W{*)h<4veat2=JMfprALv}#n*gatd0c! zYTdNNS@tWd&;9*(EOz;U1wk6;%CyeXk%VPRsW23WU1zc&(l`C2@%0`!nv`Omf0`q` z{AT0I@u>P-QN8o1RwB0fAkTbrIMdPtkT8Gw6QqWxgOb;sf#PbjvHbBtNvytteUG~> zY)M%7q*+^!x$t!7;Yf3s+;=^6qi;)&eRNAg-wY8O7YY-XY&~@V=TBa&H4ug&{>QtM z-igOvyf&tJu25MZDgc!9%(T4!s7COUTI+}$n$X@@*;D|e`DxtZ7B=;E$u zcp9Yo9x?w6p2iAXSgKYCu?8}hCHe^L@(?2A_)AJMdnyg1$dzig`{F4X`lyh?8FTeL zQ^*W5nY12a zjt^bf1kwiH@C%|acL!eOAaZO$D8d;`Y?#?6j)Xe{}dvffP9)UjPMOp_3Nng2q8?*%jwIZmt}8H`N-V z3-*htD;qsEO_)gPV{(P70uOCG0g+D9$Mj_u*p`n_R*WFQf}n}xNNa)&CT-Ju;W++d zad^PyKc;Vb3%~7)q`etM(YZ-2em+z@g{$G6PCyT(>L-KfY9C+Evp^kZ3x0f~^ko0d zrRe$m(<5}Lqr}W+Y#>9D8tW4{uqkz*z5{ZF^$VS-Eux_A>uZP4{dKt&K+P<%_xDDI z)5gzhJB;?3Cr(mtJXX(IfxFAf%35yScyln<)ZQK5Sp;=$=Juar{q;zIg%gfSX$nV1 z8o4Diwa<6ns@j znH|P2;VDT8W}NsBKZp1KSRQ(+=T}Z)G4r5<_XTc2&=RTIPC_{rU$gM*CV4JqJm>dL zg{l)i#^#8+n*oD`cTSE(N<;Ggjv7!3DT-qMGw7A#M@UHBP-$WeI@gz38GgMS$FiXC z-#anBMiidI9tYe6g?i`=aqLzLknH@US2;a#DAnrD!{V72$%*Kp3a|nzon5i%>qVZQ z2;n&yjSdzfsG814xM+dB8}(_VZmhFT5U?SZO@(TaZt>f-?x%O0_3dx3H#{F6K`mvM-0}Vm?*@`%YBsHYUsT)Wa`G44Z@35@StZSS}CUK%sXC{_dqA8CeJ&LF( zMNRVo6;yh)P$EqQK~Vt{V=|Fod1xvKnusD@2u%>w3@RWHQ94SZlt>j25CQqEbxguB z$;|tk>;1m#`)6`xG8Ue4&bjY>@4eRAYs(}Z7yE1&N!-&!c?nj;)XE6Vq?g&%`Se-0 zRYA~|40KD958a#x5GiNV`xC1jU<DE~gQVyA2b&S?1b1`LgC)DX7@dl8hQhB1MnZntS6!%gJfA`HKR?Dr01et@Q)= znS!cIlFu`{IvdSxv!rNKv#EYr{3=7d>WeqL%n-6E@HDmc(U8u=v1{c~q#>2P;Z^xo z9uR`9Ta_4CmW>uGc=rx@D}GnL?uylH^QGz*Y$T8 z;`g*U+ZF;NJBne~K`|3XUcdB&5e@2CjDAH_A`mQV1c1RI+GINYYmn4@Og98E$ggQ7RHlev^ zNUN{bqaP5-W2jMCar-{pH`5NK=yf1#$NUD;{R-jiY8&G<^2Ox}67W_AOMck< zqI;RKsr}&NPH&)r-2j*80c86akpOq(?#}xGtlU@7kO0-wo)*ix0vJ-H0F-zCR&=)v z|8D<^i(fU%JycW@ByMXL=HhW?J>ryV!Y zSyLM?N^@L7l1Cwo;!aXh#&nl=n7J{}T%dToYaj)P77NuDYE9LXi13Q7s6o zCE9CGjWu2;Fcd7Pr&)ENkF}%(XKGRF)RCKE7MlEWS|CLUI98Wu|Ma!LJM5woJ#IAV^ko(`i_U(tTwD)E zB@7NWo94o)>OB%CuTEd|E_Kx{kGWx)1mQ1OTQw3z%HNfR$w;yLZjoC7#K}0(+%(x{ z=LXe_k4lC2LE1QP{iVHMP1T55UEYdFv|798c2Tn^WvkpXu|c^P&KpgPXxKJg7^0P+ z9(O_lfOccV&U;_d9*j^%7ub`a(~18B(cy^W+0tm$$b&kWjZ-n_$IquFV;+YP#*iPL zU*_S3Gm>}{QE~LH*~)ToD*aoABRyJF`YrViMy>>A<*eZxl3I78y|s5eTG4gru!q8{ z(-y=%+4bJ)A)8y-DyL?Td>2C-`>`&5?q5GTa~w-=tYo~N~k##iz&IrEh~OUF^LuYN(ILv;JGc*Cv>mv@r0PRd`S-ADd%v@8Vx0o zsKDW-dsS|z0s;r;;y_kdgy8XgBW^@!FTuuHfeO+Cm49PgN^$k+yVsx@xH~seXBo}? z5umDOmwnydow7gv8bV-lTyk1gbXe>DB+sPrFIXz&wp=>i?;@9!`f$gLxDzD^&X*hw z1SP#2j&peY6~T-MLl0$4n5Qh-x_G0lAL z09ffcxCKRhPY>D-o8KqQHy@)B_0Xqky4&mWOOxx5J10nCHsAp}P_S`lU^S@;DK253d^U+?evGOXXMU zypz0i*k}@|9jUWEb9S(X>(<6&j*TR5;VOC@y=RT516LQY(AjiQb2i%vpi-s_{f zQ_#@P3}(N;wjG#oNxWfC-UX65ewzz9>qqT(mLL?G=I??RsFb}X67vh&H-l47F7AY7 z)VUnD>Te%RT9=ZXJkQkH(|DZrqwgj8D50{YpS1mp&Vuc4$Tf$cqCK-_U+G}rOgYOJ z2Hs3c?W%hOeUr{#T-sXq3BPb|>i(1Po2zqnug?M|Lpq!r?uf6@bzLXZ2*%!pPz-_e`-OkN|b{PHNiXVafc%V72(>LfXKVPU{^rE zntwyBR9aLGK*Qwo*UIXuQJ?S^<;6`e3cm?h(|f5`z8JVxxM#V!H?qhs212A+*MX*U zhqNNc*92^T3(G0_Q8KD2I}GoX%3y?ehT!D%;rvR2MmGhGz|&uU{Wg*fYaXqVd@!6K zoJ3*P<*3CN7r%{XPk0po?l+3nZUrncMQ6`WnH>&7GG*n9z0mwbqFZ(v$;9S67kVbG zQoiIq9pjJOYl<8DDa{9SG=%;^jm9Bk56 zGgm{?L+qcAm4GJ&Oz)GrE!5h}96Um>P*uo~Uit>K;86n_eGC77G{f62-}xZyv(szc z^-&L8NJ~G8PGr&&h4|qJ2@Pg_AAdJ9!BYg0B=yG>SZ@Ubl*vA;LKWEc6Lr1@@MAH> z0RV2@VS(d_XQC*z{SU~OBfNE4;mWfkL2?`KC}Ppv7kaGJub0J_}-z zmq&WuG^Z;VprPM&*yHU_9m&*At}NIEpiSO69TO~>fP?f|_^}OI$vt4n*@V; z@7qACoEG5J#tf6yIMNnw)*0CXhEwgeH|z#T%hJ9kz2oICpuqrOB9);5hH z_A9JBR^b39<~1Ep$i8*b$W2?{Z4{hhhI;&IliySMFQ&V%An}i)Vj-d46s&#ILohZr z0JRwod`p2XmG}^}DTQI1r-VOOT%{#PB%P2D0_aAz>41EL{63a^B(hg-d8s>|t)QoX z!T^OEIj^%3yA<(O9+{S+f~8W~9x|EyoPqW*Lbs$-FTl$MxjN9>f(llj&Iy^b$&2ZL zN2&NQY~+&U!lGi*MlVEqJJ}X)4gdjJ(Si3YM)>|E`fogKr_tRdWV@r^R$dJ57Dj zu@PjA*CSi>X~zv?Qj6_T%r;ptS)nPS_u89$PSNo^bV;+MH~ddUIneK#s@>@Vrsp| zq+YaEK~UfwaMCs?i&uOs?)+Uy2o8LKGBx2GDFDfmQm)C+jbkWK;@x`wTET4v(K2Yn zG8ovAJ77(m2w#%KKY;r9l7H04 zqUCk+G?o_zO?%7i&|W)DqXQZq1Hl37_feV}4+-)4g-&;c4CDb?L06^!(hY~3U^oxE zk>n|molI<*g^z>Uh#y035($LX9d|1v*I4(C6KtLD3i-cNN(W7xmOO8w$`Vx)H_0F~f78sdx z1hPzflq$zi$)ZYO8r#G^WD2o>6O@_wkK8)MaU`Eo(o6L?PKrULS%tZZ{yyk^Xp=<0 ze`r2SoSXkvz`oY_zz2tPp8T{{ISl6r9MiHT&Y}Qw`&-$c(;`v4VM$N5PBBw1e=Nc! zdFm%s&n(uV9gWTW^5P|^DjzgEpy5PS*%iT1F{;9*6D%eW=2hxd(J zJO^83ool*iK_}%qsU-P;S!0cyFH~A{S!q$Hw5Pw&R&|r3=%#3V^L6b@p}@&O6V;>o zFTe}Hnr4(IGG;&x`XLgu#CoiD)g7^-*M&v3%DY4YNM&6YW7~25+6+wy)Ka*~fvynX zn7#7oVX7Fs!OI0on7M*yID$=)SlcFE1)C_=bOj{^KlrMTs&s#bLv4B>Vj9>g=HT2?{Nxt5TM|jsJ!h9@hi^a6>v|QB^`${C*XJm(lg^m z(JFCyh0&xY%~f_fIobW2MxS|41N%j9VEHL77VXcMB>B|2t?Aa8;s=njVyA)VhoaUZ zM?g+fgso335XQPczFgD~@qs#glCb_>ef`~&|9nGq4{wL#ZMk>{TXLT|!$vp^fW=}| zB$iF+r@q#7bkji=r`;DjeAFQMGdi|dbm~*2X0{!Pv9pgC=&E{Ty@k|+Lr>8(#`f`Y zRsd`~7o($i+=a;KLkJ5}7rq+v7yvga!d7ypf`uq=irzNs6_=Sne(+>lrX!;z9!QBe zB#5^6kAmC6W@FaE^?@uDq@m4$=hP`yAWD#Dw+va-WoT%teSy&hknHJT@c24-wjSn0 zVBkIdB~VO({rB^a?WaN?b@{V05{&{e$IgtbmA#&d`LEQFAW{fX$^8H4BC^H<612=8 zJ{?mqNt}y64ZYMmoPz5C^C&M!D!)asLIMj(A&>W0XJ{>=2o7%fx1jB1J_QlPxo!pWD;J@KW2yBvU^ynE&cb?FAkuJ(*b}oLMUA@Lv5U`AijiL7 zTn)t)dqBH;Agz#>Qe#xq{@feBP}6@+T0wzQPYV)3ZMc3}yVgD@RVRY$nbruH=Z3UVIp&^tD_WC=AZoD+vD(U8PGWl;1tihAd>i_7{ zlgN(AqxWO?t+MEgtcX>>bXAj{9tyngcCr@132CLhW8DiiQ8C^mu|OLz#JFWPgvfkK zMsC*L9wq5|_^BRresy$Wo3Crw9{{xQyDuAL7ALDG$buM_zN*>PhizM82-aM>>r`)l z)s^y1s7%aF%xkP~uj*Z1xwsPGR&br?A46R~rkq2{?0p%OF zV-Go=#L2L>ly_3K&Cz0J32?U*TH`f$$a~8Z0UHn3)K|DZmxPSM2&$Z@uiCj_x zg^(eBRx;Z+(sus(6^74@O7j9H=?rrK{=#fY`vTACc4%KextW668nKD)i>!5d&}x! zP*V(V@LZ|3YxEyOmBHW2%jprZK%dn7;rdaRLM{QIj2~R6osp%|sqWt+ zC;VpapVINzXCI z2=f+=KDf!0z0mIb+)ecwoYlZ#`u4GFeX)(UNOtTrrW%&2CN z2;2u4`c@pUnIM5u0P)C6NixeG8Kb9%;-9j_{{$X2cM|0Qo(9I6{v6^grPwAB-qB|x zVtl7oqIU#uexGQb70Geu@(6z7}N_ebIr^DWpFnXuS)$FbA|5nM58`G#QAgarwpgjgDp zmUcVx964*Qt!cfSj9c=qhr3Xcm7R6$gTYd&H>%hDbiRZ7WoD*|^Gl2fFuVl(XH!EHo&(X3zrdB-bkShS(y6)6X zwUD3~G=HM?2LkR)9X1}GH&d>9G7`8hH503(WC`gE(vwDfhgC945ecoy>>!D`j-b_F z)`&4YI?`k)xk3}gB|(wV&qW|OeiXZnKv!=-K^IO@B$Q3qrYle)RxH{AXKdtARp5Mn zQ@laRgg@*nZV0uFz?T5~XHTYG!`TFtA+a0=bz9eBbis6CGU03~sh;1+n1Gu<_B%xp}I&9 z%6MnwUhO^pJDVAJqKy3gZ#zN(~h>oXmDR)>Q4C55Kw&rQgMZZf3FULI9q?qQwfD&3@=#j*8Mp ze|t3+HC)?K<~1hh^1fkTX!_(lLwwl3efmsL&u4AV`avnJ4U{goJK54Ex40Qq=3dU3x=qml#-}R+;$hbj5XC)ML(=}5ij2lv}7G+66TUQ19v(?QmjWVW^d726XY*~cMYfNxOm;eFDf;LDQ|w)K6QO74Iu31_1p8A;S>v<;7=tzLt{bpn|0ug* zA)Quo7F8v3VKIO)ph?$lL<&`m#zwYI;5cgq;_duK9WC{YjqTBL%-vd0`5azJ6)4Hy zpDS*N;KuQ3v%NDmF=to2M;g{1cZO7kofQ%*R-hM|pi~DL6^XEY25KE|sGB_i^0|GV zP4yzKATj5O)0ay`5Mi_?Ai_hh&t-ke#FcG*06CE>N%E2W>fN3)a#NNT5mOhqXYhdA z!9`)}uQVAthTn5hHh^4Yc!Sx1LIn;OdH(I+;R;>={sJXfF*VWNY=II+JZan&sp6NO z<4VSa1_?Q0C|bxsBG@vinBXefH$m@X-w>w7zL~M-;pOIaDHTmvkLW_qmPsCZ4b=z*e{8AOdNf+c*lt&(0v<=)WG(mURwu#*doyr%~A=@{L)Q;=Bjln{pH<5B&qH3`8zO+QjhZ5T_8JC4r>Mh%>US zj7muKg0GeVT#@7h_Oa4VgQ_viH7$RO-$2cDb;sC}WHOYswBM>B^Gwg38uR2+;sCWLS$q?vLXiU-?D-uYEj?b1& zxg$R&mo{OR=7uFw%H-G_S41X~2Cu9y5;E=`z+FNEr)@q}dTWElAl7TpyyYj((%vu-$-&H0IJJlUp1`BT=Qpeu zZC(ws2fGR%fOX74-d^FQB)S-luZv;O2)9#5AP;QaaZMK$1BUN3uM~IV{gCpZ__zNX zi9T##MF)p99Aq}Pe3F~DGQv*lHKH!glESktTI%9@~ zCeZ!MPg$w_a&v}tckh_t(6n=S{Gj%+{D>9G=1!&)js&g!;E~eizx{3E2k#mFO@FH1 zxv2QGzeE|`eEVb9u^+tCX7ItBw^k^><@$Zl*J%eDW8Z)K%hrMZp(9%kezkITP56y} z!c|$Lq9$sMbMp1~_%rnwW&(5M9JzAne&B z;P2Q+B@I*_+W_Q3dG(f5P(0!#iVa4hlLWpiqtk3rkkul?R{(?gr%}@nqmXj=CSZX@ z!_dOot>4w+IkQZ~5y4y*)ctv*TOtq}II~h^4hl}0gzO0P_A*ShEo=Vj4^eeM#Yl!JR8bAs_4vl(L0w05HBm;b7eD*4%i3eIijlAn{&Ef36p>UjsWGm(y zvF-4_F+5?l#qI(H*QGKD#{i-SQ-iLMU3H z=<>|!6UT9KHxV9D-^30j`e@T-Sg}JFN4W?1T}S9pO0aKFu!RLf&wbd~5LdQol;Tt=u!-pn-_FXfy$aodZ8;R&xj<1PjXjQ z55yzpNTyFU&8gXPF9m)dO0vc{O-W6y1Y(~x*>v&lak?R?f&$gQ1~Q?`7CoY!W0Yw3 zQVsRGU>cBZ3%mlPMUR~NI-&4tqRI;wMZ2PR4rwL-S$!2f0PcCAGb6?|%jM?d>XmYSd~lk1@2mIdd4+Se{A1;2 zokW$}Gbt(jw5vMegFBKjr+g3ZTk6wbHY&QK{!PQW{ADL|0`Uj(qds}EdR)0K#`!5r zb7!elCPYVH7t&w|=BcXe2A*WBc-`g*Pa+~MtTfje%w^M&+d^RWQEfC6uZ6M0)m`ci z-rnBq;AT4NY=sU3#6+9;UYzh8*j}+yt2s?$X!oDXb=kmirGJ+0b~Cm7<@a4#$KbTM7e`v;&ADjtmRI=^Y zW4gxT04G%QVukXj%8P;TVZq~H@*CKS!}-XpPq0^z`BX1{Lsx7b)~*Jk-);Z zjsG|I>6}7KUQafLCmp4|363~(bj$?w)#1Bu?0f`P($qq02nu53>K#5)QnItP2u=}L zWn2}SO=rSrB=$}nK`M(jC3qerow^cIqR5qm`>x-NnHjo>iFRvEBD4i~3*oI|JIr1a2;hG`?O zjP@R#7Kl9cV#W}dbJLn$G+HRS^`XV|;#7}w3+wizWL!+ks~dU2r2`6;s~JBDe@Mx3 zWcGgy$vG!{ohEN+N^Xk$ITbWi8xip%*(o}RpW*qa*E~={mmQmn zPP5~5a}u<<_$F#}07xk_v81sHzlP!k;jWfr=kD7HRtg3EB^ zfddDaoM|>5-PDDSoJK+^a5zb}$^x~dMZSfNo=sQ7d7|U+p(3~}Z3)!IR5Q4Id-FqQ z4N<0Za@Xjz(3@D`tN>{#)6ITHaHvIq=#Jt!JAffAVp~1pJ9{2Ioo)a=Scrv_PfZpi z`;Bn!H|3ILcMHr2R^zf$?jKxo1_T*Z&bM$}PYu%@xsOR3N2kSZWrG!xW9$1vXfp}J zwoFKwI}Hj0DBjc&Pn)K;jURal3=u}B;r`WCnAxgbe6%(|e558N1jRk;fJ6I@ao@cR_T2&D8KVR8&Sai-d3MFMf|LHS%J)hvrew z*HROn1JqZ1;A*hm9C{!tE)OONz!O*C`BPg=ay;#<=rfb5^(>M|;StS6H-aZk@ve9Q zo)vo0QCn=!9H539*n1<8E0y0Q^840$4q{y`p&FbT89qfNmvj)%Y~&zsH+ugScU?l3 zfPf;A1tuD;6J;ZFzLcHVFaUXpk{iWVN-jH)-ZklC0)Y8zcMgqlg!EfUFSKZ=thn7XDzUaT7ki#pn_ zSIX+KhPQ@@>euxb*P>3~)d%C^>EQ^J zNyt>4J0s#>4euj$)n@-Qn>|e`8zEa$cAJUK9ef}))Cr{5I3zZxJJ?5{p<^)eocFF( zK;40WCzFJ^BE>*&zCD;=7)*?}_XHvcNPXKpO{Q&^N0lU29`w z)BT$G(H)UZbfF4UDudO+g@S>P4o)|(y$c34rmY1{MJr`oZNL9|S=g3Hx4Z#HcZ1(o z-Z9KMD788OsAJlkp{)=+tj>JcByui*Wsp*3JA~&l`bV&GqkRLv7X)X1zmSfrWo$F3 z8*E${+tz{`y%Lvz(duR~&y}$m2iAIKU7aWWE1?gl5Lg}}+VpZGfn&f&E(q+Y z>Wibs-Jn?#8~;2VZXm&ahvuhG`}~H}3kEQGd5EAJ^pPLYriTYd0lc5qywfcT;wCFE z_YSiRq4%61!r=rWv}r^EaiHj*(|yP#z^MX5zCI%8g46EY>aR5I3t;p__bUNzV)B^= zCj^!m)U>f5g!&I!qtIH);o%RLHPM1p;Uvmwm-aBrdmdDw{b}b@_QjJSW>HON12)qE zh%k1%T8mn}Yv0VlH_6kafSFOKS`w9_8cE$H>Uq9&KqI>C zmD?}Pp$z1(hc==$f0_EDF%k5udh6h`4RrjmjZ9 z%@v6zYe9*0_UiDXs8-__Zt~q#8=qF~6fiLIL2@RmFMG)VLtV_c2(^3Mw?oOUA$QUf z4r!vwgqPvzodZa`ZNBjx3AKBT*R82}EqV-KbCcS;c7dx*s(q0wCAimJ&}pPUBM$Z1 zQW|feH8FmTF4DtVy&C1+vpb-Ob->hh=lPR7BP%8~AEF=5GH=(Cuia$(pH+J9aWDRH zQBGj?v@Px~@JRDox6;%3dNm7ykz{BiIq%shkan!B1mX zNk_m|w6%YWtFSsgeP#|S&EHqy=?Mn~@iO$xWG0blbiuA=HtYjSrxxunM@7@;l$sbF zz2dviN5fDyJI&A!$np2N{SzN%FCBUlxQ$-#pG4L7ufU0u-oEOHrPin=mrO{n0}dFR zW}8-&JWw7rHxeQPLi2g*9(7y48=I#t9=O-?ITkDwPl|4b-dK`WoksLcK)%5p0A_b> zu05*npNg-0;+eV)eXAPBMYTy%;{+FZ3>DnHZ2%QpLRuTRWFuj>oS4>qE3X=|LRSs~ z(}?)pi%^KO-ApnC9y#n%RjfhTG6yzh)}8dbYq@ckgEJ&}^1gwr|6kEJwTRQ+w5#hw$E(PoDIj@m)C@O%AwdZ>& z{IjP#vgk6RUt?u zBbqk?q`uC!jqUBV-WO+xgaKv?!#8A&rb!RQV;XmVp1jtvc$&wmtD>4quVl)96GU)- z|4oI3ee>U>U$_lH|1EELAO3gcP1b0j=lV32gay)BButx8-y(wuhvaA;(1660O*u@b zL87_C0JmXU-Qy2QLPy2L#XS~5cNf`Swxdv@zSWP>qnO|F+yiBoZkPSAUjgYY44G z^dvIS>g2Fd)9hjTWIb`W`hw_p8j3T>Bu$16738rTC( z$nUk$VZd~g=s<1>K_)@7xouhCg3Hph0olaVZt;0te88k5TkwWMsecVX4(3H-4O~ofnV~5bpFb{di--|x4HmUJDbm;OfI2e|72EA2^J`q1si zz5(|(c7##XBPAYKkEALtIhWi#Kw?0L`Y4hs@{j)d!E#IQ2t}C^sTly@g8Z9WNj7mK zq11<&$~+Y8>>4c5>R$P*Oagt0Ec<8S!i6gXG>g+qrzD2tr1Q|Ck@w#lqfq%&7b7sJ zb3xj8tsXh!4Zs4iP*O+!6Keu()Ii-Y*x1qprmer4l=d$4`!;DIzKl);*O1X^_+@1{_J5MdEmm)Y&FX;~#}l6Aqp!6=bPa>+2+0)WcR=@3sy)Pr{3?*@CslWX zk@K%X7jSf1+pl5v{9kf@iA8)EJfebn4c zcX&11*FaNqDx>501ec2Xqt2zK#sdj41oxv{(eZ0pI|FT#Fz3vuzMtfK6j$JC@QLT? zq@8Qd40cRQ)gJ3~^C!m$Y2ejyZ^XPkre&1oKc-uGvL0(wNE$c6ZsSEt32}AhOWczn zI_vpjx|NT6($mBHd-nbOt9{S^N|DCoG4&HV`~<-}>OI_}4(V7Tq(~d6PIO6li|8AhzvU0*;!% z9_oiG^!9giDjw%_jZ%NHeE+ZNE<%Jfv`{Je%lbRAUp06yTwg9H$fyJ$cTX=`^3Go! zFhWiY$od%U|73P(xI!<*2dQnaI9gZh26KS;Lz%5P2xrz0DxH@M8*3NsMjyXv)|T}{ zr2ze>=01Ay(v$arr~fR{dUMR5M#O)YVw?;~8(5^fS=S=l@6xOBgT~mn-O_SX`PD(u zmI{W@i6L>0TP`qFJP4OC`@Z=2-`)j<%3@jJ-<37sd+SuQ8tWC-;wxlSMpHZ4GuQNN zqCq;M?0v-|Q8S&H&%cmveY5(jDu{Pnpm>zZ03NF_joe@h;UQu{{Ms}C>{>ivkq^r37)d7O{H_>ESi@?I(G`eQe zKb);09KZ+%LpyMH^aYWzSSyAA(&+3}7k~pieV}FH5H0$0PzR$))8pD3 zJGh3VG7d$>nQ;Gqq41*B4sB1^zeWB+7*a+wBx(U}R{sM7zvDF4ch-Imm9|HFhG9)$ zv~xQ&4TETCDZ!!J4Z7eA3J>lX4@B9s=vaTIeuH&=nb1)(t# z9`Wjkj8x)6im{oxQ#cRQ<%i}xiZX5&QE_G-&#M?tFLM=XZRF6O^8ZNIkYqDe*LM%l z8>jlS@KDEtQN8f-epf`nWW+i_GS4i8f+gqq9nhZBLpk_K4o+9+dd>bv;ZUwzEEqV5 zk*S$Ort=f2W4pNs2e(Q)$Ilwq^g@<*gJ&?U`|;f)Bp6pmO~_!V458a@r6yRa3oJ zli1hupeV`2yNrXcNoA{Y-BBQ;PDKMqWUUe+(c)cp-J|P)?=&O~M*(Ljw$&iy7)Mk z8bljF6dSV#uVecvw0DEcGN~frydP+3mZ6PJPC?>#$cN4BDXT2i>l2zM9`tLr#HEY| zv=KW$5+tTea6})dw+Ubfb4#D{w0eD>-F3yH*J9pQ3zb(hZN>Uf<|(1n)`E6XtIf8N zCIuBiPht}sYXR7fW@2*+Usb8CiPCV~%vYR;!d+6!ObUC3(7zg2nuAz=*L`3dyp;;l zjI|BWd>LuF_-b<1BIwK}re&dJWHgqrc|*mI@cG;jJhU=wLA;@fiAh@y{E)4J&z{|i zMUdDPPUF$00O1>UzL3T_W|m>)pihZAva#ux3#0%Yu(fOlf*GM@IuOg2h6i zEoF3)e9FFWpvM~e66+{U;zRkAZwTYo)G_1AxO$7HF^(!|?~cI*fI1RNFu|fDDe0W6 zd}oIzwi~-M7&|Jq7kt1X0LqF$<^BctVX6?xs8t1b2r4<*@W0T{NQvp|N>U{U`^}^=s zg#{241c4dWqyafrF^Js|xTNVa!6#8qrwA-;&a29I@37b{zYmj;TVDQ!YC21^a48yPrnAGA7C$qG3v zzY4@Vo~eyJ*ul?o0mf(Ag>qN}b2S92BJ?4;gMGKhW1#xx7N~LxA_2t4C+Bit2JB^a zZJR-10C3gr{c3yO;%Ii*&vE#7Hf{k^f?~`Qq9zk=wp~s|VI>O~eCCYWpx|w;?cM(+ z&Hgw*sI&V!wnGRVd047v5IqI^JGdTcVPa3Lb{)hb%n78~3mxtR?kfx27kPMJ+?M8D zImUTYuNRoBr#Y-F!hV>oro;$lvOD#jTofm7-&=T|38LPB@<3Z|b54;iqO+dk*{M2v z9xL|vA!VB+o50Jy!jTLzpMfoyrl`b*s{NAvG#HE;u!dcBo)0%<*^^#dl+gY)!f|mw zuC>Mw^pw)wTnL^fQE=}x5C*jRN3iw^gSo?f!!g;zuuxS*+sj$*{YhBx)-0wlB4tnc zSH?qW+tF1un#SipvU1oE2CQKsXPCDRpe@Q~Lk*UEVr2r-g8h)?C|5YZv2;K7M?z)0 zKHS43v7DM=Pxjo6?7{ zG-=p6I5afz-4~fyUBN+X((341GUGz)`PHZ!#z;q_HzBrb=O***QLXwoRcpBb}o9eBg1_j@bNNtp{yy71F4$y&WLk)ChiM>;NbGuJ;Opr}T ztK8^+1$XwMo}X?~!u4gEW^=AD(+P|F#O%fM4zI?3Xj4$Q{POX+abw25aLMTb*r#X0 zFLtm-4RB~Dhs@JJ9>#VFJ?5{Oa0=Q=8FwMBbtYce17%02hdR5u8K!|b8g$tD6_)5uN!w}Tzu8c#RPlRdd-4-V{-^VL%0G3Eb zd`?U%qRd3-5!?Ns`^jd)H^??*613vn(5SEqJaC{vZRbryRDs7Bc*^c@>{sW(*H13E zUTAQ;A=?VxZBNkMfctV5iGepJxv>*7F)0^f85hh;j@7F396EmGLUQs~yAcLcAg-6> zBN@-Rk`f^pE@0@-{d;ZbJd3&7m@)r8g=-v1RF-Cad|Tu|ZIe4(N#e^F!Cv2@^Jv4@ z{;G-*KAx*+0-V>>hE@(=7?&nF)v$cm#B4DRNHg;GW6Ko61YxEA>WZ8YxH-jl*81Ym z6($O^ANb|5F;5rS$Hu2|OwNJyFF<6VHZ!gA0;ZDJhA3BIJR>m#YAr|I0doo@CG00f zn(P>#ms3GjIoBE}uvaGbb~{OJ0h(g_0RhW~YG&zq`ZsWPovF_2LYp+a z*%sv0+})F+BMa5XbI->5VfsHy$}i*saisH|rnRY^c+y7JSLwr$*GA8|YTuBHxwD6J zp|INB`Calvl~*Oq@hKRRn7j99mkk|ufqu1wb1NnNb;Cn-&{}RC>o{1oXm+iAsC6=u zGdT8?L|EUbG_WkoJ%VL*&))F0YoFa#ao_rirrELSpEcwc&cglTWCvQ6%c#3w1(LMl zLP-=SGE+wd12;~$=J1HAEz`;;^R;tE^|zjXIr)8Sn-|YX%fH%C^z40pz3(5R+TAvQ z9w6w<(A;|*H^UwmN`zBSJ5`eZ`82nq#2uv};r1I4Inmj*>tq$0Nnzr!JK*XCG)J?U zL!yb>p91BdMzdqp5Y~6bhd#H{a2kn)?oSQycH>cW<+aUdmWTOt#B zTTr#=>!e48_=a_$leqv9CnO7LOh5CPK;_IE>(Oyl@v-1vCN$K{ni+z+E8h8b30A#n zZ4R`b70sn;sWchLTUdyUC-%{*rYNK=YqL+^N585&=6V`?%jLl7CL9N8-T;^Fy=6<{ z47k}g+5m}s7o4k$%nqv7VrGMEY$E)#EC$3vAb!nZ^`m%+TI- z8tH^ohOepyrA1=$A+~X4;_0Kq+V?SfbuGW~usXgCowIS?4)vPx>o#7PfI~bPFA7QLbcM8UH~`a({P|X+a@MwwMAheci!TvXtV*N`Sm=5>~+& z43?vYgO*FslTJl+dFy8zRIVeMFrfT=*9)T@gH_OT!l4*!!OTPtP&XYA`M@#%{Rpkt zi22w+)@a;LKf)rK4@u~+KB2;J%X85wPvda)#-i6lKoMiw4B-K_ukj^FSQ#o-6KEvK>3xAVoa$e~t8 zW7Xt@8>KInN~U0v91Q*;tl>PY1c7Fib$~4w!Ddy z)64_ZL{x#L15qw?JJv(IXtp^wl_%I*>#MFf(E2g#=9pdnv1QD^*@K43CW#z8TaS1k z7>lzp44Jhb2dS|+QDfJanRfXNA^gGF{dOC?&DniOUu?TJ_4ZM^kCzbukmPfM0{2wx zoonc!wchN8+I+X~KusMzEuA&eJs%MJ>U{MrO3_iN+S+FU%Zc8p*@4p4j^0AJYoT=7 z!U&P}l{RrDhLuG%M=m+2(5(J;dES3t{fmz#@!1a{uSwKANya7akbMgAEqk z*?!9fePsk%>CD4HL`p+{OUE-2pN-2X5DAeG6?jtfJ4nC-Z(6wylAQ?zymref*yT{D5MX&fgK25 z_R_{(rBeA>=3SrEpm0*WlRp1Gk8Hs>^(ukP&euN%|Ho-=CRvA&mS^oeb6(PqLi-qp zF3@v{uBxo%IR6jM3o;1J4xqi^Yci}0_mLjFKd?$3(Vw~J;xR>M;%K)rkpW3U2c#4FP zgRj;4_6#8*FM>1M;W4TiZvy-*!Ws=B^es4>cvpPJikS{Ma7zbPv6U%SqL&~-6BfnL z`aX1tdLR!^?rC1>bX&IzSYK3jIAD)$1Gt<*$h?H{$moIHP16v;Y?^>AdkT2x&bM*b z6O=LTH8-_c7yXKJ*fwbw21%<^4bO2krryIOlL;as^;E8U;XNoG+4C<6F8TX{9qqOB zkjY!1pR(CCoF25rOFLmtk?1v(Uy+WRc6=O<1~^?18#kXb*07S!;(7_AvEomS*sLy_fcuoJ1o!>T=nHXQew0&ofG5 z202i0Ka3<*DoTPB){SnfNmr97JVHueaGq0nH|p+td8~#1M^CXTR8xXJa>W1O`Vf`RGNy+}w;!;OQU6o|&HIss?KX~x_?iho#xS&DDHa1J_Sok8Inp#wrw@tO75L1= z+;IeOwjaqs?BUaZJZ%=C5E{cQWDJr8RdlUqJ;XY_$mxTVAUi`54p>EnWr4G{Y4ibP zXg)UzaoS|9#nDoeQ2i=Os_zcC(mJ@IJu$vwg30Lx>IsH(CIIj|aRrNY?TWQ1eN{%& z35j6meq<_>>0%DAhf$*ebMH8x$c~41*|D_iM&XPWq@X7s4`686xx=TEF26i&0(1H~ z0QEq_$5!^TYdMVuuLp8xzPtXCUgTLzx6G(gAKY=pyE_ozao;Yu41SBCHIarASCEif zRH8s2hHISjGM^P-b1%<`GkWGrfXkFsr_(S;kv0c;I#83=T){Inxlo7h3UjSSGE<|O z@NEE;wI9jYBw9*cfvb$s#|VgTNl&4g-Om6O-=sJ6_Nay*4uH;GX;a>jJsqwtQC?Iq zvPx2#zU4vFE-6uo1a}>L17(SV0Pmph$z&iq?x)Osp3-pzEb)R_;$71?+-#=)c>&YT zO+t-#4c!eU%b;{!00NIR0EaHmgGU)Uu_VOq658mh1-Rr*rfr<@XmQllo<@nXdU7uU zQ%RexKnbf>c7v2vnl*)ctY*lU2u6l@NE*#&v9>uQkdsqXg;`c0*myqnSC#mNu*0vi z9Raum*2OY>{qpOBrWK_rUj$6ooF@f2m{kt~K@Y@1%$*J_*Xx8_CHV~I^w+1Hf~Hsi zQXCMM0NPjuLbWR|CdsWaE=D;+a)tnZFxALf$368!nDvS)aYu8tI z!=Q7a}v zXqR5&(g*mzo@H{B`qDUk_-qnsB1kRCXJ(5~>=NbZpFt}dHYu{vkS1Ngf%{1G^9W&! zBuA@o01iVpKNCTjb6_b%w$@UPmQA z(k>k6C>=R{I#2!Pa-X+HnFdV%tmlx%VcgU5rR5WGDr$LWIyLJFYwM%S3zkmgM*<@o zq>P28Ks@XapM3){FxfP-j&_{b=;~4-F2g#=HuP3PDGf1D_sg5Rzmf}ZbspP0Wd`Hs zJL>_t@PI5GfAi%fd>|C+>bkm@X%yg_rwIU z%~Q{e3N|l$0?ttFX#mM%TGXdrNrP!r0kM3^6fl+;KV+dE_{CI-TE$B1{6YiA@&eVO zJ|y3n8CdFDOfMv==A21NE1!Q~Hp@Sdo;llgKN#f}X#)6Vnp?)Ho&DMTKgpOe^h`s6 zaMVtE6@J+{8GE;)62ASD849uJAfd(!cvOS3ozC}ylNz8}6(J)islgOM4=lCv>x*K) z0fxYN$(+g{$>%yGqJ!kvGj%{n1E`djI?x@jE<^m&CQ?8OgORTx5c{LRrVv~fiZnx5*b#lAo1563OP<2cr?=r%%# zCjdp|w}hJ_q(DZud;ct_gL#&Q3t;I(Ej14!#TxuaKd+6A2Ezln!(kFZS_{tZ_D|tN z@{wRK7Hkfg5(&mqocP5CF6ZrW5{4jmHo}3l%17!kKp>6I=m9;pfHc^E%sx6!3zX#J zc;g(Z^2*nh$URUAN1sj^AxruTq@XD+ZhIXtv80SUh?~J_G%}_Sfh3;+i^s0>BIjt! zdiy)q3#0rE^i!S6VybmQFZy8@2e-%iCo0@NQ`WERhs9Zf8D2qjQ6n`9)-?qEre%-A zIRluIvjVcENF*_qincklKnXZhhEtHu6ZGTaXmqjyxH0Pk4hp0VqH8|lXgJo#5YFuQ zn{#7ex8M$IxdyBRSD76kdpatl@NC>(M>|A-gZqD1^J&`to#IGg#2VdFX^X90A z^`7-_?pbbA?rYMm3zAUY`=J>T6>&vtp@U5fT_}Z}WvhCd2C6$&g+?q}ISk{ixX1 zjf`KD+#*mD*{fd_^fU5a~x8zs1cBLtqHa)qEY6%$iu(yUHx z#!5E6Xxtq>pzL#B8v;j(l%hS9jEN89W=8fRwxwrWRGhg>b*RxnrssHWZ_kPBxM|** zc-TxARUB@Wj-PH~S2dt}VuNRo#{TNHlZQ(>@YKjQIUrxjOPRL4rCf!4m-OmDo|^BG z;r_^BX>z^thS=nXNf&z2%zp3F?h9J8tt?JIX5Xrmq&W?Q$TOL29=`Cn?@t=>s!vZ8 zUOxWLs8fx%^Zds5sHhc!J;U4074V$k+=Z(Z)mEqtTu|}Zf??bD^c>%fEymOIckBS= z^4>(nwH*LpfdwkZ#72fzq-z{ro9yta#(Os90oklvSEJKaPA-a(N0UR_m4*_|sNG4A z3jboYTE`B$twUNnr0pn{G{Yp9!)CkrRB%A z-3Tf+0aY(Jf34GK50d6Ujav4@<*7c}$jS2B-tekC^|HgLNNdl|;X%$Uqb=W~thElc zoTK{8_!3l(JtR6BIv=`Df6e#8icVT?a&?mr4jzd1_nT>WtNC7C=JdEJ?tgVMu^#L* zoZ0Q}d3PFGiCT`$-Si>4*`r)x5Hq&u@6GbK1D|-F)k*jy=u?eNk6U98d2cRyy?iX} zHZ(p)XD9qrl!nZElf9XcJ$;HvU6}UwzdaID zjuXmX*RPY4SID0=Ue^`mJWTp};YUf@(b zwOQ3W^L^{bb+CRQ+sh>QLYw z*Vq(o-sS$~g~OqMr0*CejWslw4&TZt>JBT(x+0xOufPAs_V1U$d|Y2vkKlFg(b%jQ z4rHeus|(<_@xbTXafkXb2G=ZG%LaA)L5%V`9=3C0NKU8ClTR8;w@4G)r*%kJ9UrJO z*@MMMU`5#~1EMopC=!mR2|~V1JtX+vynkHkYPPiT!Y3Y8VjXVPtg*H_sj?r&H51j{u#wqVmVZ@G zcJPfQjVONfWrJXJY#!JTQqbH)2ACnqN%vLd38UHIPkGq{zx3_lYoFZh%LxVYJvU$W zb{@qrH>=(ua`;Tj2LQd1a0<$+5NA`EP+~azd}OYAGMaE8{?{MZl{5RI{)fN2Cpo$Q zRp%|W(CD`8TAaBagju9WVnevvKry$ww{a385H(d=6h-iCZx}x=I%K-l@^LS;==oR* z?7=DDb6bQh6991?M!s9ax=)QPo4ho5Ok$x0tf%=l5F4IB+03~N0vQfxIHdT6AX>UO zLx)&ERN?ZmufMx~zyEirS}a*{>E%L^Yq5>4^{Zn|;uY`sfgDt=C;@=;YVV7_J>Ov?O^m1!3W}w^OcJOV87ItkrNJ%wEuid-<7zj@=@^z(WhV9r; znRtx1aI=CBz7iMdv_uV;UPlRgKYSqEk%(~k2N9KIcACRARxtiY8XH&n6jXNMhtph* zUOY5iCyS>Ic}<$9p)ln%YXIlm0T4d5f;l6)+Yezw%7YIPs)ONks( zW-Sb~J-zfRr3s_C_ZZP|zMh5FQ4oYtHbqA{#4mWzroIYKN#Z{T2HR7uLY zpX~j<`}}_AT-W*U{Be%!diQ(Lu-5v1KA-2gpZmU_=i_%)bt&|c`qDQvos{lYrk9~1 zV}zsVQVwfyr!*0n&IlPXX+-GloPZ|0hE>{un^6J{sewtQ|=!yCFCIq_M%2h(sP-cHd-S!4_QQC89YKkMDIN$p` z=Lhb(nooy)zz1BWn|JhD?518rm4}^a&^1I-D;!xq-(D=o;0-xqw+<+=yU?;q)u?nLG2%u1|xG|7(DB*|_wAn2yf~i&-&M zu4E|0+>T*j++Z{XJSmud(VKDJ|N~SvvR*=fuvO;5@q0hs#en*UuE+Tds6siPR ze|0d=K`Z6HRm7#ytev#@vX! z_#~4_U3@g>3(~VPl%;@?0;!%l4Yqq7R1R_i5uro_X#6e)A>x<}k(g3^~>AF-z<3^mM@hk2Z=vg0PSDdd}Lu(YbW{UB&Uq=pbUY=SWsXGys z%Ua^XBr)fcqCZt^vvEB-VS+l#xCG1gm6L9seZxBY?3kua(&Z_*@#&HS!MQCd2 zc$BRAyLSTrZ&`V4sN>Z?{^7~~|4Y8!|GbC))nEvzXmqHTAB60#?cM}=NF@CyaG{|Y z8}?nX8rQl|93A3sY4#v>p_0U;Ihcwrcx`rB?3gvm8UODgTRmNAtUM(7jW{+35NFg6 z9ZD{L^<+KKm!M5o;H$@ItO|ygM&Mgu>NRleD_lE%Z3l?cxP~EeY?OY)e-F3m5a&dm znNJFMX&M?|k^iTjAvg@iQ}^-RMSmlgYVZ4B$34g^OxEPoLfHgGivC0U`8u$1%7>4k!3%eI;&9 zv;72OKy2FR@@3GW98dArmp$EU zDq;mJNK78FZwvw(<1{57-x&LxChFi7m=UEqdtzKo1Dm^ zgHppBnk+e@$!SF1KEk*(dw0|EN1TN!)Z{fjNQ_yI(dYWG-qED%nv8AtEeEzX3Ghyg zi_L9~Xx_0Mlr5%2-xoON5s@ZbFhN1N?_`rajRlxa>g!6TF@du-A9A2O5QXOaBzHna zO6t2G2(O}PHi*8)NXK!bZdyZmS8x~deDWSGM7y0~AoMcJvf+wc@{kQ}g_}HfwBQ3+ z1&u&-{QD0j6!AL~>fMP}tjk>T8$AD%e?{9WS2gt4+Wz~bh|Ir-81_j4-5(-3ARjf; zmO!T@<~l!(ycPajt(KXaam~rW%QiGtV3E9A&-${3I#Pdc9A%sgjOoUS2qC<(JYiT{ zlqb5HwB7M*$@}3Zg2A6$qpYJS?i3LLtelt8#Z$i|Yw883IbwT9l8Q)wr*;gQf;3L~ zXd1z}TujUggQm!Jf!ZD)e94u8-v#rhz2K2S>~{jY|H~#yN+$rba!>@0@7cR| zy^s)d!IeFzWy+yKHk2>?AoTid;*Mp%bs2r$QL}<~BCi5oe4&{B#&qIDvy-bwU{DT< z@WCkk1iTihWvuXtlcyigzszTe_NLqQ6K=TNyVIoaJG`RjLw}`Lq1T-4i~Cl%&*^dg zyrXZ$2O*lkDI)~^1}H<5Sq>t}KQJ)RLcjiKMOj&yO{jjha~mtuAaXx{`qz)MX%O&b zK4AtE7niEzqSJ=*GT_}R*cJFMtX#f)`GJtlnwZypP4D|e`DyMOTVJ1jHtH)M==6EV zGf6kgT&S_pnckRHLhn3IBj%Iya+>LfCdkn- z>#`3q!>r*Ir#6kh=eE~p@%z+KJ@eT54PMH{bzxSx!-{`!?V2^zZpRA$Wt!Y$v1hb_Qsc)&)Y@3HLE+SRX9;Y-?PlWR zB*-~?s|xo@L05P*Q-Xd$sTS) zW<^Zety{OMB9s^UF57yTHGk2fXd|EDJs|$=-(>RKyDT3l`FY2Ov3<*m`LSc<_47C zq>3Kss8MF2N}p@fkn!%LcHBh!tp|(k5?^}F=@GaWxFLvl;-kIer|O!#;j@paiQf6hD%%d z9$XwHIy&<0+iL_Wpl%1{kuGPP1zr>^lLT5a62~eArfJKX#1O#chZxcmhbP3M z>m%vvtJ&;a_x{MtQ5eQ!f$|c!P2gd@J}ZZavux()KRZ_=wB@V!o8gdtMW~Nfytyi< zD-X*^o#kD3WKBYvVS0|ZapQ)-^?BO|5h0x>V>2J?{cnM$=YANb`8J4%i0p?r#$tfB z3d#$WFuROpLl~^YL$OY8iaNMl6kff?JZQGnz4bmzJV)>MY~xd|E5zjU!Sep z_su*uWzHeFHCZ%glZz!y~WbSE!w~=z?+aUAc+| zJkiZBHqH#g?PS>5*d}czso(uYujMLy#pl`!`mH2sM&l#nUAN0#@oiXGH(XTl#~*(< zo60(It~R=LBq@#(&10N5pnVS?w|3DM*LdS(o#H0yysDFv;?erGCCj!id+aMe_1WU# z@{Qmxt$zFMw?(Y07*fEWoSYm~kY7-+Sjwt;6MH$HY@|cAk$V@3n8nvt@lp25(F`J!OjfM$gxXl)d3z!=P%{iHTuix5>+?lYjf|=;DQQ z=G;dm6u9lWfLysT8wdK%W|vqjq6kw-Nl6Xr208uj@(OHEb5r{(FMiJ)6no+wR*K6v#_ub z>;b5a?vt(dUwKkqsP_fOi7)?6{(97BWzJb1>y^Cb*C;9V9pNDRo;?j@lA&C#&~~Dq zb3jz*(RNlPV%PBSaOTtQ8#m@SZ9y6d5HoP}3{6yhVu|2^>@>SM!St^Cq_rjRamAop zC(y3w2k6>Q2l$`OdVN-x4w1;`KjSGn6wd2w!5yu@4C|QFr%#vYzb?AqilBjEHo}Vf zsGGaH1qj71aQV!?jdiQ|5l?A#WD_a0gje*PHLo@Sn%q3+S=^%(y!bNh~X;KTIam{Ng-{p-VAzIwG1Y2>lln*}AI+kPf~%{=+j z2h#fMADQU(I}u@|jeENu$-NU$@XDYI&{uL$Gg~(0K7|M%C^Qgf4|3;L!WecgoIGZ^ zLg+;O&87Q&h>RJ}LM-@F9EL|Y476d_9DE&6%^m8fIS4^yU!()_u{s9Vm4vQdy*jlj zG~eVMy2GlTdY)j$*cE{v&_t9f(emU;dG+6S(il!z&;HMU{#=PqGCQny?yy(tG<1-=)l&{tQ>jNG;68<=<1#m-kixyg zOXVDQYbWX-LR7$d3QJkns-BRMx_Wh!>D|#G==obVZs`u_bD{zB?|arl7qxs?FsBOU_*U`X{K$W&k>(LlQpd3QAj2M0?0SjZR{ zy4xWO1rKXRB%-L9qARk1Z~?HF7J@I1&nEZ2qXC1Ho(=q$nk=`WGys#>-XU@hKn^%Q z*jYyxpq1X+8dqDZgXnlLLdjnZZf(r$Sc_GBYc_gVWC7hX#5purJmz zWqVg4_XlS-ik^&JwyhM=9hcA|xoxJ(AR}1hg7Kovt$)vD`8QAKHmA4uAA=Hp{k#3V z|7mQ&_&+{7Kvl(m`6Kh-pI0sX`eMVme~x$i^>6=A|3Z7CI;<)>t)qK-?2$kVO_E=m zBuAslVugSC@?~b;Sx@J-^8B3YckkY1ZWTyJS4*(Sf-BfsLN7Ktddk*4@4xvDTz9b* z&F#~-o08FVL%V#5#L++8x1vR-Rvd;Wv%kHsvFzRTX_zJjjz!4Y9GP?a70^UpssH{bItgeHf0Ey(;1Ar0@x(S0`$ z&j;IDaBxt47))xb9zZi=14dW<=-EXP4*;ti$14s-#t(^Ke~r#)IQ!QQIyGgxqhks# z6ncPKyaTi+{~#zdJsI1Ex1fC=ANg}4%+Q{e6_LJUn0OPbpXr#n@l(9AqM|CsOZeTr zD`ID7H}K`%E_4xVsjA*!#K5ebDgS(=iL7@n?HbIOxMP?6Sd#^_nGN(0+vsu=EU^-TNJ++4ypsoTXu_=0jd zt_n&7O|!Bh0~?0_f`iOOPBJWd4>5n`^Weq?TR`B$c|K1W79XCS&XmWcO&^rTx6W_D zaHz-O%ErUsW^2H}CEy|+tlh5}lPQ<}eySrnYHBP)pJB7qz)hPrX~0qQ6v$riN%ar}y?G6llN^0#FCtzI7?KfeV)pKtZgRvVQ zr5Ym8CR}@iAgl;XTE;aVALMh&x~GWy*GQigBXAt7PSwfAI@G6_UBO6&5Q}8jI~XX@ zfk%qn#@0Z{%a*DXz#?u;AN_$#3>ZBO+%5MO8FGll@o33EhlIx@dhCWugwgBj*%}BNC#JtK`4_JM?7>r=NJsUy+46C}Fa$qNzX2sDgEU%H7uVNoMBhJkiU-I(4tQm;l%?PA z^X5s~tWEHRoP8$`j*_@xPdv`9oUpL4lBN?l-Cc_|U=Rv!rc%WJqQM6wp_+-sW2XVW zRDCnc;YG7b3kX8C4;;bIrFtERHaQ4U z*IJ>d@PKt+Ggd>0eivHlJfQ4J9eKtBH_Pj;UQ|!wWiGF8tYoPrHNj0Dhx!^dpKPOo z6~K`uB8p~~vjzPqXc|kfGFZ;$uX1|$VhEK(P>^>cy!7?=t3&u8JOk`ybiue*UOIay z)z4!VG?Ez1d0HnguaD|S9q2|AwIi8J>T|ubD_S>V5CGj;ydE6lj~_oY(yVn|x*Bxx z`%BteUZp&f)4Y~3*M*NDw_{A zpjn_2^rdFJ&LMi)WRv{LaOS)Oo#a(7dZAxZ<*1RUFNY5%gfoVQ^mk~E2wC<51uGeb zXrB>)AoA_)TU9B`N=0ypYWn(jUq}N(#(?zGhZL%fQCoa-=BzL>GU7v9Iy&Fq0WdkE zB#SCYb#7C8V%KCy0R|Yd*cHmF_*3);eTNOz8IHo4ujGpQtM9r$ozBa9aAR9czNZJPKZetv7m|ihK989JTZiD!%_vWT4PVSknE%8 zh`Sz$Mxa?|@d>Hzrgw$9StH@F6anhIAAQP^nM0*c%C`pP*}-QImmL^`W9ZH{bT9R* z_`2ggaK!PSH=8&(1DX$Zo@Yda{<;tT)X3FevFX$ZNk21*E(G-@X5)#Ex)&R+WKePh z9KjLTu?x+Y;M|#81JsE_F@Dk1)MV}nB~mKUDDU2brJkmWBMTQSFfUlX&8OjqH%P>i zUc{Kvsnez<*O|MyWh9^IHVgxa#_5)r$Ioxkwaw>8Mq`IZt5jx1h^bMs$@xP_Co@e` z6_UUkEC!7-I|-K}io@5==@IB0wL)l4D;-6Wa*-{-AzFkABf0LvK+{KL-Ms(}+_WJm z_;n-dvI#rSPrtxeEh}5A$YeS!I{Eqa+%N<_*H@h8W>YWB)sSZEJoR|OzXgcf6dNT- zVawSmyecOeKmg9#uwg^+Xqs(fy)1fM)yrOCDSQJAJqkZ=?Zvo&GZ$h`#QnsnJpF|pF)?{hLsnxBGdMJ}rU=+qX!g^hV)=RR_|HmN_6Ncd5m z6uvD*NG}cqleVRE2$f6Q*s?l@)~)Ht>Z@TGmVPyc#p1`S2nh)lpq@986vJrf0z{qVJX zchwVNwZs*5dB-DzUl60ackZw3)}@R+eixR z(o)1nAPuyyDjo&S*P0g_D--l&E}Dj*NpRxCiPS6`hd9(XFaXj$o07Ldo{vGWj9oQk z)F`^3Zi_2CxvX&1wg;dAhcIH$DFNB^CjY!Sb8bX9$=iQ81y9u;r-&+w)5yrEcH_m2 za^t~DSm7K~P&jkuOiE>1oB*m)oCmG_`-w-4fU!pfkg5{;L`!o&t^f=O42%vBXHfYC z5v1Dm`qoGU#uiBF*m6WBY(i;E9u^FBxwLcV&PuF^vp4aU1S_SWA|x0-Jh~_waR_ml#bSL$ zv&0K8!;82js>|>?!1i4^C(@A`Q8)lPy+ikr4d?pn*NT`m1T_z=9c}>7LjF}ng@A_t z`%o0HYt1%$e}7D(6Fz7h!YP0Kr7Kr%;YD$*BT%r@zfGS#TMPBc!?3UcjIrB?S!9(! z_Eq>SNH)s&J*96;kyNn6+nB7&^MxJ)-^L;iPoFmJ5V9U_^iD*_T~KD9EfXcn?%n4o zYsEsZux!kFg71q!D*XZ=u&G&p_(zsR($T8MQhqGTKVXPf+qa+_W2Eh2X^i}gLy&j{Y$2Kd3nvB zJNE(l8%ZR(eC0|7T6MqTC)#mB>^;ofg`}3_-h{VZ0$){N&#T0vH(PW8L$~guws~&e ziKk3;AX5zhxDv8Qa582EzeAEZy6D2~4Mtr(dPm1Y=CiHqWa9FF<@y_2p)c-F|I`AJ zN59+_98*@+mL~XO_iNw0E9>wu^Rn^w?b{>cgqt$g8$;y13PIu6AMCu7d6_IL%qzVL z53Jc{>0{cWF6Q~=@QM~(#SnDF~7@1t-U3($Ql@vBSRyICsgC;FTO)LND#*?LCWm z0i0ekmSU!Ob=*>AiOUN_Ej!;oWt->0P9&v$VPJ4jnk+dhIe4y|*wAbDuESRtBu?$> z&U@-n4K$-cPO6!vlC4}5H{@h(9p8(_Y`$lxsuo?$J0izUgm$0_0^_pgI0WC z^2wiLGsQ6oRT9E{h3`8}Ve6>TM(9YvE4#pD6<~Uqb%8hTL*O?-ac|s()c3eVp&2!> z-E_buaa6;pQiEH%Gg1FGW4s3cr%06$%K~}as(j%uRd%(QnAk3B5TqqKdcyBjU0e(u_5uKu=f}xbHDcMLolwfxq4-!?NRymxe1czw z3_VQXdvg(5s2H#LAXg~yZZ=J0=uARTDZu`>PRm46Zw4BZF5{N+rBxhl$y7l>oOBFj zhD3;IB#IlmVpj}yT9VB@+}eg|BelN2X1NZn`8N%*3;9F*3he`f>Mop!VprtC-u*Ki z%5&i8Gq=VQlITnqv+eEeEquIvO$jhqNi8}GjxKJFJ;Q~Z{i4AL#Zoiir8FC5o_gW} z>+6fepWAxsCOft$U973Cn#`U%ckb*N(z8}S2_zB4+}b?fta>sV9Ka)8)!Tl4NBu-} z%WtS%c_}&a>~t!&(a}LU5WLyRFu91E!X}ZUi}8N4j7W z;2(j9ukPv=RPu8dEjm6lT>I2BJ#$;?nd&W7Nk&Z~k=dy_vT;NGD2a+|QE{++pMtxX zJAeLBMG5LUH9m=|xi}3TtDm*jsAu`IN0< z`%ueAX1&;m5^I;F4^XLebNTdgZ*Om3Jned$euzEh z!N|levcK3|`|jS~{{od;0yY>)r=LB0)}Y$9z9vPv9Ob$&Rf);yygv=m;X<suFqU<0?HmG76O3_6y5mQjq{f-wXt2e zUgNcG{6JunM~CR-$&>4@avQVL$MrnCnN)nUO~Hlp=iAU_>kw;)IwpI_8q7`=*z;@~ zIE<Ne^kqX_XXvww8s~;Ek7ac>xW;05T#tFF_!f z)zgH+5-u2kR_9t)I3$ob7@DPr0Dqbq0CQ4HJh5}j0T-d(qG|ob7+&fN_RTMP6#@Lo zmPB9{Cr@M)S5q$Y&3OnA0A~lYyeCYUz!`*xE2Z&bHU`{maUIGY-&%#&vV$a39wM;= zPX#iDa&H^vxV_6MyTT_NiQ!k72^)kuoX&wiJ!oi{)@1TH_a|UqYnlUjaWL%UHiIY> zbU0j0X$%mC_STrA0B7u*O(+t{S_lul?}S>6BZ&LsPvJ%#_K`#NU6 zuvgBmo~#GZoxEhpf(4OyUKXIIHoNzQLt?^EGDG=_T13-&8@RgEID-H&si1I2K+KhJ zA3rzLi`7m_M6UdTm}fh z@8NrZ3;_ng!EH3=)6@MTn6hq6Wq`d~tuV8jCRCf(iMJs)-?7-VayS&F3&JqV1C zR*$;YIBJm}%hHI`61|uVHaJM(qQ%f1M*ho};UgOln3rFch$x=%ETXce00G1TVc|P~ z19b)9JJtbHR(!*QivtnEDciAQM=X9Jc*BP@-l`?QNQ-!H@RXZH)}4?+K*&D-mDO?2 zNW0a)Gb32;MLkfjl=pXMfN>=x{R%81-@=6f7M@*RqOhWzm8$_f4??kWD{PS37La3( z!&J4|>)Rs?6*5je-Wb&H=+{i*_p@i)@rJ$t`>8^sjGX))^iRA|-unjEuOB0`g~0KV z4u`_y2{O>qZ9e+=GzS)%8ob5@OuQFuIEA-fNg2%WRvSXiK&Flst8!8HDQNilX+{FS$jx?S0!ro`Meb-mE{jtLcb6kDJ# zhly%J9k$j`S7S?s*se|0{|3N?l(Cm09=yS8F&*I`5p8&unn{LRiF|}p-S2u?qqnCZgYmLU zW~XAJr%(6!V_yJ%HsRA&z`Sm~;CNGENK!;~ej%jfQr9gYe27|+f;Jzut+Vw@&h!N$ zUwZ1&bwt1y-ldh!$QYjq{z67G!=&p|Y{%!>5N6A0L-ra1Ux|RBFz*r+e9;FuBRN z7`HMi*>F^XTU&fIE!M>LlCQ5+`lN{y1q!x!it3kuvx~_fg#?k_-_Ijt3CbLVmN*C! z(`U}ypT6Gu@D4rHbRAQ?rgV(_8D#aP^C_e8=}2ML#;QXTg0o9&-g(=DeRX2<4LPYO z@UQ{{k2{5i^}lYLaxi|xbwH|c_ObfM*OFa$F(GDr;UEx10Gh;|=zh;qn{gjT*!4^h zzlyi7XmSgS`u%Smd*?rN7=jD{ODqO6Dl3VuvjH1VWG<4xe$>}}gM+sjG~VDlCaE&a z?#%%6k%(`#0w-`s^4K*KQ&WT@QLMNMg+mPKjRAAwjRq!nb{?x4bYUp;M z%e?ePIGN-yAy(pKqF#C;75*qYVzIH>40(xh2TsTucvAUYYOQcnnnM&>S(kUczP0u` zy+hR7q!$zgYzWPC9D*C7nAb;k^M+$T-=E;fcAT-%E-}z|32Ar$y9iik0>Ll@fH>dS ze|8y~D#W+FX8H3rgnKt%NlMy~Uq8OI4Hy5GmNR%;%0i7m@>c+=u4L8&dyyjE>6TVng4h^ac6YwGMfc?CHoSoncqu9qCUxoCYyKRk19 z@oxs@w}lg#uCf)8E>{yg?}NJ|8rlVN4Q58X7pc9s?PTuoP#Y{eS)U3<&JQ$MfMW5$ z*n^bDYVbfMCR~c@z_ZdxZ7?tiq=6ug1mk6eW|sOampBY(h{wr0j)Ry5;}g}*=smN7 zw21q~iv}|cM(=!xZ5_hG2{@Qx4Pi-Z&@VkqAhIRp}d zVS&*-ECz5KWRkj=L1e@d&yS^5MdQWuv(b<5b?g7K5$MtYmO!?JZ~{jIKua(p@toV( z5BH0`5I-c+mHpOzWQk`456FT?ZQnQs2;@4Xw~$k>XRJdPqJMsr7hjv>o~oNuf#4lH z`5>#g-~P#C+^Ri$xkBg0F~gjIqT8ZYwp-TMmL~K+Q5Zza%k1W*`QZtbC$Sf-7fv(Z z2jfWz7dlsFyr{PRt9J$fp zB%S2v4d^xxZ{*!^RB++<@88?eIQPDWa|jOcb;GqQq74r0Kx+gx#I{*@vP zo52yo(qbj!gLCaVBy;@jb`}wJU3Q;rv5mDrurMMNPLz5bdAXqD6AjNQG0q9IVlBl) zg18rfNHurZgI&XDJXeNKiM7e+huczF`|XHyxBRm1ID?#Z#FE~0O=6a|to2M`%{U3( z+loWNf~E_o%U*Vh2p~o?|Iwx73nazY!p$@ z8Sq6U{bRe_8L548wm@H5SXD+F8sGQJ zs##4Gv>L|pevWJtT)UPn?}M?!=I<^KI1FWB>REonGD-8R<8=;h-gs{8X))PU?fb;y zElcIyRH+2I73Qo$QlO2e@Ld!bnh@!nYYicZmT+rpYXy8o(e;6WK>-XV7_iE`v4IW2 z$%IicJ+L^m+kb@2(wspQ{M>@W*WD4M%pV*!MgxH90rZe5Q1q9WIZ#DJq`6AM*x=9NkQ@C9kt?z= zRP1h;=ADp|^N`1@Lr;zcaec~ll5#`+{QPV~QD4H11 zczUd^Ypw8fj9o<`!&DNrcjZX^P$|7vgP@u6BMQ9bflTBU3Oc zWBkuhGVzrngR-c6z@>!2A;A`Xh|PN$ceb4*HJE>T&A61J`4Oo-4&GD#%kLN#Fd!_3 zM?1VSDXW{Eo)o82$hA}`o7uv{^ZQ}u?j0JH(Z-3d-M}f54J-(#6<`d^_6uWA1pOSa ztEfFbnQM7DbBg(~x7Jr!1K2!;%&iOR}axP!q?m%Z;KzOBR51Jv%9GVhUq1= z3iC+}AXZS~dTd9>)JJbYHBXu{ySP^tnxQCi3o~YqGyF%zbLP#P7Y3THUX&4_rX6Jq zFArlpiMIG_JNJIt6Wn{j_&5Nl2S#@|+W#x&z0Zh^lV%gNDJ!^NT($iVz`zQM?<*kg z(b{8M?*VU-O@rSAO;zFeON(1W8cmdGyc}&o&N{r-o#lU^dodIRiD`PmW4@5)PoK!5 z$5cCh{CF1c{RTU-b)tt~QE6)u2I%a-xQEA{#Sr{A!PS5^n3av)33+nH&|`yqYL8=I zx4(ay-8hJmi7}YuaA$a(B(yl5eU87=E7@Ml)S9U%p( z4t+@KctI^vJcs+t(C?=MuAMvtuuO*|(FW%4IYA5vnaBaXIso@6J$Vdv#$e=tK8bK( z8>CF{aRmfRJg%@>Vq5W~(afzQTdi81__CzJthF+4e2B2*+`#lC` z9<#-al9M$^Y}6!`8u(cC!A^R)ism@-J;44%A&3+l=y;V`E>^grWjDAxVpI^-;=g=3 z&WxEHJvhDGaTmZCpagZnTfin03!`jFEjE4}c<#-Jx(J=I*fG)gIw>}`?{i{MFdWAg zGygaQ-H9Bm0@r&np06C-bt3vGQRp*4*k1nQ55R$cs)(CWhOSz*s<>*a4aV8C=;%;= z0izj#csPGFqEwcW^8&)0!k-*6ZjJyZ@ z(X{&j$s`V%89e@EZXtAvH8~DT2vY0b$UQYAB%%rD@zKKH5$KI#Ax}{UNWX_26iV_r zUAdx;idj;0Z^q7^WY+=DvPNitpJu5pO&h}8lsK$l+vSBu z_-z-@zaPp%LTm%E@D@A-uDBD&tgBrZuXKiFG<0IXmH7o*t{y56&_WVE0+U5E@)AQR zqQGOU3gP;;i0(tIW-Oo*HRO@xhVVvvj<7V^D@u5q^&z1{KcNc}=pEvF4q{m}pf2Ja zMj{A)!M5A z=hN)OB7U%esM?=?h1sJG`@{0>{nN1QJw##j-~sk;H=4r1m|M)8WEYQW6!RxB^Rn zgg|#u<{N54MDDPHL6S}Y6}@m+t3f|dg?9riQWUZXO){ox3HPPnM{}2~^2sZhGPD1| zg9mgBXp@m^3tMaY)TtXy5qK^8zu`KsJIix!GEfVU8Czv26zyPmq)a96#&sY%QJV9p^pmw%6ckbLGmcUp)v@x8EqXOG}8G(%zBWGp4MjMPL)PeNRtJaqi3GJ)pO{A@zHJ{>6tI+l^RoEkazvmuE~5@yME??J~;p;}@}YpE+{^H{ifda^t7aBvC$u|sT|zUQXth!haQ z+FHHEtmWRDqW+d*r(hP#1ecLDOr1K_zTM6czT;-pT>SOJuw-)6Ajf>z$eW~_S`Z_y zC_!PR8OtnPhFKx+Q#`#uN%}&vlk?j9{P}aVAn51>Hd@(~@Rivu*5>f-bCf*BU@#V8 z#a-M&sMzeW`&3l30*#*7uS+IRpKtGGi;Z4v--(Fo3+P|JH4)wx-Q0!vuMM1KRp!Cy z?RD*siE9-@I(Kc|Q2i4(!&qbbK@c?JMpteoY6Fs`3NQjI-}Xlc3BAjZO5W4hDJ)Eiaaq$x8z1fLnLO+E^osj3QDy0%yWZ}$OWAw#Qel!yaYaHAoQ$poB<9@>wct^^9UD-~jSYEI9jdTcGLcNQQD2eS1k!>&g?Aw92uO~yqeHl{D-S0wlBVf< zK#c>rElN2JPCEn+Rcs)nk%z#2#}Vufr<(f$1mNwFQ5jBxM49()yHJd3!48QoVlp&B z%n(AS7IobNpGaZY_<^3I#$P*7z@=>sM7yP8RoY~-@U0yxv-h3thAx$5>3@wTXKC(~YQQiP; zjpZOS2GN)hBEDnJRT!$GSU5NM>v2_SkZbq*1geDbLL4WUnanUqY&)=lW8lRlApbC< zxE+2oP4Erqxi*8YMur+ZeRZ-_pr1t)coY~z^X95O)@f4a#f!)Vf`g?AUW=Zzzlg3H zP{rX)#|X@O-4fi?a6>)O%f}!{y8$!eSEJ-SoaG#Y&bn~2N_d5=*G&m0DiQ9Bc3A(_ z6%}6_Y|BIVZUaMvE3z`~c@OG3sc^cx?Mk_*sYBb8D#3x&!=*$dJb^aEU@RGo2wTJP za~6nrI3CWoyYnI9SpqFA2C0K|Y|5#@WGO`qNx2R4K^&fTt^E5crvP}j4}>ZhfOD_G zCr=;{g|h&fl@^y2CqM;CI&ekrxm_xCfZCX0aX{wRB6~}P>8)@G70?x5{m6uoLbu%$ zFUAUo#|4Wlr2J|ko%vIq7xOoc{T#9z{~HgFVk-_A;b0}D%eX+2ym{-=FP_tX1jL+r zoJa-oQ9HTs?%9n|1EerBm>34CijRYTLW;X>A7Cr(*|)EC(7sC;107URTcC+D znw|=#2D^T*1^Oi|jf^+MWPu;batI#}LeD~|H+=lhBV!czXotSZfOT+Vz`nB$eHi!N z27AeE1_4wU>fIiq35h_6T6beBW?L*+i-ip!7x zZuPvtX7xlK*=9hq#jubvVt}VB4 z%P*(ThnocR@kBcE7aD0Gd}%yBehBZU0|}fa4L`x#lN|gx*8NlC(UCv(1wa$NIA+1FK%d`Wx1TfBDxDX3!KU01)&#A3+N(khJ zDkLBf5`oAHhZj#3hsh}`1O>T1IkTuNg1w-|;KeV?#)(V$8)vRgpYrQ1^EB8{d_&{s z!EA9z`|l9lt1yN!d((QJ8)U^J6gd)tY=UeQPm*nUG>=;foHC?R8XFrULX>hpHdK@+ z`ai+s6D2TUoF%^`{+=U0jQ)BRw{Ucmz^Lm^B^OP2Ks%BUdV-J{Re|UsIPpFhJN+X@2w+SR9*q|pyD_o(bn+@l`8-M literal 0 HcmV?d00001 diff --git a/docs/assets/simulator-fidelity/qwen235-t0-fixed-shape-ranking.png b/docs/assets/simulator-fidelity/qwen235-t0-fixed-shape-ranking.png new file mode 100644 index 0000000000000000000000000000000000000000..317b418d38f65a7a7b428a14ad203078c6b6dc29 GIT binary patch literal 155272 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

er#nnL^Mk@k}IFH-> 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 z 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�s&%M#JfcsJ=KDXWrHdcAcgsuULNgQT zpV@el?;l_FOgM)*?Z(G|;@1gcT&IHzOzw;v^qFy_aguvK`N!}V&xX4)b3H>^WMf06 z+}XdXoSt}T6=C_$f2F@0LUYY#QfyKjv!pvEq`>5R_Q8s?)2FuEKYvc9RGDYy6Jo9Q zhu4-G{x<#giSh1i@#0_q`2+Yn&l@oH7b)EU!I&~^W!5tSw`rGTQuCiD`rx<5$#8)tF*xufIUsG&`xTiQIbti z4C&2}Zl=DgZ=VOqG$ggfzo-NDhG#4biElIvyQ!E+Q<_H?xkP9#i)~*tNcRFa*86E& z_7tsl=2~_9-*3)8i4vL=;S0HUMWa(0gM47*U4)MvI(VQ7=+r!?gyPJneesgMw^%OGW0lkfAKJo zzAN11vCVtzaO9tjoug0ob4_CYOIAD=W3EpWT(q4m?18cMrc_8*qv6SeOA(U)46sJ?GZxim7Cx7dvt#R4;P>H?MoAwllNGw6Xq0m*qVd%Xv{ zh+M=dNdeU|tdm2-zw7mr`pM_a6drHi6OV|9nH_Qf>grJ3b1YhPv=LtS@u>eX6w!f{ zO9hTwe{YNK)z|8{ZdqAS=%|=nRG1NGo;cif)b!-D(y4Fv%4K?wA9)RZ!({qj zkk9wv4~Q4DiyHqUhS5KB>PVb0cbXy&efp7EYlnGbj4CwDHzLsoi-mq=r~CIz`UF5D z(I`X)0uMo|N329}&2gkC00F(8ku!B2$~+gAyL{@rLXt`RH?7nOB+4`}#fxRwjkmJX zw*5Rhq!CDC-r-+uTTIX0lnvM3;9n-y=}e!L0Bo_7;I_jX7~n4x4K%Lj0z zsAi|b6TBQO!D=8!?Yn}&jVIzD)mnt_U;>L+`RHW$(hZlHD{2TMAh>6(hKIUNA^y4# zMY?aL+0}?r=6X~}XpKUnYfXg!&TSTvI3W_5m}4!m19CPDhusrw(mz1iQqEIIl$}? zEdV>5g}dMf7*4^6G!95$s6&XDhJJ)8%L;t4SVR-rI-mhAZhkd`O_Qf9zP zuUJ2x%&^xQ6-msRsWL~waJefjWvm$X!RvEMdoQTf3FXWkO&(IKA)z(^K||N?Kvvb^ z3MOdsrMNWL(Y#?i%_R9@?QYdUp>GK-lTV7L?I4cj%hD8k6AiLs@i=?H?n5ZARm1Rb ztW*YC4NSB@!K)$^h*1TcC_u`^fnpjs*WxEk0j}Z(19-dfb;Q;t%@go)IVKDQh&on1 zj=aAbjGiuZ(gDB7I;9w)XQB@3m&A^f^u8`147_S|KT{(710eZyrQi2cdkwf@FEDc3 zsvNW+Gs9!waq4D|JE87RE;hvuwpHP&6+6kVDBTyAB{Jc%`s(gSinWhFiIRAYem-(y zkCK5O#sDSaG&KXi032&gRDavd{^r3JD-L(K&MieKcSr%5yTIU0o{0xwqQOI|EJhW| zf^G1AkZZapGZ&vIqXKR{o_waHNOC#PV4|&qLml24x$7c5jdC zZMyXC&Aa&WnZ+kc+Y}=k{%q1r9epDkP~yKuX=E~-{rKq1bLO%ZtpoP#qyDEFD(Qsa zG7oHc|FyDnVX?7Rsc}1!UnpWyy_3R2XZ8*{fqzo_$sSr!9o>@_VY%_HN_~GvJPC?y zI3JesI7a3;2Vmbs-#75%$syP2M!$(yQsqKDENbE{;DPceOgxUYl== zQ=xY5kDHqOTjep+-d}D=fOija#y*#j$Ix_>Kz`P_->-`u{Ejk~1n$)MjlG4(3P+q* z^4hZT&s@6vo1Yd5iH|p=OMIAgkNfedJUc1+k?{z1>;TycHRj?DuwT?~Zt@7K$#>w& z%hY-P(LUyueyzBNc1mz-TFTB-Z(Ak$CnJleVWHvTPy*^U+;LrtL^9- zRj02EKG@~{T?^#|^|5eD!ZM;x;>ep#{QsQ9fLOI$kx2iIho*)qTcWhI`Qz9LP}1~G zlCKRq$I3L84g^jfX-~u<0^V;}`6H-P07mvhIk$-Dfyf76*I0s7BwB{){TO^fb%0Y*??}o4fn3+C)BpHGA$jDbx0!s`q4s+o z^y{8hn*$eTAkX?8+9;9{P@aR13KWSEL>Vh9Q>1}ez~MGRKNdGsVlQh5L%M!WlgYjJ zac5w|!Sl;q_bO0wf(Ncb1jIM!*WeH&inVvps+`7bm3bBKw@8V<;A!3O7O=(mkyG~? z`tn5+%S$fnf_tG3&L?cSce-KZ)<{oWQl3;j^3^J2CLla>csDJ`vQ|b8t(5v{rX}C; z?&Z2so=(SGEj<%d>0@qqvJMW%uK$y7$kS0K*|30QjwuZw1ORN81cI>D;M6;VXy&T< z6K?U#jcZs&O&#|p&kiy4JfR%Pt>PmebRt{JSBpudZ*MR^(BWPj zxYp|C@FW&;+2g8legdQdL^NWuKvJ6Y;vk!wQ9N*3tTb{FsX#RVw}dK@dX6g#4!+OU zg^MG;{YkG7SK-lFkZOyf;fNj&ECeh#C!pI0^FG|E=SL?rriO?_j<-sNhu&hGu=OUWEWtjUbRleHe;PvnH-sZ(AyckXLPqAAqQ zw_)nB=U;?C{R%PVQ9BxOO1cciV+ix2w{CBh0u0uiS+>=CleCM>_S;fkpC|KqHaU4> zm%;CZQH85m*ZdZsEt6M7B+02{vfjdwIvjIy;gB_xEsT)%gWv)rrSbT~g=Z$DP;R@d zTD~IOe1l{DnW;$6yA9dAA20Gjk!EqE-&m6JOgI;=u$G*>MmAF3ry{8~M*#@Kjm_TZ z_8mdf^m=tp>p?%pwv-%GPF*LHJAIFxmPCzB#={#mm~nLk6&~5skZ`zK#TnoYv5i2_ zUyn$Pag~M7Lw*EL1$sw%pjVIvJ*5FFhKxdCC9_Luv~Tdakjk{*pMKi$aEsDZ5y2C~ zfVLAgK85s2cM`N<;1y&}3`Wv)tcR;l`79fAs1=U0u2Nema5wc%^e1V5mjfN;@a0=>1O#vS_ zj&cDRtE^+Z-VI2DnQ#1Onv~N=8DvydP^FZ$6U_(x(vJAnKQhMDCn}DV8cNO6tn_T( z))9Y*p0UjLV?yi9+y8s~Mw0aLy4Lfi$Exwcg&`@_`-i=Jyo7Wzy-V%E}~-J_g&>gJb!uY1u- zG>XWp`B}lM=H~F)ax}lcpe_kc0fp@U(gB@_t^VY9cw3;l zNjmGuhgLz;+8>28EzJ&8Vfp zzvDTBXcL6|^d36$g`b3QR_4!Fc_Jx-J_Sf2fk5=j+ELh6qOqOOa^zZkKfg!MRg>f+ zN?-YTcpG}${@on;`*2jG!ZVkSLSkXT6RZX}h(0WP;J^pkV_~>u2Y3@q7Lr+Igc4Bh zYao*#@e%bUU|n|@Nm$wSISUrlf{VN!NE+dbO63@W=cvpSxIz3H>JCBaL<}O#e^9~6 zht0%KT4Jyht|@21)fwsYE7+EA!tqJaD(-~L-{W0pd0M%`tbGKDahW0hv^r{;K}^Sr z8zMJ=I63u{hO)OlY44kVj~n^{w~%EES#_Z14fy?!Suofn3u)5#6Db-e59aF~Q%=XU zW&v_*BI`ZazMTQ%iChh+B?8?94Ejyen_I9Rgn(3%F*hMtan&>M`u$jQS+tHwHVQjO zGAbbdEodM}07yJQ$Z-TbJSNQ2&VZNn4>V8Uw&hCF+3tQa-$9@Bb3X%JpGw?2d zKw{vJ8Jn6)I~D*V{V+sLy)-V@%Rwf6qxJ8&z#xp36-R=j| z;%LA(I(DTn+7f2a9Riv%PcOrn57tKjFLM7<=PT32H2^r1CArWLrU2qBZD}9A&bR9Q z`)6fq?Y|XCB|Nliw)jDH#P#m0r)0BjzB0-2K|JPVpym}TIETU2a|nqE zi6~Irl%``pGLXWf{T@T=eTE9DQ9xGt)g#X&Vg$@lN^VG)6dHxufXrd^P~m2Fgvo-4 zO#r{lxq7L_G&s+E`!(ZI0kj6uz+(lE&*7aPGW9=d5_GqdjFRm8AWE_apP1UKsO;{UPk`LSk7OA+ zqfTZzv0;#PMq{)k^-)Mq22M&est~AR>(Lf{rdWe-h!-KoWhAbQge?gARhWcFX%=Z& z!;NOlm@zqr!OKoN`Mwj-Z7TjM)k0^Tdm28D)pDZJT}JO49)()2yW6WAwmB6a(I$tcNX9q1}2&kC% z=tMyYL+3<6>o@dPx=Dc!#|PpU0d6NJ68v}QV9(L(k&p%`!Nd4b``3v>V`a1D6>?=+ zs9}8U#G|)^OMCzrUeFhd6=nDNMhr-UK`zA3+q~7l|BSG#uksKg!g2VRXJ#tQMu@U- zH>vC$xe5}ajf~;s*ZleW)7UJlKt0vGAZ}IZaSty!a zo%j5HW}=+X-skrB?dM)TFyv_Jk&Sk!i<&0CaNa+}h2Gv}cf*^;mgN-JUCgEeO zh6Eg>#3jZn!M)x(mJ5@<^P`x|95z0I>VdP1v-U5Q2HDRaKi-d);t{6TPs&^H)lPa5 zJV$E*mDkZB?#tJ>Wn;}=t!3FDAH9gml{pWk|cb+=Q_) znJlQ;bT%F0`MtL(gZee-TEIUMs&tEhp{6$?5o+a$CdmT_GPLhm{rGVD+ed48v6(9H zw4rd;iRnt#O*mu8K$K+jDEduias%rK!Yx3m|7>+VQbuA>lX41DkT19sh6>h%^Otvb zk?sm0OyRYu-n_N!#tm@VO7Pye#Ex(F#zN7@@U8>#O^&DSGzy1{LkfmoJz`017kU2Z z|6UJ1{cmtE6Y!RcKr;r8imiN)#`GXuFwjv|MNlQ`dP>(v6brF1t02v8TVrZU3JE3s zX@n1$L}&~XzYmoc zwmn31o<*v+de-EJ^cwyDi`@L_cV6~$N~cU?8+gjJy~?}g9J}XNFlt3W*1C7-PKyv6 zthSB;*-5sLOgnfgtw{5^Q2JOS*Xk^nZ5khbx=K&S-{6B`CuRT z7Au{yYv4QDFjVg&d4f^1_3+++PBYV!&X)eZ|M7*M1*qSSZo~3b1_`#z5M+2YOjlyZ zPlWiEta~cedIe>MaU!d$3l2CM-JC+DrY_jY5!d=87CtD^SlXcl#E9t685MqR`8R@?4!ETy69^Ci2n?q?0G zpP>?_1TBORGT%UNLDYM-gpCYZe{NSBd$luTUv^;n*4U{kk>}rj`aVyV4=&S|R5`?# zgFR1KJ38s;z=q-bT57n|fTX81w5QCr>;2ZD)%73WCrsbR4^sVq++k`{uX?^KXN>2K zqu*{eFYfsM@1q4!RD~9`r-UXrrGtI1nuHuM{1Gq)0}ba&i#YTQVtx5?wJo29xIG$e zH@B?*d7U#B;k~pMfXPi<=oE~C9)*X?3$u*cIJ0djg(7FqZG|8{x%lT(npY91+2v)R zV^a1Gajg;O8u%TEpKMu`knZK=6!XB8JEh^V$I!c{C8o*cKR0@KH_@+dN2wFK)7~P} z2_+{CrPIvPYO^kX6H=)-J7e4Dnj`<~>!j#+G$DSzi-gRa6LPWJRL+7G>fOZe`+Hci zaj`jP*yjpssfDiQ0lR*B5i(UWcrs4I$mQY?v`vzc>!M|>Txk)d=^Ja}vu1Wq&8mN! z_LGk^iT3W}(~#02D-FO!rhJ9ekP38snV;w-dE<}b-enSlLAPhk)LQrRw!iTUZH@If z&q=y>elq@{jh_*{;M~(i)|@eyrd4d4_+k*(`7<$U$!@&v1_j`UR1~H(-~tKs!8xj1 zv%jG9p}LShXG+5tKgq$h5`SBq`FZQ-dt;G_6SxzwQ8`a2o%|-zdbjh&a(%JUhxraY>a1Ap_vjeuIE>#{KmGH*xN#u+&)9~$&R_VI}oiX zKoKXPlO-cD6lF1}o8JMnuiN<>f*;C?ZD5n71jD!=cqdAW1i9er+Ly&iCP0xR#i~}ya~}_g@u9oUJkTx$VIOcM z+JPFZLa0sRT<#W|Byaicr1@AtZpYgH*s`84<7F_7^B^ey_tl5lmRupTHr$H1H_As{ zG&I$rC}$OJE79M}rC(-xC)CC=46EX1=YOp3^|%(w@X$I{28FRCEYBFj(6=n8QE(RndR(~4#TmoNw?HF zk{%EEPPteo*G*Xp_a}@JLl*hxzz=31IIeNi`HviFHCy8cxCi+9K>#h+6zkbq_TXO# ztlNq)2deK;bWwvVP~?cPWY$N&_OxX_B=VQYMGa875hGf_yp2bleXVa1jsF= zZNXmV+V5e@r&d8yeymJ!)!Ge6d8u9_#0kl4z^*f&8tmr1UM-H+C=JC!Cwxl*=1h~_ z51CoE4ISzu`i6knm$qw>4Nr-_@qA`L$xT6nQ&Zoy0$8@Cc#7E6*9a{Y!4Y|M6IcbI z@YI1qf+)Pf?WBi-p8@%(UyzKn8W#(7s5*oW1o;D7MNCp*eymncN4C=^XUN%+tdN9e z1wf=|+o8bU&^*q6Q?I5i`;$pB$`1?hdu{(SYOuwt@YrMO&)|n9O#r~j(&Jx^&?Y+o zT|>tHYPLl*ks=z8*d!U?P&9IU6s-#~JVu9$i_0oslA&##MA;N;^91RVi17!m1j%XX z-6O9(-kUmgp-XmAI{!TKPgJ60`4Yf;VH+S`UIvXvL}$}5s7-SH`-k3L#?x9RXNKX_ zvTx6ylkyd)5e8n|u^IJ|PF421esa5a!ne$@mP0|?ls;2b^<-U5zM5G-wP-NDfB-?1 zkHE1K%+k0VUWG5IR49|#%l^RbYJ#fFt_LT@pVaZQU7jhO(z?mjWCmONA3#NUv)x<; zG`7eAcT+^E?uXzA$`{##^+xzetKgrFx2_;#Uh`fJ6SHZHw!_`Ul0G1IstB(#ke;-Q=w&2jDoOp#xYf)u@#QQArZshFrW3000pqX}(LH`P4zm ztAzuHMrDwNB6xgv=_CcQfyn~29gV0#h&%Ptk^bv$YGYl`68`g@F8(aI1!kNj;HHpD zq^<23=S1I=oyg~oaq1o!p2zX&0IZP0Fp6p&yX0J|RGW|INonF23fwt(#0wj9a^dN51Y;GkQuMp}cm-8ik%vom-77U* z`F)~p_wdQ*XV6Q+kCrZgYhDJffdp;WQ1a1_Trkc{NEz9W!6O>LK24It#e2&B{8|rO zUB1|QeO3kPD!*IVaAvpt5ej*w!5fU6FkLm3DDW623*5jITwai(Y3ya0AtECQ+Q3OR z^)i;ft+MHp|JJ5{pMx9h#@nn?8emS}F03urzT^6dUDOemsT#%&g^jnCl$2ZynY=(Y zUcH6MRL#o&p37i~CT0hc!g9v8@Na5pIcDCFnK95dB->J*LZk*8X5smd;~jMZ{9pOyfW{0g_a)Y>stgb z0u^}nURZ}gqC-lfoxgV_cIlkz`>Q)S`>9gSwUM5@2+1k4l0Q&1l3j)JQA1m*38VUXHxCJA&Kk zVf^^9yaX0?ARYnBh4{l2fRqwt1s!iyOSWrzg|?PqXlpV_J8_RTH^x-dqj@~ev9o1(9~9CC94E7&Q17@ zHaZMm-D`YRU2<39;*>X^OHR4`vmV&kn2!(v$R-3mZJcpFc59I3VmX!x)x~Lwj6qS1 z6U?u6E-U;Ksuu=&yeCq920`tGo$nypaip!l)=)$LQa#m7Sr1XK0sMF@pihr?&akbw$0&kQw&bJ1{sxQFzv#f2q3$GCCj1I>m?whKwA`zcUcfQ zYW59GGhPN-$Crna$>9OXfPxRou{iL9$d_Ly~M;M5hy`A&=gG2M9 zzmA!v>n2Fdl@rJ_>FEj1N)2^droQuSC+EaZ@Tuo{VH}|-8E693vhE>D%0LTVY)zM; zbm#gVu07P409WWB6YQ^}1GXTV(t<%T5f2I;4ar2hK`(~X*4U6Qz~jZWUyG}mrd9Op z$+D52zjbD={KM+j+#5U>ile*V4q1#m%$D!yjCJL&7Cch?r8rD1`_n_y!-1VK#}8Eg zV1(n@cIUCUscu}-E&yehGS2@!Tn_# z@4HO(Wo5nM1-&^Iv9>SfmtQ)~x5Z^ex0Q*z$I-QaOlLKR6qUNRBxxGlc-!Jq?&tC{ zvoI-6$d2&kW+6LrlKy^AN? zALcbRv~cxxv%lUSsJv7P$(H=l(jk$nFWJ}}HCUsmcOF?>CVwcz2 z7`7DIj;z+$+k>H8b&=aUxU&KU=ZzH$KCx7;w%Att!1=LGetw+s;7$u}Ro%8}du}Vy z+?6dX zVv&(*h4fYM^YO`&jvL4XRVIpeq+eltG~L>QTGXxywBk+EU}Gc`;74 zA3Fl32!^<9un08p42cp#&W03Kz+oz}yY{T@Z!mz2#X@S5j^q~Gd1!QZcgrg%5PnK3 z7K+747B3E~s@bS(X_+}SvFSxcKj|zlxD$7O$({3Qp$hDMH)jqvq+NZSyVSW^!_{NU zyicjyx-N@vSX1}L|5+o`RjaA$dO+5q6DRjS7&77Qy_6m1Wt6setycyHM%LdMTxaMN z_b^-C!a6Yg+_PP`E*`?0;2!=_c(Sp5eI(BzM;^uS5)G%RV4$;^1O0%gb4Twt6daE* zQGwqXZg9B`X`jZe$qd}mh`Dfwb;q&_sFag@EWkB4Nc(8Hy>zz`) z+f>7>v`6k8yP=?Q@L`f8d!yYzxM*r}ZNKZoTfyOx{VBmMzIF6jlov zU3q^rnD}@vUc5LpXztjMCbCXecU;HZ0?)&Wu_J!zj*u?J-19u%>dQ3Z?!6IB!|uAJ zDyURYqhTg<^j?#ARrm~D?~EPCSIX7nNz>au%Kk>ob!i1h%k!afn?q4-+aFvFeb>#- zrZ(Lu-Q!s4EVj%)wBLvd=%f1zVn(G^#;ZtwfB)0g0Ub6HY6&{qXfzDmF+7a3> zp^7XfCWev$*jAiusCe4B^ffm+pei_?_yUrioX@-E)yAErVcbW~)Arr>g5W;ApD06A z`JF%ii*`cSk>j7V97c}BDXiufzS$V$tJmjHew@iz5Mk)88DjCRK2}wfyK%|;FX7C! z>_N-DUEVu48?kx%2A6zP+@qH~IVlTv zy&YyjUbt`}2G}%_5fW*ED`<#co3rA2;+JhN`* zoK^EZ%@KS!(`Y_!>S4$D{{8zomnq&d*hR{d3l{>cWTSTJ-c7&9U5j8_a6#3BwMyCH znESm`eyr#xi_$K~xW(GUI7gsn6JGXJKe0F*CMC#YCPEqYK;YlcFZaJ1nhrLS7<|=Bu z`TlXEn!JI=z0Y$WXxS^<=?&DmZi+38)3&?0H~vp!>j)uPKG}`JG0Xdsdu@HDu_fmH z*HcbdM6oa1Rv(Q^c-!2#@NFS>hBSh4QqK2JB})dX=P8t{Yn>|DlwpQ& z-6vOj!q!JW?!j;d4n^|&bLeX(A+R~xq7Rw`a|d6Ac%{D=Y>e#x(jL>$(2!z%<*ki` z-B!u$Os&{xn;sbxi+iWV!W1l4sYf`u zO|I|~|Bw;vI=$Hxy)x{2$CyHdId;1fj$Llao$+yfLVB5pQIp#ndl~q+yw};^+KR|Z zCj7*r!I|zoFN*FAX-a0N>Bhzf{iOj>0Ns`zcv5#g^V`i zERQy0$=9!zr;N=r5@&m|TF-z-y_2ZC=%V4o6Cxin@i4{pevE;Efk$sbPt?GW1-7u~ z622CD7HxRqwrb&}i}Sg{aWV$D?=`#Oe@nCHZhrngSfqEw3%0&yr!DY#9QMu+GLMqF ziI_SAnjq=OdYnHkK)2K$QwZuNfH5pZ$r-}rihlXga@vvZ`jqCFs5ODNlZ2E`$wgh>fa{bv~dTOzi?6TWoLV> z_unsk9WGo@NC;~G65;}meSG#C&4R1eaFvZasPEi;FH!z!@8)m6WFFbS|01gSGehc5 zN`Aq?(TK6inW{?7M)k3=!`nqf4xzf)l;%{dt~(?vE4w2>TwQIK{nMGtHVO$TEWGr` zr4%KE&);!p3r%m?F{C|3l0!>ZG!1eNX1z8%6g8bK+VH<$WXDVu(-EKyUK#D9U{)N@ zXhNPx6dz#qt@`F_=7=%3+iWDr7Y{HC16Z1>K}%~Blc+`HWC;8Ub>XwXlN|X{4x3J9 z<(iwD^La&jjh7Y`*)r~6c@+p!kW^1Hkh-_5)8cgTv9gB2u$-2M1`B6sG*5F?S37z+ zR3k2CWN~f4qQwy-zO}VHYxfVXi;Z)((F#~@6dPL8EF?So(wUvuo?Jgp{EI;!#xDeY z@N_i#rvivRMe9UfesbCz9ybgY4sSU0;MBSN&ZUPrSW!_Yuz8D1OVym5GEpY5b8&Td zr@GEXR{Hqcc;g2LVujH51eTDBs;#{}1{*%hvLpvZjm)5kMeLEp=!EGhZTf8P>vr+H zQ>&~wGE;TI+SoYv&Y0Z7OR_~4=}tRkGj#2a#`TTb#y)q*y0B^Pw68+{{er7#eQX3@ zO2#v)I(i8L%KxM6P2jOy*Y;u6QhRCI6^&A>B10%8GFFmM#>YG*Ly-)bXVua`DI!tG zJd=4I8YC2%lQEK+WF~yaWms!}-}|op|9{VKt-XIMdhYwa?rS*D<2;Vzq70WlF(sa_IikuuFd}DN>pIlB#M_$PkU6XG3){B#JF@vShsB&^JL+$`|;lU&S zc+fPi4MV)>gM$S%eJJzzc9WJAq`xv~Go%NE9qcUg^tsnsU;6nwmCH|l^RoPqfoaxc zy&yKXFy{NFR(6$lWiyM*)v=q$>z{kuDk|^kyiJ<>?tR(wk0!1)D}6cI*2+SqRrHT1 zh%x6QJ5WBy`co=;Nu?M6YS9OwCTX1cb#=pl)d~6yWLrktb_Aq~@C%S_p7{*{2-V?o ztmXg}0m}sTnRV=5$qlu}V(F@P>SVB0)9u-#^-BSM-YSRYGCH5?8m-tUdNBOxG($m) znM?24Ggq~ceS}9|aXwobU2yq8pRQBFiXA}#8P}Sv6YMJrl&JFW{^JJQq`8+E9}ve0 z?1u8^&!0ET1wKfmo5tBaOoab|a5|cR@AaDY7o-J-|6IOh(}&d={ro95tSl@gXp1Tq ze8Kkdw$gk{=jh^i#n|@t_UCR9<-dSOJgG1iH9CV%yG&i*6YQV+`^G!=lzg#Pt*mJo zm3J2Q577LYUlwB1m;b)kP$u_UYir}At8#OWrIyOziFxA{lRN)$E}Gikpn%?_hdmN{ ztM<=uy|4i5EfxqAkr*B@K*mhkAz`J5B9^R;8gyLwSQ-hVrmCtxv1*%{n^kpn4=Y!q zS5U;Ef`F0l@+Ji`=CrhwXeWViE@}Zu zhMDZqQ43NT^7Hef*|<>&gGslr!%!8x`Nv5PFyQ6RW&`a0)f0qAS)yCzqomnGn+OY3 zcm?QKOdz+refR$T8X}Rx?#ycP^EKBt@c>PF(icg?w$q0gK2^_dpb*{2(tP0U$=y*Gvh2mU1lDsCK zHGXVjWSb`!5GwwPzpHvLB>HGU`5``Q-yc7IY-W=Vn4;UVMdwQ8DGYJ~T5MhWaDih) z(3nnL1H3mG42`z!B$rlh@nz%YjEPjbD9lX7E0V8%M$v5!#z{nXG5tzyWplDpdqJy; zcuYSR7Z+)%1*Y*(ZWj|16V`;8!g%Z9Hp%4^R&oC@XWZG9{}E7Tm?TZWXQX$2ZfG8& z=&Q|U#k)!6n&1@AjI+f7W3vl!a&s#rB_)v(7(uxInzWX@^czsk37ZuCmE{&ze#nF1 zF2oj7{hT-UXB54kr`%=b=1yxDR%iT;n%YN|*V0Z~0hM6A=sZ|aD))Eu9r^dVXiVOeS9`X&MT`&-RAAdL440#dLjO z50K*IV7XQl5R)1%55|buCgM;1+%3{gF^aUF@3+cnG(Usif7%#jxIAb3^hgITXAOPINt@Y~2{@V{UZgF%W`=~gwsx=w2!Q22 zQDh6ed2?mPcRk}LG7b+V*_uvu`iwD%i6UA_E5$!X$II})my))RJ65)`ZKMq3hp^@!%r52`W z!$GtnsHdUZMhYoHqwu8#c&323LS0SFBPnJ*z%@lbqHSxVKF{2Si%yaq@qLDtH=>NXu&yY>3Y{~no+sAZYD!pfghmIHPY&P+0(}-9JXSb z@KB{Q-VY@zv1CAtW8?{ddYPYnjClR}_2$+_qx5!8B}eB3`qJz1mG_m!OSMzjhEk|$ z#j;*8`l^QzH6K7mlG4Z3NjU2Nt59osxc=vc>1&c?&4CmT?!(5zrE)mb7}MMPaLZV{ zU2cPUTS??m7}SJWI1O8EHiudEjHVC>Gj~4q9Qw*I|M9Eo^Awku)R4px#~?qyXwRWs z=Cb%^HuVFYFB>dE1*LpfEAmVp9A6J$c)Gq|F8uZD(;|%z+}x@Zlr+N8K{6Unp~OTZ zcwp7spZ^%~380S-UruuZ{KT#R1X}GGY>y_NLAxUpl30a!{ic@DddQi=EjddK}nRf|{byso|GR?5hFANEl;cL2F3;yLt^ zC{BH63bp=mQj7So;AInRA)_7C7SZ8@89*VS;o!txO$bAzMCEwx(xniTZ{>cqN;B^U z7UJgisWhcI@Xc4|v3#M*hzy3zZ>)n;U_o|YKK`sMt>_X0xf+DEq@V%1wzDZl| zA>9QYhcf{RaezHB@CgOVfm@Q=v}u#^`w!Np4>j2K?-#*e&4X^rwA?3*-t~Cr1x<33 z*{K(HaXafj)$gClduvum??W>Yb<}&1WjaXM>0{U0f_iIYSLhwaTSG8Vlqa0 zW|9i-Rm*6&>_*mxBM2=UGygle(B|Ge|Jv}tf8@5NGh6LZ+PDiW6%95A z7j~!u>`o;%4O21@H z>yAh>e(6(euXlo@p^_D`-gu#DrJCvbg^%>FY<}hI}49dh!1K zIqAqwc_21lDSxJSD*4^9cwA!W8TyH-c;2bT<@;_4_R}*q)m(YWR>t?nRqLZ7E9^HY zSeQQLcfQa1(Z|&ZM*(p6Do}UHy~6@0T|HK^=7iW(}`M%Ud>$utuwuqANrX24LHY>=>+ijG0u;Jczx!+M; zqubZtKL(1XD^MM(!hsM=NA~+wz;q<>THZu4sXpkZXlJcZ_^)9P>xmO8$VimHB_#r1 z@XLI7FGI_l4T^;iiloTne57jv7veOk!i=!*`aZVQQLZ!dpPE5(vQ0l7X*2MNc{Z`a zlsj6nnvNx89fBUhH9_o7m&l44UDFvtem##ct$4`zv>AWbZNYrynL3CsXTUc=_AYj$5k4)I)D4tr728mQN? z=eDTS4e#pWD~hFd?H$n+sf{>$^A6XW9yvKV;?YmYO>jR`#DDrFazFc66ifUgByq-G zvShL0{;$a{Y@}&-?TSSN{CuJb5ilDD3!w;4jD1ic**2+MgylTCgVr+jC`;Xz7kIn# z#c=a{w6UeX9rID|cg7igFa)j!Ws-D$Cmn3m3#tjD%fK=^<(k+=io$;#2cpVChX@!g z2n}U{ECL^h9F(nfmZN5HF;a#1i{9#zM!c&VnOUn_XRp)}*0)Qu*YB;VW=Tm2*;dIu zf~f-j_tdX#vqeV7Nh1_8w?W26&^S{n<&}%|~UXu<|FdV8?seqGxE2-#` zyCa&hzei)A_zA!1uGbZ*EK@S~bU4+m9^B>`>c0^u!vGX{*KwmyWGt}a(77yFy-Jw>=igZP*(Y9S+bJuzt+VMkLpC>pz?h4Ri?mc7MbLzT!kM5EeUz!s)*BwGs^ox z!bL2Me0%%PzP`7cdTHxlzD>e`5I(O~;Ige=;d#*|SzvghHS*F1;Cho#kQ8~)$okxo zBS*UO=HQDCp-aqQ?uZnrMJZ`HrjdZ1uwJZkn%4_2QXO$h35zH_f*}cUfJnPkM1$)W z6&Lq~xO2!6k}a$rFxD5K(elFGf9%THvi!@v)s$bXah{eiANOf0 zcQ{wQ!7i<1Ecxa7XZ1-9Mr6xIOcw^pE*bsK?0g*agiJ!-U2HxoQ>p8hi zasP_{s01};e105;>{t+;0EzJ1+s8+t-9}mY>0nkDL*9?qYXOZPNxr%~m8(AYTM6b& z+dC!=_--yvNN7F1M}2A|wc09yM?3Cc2V)lt=?t#{=J$bELeR=Cx5`vk=GcRnq@rvR7y0a-5FmzNV z6CMLbmL6OE7)dK2sT}T=(_=RxryzcVoPr2k*%nSgunP%TNYZUYTi3$ZzHHzrxsuqb2py5Q3>;7I}-l9yM3eHY9&%s0BYjCHUitRazY;%nHss-#4iM> zcJzOiLK>G!A*VcP@#wPud!bl|T8?ka8$-pM+qCqO7d!-~fCB6Co(jt~Z*C zb7Y8F_gMh$@;~|beqW9Ffws*!b?NGO$;1Ch!g^- z7X8+ir^O}|SvkTxZC!%XQMFlrsX6y4HQ$;|=ujz3APU>B)-oBsniIxd2)r^(>qV|o zZ(bo72~OQYZ(X8RK-O2M$HprSEfC|fO4dbo9s47@zW9s-;)JKcVAHk&#p}cxy>Yzg zc<4fiv+r4}1qq;2w0N4of8_)N_q~`N+KLo90`!m8dZaOwt_$1>Oa&c}uMlM?8rhKI zG5mp)2|Y3HAps|@stJ=j$H$Zh&r15vfNa`}*EY&qiGhh+y={ z%eG3;R6QzYb*FiiUoflN!-q+@NAuOEmC<5*94QFFCz{M3f_SCap4n_noJdBo|FgnYc%$&Imy6>@HFxQ_A9sX^ zvtVty^gSK-4ZosajT~fU=WHb7c5e|*X03e(P#OD$fy`N|az=iBHByyFv0)U`)Shqm z;)NH6kVyH_i;viOXAi&IMG7cHjNw&-7LY~n-Wh&-?^#+=QIGoz!y?<>u&^fEj*)xS zy6)4`?{Mn_)8pzS?&1l9w&!L*)dz$7Wfa!!I{qQFeid_$^K75immKTF7Td1fC~w;S zeQoaSS8Et-PHxk%@CIZwTe4Qe(j}MB+%M!5YyuuDx@5 zTC5d{%Ji*Itj^b0%$=L>6I5RxYG`v<#71s0!6bYypP4Txa*&Sl9Peog{gB(ezyL@i zX!!&*L9S=~{AJqmzzc{i!)I1Dz1phYT+LGW;L!aGE=o%!N0*q_pXkEeMiFviUBU}* zW)z&lZqhasR$-_iZXgZ0X~jrP;qpvFqab{)v2TOxn%_T{ zBy~K-&vAlj3|<8TH5zGF_FgusNF015G}cX0M!{{*-y@^bO(Ta_K)PN*z7PjzW^54B z2!4+yyQh$|5ROfx(+*HNb;1=QXbniMU)Re5PbTF0OP)Wr-7t@ zLPPqpG%t#=al&9`#|Dx!B0}K!@b4cc1Tcc=A{Lh;{&2TbdrW!DZF8@U^@fpb@TqeNWVkWg+7XXh($n zX^XVL*K*2=g6pJB5`=&NNUDxj2z2yVEH0p2uV899a;hK(^1SfG58)!TQe&^y?CC}z zL3U*_Hb5ftaL9nuKp5|klyz`r7@!u{@qhfVNlte?L}=Zx^=lA)M7s*C^-5_q&00DoN?miN#`&b85#Pu=mv^Bq)BKGRRuzeG(zhIq)M8!GkWOh>$9@4N#YzY z8c~GToszDuZum^+|AAC|JDBa9;7orCL2?pu2KkWRym}u|!N$e)Gp68CLIWKH^@@o?Y4LCAl+eZwcRo5D`I2Nwvv zUekmgp+sZ{yi=YYGwE5NP5bW;cJtTW@>`Lwha&N1!Q=WLwv!Zuzzjq+ozc0d<8HgQ zF5oNS3!P_@ANE@Cdq%`nVVBRpmK>pM;&LGMms+6Kk`D>jL2=>>5Zy&vL?Q?TU1-+% zBX{75rM+8NSQuBp8gk2LZF*lP(3n5vHt0%}8uqhysvo}p*e-I`k|u4n9Wy^gfruvn zM4~lpaQkP_96|qOYc_qep5enf^7rwXL-bLDI*`7u`E5v&Jo2GS6tBXnmW{ZIj+`pF z2W%}YETX%fGe}>!5U;!78`O3JgS+u~j$Gx9V7r-zdjdS-rM^UNip{UPv)fq4LZ(5f z({%_^N`Eq$n^F5=J#^@hM*$g=Z(a*_^c(dT?jP5W+zu2OY4@&%=YIg933r|w3Gxa< zWGI6Uk*w90qG~_I$ydL$$HM1RpRyMdTx7iVj?GiIEW4R;0OUDim%CU#(Ua>I|OT^TiFQlkQx<8w83 zSq5TCof5glG@QsVkgx!GCkJc`Vo@%wUG((oza}7*l&dHyD`T6phZ4JJ3z^z3thzEC z$Ng(Mj#I0xeBPcT75K?AMYw7_RR=++LM=%3vA|R#KO>lphQ)W4$c`0r+8>@C!9hg? z;*l_rB%i1%hxC&%QOt(eTzi|cQXrB{fYb!j1zj#bf+#^ZQ_msyIV`Wnd@y~0S0U(+EvjMrasDT#7On><|9YYsP$>WSGw**EW%BW)7mPrlhY zE7m&jr48{m9VRrP=UcfU;_UI@ACv)?{Z8_t7?!GS$RXw=tFW*ZF;Rv?LM=>P2vmmh za#z8RL$Hcr7AG!VVTrUc!N%ce_mDO!ts$%hcAce^@u_WF4yzH!^PEx*>;Q z8iVm!Zu*WyTM!~aA!2L7k`4@15Jw2Za%Ulzf)T%!EGP-V&gCk!mpD#7LApfRZ!Qw4 zV?abV{Pg0~JsqAV(_2KSTT?@6wradq`u_c+1LTCBn;ELd>L+d=Nr2+ zueuhahm7y!J4TNOQ)6rL@{I$Le67Lg>l}YJhTw=rNT`Knu62G+3488?zXzitE>NnF zned;9!|{S073Aa&b>`BoT$}(hP%>j16G&-@gR%Kp;<^rkqyp$~M3@iSox=6&$&iPS zedK8c+wQ~XJqt93m=`}>_Ffn~LD@Jznx;Q6+uZZ{PQiRs*z@ywEe0-e`ssTotN}QY zKD#J;az6X0NWX{VoOz>i+y+%|Z#67UjvqWi@_T)JeU*Mq5SA;__}i(CaVke=F%G19 zMC8&W)W&yZkJYJR;aGo2aqktwdL^w%>b{!U)`bezI5? z<&BYo$Iz;4;5~-g6m-M9Ndi{QjScn8P_C9pF4hBRnJ~`5Xnm zu3HYZH1|wGM^2p4d*C6O(9J+@we1r2-cZ$v8a7|8gOATk6)Wy(4kg*Xjn(Zt$s!8c zm<>>%$6_%_4bT7T5}w9<74Tl{tcyC2j?E3yt(BC9NF#8}#v3R-NK&qlB}KFis2klM zT)foT44%HIhuO^`R4GL)b7G~N);}Fd8jm<=&wP|Zhk&~tjaBuMc;|Q7e)AL~y#_Yw zEu8dtH9^?c$>B#_KuP*SYWH}Bz2F&3bF3c{+xw_z^0IUn|erv{d$Ec z?oTZFP)4l!?hwabatC-yj2i+n^$MYxIQc`EuXum*h_e5l;G6&pi1ZC5f&97Yt0++P z#&x;gxkF@eUvh0zmU2RYFiD3kjsd)($H+8uc# z)TkI~BFRYOQ+Va})^lY3Az+h1C)09!aD{hI>K z*%!UO4>Y#>y_I2n`cdEU*KjfPP3iK#NM|ez?SH(9i%8Cq?PGBv?MDR&hU@p2zE=A| zh~bs91@;!&X{u7g;M5PQPP;}JYju#l?=3P;v{T`F77)3g!D&)^pyea0&f@)2slP#< zjAWXyR8ZXQ65xc6iewQm<1$=CXsFu`sw`}a>#D=1A%lO=myu_$Qmc5ygTUZxbSH! zBd`xfjE;^je4Cbo>_(x<7oeq3enq!|K91~H6Gw5Z&~*2HB4gSp@WW;4-Nron_th6n zqmz-Vj~i;Vf1YF)?)%!=3fbMrN&O$ku(wGIO`QQ=Dm4rxL#X+u`8^$_ z+AJ9oG=gcmQFpa8F;yU8a>IagBGXm|h6I9j-CWD@*D|8N-zYphoJBxD-P6-Ep}+Ltj~)T? zCi45s2Ck02Ej36E8s?XV&TmX~=&RdC_n$KQKWK5h;S@6fA}%$IBdYrWPsz1HWC26#*pKc8d(KK*tFePlL{l=iUZ4=(`AZ{dmbiO($9crq?&9I-Z;#7NQ>Zc zg<8KLO%vIAzUtod^N}`D+%j9T=jD~^4CErL(@kk$t;(w) zWFS&-Yw-1q15jlE7OuPih{`h>##L$S)dEJQL16C9-xFzQl%ZCWqIpy)f`;d1gAr*| z;56NHFmh7Ex>+H_lty9A^7a1*4a{4Q;f-qLJH%R3Zkh{|-{nBG(;3T;-PS-|4vRyL zM_atM|9Epozhw9~y{lJJJi;||x(gK_DF1Y&=|4{X4>C)ieJq@p7vGR2>=a2|+`}2^ zG%08h1;t;1eW99y4K+*VYQkH@sr9gG#GKniA}OinPCWbwwF zb7?s3>AlwG(%LsVmc#;y)u@; z`IlLwvYlNv={kkICgc0ko>VxKm3xvE#}2Wk#3mh^v+x6(B!n05G`P>)dS=CJ);}Vw z)R(U(&u!iMT@LgDnFD&yLr$m0y>@umRE_rJ>IkdM+{pe#QrxQxM+a^;H%O8u3|h+& zLS4ft@8;$vhw?Pp{Rqa5_S@w6V#{8bwl*i+8{&BQ)_=O?tFF-gd80i~Pl7qE7+vtW zn4jh9;bmJUYAz)a(`yLJZp;5d-JlZvO`4u8=UGFSaqy!sQH$#4Y?ttSCCDBN`wF4R z;cz{V;#4itu8S7+3nRJbBA4IjnMR?V)xpm9bS}4^YS|$wN2lbIe)zt-do}ng$S%GIO1C?EJ`82E0r1lqY2>Af7ko?!iF=0Nn)VTnOb6#5*)rQJF57pAiNLBM&g{5=#B!2&N39;zrhu zZegW^4n?w}0%p>%3=y{+Y-(TuU7as)vfbUdY&o5o;5tF?kvu44s))ZBx)R~@oHD@62e6jg2Ia4XuLv8M45wJ&zN;439 zi8t6Iuzp@bp9{sdtI#tBsE%Ff4w;W~I&;7M^nN;{^^_>?lYi8mbX8qNcWFKI+|h5N zL+mSP*8hugH{4sNj*41!-E7*I{j7G0?uuU5l{_g}8)N8r-i_SI!oNEcF>R_*0~bQS zip~=Y(*%Prb-VmqIt-Fg1eZZP6IYkQqk&QbN=-4CQ_G{g;_NoD0AnrCsrACP*9F$< za&SE5Q>#??VL+`AzD;M=vDvTdH?@_lX+>>QlyS|RoO3bAK1iVo_343jWzeF@+Jvf) z4WjkGuP%gFPm-|S>d1#E(y`bZ>>8^gmvEHG=I7)S~^%RO=2v=C+ZW?jejDdp18p1v=ds7`P}2`MQn zH)%xFpaz)P&YQklBG&&`QvlbsVITBIRD7qbdFl1OtSkfp^5x5y`?$p9ElF@{yyc#;3or(t({9f5C^(FCG(^qfVtHX3zv2|8tN9tniJz$qAT~PC8CsA6waqj76wh%a~@Ubez~je&cVSn;HadPJ+y`3V$l}Q!z3sc zMKZ#2X}rGhm4GWO{R9IRS7VnPVL2;W|pbQl`@<BC-aupX_0muXlp;ywOQ3M(F5#yw<}3Zl)t2ygRpxH^+{1NG5(@ffRccN-p6Mxf2%6K70Ms{lLl+c%}GBU7H28LWj1n~ z?X1bJUq2^gTrsWQ5Y8|UP`Ji%nxBAQo(6%WF(pa3eebrSv`y3~Y72-NzI$N^7V`}0 z6Dcq5v`3Y)4Q;(mXp%hqtuGR%n;`i+!dTA#+)^%s{nz=8v!gzUG1Yyneg~(lZq-JC zHd-R%MlWY@5xW06V=22~drIy-S5Een^i%Ff?aa3*x@+H{B9+!XeTO?)berFWh|Tp5 z8CP#*UvL&n8UMv`=grsTCTWyTE241}OC^Dj)B_V*YsvYgL5SJ<_)TF$37EhzG+^W9 zRfeGjz=cH3c%)3E=t8K=4349+V5sk`O{+LO%k9^nAij`z{;-P9QgPd`VZ>smkY44D zc$9h9(tW;Gl$0D-H3pXxJEJ1&>7!#;qKjt^9II#Bov5T9)z`I(xOlK7=E^}YS#$(b z6>CQo$OvL}SM)P}D4^^dBZW5>GuXU3HKG{X~4b34!P=@pvYJ!>+P z$ibN%1?LNrWJW%P?}y+-Qz%3xnW-jA1Et`Of)?B$9yJ)%!ICMUU0QI=+vxZ+^0zcgxPz6&cl#;epw`$|gV zSVNtUozAQS_Azf>2BY6UbzHOSDgUnY{?hT$qv}NvbJS#*XrcOA4jZ-5hrJD#gDk~^ z=58+s-#JY4udOcpe~7s_&q(Ye4?lXKxkwJ_ib>%KrSL0=_m%ygPrD{-hfarXST2T>a*T}A6bX?k1qEy$- z+vxwVda>)~<_{KeD=Ny7-!~nZ)*AY1H{*87jb3|@m5eC(am`I(0Z%sAP#pU*4w>bC(ypJ`<;y%g<9xMw*zxv6E5@}MJA_nHSl9tl zgidZSx;?QJoxkWMbP6Ek_(LL15Q0lRDbq+mlmJ=A{@7Yo2ThpckPg_e*IbHdsG`~p zZ=db19?URoQV^l+Kal%&c=y4FebWs=-BVinEU|klKIJ3fvqiIxcP!(mbM^tnJ(jwF zabq?w%w#fqi3bOOo^EXBRd6IzfHO$mXqBW?mm>-@K!u3c#}d*)#aWs7sz{aZqPMYe zRr=c_cj)~mi)qH54+lE&rM`J7gz5peS^JsAw`bSK4yw(EmrhGdhr*6v4SO(Q{Mq5F zF$&f_kWkfuh(MYYM~)DC7E;G1@c3U>lw)V6m}r@W&ehvz_PUDs@;dE3s&H%D`5KT_ zLQ`{%M5g0Fj38sSuwqe(w}jF}WP0hUGHFkNl)tGKZ!-aOS`}TQvhagnqKc;i=S*f- zUihUGPR}~UZw70oJclXE-o_WZNUG_f6>fcGyY-qey+9!vfuWL>lUE7@YZSC%g@+b>u&fFh2QIsE`ok1iq3dV%e zUp*fb+$9%Tm=Y3hSexZ`Qm|%;&7P2OfGsmVZ9_keT&LS6!lz9;l_|4@wC=u$^RG?fRI z1h{)y(6^9Awi>3dsKcF5h5XdLKtiQ*@m-s&Om423Whh+EvVQNsULu^C>){5s`2;>q_p7rr4bCC^Gwwz3P=|6=I7$dW>opO z^?{LX_*RYimwZJ&>i75%T*1>1#QyJTel?XP4M1`2^$%I zxQi+Q)h6AuMW&rV;Tr?+x~r0C5FpL-+r&Ck4;|rT2}2SSI#PadLPU81{4~UoL5dO}VjU32 zdi9bxBt8#1b2MJmH1N-Lef-CdFX+U;Zy{Yk4WZY*ow^GJGi-HPHHk1VYJ4QL@Gyl_ zgf?yb<&@;=`*K5eA0_BHUp9`8-xkfb`@Uv+;O&j;X^wD_=tj{jL;eEjfma z-y*QqPyrY&aDS#Z(@x+f6J&z0WbWO&2YMY(+_i=Kl(DSY;9m8XA)}|m_?ChoZ`|AA zYX-#@1N{$2s}fUu%(A%|Jhpy`#SC!M_~It1f+lVd*&fI8| zA?^nPREO_pEt+z>RP9jRTMOzDIYOtVB837P;2epa0DkvpNzm6tP8lMEh5XMzcY=dB z`QR)jLOFsPG1z|F1UrGIYJXYI>p^uA^C8@M1c`}y z?t_aefOok9e7(IX304cY{p0esHA?8?*%Glaoul5@p2wSau3(_R@avrLXn&DlEqlW7 ziAFbY5>e%f13NX7S3jc>+w5V|N)UC=vymIU-9PFRn28vblXD5%jvbJQ{mY3II23x?w8%Hs5 zs;&Zre?@oVHolfPrX9mW5g|V@;>fel(6sAeBoa~7G;5)b80RuK&1;ITlubDwt!6 zu?j%ws*&fsK#}DtEOoQL-rgk;u!xVI^wC4;vBBEH0=|Xt9#eurvSDS2Yn-CUwnSEK zFj}T7oaaJOxFM+Ok<%`owq3`5$QS73He=u7JP z<6AB|6WR8CbG77pvc%aR6gv8bmQLtX^P> z5Oz1|!zDaFB~9Kv&4vxf<2WJtc`yKakJJid-5uPO)htv|zb!i|5iU1*Az5#Wih3}y zlt7IEa?ojr@F#$D_ZBCua_&GRL_U{k(pPtvq&t%Q#L{exkI^HtQxD}Vt-heO!qu-n z)KoS8YeOBZ28e!u)*0XtkOxEGZ|k3z5q~#qf+_{Se!6=w2*!ZsM{L$e7y~(6ThHji z1*l>U`EET23lY)@5t1KkJst*G%HA|mzrDN|wv9bz=)GZSHYA>`K4IM zOI>a+H#+HpJfQ}0p_{uqDdq-v6#Oh@Bl84Wudi-{&HHeWd69(oE805ZQ<$avaci@^ znG$>M;2#=_eK$83r_hXyHT4d0o0jtqoafhUpTu0}MpNd<&sZfE6@nA*jX6~))S2=~ z&MiwAeb0HJ{yg;6XzBTx-mDD^wEez=SlFYgOVTW49TNS+uq2NpjdeiiJe+Nxfqce2 zO#ZRV!e4vQdv&{lNUOTw=|sz1O;}wrdL*96m(DA2*4ksF9s|;J&u3(_A;8CYiwH;t zKJusV6RY%OM^^|5yT7h?4P=Pj0oE;Md=>gBJp@2Pn5*{l_Ph$d zRnu`y0S-(BZ<7e09_!8r6D{0VGX@ch-CmJ}SK<;=fpRw>8&W+XXCUhHIH!T8>ngWG zB#siU(QrL>8y0cGnGI;ipE2j7AMHXN0(@nOL#GIxx*Hs0d01gA=$6sGm+bu5A|nWO z60{8e6Xp?dim}?li{O~)9$*zK9&pq?KV@&QPNKN^w$N z?2%B|ibIsB6$#|m0}`YSIiH}@cQ={KBiN<-(i@HCiN_&! zP2}-X4Gj&1OST~L`uy?~=(${noEJu~ZAa~`H)GoM&R4EifN-=Exk=#Yf%X0~(Sa)5 zB0HwC>;}^6YjSPPBh86Z2dJ~zYVh%li^VM{FtujI(3y7@{YL^%ZDcIMdt8lz}mfZ1Y@sqi6afd*qC%*jC zusV9s+j8*fc_wkM8xI#_LvL9-rvyzkex>>5amnc7t9Q=!j7hDca2Cg*VFUu5*vY3w zmxx0e@#wG)S7Th(iT~FM3Mkg1TW+DE&fjGVc5XTb(*iWPT}zSB$?!9)SNEk!ts4DU zYaM;+Oo>ABL*1a70e7apR0z zO3$tg$7 zO=MwaJ_myp1pqXEU5N>5&dZHj@hY=J3L{Uy;Dq_6XK>-xUIphXFV4$q7Y$=6_aHD} zH5Uf3*Co6}|2XN2smLh4YR!fk#6`z07E+;aF*A5}i!|NGz^cilK#)aF{NyoE5m34JSO(BWo@g&~tq_~gPwi?Xwd*j=x~mS6p) zV@5*IxY1I1N^Aarm|Qlg0Fq|a;9Q3X{zp-p`YHR))>*}|xcU!1JvqNE70-3-FK0%| zyX;aqdtuaqhKlvZvZE-`_S0#eVr61Fi><-hjo7D>Rtv)u=#oQHWvuBiB0OzpUR+_d zJC$Oip&9B8FG~Qk>E&B9$xs_=;p6A(VpV$zgKuRc0hJ7RdLj?%tHl~SHJkY2qM_oD z`MNS1_Dx9L`HRq~GKOe1tCoIBQP6*^Vts5VjByo%Y(3uvNqQb?WxCJvT-3rgdEaNp z-HGZmvg7hrQXpQUx|puND$2PImXvT7xyM^(yo$<=KIrG&pW`NRlwGHOkEfWw&snYa zO)awkHy^0LBcQ4^nk~{gpqhB3pj;8ojMZl5c{^#GzOBy7G>YK3RyizQAc9+d!GsJdcN^V5^v1EMCBHL>~aL7!6=S=557f*=2{?9#->m72dn{$?#(Vd zfOaZ#nvE56UMLGDeYf}9cbctf>+%{Ng?|9J%QWKnxwSV{Hk`I{$+uSd58N`*>X z|NIlALR_jmSh3kgWqzGcyw`xt@>5Ve09B)k%AJg2t#^*OkCpKIx_JEd4~`{ga!U4p z-0R6Azvjvkh@6NjCOedE@d+NXvU;$-+@-)^DIx1w0}JBy*Om z7X1ddaQv8+jgR-dPR;`9ka1uQR%qkER=6Mj$6r=iD0g*jwm8LK)O@0(+JGW1c5t11 zOJJJM)whZ-Qm2MkuFcug+&4*hFO|U>(!ov>6?pNy7rxvn>T;ewS@Lf(8rB|GJC;8a zPyEBRms?oQxuAs|6nPug$;$+6B_qtWW@nD!$+@q>-lGFYC8o!BxT@D&@Z7zIEq8XW z%IVN`0|@L2_t4UbH)l;2uv&a(YesE5f_G`nMeWTnN-BN=L70v2b7AM2q>90+!8KR= zetdrBlcoKH-gPQaYAwDXb~LX3dAsHo_^Jy{uz5}njz zrX<150B#>JvPyk_l#=-GPUa8t-~CN2CujT8`o3oKjkm7xPU+j`7KGJQ8s(bi4EPZ7B#YinPte*FA)@fA=Bw?APY-@Ii@b0zj^=E%a#wF+I8CrZCe-l|e^3XW^- zl1P6oSCMv^sqb6+LyPOfVl+{;XFLOLGlz6sq^>ji_B{^Q$Q6T`WWU-3o5|19)awTr zAJ@u#zv}K5O8y98sH@7-D$W1M&W4(mOH3L4_PD#_w1pGo>RG+|IM%y$!58+c}gofMHffdycQjP5C0oR~}mi>L>|tasSRR`CE8dIby2I`VOGI||H2 zOm8O`V}wLKMw(AXMdP-CGJvt6U0PaNg6c^DJ#6_hbtb~^WuIENT#ZXw zPupPjav%Q&*^9qKjo;%IUl^M4((mNby^GvNiT)^$B(v-R1ywW3k|mFTmJHqh4ev#^ zXVFLlvCm_qF1xLpf{8vE#|?*B%kA~MM!_mFgyPpLjI<4_mKKgbUoUhIek=L==08gf zIL7#Wd%3MRX3Xgv_nLx^S8*2)s44n$)jP$G`pnDYIMT~z>b_~^*3WxplkdDp-FttI z@_$n`bxeATd1pB5gn#*$#FcP=krr;|{ZtCF%dUEGec-jS^Q0IQk*K>4`bXMLo4(%j zF1x=}FZf>_iO1k9MO4wmq6CFMevp>Ba_c`JaYm3uw1fn1EaS+D3u&G?0J_Gco6dZe z(m`L38UBk&y*GKRF^6t;dEG3dJuo2ut~XjjYs&TKMiaq#YJK<9YU6Uck!o};(|mrn zPHO}mpvruIqdwa=OJ>yQG)I4ooiyhW@(2oe1fb(8*BPVLa@dC485tElfEcLzaC&$_ zGOzHzO6Ex<^u5&LFly?6SV=Og$LirFb>Rmo8UVKO=k=Ty`Hf18V)OH9m9Mmwo2dHu zMz>H0<&#E^MWfCVV_FSie;&C?iJuTjK2ygxLv8ge**PdOG^i;?V`FVy<*+sL%)_GV zpRWx{?!@-^ksQO&un@1qjHc`EK(2LLv$aknp7(*vK8$#YCb1HpH{AH8L}rhrT_^Vx z48RP(q(&2t8@#5`u`BaKJ)lljK*(UD!Vk}0G-pB_)f5-bbJNDDa{76_w6XJ5CNweD zNq4wz9^^H0Ep16Y*TYsI^L={9^>1CzCw5-7*e$B=f zNO3&dYj5Q*e<*vXBT#&`!tE0WPJ0HJ$Tt^v#eU_Vp|u~GXNl5`HP?LX+-A+_IQHlG z{g}jC^Yv;6o#!6*pV(ns`d2#&Dwo74$_)x~4q{D(r1iRnFH%_0)0l;X^0^?WkJ&D! zeM7FRppSN~v5ntpj$DYMf?1Q#7PEctm5rINva5CO;Srs1RIf9S|97V;vwhj6-Omo6 z&tZs(-ygJ2wrg7NmONRx;TsNf$wH;f71a*;FXCoj*0kq4>Zqkp9L!En?gKvg5dOKU( z`8hwG($;O&U@m3Hx3m$1p31-^#yI|74LT^I@jw&#E9er4?4;f{Q3X9G$Z>)UpFl1^ zU=y!Q2t{{ya;R-v`QtcpteLY~F~4p-bJtms<{$Oys+umBn!wW?xeo+6)%Rt2aY`E5y$MkYs)U6vYpR+)81^3QOA#p09Vr@3csh>ifdm18cR=dCOxW*~_tB>Z7 zZB`0-k-nL^d#FsQ|8Mx|tZ6qXDA8CVr6nqaY{2Z?$bSjQ0Sg_4d*(baNFp*@v|+|Z zuv5r^w@8+%O(fYVsEz`P9beBNpiDHVW}=D|iZ{HvqhNFk(U<{zZD4Hp*rGT5Edk1L zT$f(@8b0MWX~95cV%e4!>zy(X**?VXnP%}yEk|#|y77yOKNzRP(pj+H!V~>NUWes% z3AXC4r+f~drEBO>bk(??cE0Xp{lVW~NHDi-9{Oz6xyOv-&zKms_N1G%R3^)0z5iKn z&2*q8VAi>+)riR%ubjR_GwW53f>^l6{w`RTdZk1+2$w2fc)V2r_*)xXZrP<6%ke_%}7r zpz^Oh;#9dxl}~J_#pYRWPRDL9^-*j0TPZ@T92>pTkVoNSd<0EgGi8O@15IkauG&DzsORda~9Xs6a-jxC5iaOIlA}0bi62-BCO5sdz zQ^xar9_l-6y)m8)rK|JHb&s=!_0Z86*tr_6vz1oab(xLK-nrv5ag90+DRLIqOAhj7 zecM7^V-$ARLxcnpD?9wj9@Z&)NitW5Uut&t^M=knjXnPC!{_y>YcfybX5HLh;I~-! z4xUztEh?jw4jpAm(JoL#?6&yXcG!Zc6-WsV+8gHceGrt&jrHQJP`R=mUcl39PLd#*PrF%cAXVV{APCBXpBaO^nL$&>Y zWea~*kA0TvN^*(@O8(2KY%@csq0$3NTI^ZY`AK8FxalCWecjaIFSomZaI&;HO|>{u zDCDL4mc*Yo+>)C%f-NOwkbTaVwAE!GoVEF~N*^NPN{+`c1+%83T zin`8lpQLiCP!FzV9Nx^6GIk z_YIW)kXFHJU9nRyZu0bw0w+ebvvMS!^%-m2SUNqh#!qA)U5nGBef-U=C9=~~R1ylQ zj4jdoqOM7)wbRkJGKy*E4+r>vpt*bPhxH~3rfr&k=}wKv8usC(TcC1rCUiv^?dY|_ z%)`n2)4jz4-s@#xv?6!z%?28S&!@PJZPiqsb+PH-tTcYgB6i9+y8g3ymCs!Df$;fb z;>pP$x616a*L*_bF+iECyjChajVsMn4kTZW%nFm1JhL7z=##BvZe|2cRKwlBFI;#+ zb}uzm)W6lFvZXkt-m+}9GH|A@H5kOhn;%tKMeAhX?5g!eEB(2JUc#(Y4_hR2SH+%y zjC%qa+JS23zs1D7uDQiGKIJ&rxS2EI-pURRfiy}10$&iq&J&`oBO=FN%UA6b`KXb!fFeG!hB zHQ03L=4RFCx`91eOh=Z7dG9@v9aHntjQH@)3q~rNc1Y0}R5cv^eTC1zW%2?qO$!Eh z=RagKnLn!+=N~d!E3YTXf9c%JiALutk4@UQQ#;-1SI1Qqq2tB=K{HY1eTKA&bCl7} zA+>gDo-3h0((BpGoA0-OE(u~{i5S{~g;1ztyS#ea`j{d7@m8CTVMz|(ZRJ)p>i9vV zf$AOnAZZeuqi^Gwb&54JT->KM>y>-oaphpXKlwoSWXv zH)DF$+HGM;QOs;UJK=0HV8ABx^MfxPkHgK&TNV+193Xdqy2SiHjJEJ_k}4^J#1Ilgm$-m{g2VvQ-Q6+3d)mOcjzE0_P)&Em11Xq8JXZeipatGjU_w#Ok zrS_YHkA!zeD6Xvx22PJ&^84b<4T=WKtBlGHeJ-N^$WUW2VhK1JT!hoYTSYra(XUsA zZdk2!;CQw7F}pwFJQ_Jdm)MFEFtu-o!igG3p)+=Q$0gN--4oL}hb??`6XEf=)9U|< zNm8^xYtET)cK}$96l; zlaV9o&y-c0*;O5cUvcvoE^LHtM9+4yM1<^HJXGeHW13N?x+b62Do4Y#hrQ;}mFYz% z>j}Dl-n2wcD(iksHGoaBw-Z}K%>z^B% z(lX`oMN~wng_t}6iGGzxzOvfUyF#T=$+;RqKREXqZU?Pe&zuFdw~3DdgEy>y+5cD0 z4(pW&>jgA^?t57qfu*I!z8dwzJo$1FX&!1*LYsQNS>FdHShCPoXgiJeL1#$fV~>fo zNcXfYnBr9$yu5-zlSr5zd@Hx@;t}+Po0qFu0{(FWU_kIG+M=%xDXuJF5eFn-M@axL zgwz~wf*G$eu7I~h7q zXi^;A6?AVOLW>PZjBX)TX>jWCkGJhO(!znk3uGo<2-6g<<~rE8qK?crur5p-2>6kJ z&FHS8s>da-M6HUx&tMe~JjqWK47xCGM|QA$za#yLcR0+G~{$L_J^dD>V z7=`&z%Cyo?tMj3HXPqLZ6fU|tkeOzZW0j`tfa127Mb!xk772~B&N0=_9|VKatzV{P z@hRU+Cqkw`dHki@mv{V=(l>}&ONvyuBFkvlt7}>==(u-GIH+&4p<&O^LsdO=Da0rf zJPQD;3LHQI_G3_63j}ux97!+r0f>Q^4Is$pt}pOMbx9yysRLSjpe~LB)d4IC@+)B^ ziUEisR zTGu2mRQgT#tVhnku$8uI@4zMYdgJ$?CBZ&HaxT!Q2b!lC7Jd&_h^s+-_o0S1ri*V+o)(u?r;P_q zqw)JsGRX_TTZUQ691`1G#dL6-UY~(08`n~2!7Z3s&!w`KTbmX-Jvl|qXAOei%cUm1 zN)KEs-~ZtkZV-dHcALk_0^H6#9Ia8PKGg%QBoUZdp*@R61AwUx2ZD$6fBmJ+$+xHlZ7cQP58iuzK%B&suk)Zol2klcf>AUG_fHg^g zL2bz+inK8_gf#PL_huxJ9^gt46EphlS&3f6?7og<$SvjG0sg=DHLp zC9aS^&@(emB2PHQn3@KaHEA7DZKhP_j;JmtajvMfV|xc^ba3W+DL5CFNvO5dsgY80 z3%(IqWc-}E?u{?c)BTiV;q~tS?xICXIl^sq=Y{U_uT3jq2wny2hky`>BNto+f`dU# z3&Es-JT|*w*5A+X0wC1@@|J#3L74`qrBHRn*?C_+UL6%57kds`8J0GWP(YR&@|j2o!R!D%C1#);ff zJ}rlFQn(zVGludr7BbfWHeiMr9SAYwtIq*G7<<6HdkrCaGV;)XTfFG)zx{_ z&|q|4+nT4RU97h7P#$&m`F4CCmFHzcZx5|9e7&_^WoOZ)e%AGChlxdagV^IhsZ@B( zXfdVo_F9b6>8LNaXpJALxwUwXox{h|Z6r|(H(cWR$zOTgD~_n8<8rnN8dmtRBZyD5 z5|7U%U>pWOW&;q|3jpZ}vYv>k1o#arwT5<5AE1l>Tew_g0xD>-AqN=4BK~OV4)DK9 z4sM0|W!P#^{o<+nz6ta8#neTPh|2BYx-Y90dwXV)ze1O1PT|HB4Qz2~9kB^|$W9m> zdWj6C^#+-7W#6lbJ}p+~11|Tv(Pr%`{{PF;rVnBe)LT<9R6J&VFj&iGq&^)mUsmzu zo;^r<2ke22=nhQ&tt&HIVp76K=soj$Y}7swAV$PsDE>lcZl7(s+)K|Rn0alOX9IG^ zF1m9~H44=>gPj({`Fx!%0(^1!JYB{`#d}rSa;cE$sCING1rivGxxkeE0I*v;ST7xT zlcg3Q<%-BXZQHF0Ayx9?YYj@9=C?}`$*Ld{Q8XL`L%Yz?Kz$INhDL-J$+I;>&}4)z zgd#qg;sHaPAln49Ct>iL@Y4bU#BP?Z_Z8p~p)Mc5hS>c;Z-dLi5h`HRiI*G!evElc z2F;{QY>KSzIWA#~fWiG>JbWNv{cyb-3ooEb@eQ2QuJ6z+!LF=u#l8_boqPSbwj?=w z`PT4UQo&f}{m$5!hZfX8ZCzwGuq9Fz1j&t-U#%AV7gY?;($3uXlvjjWT@Vf+}lJ$l?;P64^kvW`a;7< z_bmXNH%xz_f*D|hgV_KeSO5~0h-e#_N#-E@wL4*rITOmuqikGNCQ@3`+7VfteQNVi z+)ev~d!S`7RL@P?!P;`!2>x%!X_MhtZovV{OVUV_cM$vO7T<-ZBU({k`D_JC)0|hY z{L~0OQYYq`UWH5^$XVG7Zl2T2y(kg}L>x4vw7YqSfI>R~ct2!-*rg6Y9Pfc?Y6$#O z6LMF8X{`cQ9-WPqCbblCi=JmUybiq&F)LI9+!wXtCE2k~lW5wE86M+qLJk-lqKCG2a{|p(-3Kbf)>~+s`4* zX>|dVHBY%z*LSZ_*YWwn0g)~m!^CwQM3g3-%@d)9h4lmQQsunJI3Vr; zXA2^o_kn97_C8WgKqe0$xJD*cP_hFknmte*T9-4&ib=ik^DCJoE5E4urf`s+9+=c~ zmVi529{HVKdVWq$POA{0O+jSch#>(O!0$u%046gU;02@rymaJah^ZynXB)=Uu%VfhL0?D73Wo)wpX+FyEhrs$U+9+vGfiKrq@|9nvc8KNW~XTFM(C>Zi1<#VHkjFK>OqE9QXqn zo#~th!{uRmi7Yf23G!bSKfhy_yRG|KTX0M=Z|C1dB{T6^{ng6V-9{@n#;drKwJqDf zq_w@vZ(T3h8PDND!Dss4^wbBJ6+5-?)L_q_Aou861n`sK_2n8DtRIWx)D^^)tl1P{ zCYMMh{A~7M-`$wGOhXw%2 zX+h$YpbhlDkR|{}A5cVTuRuo`n~?)M7X}oqkU8^ok>9&>r!O05Jxn=RGxVHC4R`J` z-7GFB6hhI$KA3Z^M~r%0L#x5&uguqol)}>oWcKMpG;8KJ*Pd=kKOj;{p!9B3=95(H z-ah@p;P8b`F0~}!DOO{uP-bNtg$w~T3iAU3=n;(9tYALq7rwW6RFpFH1tFP%6hQ#y zd{9?#1w1WEdyzCb&^EQ=t#Q$7tqFxY?Ll&> z0j%1p-G_OCw#L1Qib4YM36S-^6LYek=GdgzlPE=;xd^R~097#7!3Bh1h(Hrut$@K- z-~FwvK+l;6;|On2(+Jc__8PuQi-OuB1!h4NDwzi5k7y7%IKjJ97c!vC;39Fw^{m`k zhr4MwM(3`#&lLJ0oo9C%zO1XC_D4e5tCXC4Gbj=rxg=tyWLEQCVaAJ5tK(AFC`=fk zb%e|nsaCxMIkc$k{bJkpGI(?ZQ}rU$5PE=c;zuYW+@c_C-{zV0lCy6F`usn{q^MlxDn6|UQjjv zvPUkp!OpBIC~yGoI0k_Vgj$19Vnubi<}w@qakJ)vRb zdH@<;<}j?@5OOkujs?D{8>*QYOsFTMBJ)SJf4t91=JWoUULTO#C0ZJunoCa!`EW)D zDp-|VclUUzd=se27VtT8sVLq_qeW^@dAw`;#{)Xz@xpsuCL1qfbbKQsQnqaSpmyIRS z;ez_;1JT4|x2|m8PIEn`xi;lkrd8q#8akFwx;IlJKD>a;Tkoa^C-Z4nP7f^It|zV% zM~)Xba5lS8rX$^z-oXHG-YV zxbt}{oKRU%L4bkkS8d*#tD*|V9*@KM0qPC5>rnh6(5iq-iK1d$fT%|SP#B_B0O*JX zZ@>-Xu`s3Q#|G3XYB0@hpW{;tOfTad1sX~pWfkF|g^3=+A2|?>iS!nxj3}zyd7<}5 z#~2P;{0fJI47r^De%dnqH%2~*jbFytDng||hQ;daVS;DR*q<@Z3%*GQZ;LCQ-L^iA z4PSb_mwR+|(U8{iGO1v)J?XB0VQ~N8Aof&otK-z?9Y_*_O&aC~VX_tPHky1pHLApr z8bvK7pvchbXda|AGJc3S77Zi$A@UTM8d3L~gB&6O5PAsB3B<{lSJ6-tDttMC7%R#u zP=EoaaRhu*6L5bV*Z11=jI)x;W~JLt#; z086tSZ=;Ghl%8cw#C%-jpQUKj?`F5#5pel^lE-;l2Ld$d$UW1Y{fzV@>U?LJY<7R<<-o^A1!nuLuV(gus3 zZu8g}(oN`O#SRN1!`5YzPhFx+4c9K39`kZPxbyFHwP!(=zZ5hC}>~@_~x9@4D zx?+os;ps;mG1sXJhQW*+IVH74g4sWHis9`OCJo+&wmeNN1ascXB|BH29Z(8L$@uA$ z6Yz&=ReLU0t#hqL#dF9a^{Ph10PaLyoR}(4oHU09@3?0;L5c2UlXRga)rwg$w?Z)zg2UfkD=HtE+GcJtLRX`uR+C^I1Mav1q6Xbezl{uJC|W zNXm364dGt8?soS4z)YqjYke+8g-MyXe*^$81 zK5=f!{q&@RE}yr}_`I;xulml&|%CS>&`rr{LBg@|IGex7f7?=aACkm6sler{sh8E6Y*7 z?l7cr`$=%e6F)}F7+Chupml1OB|9j}7>S-Ys848Z&inVH#*ygS%R z+0e(6(yKjZ1DT{qg$*iCD}Sx8>oKJ-f}!k_#epbL^d~R+5VaWhzzLt8Zs;&gNYELjAI=Noj?v z5lIJY*G{-)inYgFFF%!AL#8FP)vCzAGBJ#Ij-oZBUWFdJaG0(yw2P;B?vqbz@UDDI zg%@ti1ywY2T-)+u1?|pEGEO|a4|hcH^Pvv~lbt5~D?7Nmd&=8(J!Cq)fg$J3Noyd- z5g#E+ed+)G*t!AvK-r2;8gZA>J-O`#642mNe4P4;G46Ro3K*k6sEV#c$unH}-9>jf=Ej?a@0 z{_NdP(|EsI?ilR2lReMnd>QEP5-k|GI`4SUk`|vjJP;_Fx?LLP5+U=_JHk+HN6HC9 zH5W!15BR%X6K-(A(A8!220F@O-1^-z=V)>=)!TAx!3=>-32+_y!{hKH|D>SV)~o#w zZi7w12Yaz^D0WZW%2bC}+RwUg5EnJFuWgK8GVE-NO4YhWrlqq^54s=fCFYLS_$hWK zJ#cznCR6=(tQ9@{GSxr5qrcQAr*?c_rus;^zk!zp*FJAm3%QRtaiRj=JFjavnU#rqw?XNJbe|dpGOb$Y!gupM;!{ zAfCadl=fZEdV>~9d%1;t2}E|y%aYEIKl8CCXrp%_vb0BoSG<3Rq0^%Hzx$Y-`my>R zw1HwS2}uXr(n7AbE^cm%Yh#hE{fr0oi80O;{^S$=ZpiVLJu%Kyml~~SfK3;?U+CmS zTV5Y4xmcxjvG#f(lTGWrU-uiwP2I{B>Y_4|@vRR?*~e`w(@s;r_tKJkIj7CkBMn}& zQEtPO5b$nHL?_l;0bG??s(+~0J)p(M0=+CdM2xNm%F?s_F2N2 zvU`)O3xo3OkFnX0JVYK7T>Dug?SsX1iGh6+sv|~wbAH<){ySiYmV7h5B(wChD(irG zwL!-^ZnxeaZJZl%f54{T@HfPIXknjKR{lOBf96YHnLnU~#h)*cJCgXxd)oujx6%!j z&&jX&*#Ftg%JP4lDT?u4$d-;;a8PWrB%2O?`nz8t`kvXFK>KM{<4n=HEF1ad*Ly#C!`>NOz%V z3LOpl*C<~?MtRBgNm1rd@jD+A(vWi#`R(2xU@~4W)3|X?P*xw1O4>s*Hd<|AnNM<6 zSKwhWTL_Qm)wxy@Aq@G-JbjYY&$^kcuvlmtEGzx;w`+aGgYJ2+RD`(lId?~eK2|s! zrdIsWI*qfAs$n9!K0BDH-eR=3ik>0&z)lA2YL5lgr6XTbRD36Rf6mD>nW=g^I(3Qt zv6RTf$@RhC2DF1}K>Iz;ZPcyzo3#*Li}EYoaXfDeN+z!AU_EgZn#ERvn}dH~j^1-{ z+~FlotpTZb-X$IMd-U!^E^?H%rMq*K))jX@Ai-|OOJ7O;_r_168xO8pT9JGk<*31H z`ZbI%23!eA4L?bwZ;m7-1uZPo2htCyexf0?KoAxrltr}tsg!oQD(3pc4Baa{uawdLkZ9IPB7^^n`*FYl-lNTniSsJ|?-SFCPE7u72(*;_{2^G~Q_vcA2Hqpj z^>CZFPvnN~5M#cFM?t6-y#I=y*V&fU4&6ZubX@w*+HNJEfbSpCT6vbF;+Lmm93eXP z?@~WUb~FYepSmK)M)1dErS~Q)+2}Yu+E!JgGyP>;^)+{OTauS#3hXPtfVKJu;8h4{ z`~NyJdEixUgI8%L9F|%CU#}8Ey=y#V5b>NQ?nwt7Cc>!82sf^A{b8QMm0R+ei$)F;erVS106{A*2PrbL+IYIJ?)I2SnI%N|2!B9*Fa<(wuomYipK9?%{vKx$#0U zct2V0_;(SWghk~{^#z{@9-}XHw3)v?+x00r?4S!fXvf{0+VMXYDr?uI<>MzBHtFQL z0nwzMP+9n-ThthA?1~2OCv6$Yz1g)f*GU=_x4l)gv?TIEp-a~P9Gz`w2Qp$K&~e`w zdhRhY??T;z9beN_HBJyvjbr${S;JBhCF@&5Zw(V8b15$IkS)h)>3#wtwq7^ary{f*LMm~4&a%|5w zV_0wvTBQwzGTj4pSNF>+U0?KU-_^(7^Sq4<*~yl|y_2faSHgcEoCX`}4)+(EG;W=A zKK|Nc!sV$9ByFyj(%~JQ+?(ftpKy+;aVd+rZe3Nlm!p!tzm+i0=YS0|%nA4^vgCGy z+qus`BZ+fcBb?tj>mxYnTJ2{w=NMPIW5qQ`ul+wSS~Ermr% zLF;5X?v|o*`0#7mGe-=aR=pt_8^7un-b{SLYaTZwrqA&3>W+W%n3R8S`!4n4{lMoM zeCwpykSP5#_d7Lg;$U)S;PQ`1niG=G4JcbY3F8uuR+Z8B;plB)ox?&mMxXyA=(n0blElt@)8x-M9F}&wkP=Rpd0SS&w9H&#P z%u7d&1^M*AJd60GgXg<$&DO!Y^Dv-EA*)KtkeWtR#0TDMkp7WrIo;m48& zaZPMr2>da*qK0)y>Al(%l7B$mte0mHND4Q)}#W>p2nQwD8H{ zvEy}JF!q9ubq>UEk0Iw&k;jg*5Xx4FCln@SPJUTc#`*qx1W7MzZuzPs{QF)OL=^<+ zjNxd1xjKCx(T_0d!9C6aEcQW$%+r81nXnk*#B?1~!bQ#5$+r@&ylUa11k6(7FGnr& zUT=>vySGW18zCDBcbaYl?_YlI#47hIa$CsRe%3;s@9%}Jcjq( zvE+Jf<{>tF1k6JetL|ap_3YXx~dM^CGk-1N6MHjpLCxh z{V+3-3IXa9v%tkx0JS7Rd95wNh0@EqhiMmv!fP_2l-aqaFQ?EqteQ>DT^O$HZskl^ z-1tcV)0;wJ9@WD36;M5H`$CjUB*Zt6rLf*z-oXhc@d3%NZ4KLh@HK{zGm?AcB^#Rj z27Cm07e{C$jK{#rU4^Qn5@>7Yi~?iFD6kPILbntYm9N3hLFIHbm4IfeSZZ{)xXPpI zI8fl7Lc=*J@Je5ea{xmV0>nYHodm!j&~I9J!+I2g$K;u}yKqQI(CaL9vH|o)nFC)SafsjRlM!KB~!huM^*WggFl#rt|7#BgqWt$Y%n0o zdi6Wxp~43}pM=Bb?;`bXq$dRv7Ci8Lx1d&;3oJxc56%-BIJNBh1F_Q5wTSqxiZ?3` zrXCSxg`DU-9%zk*9_`tUag+m|BWviSu`DK~5pyFzFc0K}uLB!|aB?|RdgH1b^`78C zq79fHj!EYNbfWUKIA}m1ws1t$JzFE5GW-Z*E?YMsX0qDOe*s&&mSRgy67D0b^pJHm z%Wp4b>g7!4+7K9ONZ3e=Yr8Vv>D>0};m_^_LsJ8OT5~1(;n0p-rIIbHpG6_%b^Q>R zOnlw;sP`3G*KnXJL=!rQDhOWkiFP166lOene) zvPYY{2pAe@cXDp{!T_(ysEP_O*Q1L3Bj<=qX5nBYg|r^lN+Qk^1{N0Wm^I~vSKd(6 zRyHoeI95HDXC*OGo*Lw8RWyTrAl!cOL~d2QKjl%oQib-Vn|Us8Qd|f6U4&?MphR&% z*S~_&^DaKSDkij^j44{rk|ExecFPHGN#5v4j?);Zn3;V!>9NK2J18BoOAm%xc~kZr z9Yio8KvwYH{v-h~$FM*C6nw-}=glmF^+RnJm~lc4|IB3=G-pGE5{WOVidGoGYK{&D zS$Q~YKn9|cEjOH2XYF$e2!T|!tOHS(0s8t}fHi~3E;2%V!9I3c>UIYWhq-C@9j;#j z3?^`&_p-JSKDYA)>EO4a#M?FZ^ju&7PeP(=3vn=|1bj4EnFn^8$(Xl zpG9vD(AO=pW~xswMBqP7C_&cb`sJeOsh`_W&WI_VsOG3}zFNML~Ar=uQP`Okubj$%9tkQ5|*_)Gm`~@X=fM3Kc?kdh2(^?9^ zYcAP-PHVWgv_`9^32)C-O3GKD>jnxTmAG3n@VfCuJc%a#8@%{n`j6}H=lVBNAqJRl z*tM;UrD@z>L4ci64mXovi_drQi479pun-t=2&6o@sww*ihK%H({6Nf0YhtF(9>zkG zKfhpnCL|nq8AD)tSm(Wt#-78nFxQ+G=4$AnA<7&$R zOrt9dTxIOifZ3R~nB0rOG7K7UTTK_4kX|UcbHyoYP^%(Rse>KtJZvQ@GHXjZH`lgG zX^|#B>@c96eL%7g7BB6KJ2Jp{Bz|e1zX>U-!K89&g$7=Z1h2kVEg(n}fQVcgupdPr ztZaj(x}dd}c3K8R)N6rKvCl>pRtUCCUAxwBLQtW;U_Cb3OCT> zLS*Bwf_Tv~7{!a2J+v(nl&9_0Lfp>-kJ`SMGm6mtnGlD4BFDJQi^x?OF33uLytphjw2 zgcEl_4y(&6(`2u&OqlD8MF12NOgVYK>z9!(=~!Xgn1QP3%95aNp86U~Ne- zbiw$}e{Y547;4htRpbv4Z;W@bvJjg;XYtJYSA?r;*V$IC+l8Ny6KX2BLy}sM*WtAN zvR{LDAn_TNA1WN}#xz}v$ zY-~gDcR_53;Rtp9kaAr>Kmhn&e|KtKAu{oem8sIolR;&_FbMISFH1uV@!C+0@03*p7k5L)B1bd98BoZq7a@!0 zG*k=P&*y}5k)1dds6CySEwy^Lop``>`D?p5P!&UrgxZH7i~-I=bRLum!>p=>Q233g z{*YW_xFNhN97yUR{|MkAhY?_;s)cUn`*@|;krF!oxwen;epH4o2+g3uj|WscVW10B zOh6x?6SMGK?0Y5N&?g%G^&r&u6dfH#P4mZqWy-J_S4R|; z>+9<%2)ba|_w~r|muc>B`&X^|6rNJbuYX51+I>IbrfzxX?TuF54_ci^k3@PFksZ z?+^N{oq{?iqkp%8o3Tj1x%Wx3y5X@<^v`=II&~||XK6mWpSaF$X)RZ#%&v?p(P{Xj&CM~`aUT|-6;uvjaQ#vp26h-%|Nz<_#a zVU{@o0&KGN8}HtyA-Sa?;@MkZDVzT9rECy!1tRDy^bP1#1DFscL@gP{ACNRTP@$4; zc?-XTNoZBH4dpIRUq{dfamv(FOH0cJ2!})=q(;~tqLU@PYc7{RhF~c2c79 zB$P!ldys&o*I9;jCgFWZN7#_yjzGeQ>=`gl@elz6jBTFlgGg?_*!0ArRV5e=IDAqC^ zumG>dY42^B{=QdxoQL!8QiG0Hi{~5<)bQl*?tGAs@@Ows8jmQWI$$0R3kj@YKvff|`(>eH(0T z9gr@yd#m2J5b(?GH_U<}9$W;0_J%`eUX}J7l;BEzat`baq-NB9)Qnm-#(5oznyw!px_Fli*c>W6 z4_uqFrskLp8}%D8DJ9TCHmetqQD-~ z=1onaFkQ;1NX_^4_FRH&#}*A<=nrz=Mw$PD$7QF0Cr3!>WSo(B0=1Ve#BcR;l)IVq zS;aH2%Ng26aMsFCMB6b+&ga&th)jKnt^AqY_8TS;iWVm z56YAJM$5~=IUab6GCo5-NTFVaDueNhkGOn~NW+$)@Xa*@dP%+eT)I!DZN2sYL7Lc= za6P{}4stuqMWE6ou&P>(2RjN~VP6p~1XnSqK~N)O;MKr%yw*{WqS1)FNauAws`+zo;6(?ISSW?7s}aQ%8jOQ;-u!7EZau_% z%I6MfiSOaCkkdTgxjRW_!Ofh#JooQT&+=0NKHyYzza?uNO5ZZ6^6iaQ?9$4c?=S}5 z0L8e(xn(62QshStp0VgF)MBKdb5KOY{u}79Elw&zKOyJ9*W+&St%2+P>CmA?RY42r zj43epR2OKhE6$scoYE(h{#!f8Uqbs|V5oR+MBG#gFZH2$*1l_@YA-jXL6_FFR(Y9A z{1E}5Vz@cA4PTdg0iG2J@+0MYztXpGd~bk#QQe;(iVnTId|i0fdf_cS#gU5u%!%r$ z?#HG~X;CvQ=2qCBgcIH;>$c`--PQ8*4IZ)C-f+x?pCv>=tZXdTjr!bwyYSyPL-%hQdY@mGa<;M4Ld+MU!A zx5PZHxZMkAI6(hoP@LE^_7LzYdjT>84MuTSR&Ysacs4dSAkN+Z3X*NRWgd{; zq_4+EKIec|r1ws7!?>%h5r$BBx0j^JyM(+B^^&mGMHm)W%D6bsU@*T4>CNLy75svm zr=oi2=oyLkCaW!kVY-j;_cpYH_cOC9X+}Fu%6}qLu6|$;AKMbV|1(#RVSI<7JT_?F zHkBHyj{fdfk)J>XUSS(loeWpoY5!ED9u!#YuF#p}6NUg}aBg1q&HAdjk_$%v6S;>k zTW5XWG#~pD|Euq874a!NCZuiRj!|v5c&L#cy5&e=WO0~Ovdu!$3SBx?JV&fZTcbv( zO~+z2U6WN#DlAIBwu-y5c^ns|uS7kmEgTMTQtw3N`FOG}e@ZO=OT%Q+!L}kGfNGD? z2NzH4!BPmGUaK06_UkF43yRR&;bY4SiJio)7p%*^)}_(4G|FvKeZh@kuZvj)z!BU}85q?cRDSNgtY0%Y+02*c_6jzPT6*+Ce34;ep|G_gto@vP#5=f*q^ZPBJa9gn2drW1%QKovp93JG?|y&9Q=k!3ocY=Ji5~@Q|Jpormj8gywA`O z7lyjiA7GKFFg)rblvCS9zH2;p69n%AL`mcs5h5SgTz2RS4F4eVF)(t0pVO?ex=?m# z+-bwK;!Tk!%Ac3cE?)i20G(mTuS!&SD!xPSpR_m+6n^N6bVMDU9dDosQWHTS(p;L1 z0$2nU!qMg3bt;Vh=PXXc1PsDv(bxO5L%U}GdSSDQr_g8wE#Xm=%*(EiQ%cXd!F6cx zq8->=0MM_^565`ZK=Y+|%Z^6J=#l~r6A}PKD~0DqkRP?aPWj{_-FSS1a+*s8fPy)U zaa%vaQ4)J|2RdChc&MGOC#{>nywg?;8DMMwZF6xW!~_1kz85O)5&^;#|8;_K^E_yQ zrQ%L#f-*Psqq#O}bf6qk2wRN^;SCsMz-2+30m7c$0CH3xn0J8u3Q&e_zk6JG2GlTm z*H6h*SZ-}>0h?AL8HaOS?@pD%coyxKg07@z{XlFtvw$>>* zle{N!S<0@}*^=XjF8o?d&zi#n(lbvM=gPj-F-p6Nr^trb^378XUwgmgxn&3{zb;75K%28U zP($+9Eei@m9i-TzQuE?9_Md=XYx|K$-5FiXl#@O5R@H(4MXS10x!f;P&YH(|2_TLT zR&DJG;eoB`Eq>AQW(h(~{Fw@<30u`yw`O2d!F4ke=p~@FrNR+v{se?E$e?QhobGbN z!^7qIHBbVr=lsL-ACECQLe6-wO-bZA3z@+2NT~&1_nlbR;HN_LLCGmalt)mM5B04>yV^_2-+Cb zPmQK0yIBt=0obpFuv~E;0kOSB@9MUATb|0cRWNG(IE&E_Xm`NJ}mz`uD1|p=R zP(H7R=G;7#8L2u)koYC*xU4Bd;fKtd)fNSH6{ec^TLcjxz*XPCOK}B7mI#?Vbg_)8qwo|fP!uN352 zsf#QH^X5-z=#Z)j8b8l8ghW5GOUx z=i~c4L>EmplJ2b52!9&*KyXRSHxVanTrz8g1kW8B6cGfM(+$kEM%u*48{-d1fVEFp zk|6VwH_?6Go&V`2t>QFc(ODpLSV8gS01-~458CE7DBdT&VMAd#-ra)zEN z)(?r)$FG6dlr=XOS1mE6(7wU?!2bPg(iIgIhCxsUB?s-5_>LkPrld@&*BZDJqHFd?0D&T8A|vx+;Vp~T3k7CH zuOf87Be{#3x2^ucR<&EWaj9g1Y&-vOyd49^edep|g#YIPioJcNTjowDVzD zI}RG~2!((e&Zx0lT3RZNd)vCcCGIdKVh2VUKh<=Q`SxsT(m|BfBHSie3Z zwyqlZl@w*(gK)~*q4RCk$N$D8-Pwz~189wFe_PwzIU%alrG~&GH-3&*F$NfXHH}42 zof>$tdRW9J@#?i}NH9`$CG{w%;Q@#JD2%q^pd*g@UTCTm1U2G8T$WurL8r($W^qU4 z3e|yeI<4a?0w`KjdlklndNr$1a>5f;ldTST&=!E8ik?uyn}1t9UGW_Uhyau?4giX~ z>g?o!IH})edwr7cu>SAuRiA01AzkA|qdj|z&(fkw!Xy8v zZ$%j{%ORQSko@zUDKuV&8VF4GB)UqJ?skxHDG+N^;=#6m{AO5>c7l&_1WK~0r3WZ2 zRq}I2KjC%NXFSv?3lSX`jKPSK@{>A8i$~Nv#uRg8rl}stwYMH-)1{I1fe|vjycjK5 zPQ+*n6pUduEyg$7YG7C}CNwnk+&u7h+=oIrnp#JY2c%KQ-K1g0oR3?9;WTasPE5i+ z6iU*9^Hu!F32ECegcrt9zF}CE6K+8{dv(%mDdxMgtfG;oR=@Nu6q~L0<287*4Q(YC zvNP1vw)Ved7QXUUCYC68KP5KPtkH>f@|-LJp`W7Oaipn~tZakOVCV;s&l&=?kviTi ziWB=Z3@UPoh-e^HLa>~o^VFF}=!^}I#8fHstBSY zN$X%}5#0?c|5s{S&`NwqaBDnHx?_vs>5NW&K}z3oT2p&JYS8TH13COs_eR}>YRX)L zN8JW~z;Acpqtstz>xN8c7$9YrE_>5!-v$;I+`fcS zgi|K;hG3u$P4yw=CuR5@m<~MM%8-OSj{?akR0@TEw+o0E%6I;-6#1o&x0VEkNUCL8(@xnpTnbBMJDDa@fqg!@Ju zFY3UnDks>z{U!@zajgXnRO7azkcB^jgnHokdm+%TfskuT3rbT^2X0Jep;Slo#5 za^vTLN}zXc0kwoGBRqH1WqnJ6ZAGu#-!zq6m5GAjC_^6V9 zoVv=}2%SCbs_yOGnO_rtZMpe7!b%8Tt`s0H9{!uc`qo4}7WhwI!}=40Q>y zGnvkl@i8?HHvr!h;PU7}POAZ*%QYGimvnMZb&))jzP<0#R34~{BA$>hx~kS$*c%TP z{WXG50WMJsUwD-@$Dts)c-vjQR-!eOqvUA%IV+r7EFqi!0|Y;PqvY}f{So&B8|jIf-N z`n+#>S<>|8l-*pj9sH^C){1t{(cqSmRHII)!~7MDTRx~=UL93b{h|E#PdNuvgxoTR zVba7!;1=}yFBb(b2m;EDyJI8Rq#csV{mw)q^+fony<(P3IHFv2xh@76Fll0;BU;y-Q3hqnGW+{`t`q z-9wp*rQL~L39Q%|2|8A16^?^_Et%&_-C)31LOL{ynMeBz`Q&`B z^bDP+ibbQgd=g}@ne9!|MQ)+xMU!Y#z~#Q&wmlw9F>2hY7ub_PqYVwsgQnTAx5$J7 zT!D*Opk8?E?Kw$Sr@7aeW}V3}v>ygAuUx<z|POv>5fuRE_CAEB+# zS>a13zFVKp-HPwJdUf)qPnhakmXzJhF@Hbl4`*SFnN(0*@qXt$V&&l}lkw2PkIncq z<<>}BOzPIB6fL=ak)f2?q11nVEaodV^utVG*t8;mlVjLn?JsLmAAeG<0;z#9)2jCg z?Wr#xEFbMwji87(#zP(3aMVF*?i!wB-RalhqTsh!)6_+oaHP|9PZ74l0&dQQE14vr0TmP@i=jDaVG%GA*{`O?M+sphin}@LZ7ns zEM4+tGhAgK%IZ4K$1x)c`yGD7Q(9x@GM?&N-n|hHBp5xW$5^kqguw#*{wcQ$Nq@9k z#HR@+CD5gC-Vsm>NLB$DR3OMh1PTaj2vJ2GxIqLqM9u4mFk7r*904#*Wk4<3FO0_g)n-R5BIpFZCBsZ%@y@JtDbhI zLPdizf3SbxAPm!F{rK-;&>ytu7&xu{rMg$(*BERAQ^eb2^Y8^#hdw~ytqx=Q3k?Sj z91w6?c_>|n1lb^C!xLOk7xtGh9q>+UC;@_tT^icyNWWxdaWVzD5LiO8%NcFLO$o*r znv68^%v#i()z_VXB4(lP^!!^#7YI$&&~%fNdq23qD=0SCgjV(UPiU5qXVa(IN4x(y zdK_@{$j5wEusG7D@Yomp_{JRr0p=SxTt2onh)dzagdiA2I;^r zA|H()$tX%Mx7%K*tMyf~ztLsa;g5ISi1dVWCi5jdoG~%|4c9NEWE2Tv?VO>9LV6z@ zoX00Bc5$wmnXa%6Z|bz{mo)Mt_3?=lPwxx9Hhcd+hK=kwoB6K%em0Q)3gnCRZMFUy zK|JHHeV}&p)w>FRK38@q>l#xE+*CYJO910yBY>6Y|5C8&K)Tc)Kq2Q^lcv=xZ9w>Z zn3zpWudaj44ZV%~fNC=gf`6k0OH9_48?v?R zd7>mJN2qUTZG(O4}Az#9n}@;ZUtO}AUO zI^;5M?u>{#iI}9_%>6dMc5$)M(%%fxz~I9s4ZtLZS>rl5u$*#1Kp*!<+U{ z0n@ycA1y5{lu!Vqv1#hvkB$1SZF_}6fAzqooW#yv zNjR5PL;Pm4w5QWZPEO8k^+Flv$&(+jt8+ZE$7Qk8tR?OGZA9P?|F<2Pn1+svR_;SZ1qI)k*;x|gp_WZlRoi%= zCJAgY8n%yVRn8~^?k6JTD$1|M4mkfG;@&)->V175UYe8!wM$WkiYQ|!nKiSFB}3*) z2qBbtYS3uNl6fkb$0W08q!5{sAu3a3C`1U)^=6;*-RJi^ujhIGcm}U?c5R!r*5~ti zzwh^bU)ObC_exo9Z>>ffq5OUK({q-PoyG5TimykNTmC)L;etOTlw?S4vssJ)l?(=~;5UMY3yEPwOTI-cO?|rf$BUIa zsKh`7a+k2~cz^raBb(SP&u40#T{LF-!@0b8Cj330=9x4L(qf71KUM=~mIW4|%;bnnm2f2UGy-RsxKaRIix1*s>X!}n0q%KX9;FtC5O zmln6hI{(10?@bf@F!C8Ds234jV+8o4K{5}5$N?aH+5_4AU~{%S4TWi}JiGJZJDY^G z;8}wXj_S?gg)O~#ZGIJ_cO-fSMgK%t95TGozw%!vlvZX-#=zpGxR~hDHRlGy+2oC~ z{Qfgx{NHb1NR9Gc$-yV}V^AOApb|DNOM*_Pzb^g`(N_xS#P1O+e`q0mw;Rk8)+lTq26;rI8$X_IRf&Q!KmQKt1>f&B@seqK7jyeENQHdD4N| z&cq@%x<;RWD;L}uaW=ewO3rCC)F5m^*sbSpwf5h8n{q*XUXu8)e?_sVLpZ&Ee0|O) zY|B5so|%#Q>mOfUH3aGV=T{6tBLDd%dk4JsKfl~I0^RuM*Kg9_yzmXfQ_rs~B?}iW zq8PNA5U46i^_LkBMLciwTi6uGQvdxKlDf%gTTE|7VMU0-w~(tZNZYU$SZ&+w1rp_-pECaOWAJOW&Tm%!|%YuG&d_A)y zLay#?{>s6>d7BH(0MfXqIR3Tw@1L~k-oee?@*&-)qGaNgtHzIwbGA|xiw|rz`B9W- zwx_BxjG=CUC7VI{@86;CnErkwUb?&>9%w{I_(d|lQn6{_`FpWx-%T;`5w?~Ww~p`N zAM-X&PXAY3ko~^|v2R)P-x2oXCiZ$8Hf+%NB8h!OLn}m^;&4b4tJ@0WT@)uq*xvkL z_i6sISN~sYDk&cNe=aJnn<*nO20CHVNEWc5Y^Su7R^<7w{Q{a{t-YE(Vr~oneu?E@ z3(8A31poyt4hea3Qc_aeB{ZU(|GuyQp85UH?~`$?c$dFb+`Am3nE135NGh)r_;*5B zyzGBolNT<^1SjI^%V{#?%XR~Jha@Tx?Rs#8eH8AuP~3cG`uApOID-jH_e^w%-4}%M zeaUF*>kGHc2;d?*UVy44=&PFl>=t|Horvf<&gcYl-3ke||G&Dayx-w!)Bvm0h38DB zpk^9n#>Q^{HPC#540t|yGPH6Ro#XD{MP3u9s+LiPpNFnCdik$C`D~>d9Jc4Zx-m%` zHf71!3WXRad=Zvvm>KnP&}reG=KSxQRPJxF-og(6Tt4yd3tsrv|Lf6V;cfmIrksM% zV}rJ6K=1i%-T82BvxHA6nVk+7FKEM&C1A94Q)UdB`)E6q&bKN@OX~nchNd=m3g1BI zBm5P$Ih*MktW^Fp9~c?PO*x~Ie_^iz>9EK+x!;YUz1{Ke9S<~P=kGa+_4N| z1r94pt)oYe<_y*|KLmJa@#5MFIJ$>m8tn#V<|I%N-*Cj%ld0`i{@ttbWFx=X9zg}P z7YtqC+=bNTGnd$99HLLiAocqI&3wZ5j3U*+5nKuz%$!Y}3tg2mA(0a~Dzs`;>BYThyZk zAjQhF-DlyX8x;fCV9QPRpI%z_dP+e%uuoun5gVlc)9ZyuiM4wcM~adl3g{4 zI-Jkgr|7}4U6@X;MWx;Xo^f)BUYxi}ik<&>AETY~@2=UexqIVcuZb-nX|&Q#9v`Z~ zWPmn5$0`h|OGDy$?#l~rYx(4L|Gu6CNV$nF8;jlQlBcI9;kA zg2s_aI+1yF;xuAQOB*9bjew)xqs1@>T`w4KP>#W};W%fh>c}Z8sT5YBvNMPcExvpT z&wFr^A`FuJjw>03b*^iwpw8pNO2Pc-=ODY1q^B5Tmt)gm_~5|t11(s(H)K!3$S6GO?D-xI#u7$Gs+9Ya!oDO=fR0Stu`1 zSRl2!WBURn23^u>;(uq=UaSLaU^wO7>%Hv}&(WYA2T?My)JCqKe(l;4j5bKcLLzo? zzi^*iKHzk`jGuN6jrH6NXl;H&o?6R8{SZaW0jh!2J5PK--_ z>N@cO=u8TZo|L^^%aPJ@qK6u<2ELT4t#9j1KK1+e$KaMq#r`+}d%Cbe#qwz+%EYY> zCx-?sicz+vfYoaKFoO|~7hf}JlfG<{4Pe%uVE*St$fK)r+aGvxaGCej#pkvMrzF`> zEH;&WP1yyLL+rT*45q4a{z($quCA_!)^VILt8hnK zf&C>6e;}tM+AT=j*eGP^*3gNXzEQMB`XQNGE-9&t2i*TL>mi|K)6&u&S~K47VRcar zL+(YeEVKz8$9N1p=UyElknd!q2h4$E(a4Rd3`uA>m^a4_>|#W=w!QK(sdlLJr8hsI ztph(mZai8WqDe1Ft5}e;QEah0M+P1)MCgT6 zOiWBWDj(kq2(WFCWuMw-jyr@$6pDSm0U0Qg`|l7v2s#!)-cb3NUj+vU0tT_6ZG3E^ zge-zEl0lN~7>S5#!krAc2f@n3#+FXlsE)Z=$AUR_@jp+ai0LAU?x58wpT=*q5Q646 zg0!Tg@s-dysCEg8i#6yPEH5w52d2C3xt^B3(--flKch7S4PL`0c@AhE$ty^QXm@2u zDy}HVW1zTLnu??UqLpdce^oKkL;!BQ)@a@`q)%VC^ z($J>c2g0opCe;ry9zYRB)nC@h{m4wg;y#CCoOEoU3v~n9afpNjZF%(-L43au#6qT> z3JMB{d%=ecgH(k1ltVYxphg(s_r!-KQ>=sT-6M;RIHzM95rw=voS=ytw2XF!kDs3w z8A22mmW=Y552YMW)J63iHcqeb*C+Lz%a{$&dNl=TZ(e7iuB_}s&`IRgYUpM@;oS<8 z&4Z*{3C6ZefBhAUwzBT7E+;!dwBrH9whoIVLqZ7Oi^oDj3NG|-Z&6aOV7Z<{{t^AF zDNX0$fvd}Q2?(fQQvvr6M4vn91}A+=q@qbsi!tQxSSeI|AMV4NG>uXZcW{Qv1m9h@ zhBb*N+9~!$C#vcYtfDyl!V!SHN2Bg0#Jis;kJIPai!|DG9qAk)qhAjvfXtTkkMol;}L`A~^)Gn_T^T`Q)PSzS8 zKG}AQ7Wv7}n4p4_{GOKm#Hv*c?(#`6kB=_hL2U75XU0yr4391T~(mVnS?8bbfv>^yA^ttjk&_= zRi)Au{UtCIg7Ymp*ayVxUFor{cwCEt6?6^{+hD}y=VS!7w+bSF>NAE8B?m3+Knn|g z1jQ!-XK@cTeEXg*oIr{A>QxcJPDS}~k$x)gPt{}a{ZPG6L!k2>x z{O3|_+KZcsIlxgGNlNrgJ>@sM@~Kbd@$TOJe(ZZw%^%!}XcK_=yV1Xkcf->;-->hM zrGf~S7q_r*Ev)i|qD?R(K6+4~Qlz%Fwgd^#T*%I6{cyNpB9{v zs?D?MuoKm8$h#dK_;8RB@*Dn)mXqW~wotjZZ+}55l4zH{0^3ukP8IYP;_wr}2zb2n z=gaiU=*%>0MwB_r{&&J4}^=sFj;tGSRt!=}mOi91pS-}T6e6jkv=z&jlY85P z#=24d$~SLzBc$^=N*VjfvWE;!{}6t|Y@Ct*m4Wjuc}%%!&CSg{uwdCoQ-*M`;!{j% zY3Yj9tM?KT&`ig}qr_~LG_5Y0e%Z2cCBcGMVzTJ6ZH*SbgoH15P;riZYI-^Xt1T2~ zLCxd3S?!C(cv2*BJW7)Q3-k`8m2@S^j!wY5obzoPdiwBtHCZz=Gb%_n28SK`j9*AW z0MwmQ6;VX1LSj+L-$9Vyv!g!(2W|tBEYGe%{ljkNGQ1zffQJ8_+qad0S}5ZgH6uJE z8aBzs{VPAq3T5=^%L+s_1hA9jnVr}0x5b}>k$16B6L4ncGUg1!T?Uu$I#ghii|_mP zUcE_nu)2R|*NqW*toM!Ba+~)gRXy$u+seesdfoxjO4G>`YBDBVVK|psxW$81@6yf! z(lZz;!HTlr3L{#;wr*rxqO>XyI>xD@2N-^M_`D9{xTB<~C>`h@?b4qtQpqT@Pxg=g z1d`m{v?`>}Cx=SV)Gu$W6HHZBe$t5b<;M9|A2W-BD#XFNalU<3ULHY4W$4HvljVH- zym&Fpq+IeqKbD&?O&Ld~)%t@SzSm$hJo=6l@6rOwSb$xY8 zLOGvQzgF;NVl2tYNB64)I7mpR){(ifn4!_6{Qlva>S{8Od=H8%0t=E}ZWgo12V^uB z4aY{Jg?llkn2~9RCjBT_pAxTcv?}5p3({$aDi7IIy7CN?&-ZY~xu2geZh-8oTej!N zmzO)Js9Pj51}GLBWnU{`26Pp+)TGb{8eCE}a;V0aaRU9WO6mozRCQ8+BSXbbGsh`Q zThqQdXN+|kg?6$=83uVM(QwCf(QY21Im;L0IPQP_x62=va8s|uwun=Q_}=w8~$IuRq(Q16@+t>oy|lqR8YwD zjnrTFX2pB*_%&jmoES=tQYB(|07T#u;%1n`IFL5s-xgwy4eu$w`1AN+j=ArUT$+9!7EdS-OOlfU@>PnJO zY8?um(|QgSyAsLCPkO)6jmd_>r#*WB+GM!iV;St-G``$pvU?L5)qvQZc_FHQijt&p zByb%mi$FW<;Nh{v-mw5a5uZDa0lHjNSP4j?rMc3eoSBn4g}daxSIkTIW>&t1VvQpL zehTnLyQW=;9vV2akUi{Ri@bkUN2{Q92-C#so@eEPts*E2($o#>);++GJ565Wz9r2g zb_(hjFFqk9K0-9^C6$zDup}}2OaDl#riReWmJu=`4@pyZMmDmV8e6&xA3kOo?{yyO zQcTyYE%;Jfwyy8pwFyjTr_~q{ACm zS_h|s%CjRA6PY8OvEvZ<`RR}YO#cH$>`);i)dDB%u`>%n8mm(;#%<&lc3G-S;y%C$ zsTTf3GtMS{VLvh#UPm#}frXUF&yl~Zc0mTTfT8f0t$+Yx+5JKie89F~9$&1g)Zi15 z%DLgWSv4|N5=pVi^f3?EJ;5&IhTz_0)O!$xW)W!&@@j%c5x1EQ>(@W@@}i(3APFU| zu5l_~eoG*}Drbtc+k*~s?ZPCjy63jV#Wvv_yh1{mBM0ajTzp<@+JAmVM-7s~BkdFC zqr%4F-Ej^c6sL7rzY6vkJ4>v2hoLfGC-sgO`fB{l0x4N%JdNzhKRkUbpVF{~DQb(B z18YEqXJ<j3RyJH?A3($yui$zXM2fv6Cgg7Iym{kgw3yVe*Z@nLs8DVn3(0CEgaF zY zMVir+{4WfXoY0T8#hJ(Cu|7d?;Ru$B&SDN)phy2B$a?i_xhN&Z#lzFgv425^NpYW@DfOZ=TT^%S#9kT*^N+3Hige!Kb|Ik>f#rDe!E*V`{P z`(40B$*B)e?NSOdEXkBEotrI+yBZQErLU^$S1mOxjded?5aRaf@RjU1UQZy|{w(36 z#Iz+Wrp{Bpr@PzP0ztdnc|*>o1#~vhSa?nBJj3{(IIIeJ(u5TR3h_n1R;};aXUwZ{ z$%TX4LoQO*rjK=Mnnv=?h+R6u;bPPLI9@q@%z=uMif_WgSye@hm(7te1g$7+QVt3! zEgetmqA_PKt0mK6>HYCD{27IHdLcu2trvU^!TXMew0}@dX$uNgjB@&V3lW5kV zXDgpSDOWu&-!HCn11M?auNWC%LezHGSpusS=RzJGJ`;ra28VvcXdUDiJ!- zfl8Ak_*7ndqv|VH7Wpy@AFK=!(k7f4ZU*1BZ4WjFx-ya)$R!dejj?ip9KCveoGME+{)RHh3>4r+M+tBtq$iL(8mcXbN^JzqbPjF;{*(qO22zwKOVu225 z@N#;!SV8p$A|Iv*ypFU!fJKRjy_GdJYOoSh1(t3yd-R@J*P8%ZoFh)Ho7xlhbr^vY z6cb~VU^q1~3JNeOSFbh5uaN{*L^(s#$uynpCzefu1S12C)Ho8FWDvU5+YZ3LBJIh= zzB-1c6__D~;~IJCb~P)&T?GBa1vWgCX9W0BlbwdBi76=ajWh6aL?6^Kc;(p*Fk48? zKS`g`|Ild8%hG^xllWX~Oqmb5NZ0+i`chIe5YaXnTnvC>hbvvn??7^K5m{64TP*`bQKD~X9hAmk-ER^@MMH(D6&)`;VFE)W-L2L|D#Sex z*L%Lw5zZgP+!EZa%_jTz9+H4jwPc^iEhw;j5EPbU+?LZ~;$44Vpco!lQsNz#C-m%s1xrU=DM1uiN%p21#mQArDj z*?Bob0)lgl=uEgjZZ;mn;qX0X?oT2{sOSplFopyNCjf|TacCUG z!fdi{C-sJQtMRYl4kIEf#PSv_8W3sir~n&eK5wU~XI)~NMO;TXxCy3NF=FWw)1 zWM1?0pNCrb9?w}6Y)eob<0{Y_1VJqewFltCL<6WD6<9#X7;EE%R6*c)2iwh4{FNd% zO06Qp!p!H+rGypdMzz`VVDgc@1$yITML4a8|>V)T$JLrnk zBbpV^k1*oBC~AFFaH6OdYaYKO0E2=EaDbqpPq2RS<+4YULImJxa!bgqQB$RwA_gSn z=YP!oM5Ok6hf2mO#l|2fWf-aB?=%<{=UoZjT{&GjX^JDu?U~JW)>6QTZW~|EhhG%&2w&s$*-WpbMC46`}>yz&LY86 zL7k$4wg2uGPxLvf( zMO*11b|SyqGykf8{q;4ux2H#|u!fS7fSTA%dZ${SL^rt``et}!3CIkN(teJPiUPQ$ zNg&CSHf}^lWPxJhd@C0ZkG43{igRr;b<=;zw>lyrXMuT^*)%HD2oQhako>$peE6_a zKXL@upvUYg<~1DfBqfgk1}gK|1(t-2zjLcqUQlyJ?C9r1Y`cu0_D%Fhr^Eacz)=xh z&WifwZB0#{)k}%oVPwL*doXy{9>FI91W%3EBLJ_hlw&~Mh~p{gbt3No;>+f!KfBd@ z0QZcy;nL_y%z%g~b%>pVYVhaomHAqy<`#R1wd<3ZmmNMMn*WW_+7-|781j+HAl=fj zLx1pofni~N$(uHA42R10T_lvZ+}zw{OX%q%0J}z@B`%zJ^Hq5O6R|=dJ_DLsnqz=f zb`6T12y~XTiQ1xz*3T5uh6H4RFBrR#T~#5Box^mqQ&{TC`udR)c%bjlo;vOgLtNjY=U+aDt38N?JLyFSpVqR;o~^9 z$K1Mkb2lR39=HPE-o?+)pDo+_vE-#l!WB!+MNB8bxf8tHMdv zbwT|-|4n9!g+Ca}bAbNC!AA9dnAb{K7?yg>Ani~mV`EVi+DonJU;h7yZp4Je*r#>d zzoaMge?D9BZ{g6w_y2E-(JmO^EK5+0N+DzDK@c4S%83e96Xh~-2b`Lx>XpL=q0fh( zBDZqreSnf+RaLR|Ef6kADd7%>K0#KMLG5G5?&D-@ug}H?BV>3a=uyA)CY??8T$gjL^AemA;crZaWAjaS%wG|{#ILm z)JZ5-yXCbR^yUK`GE{Yp-Xu^18GarYx07hSNGBg@t3Z-8ay}0<0kH|DK^cRxfY6v= z<93p+TLP*PC#}c)sn`8e97t0J;hg}?svtK5R+5e_mIIoZ-~{jjeE`zzCFc+)3T6yb zuY+V@2Ng_MdL6w(37J-jQ_~=93X9l(>T;&=Q9|zlRuQ5SKR3dW!`Y75VS{0(7NOuF3A{*dUg@Py}iGT7f(AOniei`rvOBbL!}*ua2}ZK;}=ztF~a2 zCLTs2GA|3%fc>=(Z=mRY2r=>V!6d_5Tc|rPkfLb$$oV~ zm;FAhnFQ2hP}I-tU0+Qvtg69CWHa;YJcZu)$h$L;o)CxDfU|&(%`j=Tl79{Wt1p+a z&PI3HWh6BHE!p15p?!B`U9gF>^`r>!EvQoD;U`Pr6eP!KU0r8u3bEca5t|4Wl$5j+ zK&3KtID*+VfZX7M0TG!34Iy8KsOXTc-M)3J7BjIEalRI`NdqEmB7O+CX?)`1Cy|2@ zff*@g2->7r4h~w1N}s890q5OLbR=lyf4YC*Di?JN_E}x0=Bo(T$dHgkZ6kM0&en@ae)xd=3PDURJlLsFTu@rxi4UxC{CEKF<(eZ$k7~7gRCZR%m_{aT>AcqU zNk*34hslR2C%(LWx0aK=r@y?4-+KAZcQprKTf~(NrUY8)o!OcAph}WX-3351Q}!ip zp3j>X*8DU20_g)Q8xPY0&KkP?JOYm8!iyCopW)uKr$Ir4WUN@*!ZmRBMB`z zxKU@VU}Vg!%QA53i$6*$=ub&adGe`fxC9F)KR=(>N_(Bn&`;bV@Ha@%HXHj)!uzud z$g6d= zdz95=P$ga*ZvUhpLKG>W>T(1+P%`wjx3idZZMb=td$SsfHCbMELK5z35-(KGclRq;S3in4LHGJ>SF9!c_NHa z)N!z-TViPLPp=#|_ITCkUr1HkAvk_0YiROY*Pn%_zg_&akK;tXG+Be~AB=67`LJZW zlYKj1)jCbv@5b?f^#pjGuuR;1e3gV1Ek>9eY zn^Upl+0*V|y$XK5nd|3{RDwLgvVbo~vzCziVr?23{a$%~0w4ejm0MD>MT-MdjRVfQ zzRY_Jiv85|)^b!=;J`RKV^# z0uqo2Lb7I`#~D!`8GkQxEY$WzhM@2IGABp>%9kf?*BZa>uyFN%dOGb#4_-)&?9aiP z11Q3r2eQhgwYw$95^$MGrCUJ&OM{L`S7{PNvUl^&%b zcYD;x=)QO#dV|`^SFczhOshhwCY=M(=m!N6=r)Cs1!zk8VFQGL35kH@B?7UCtdZx? zf+5wwAsz}k3;Zsy3QdD_a zs3QPez!zhrVSKp5h7h&*s)7#5M6V;6QS@mRR({ouFp|`Dl?>*#Rv4He7sj*l@!_9P zWYzp)DI<2>Hde!cg~#XT5PQgttgkjcO!ST8?5;0Qet9<|pk~F&<5w0Da}~J?DH*p= zO(Cr129le79>;QYYpTJ8=S$@Wub%kd_DhB9;&G>tkdn)-D54qi_-3AQOGq?p8Rb|6 zNkF|6#ZLsEP1F9+`%+^f5G(16)OU`K$5#!Ah`;ysk*(9{~Y4lp=6MfdP3l|>EkFW=k7PIN?Y}@Ze07QwdIqQY9 z4^y>q+683p((z>}-}sG? zi$7jIf=W85D5h>-BeZ(zrp-82$G~_ud*H?hQ6WbgYd}hsI{iamn=SLpZS22P;4ri} z6be=VO)r!2(tj%$r=V~7K0q(4{#wQw z{a*-x+*Hz;Q+YlQ^@KZ4e_C92wPfW9A`Y*5u4fxO8HTEpi*)Kn>*Bm%lYHFr<)qO| zc{>>IAeBS%W+#{CiQJWo3OK;jTf6_q4ss0;S1nva`N=PUuqQOfSR+BH(AJcgR(>~z z;J=sQV!Za31AiB}^QTl21}HyhA*~xzkaLm|0U!J2=Kf^M{{9TY6P;=@zqAdVkC5g8 zln_?mfx%cH78K%0M$>Fcp8kZBe~8+HPeMWm!pZDjy|yxDV$DJz zWRQPo4N2+#X|eLZuEr@=edxJp^EDfBc-Q6zbF(Oj_QN1x z2}9M&`4)SrBTX+a^LzWundG8-fv zy5ynQBLEH55Cqb#>697&Xw1};$zU@i+_|Ll@GhHSVdEo+rp9UFCEY$uo}=TlE-%Gx z_q5NlN<&B)-TjZ#YE=K)jT;e2GN<0CTv$tp!oM3f-54jd_UE|b9umnZ4qaumV;%!= zh$TQ8G7KO)C`1hnTH~9}95^OT)Z^%YNI{W8Ov(WmfP7KMsSmNEw)waB4@}t6#@sR5 zu|OH81azjZPHE{>Cu$}Fm&zdC6Y((8p9fGA&Uc*Pdne2?f^GMd*L9%R9~EkFbJK&4 zj~NOff(B1KW?YDGPq>t0268nXR2dd{8={IH+<2tq%75GI#?EU<$R%}^(94A?2f}{;-EH(?7q&z5msk_4jxG z&sqc*e&nA`K=a@E|Gro8|IZKd+jHQPqsE4&j%7d0`kwNATS5@hv z_KqJ5+Mr2M|NM$|yF&*6MprpXl8M245tezkrJxhzLZ)Po zpgY;?;Dh~uvPKH|4zqkc`A!Pw=;ebCo&mL&Jy#UdA~7*Ca^>IyuaFRJL&xqwns(>+ z6Hpw{dmp6Rw=b`FhyjK7I`^}7lAb+1JIGIGdXOHSUU7$WEk$(zjBp5a{^ z7q@S)?lau}PChzC$FO0i7XZy~@zpqeVi9zgGcdfsq50TA z4dX-pEES#c4+vPt%EtDkukRL^e%zshLNnEjaa*3HwXf}Z5;BX~WTRWEdu5}lL;%Dvp^;eP9y{M>A6p-1ub2+e=GNen#lGS%Gv#|8JMfu;k zbG5Wo4s`l;^mx5!Y1s_Q;DW8~0puv3dwXvnvC{v@M?0yb^97~)A!X%Nz{J9uK5dJ2 z^CAmk^B>3q6%-Vn;X|A@H&4!UiRU?sezdd@q3ZGR@e2+P*R!)l)6&z|F)?`qfqCBA zx&_?bE1dfFZOgjbaHmC-=YXGHfP{dtA)=-gu=$tH&cHs7`l!grV;TAq`GtiZp?=4s zJ0*Cg#=g0z@Q{1h7N9q3Mnk&*U0GRKsEn%^Qu8rGId^d&v_F3Sd~55a;Zhfwg!je* zjh1%4g2si1KvvH+Wv~I%)EtrX_`{4`jC}4d!^8eXj>8tK;PS|(LAiXZb0})Thd;2fSoCXAypWrp20ChCf`?cO9LI-EY9qkA8#iv0(+}-k z*H;fN=q`yQnX zfl=ITUdP3}dGl9bz~4TkZ&@s89}pD81Q`4Vjzd{4`NI-rlwI3nCw@;&ZQr|>38{rQ zhDx@7AMPlXqnyI@8JEn~4<9xHWKEZ*`||BTE1gDH!x%J5dF}$`5Uor-SH3I>ZY&nkz>c!0w}x&h2x74AH*^Xl@Cjd^}O41zP*^`nP(~AlkRCOWikv3 z-2kfu1qCJZzF-sKUVeoPTplZ+dl26Z6*XG}JZ<&X!Mz?xl-~73-xZ9rFGjycvHP@` zzw4pHF(S(l%i=k&J%iAljsnd5-JUrloL8a!dI(L&qeqXte0^8*YNg$TEPyP!&6Ntj zqQz|&F|tbo?5jsz<@?9RD%1J|Z_vkLXHhiZtu!+;!^*k8|MH@9jVVkZ{ZlU0^+AdX z>SqN6%GVf}c%R{3BJ}PwDBOcJlQ5zE8r0y+w{KUFm=B`#x-;a!j96(OKYn!EV??88 zWM8#^+HxG?Yj1E1d(7*W>`=V-#@1CwCKDOVReVP5Khn{cRlU!q{l0RT2%f+>l-;^) zNM}x#xJkhOmVt+dXHsSW6u}FSlp=%nTC(!U-tdzw8MzSckdwgs;ANm|&P4|w+^vyE zJ7}c*RDj{-6>(43h-N$18Wq?rMN)qF=hxS#O-+}%y1F{KxST-`t3_qL<@Y(TEbozV zZs65eo{*5RQ|B=kq#OR~-$Ty5-b zVd2ZTb&A3Kw~+UqhK~Ox%rTC;BFmKr%8FN|C@Cp5BpqK20JhP&c^LhYu@IMDxNyPC z+k2_Bv^3$JcLpi?PCk72Fbml)AguM!-CW1!abrh&@EvS(vybg$Nx_Hy!Qoqf?G_ci z8Xv#o_9h`eaHhu4nmYaYomFNh@zn4vcV<~gNXRBU%HrbUt=FERJLhkcQLm9}mhzrV2A6`0iaV+~|jAUfb7*lS%6F3|Jedk%-{7^|3Emw4ty@SJ1Je@4Ccyc6Z*k#LeCPc%mvBx#u{gvDRLq=UHUHQFW*svWuTU3SyyQ->H|&PhQ)^#2c4# z1|l8Z;Ts*pu6A}JJvA}@;d?D#R9COTZpJzJ?NiY{JW|q|ds+^vQy%}oG<_R8NuK+a zvT-3%!nF1q(RmavEIMOo`sZJnpP$?a+}Z~?so;abp&^@Eh!@xbDZw#7O&aOCnwGMM z4!z`W5(udF6~o~XH0O?8c|PyqTf9&f=A^A+6<^EF&c5^5eTuS*%JKXQrvW2MD2<*& zTJsWg3UV}tXKih)LqkL4V8_!4IbG29+kF!on=c4}hv4`hWn~5QE=$!&z5*$~#f-5qvCcv&AlOrab&eE2aAs+E*QUQXi!VISPUm3@VaOu*=(wZXx`FWTD; z5y5{o(tXwP<#${0kN2Sn=Cc8#RT#P|AcNjkkRb~3bGf;> zymRP&kq-dNsO11bpB+0VCnq-LRv#aqE-MlNu-`XNcMlE{4mMxWYM)8VFKQWLK zh1@jeu9_D3q^GCv-o5*7Wl>Sl9mMc+pX9CTCR`zV94RUBR7I||>z-n~w3e@r&$XPK zoJealf!p#g-}b7r-2X_tVo+BxGBn;_TbP+|LTzMV+>FHL7Op6@Ddgs*E@?`x#A8EF z4iTEy_yO|uuRskfy5sHlp<#S-^DefUu^IFtpSnJ%)Z2=u9U2~<;uefso|csc5mLqP zeS7x?$?4VAAPH@#=cP)#;Yf1%^@9Dm!QX^eSt>z zSx-w#OWUqD>vHU-@-xy5inMlQlDmYohH@An`D>&^BE{qEQVz-{11wv%tVFP$oKsO& zeuc!Qu_As>)qbRlI%#iWWtBeiDHaCaUr~banq=F}C%4;Y>MqUlW4&plYN=FPo;}Ou zX```o!x_ACtkci0y2IPJz(Q=Iyh84p-PSZ_zl0@cTfh*@lXvv`1$IX^2rLEIBK8i~F5aw=|A1~)fq`mT-vcT##om&eTj>4fH>+Yd+IV@9WpGW*%(%{AA6uqLB~Emzhwo`; zV`FO^I(`*iD!Bqdgy;S-Hg<1X@RL9Nk|l49>z_T_52(db<|qowzbJ=cy^_;Y%av%q zsBqxwT8S;3&Js4ZW8aPk*E{$tFUPA~1Z&p=X=OlzzgT z-sL?vOd%7nYa<|r@2`XyKFBD--24Uy1~hu~Pz7-#Bi{2NU`y#Rn&!Cl4GbE~E=(2V z`BYb;pKB?l7MVo4^Ua$gFG*&45zq}U76c39^QP!qQWFG=!2o=2=CA)QY+Q8{O)=zkJz75Ltj$-fIuOdj0wqWCC}vgcv9! zep_6s3E!(kVi5l25QJ?jx7E!ixsCRy)Iz017q_%P+Ii$~`gw=Nadq@=GsrVHkK%q+ z8jV4jnoJ80p;JHjXX5qD%$BDRs605f^BO|HO@IHI<6au7HQ%9UT0;5K)fFeQE*H4a z-$B(DkLIa$fLTJ*xeNMk3x-K$rxZo-}Pjpu;jlXC&O5zUjV-CX+>n???vmDWNT zE7a5hIp9y^;M)$jaJ@$U*tO*dvZMg?_h-4UT)FbJg#|CZ%grw9w)5KB?Xt3l{4lqv z3@dmeY=@De54(&mv~^~wGUlG;uy`;maodHg1YK!d z49f5;&O$p~923jetl5afWG(6I*%ea%-CJthirHW5X1m!%O>ab}2fr3+ktemxTOxUaMxS@9io zlvWJ#aC0-jk;J)pHS_NM=~f1reW210#~Bq?$6V^GJ2J~Tg*@^Iq*rUV56Y$@lYM~_ zV%FH^=yN5)MpCxokp^~`^o#EA$MYX)Q$!(m1f&b=%^zQ1uM~#Paa-oj!_S+f4@zWuyBqb$vZ=U^Ke7Tdj@f8I~UjCk`7q=Yy>#(e-0%XrH(x^ zU@9(o7(G%1lmUpXTD@uAx@{e;+DXR_P+G1QWBHM@nX(lKf8sB33tGJdox#L59%C+{ zUV*q9uk~^)c0e4y%|=Z@VJ*(%4YIPbk_Isy+V}U<(e1}!B&O6o#t-Ted4Z1ozIct8MD~yhd;S&)P+lYkqZtrb$-tobBW*dDv zc}D4O)-xr6v#MWvdbs^K=Q9Mo8)}9$^E3l&+)H2zym1+HYPDu54W=?$`7~t=?sT9|Er6NQ~ zh+ef=2-+Gf;L~T$Y&R@+3W%R2h5(ec=o3>{s(gD^p}?+t$=&e{!QA9nb5ri{tk{vc zI1VW_r{_<#j(z6dF<)NZSh?-6-=a7>7emZ==0pjP91OSe4meL+D9a^I9XR1thK}X# znTD~mw6zBZAXTH7U)HYcieB41$LhX{PQC7$B506C?p5B$o(iKU^hVjZXt>)J;Nz67 zc)_UC9HRaED3HmV&l$s#4bn6~-&|a9FWH_`(`p#po2#N)KX&*erpvPK*96!W^n^z( z`pv%TmMf)5oH&~@cin%FNEaFraR(@&1^?XCFU!fd+$#HeS!x}s(RaP{?yp4pOIB)n zpKq+4TRH%+E_rEGg3&v*RxWkW14}5v@EzlyP}2<}&^>Q!yq6}DjG&r}rgnBu-ybpb z&m8MLq&Hn>;kIVY8s5?fut`V4L`;@YvLMt>pGNPXJl%dkIa(&Js+oL5VJu;*!~%AD>y+hr;8#34AeR7MR@Li zm+iXf)74mvLSLxMVQ;!>hyl*KknivM58at!xQh-HTDd8T#3$8`CR{vCNBeA)k)UZS zDap;dTKG1-K%?^;XF>h^`?O%a(&4y{L(qWMTJdz)BWM;_?|Kt*b7$(R{U}%x)nXP= z07T#4TZ3Hjfd((ZBse%?&gXP?buFQwkkQGlP=f0P!=_D}Ae(yD-p=me;P4w$7Xt3x zTY|h47$86i<@l<3T)~!nJ763vipRo^`KXML2Lqnku znCRMCi#}-9mQY{=A@p+MO0PFQ#Y40kFJHMb&_8kQBE)}s$|@ESu5zocF$~nyIgK!pjn9?a+)Nq^v&QuALhJ6V*3(L&NzaU{lGK;-d^ad+u>X!D=Y8(1+V@a zZGv`#yjXiWfL&i*%yO+??mw->`ymVYpp}fMa?ydqhQF=G%5QrpibNu5VS>`+^WflWO1|?bHwm4IgKY)t zQ4IngD95{JW_1vhy-*F9lY)xM5#;*E&{F2>Ob}0yl$2+vGM{`1V#1B4cp>C&Md~7S zsl*0bd2^mx=x#bdW(rj5bD%eSdUk20F%wa&a5^Npl!lszf=>)8<2&(muDyAq5cR$C z?XQEII4XZvB)RuV%O5%N1$%L19Nl%DD8Vn-*}Zsl`sI^xTMT$&$z6SRrVwZ~XA_Ta z-UJy#U1D7<1ds*6PJA6WA=AD4L9;2^hX?S$|%ldIzTQTtKW#w^|F7v-ZZr z%0JD(KqzsavOzhV6!`T1{aOfS>XT*6*#&m&SV~s9g`)|9WU<0U{!n2?cXAxX)W^pr zD=DX-Khaw7zl_ewMgROz`;Mw< zmH87#H!DG|7%2y|@DSWL29-S<=;&c_&zYL96p|FgTRC8TLhX6BAK;GDAOQ-JQ)2^H{ZZ zoryQ79j}|;jJK;i78e&k_ihyHX)%T9vNyWL@g>g!#YW!z#%NVG^clLH4vdV9=one+ z&A_DI9338h8!+5rg(Be@M4_AyY)ni`Da#odwUyBRxEaWwH;l=);(237SsYOE=a8$e zD>+O04MN4NHY1I`iEZ-$xSw4M5Y8?td*7YOa#Nt-p&}*>WG*~xdsgwNM(%fV66e)O z@{FK)EqZN zzPaq~#^uDKCw&qZcMG=1Zzel>0eR4Gdzy&?cBB+QBl3cPZVzM+>wvFpu8)k0qN5=4 zHEdS?HZb6WhNWZ!U~ ze~#aOUwFwbrt9%DcNyff_Y@(bB&FSHD%|9q3Er6 zG&rEIEofB2A2SM4#oVe0l3a1ep~x18_FZVa#sCjDcfmGtCewv*7_&f@;sik z|KWKk-0|r2A?GT~a8a0m27ho>L~09+YCRz(az+Dd-ScxLu1B`}E1~!25m00T-(nSh z_*806noflq`(9m>dCA#ODU(2fZMH&DS7Jja}j!s z%TdFu`|GbOI81U*C4to<$+_{V7*MjLRUpfH@#4jVe;`N=i%`MjbOtIw+<8{8kv_=N zA41p#V4*>hyJKQ@f^K{4z$vc{>yAs-ZIVNBlxIVYcBAK}FyUi{YvUh!P0$s3dU}(g zaNPQgo8)3-{<^V|31a)Br%r7pP4j-6Pr0P{Y^V+rU#X#18dJd0kj?&8A&RrpqZw4{<{tXdsITH z#)3H062B`sXm_~8L`AWo=(`Qb;wyl<-%w`JQBa$oYe-t>GCpt%hpx%=uBDpfCE6Y z#NwHZoCu>u8VWsG%8y!NCC;B^KYscM8C3V;VAHHlY;Zslt*X|BdwH%cI_kUPl*icy z$G-4!S+bwhdlQ%Dut{0XG?niSAlqk5DP&UAV3-4#lIVNCi)$!202m;ri~A z=F_UPhn#!O0Fy-Jp2W?E`*CiXcX9!ab@hmH_4uCDKnaE zX-W47{dMd)|@oB4?R7<2j7Uj8Xcy#)HrZ8>O=tf8Y58#Nj9c;s zL}Hyac8YUFTOV5LT9f{)VumJUK6ZnH%YiQ+LgKX!xq(ggPhe%a|z?x+C=}% zkDS{T%WG@b?JqmPJ#|u;YbH=kJwl=zJQnsUQb$U4b@j(Q8x91wcpA@4{ZhyeQNY*7 zj45rMLxD-C@_ULqfGJ$YA@LbW#7#fHG8}V1|4iERpL|52>?v6$lo;3e08QSzI?ka5 z=}o1FQs$RwW+p*>W+Vtl4<1}Z7?m7mQ z(yEv%e?A^Qdh|tQBU@oX|JTp)K|K)0c&klLvwtLrpen}=tHE}9+-jgDXC?IX z`+;cR1;d2JX*~9=cBfHEaYgDPJC~>L$NTRfG(BYt1ct2MiUXuJd9dyGOt^u12XOaG zLq!o0dhHJ3WRcn_W0AU7_&PsHQ^exDd-s05V@Ko?-EYJn^t()8?hU??mF9vY;AW8x zl;dnC1ikcXzt}Wr$wFCKi7*go;9`7q5QDUuVJyg%TRSIve6&)73Hc6nfIQGPw56=v zI+!gW^G4F`_m9XSRljeK8J)K!j&1~>o$od&vW7#}2cpGgkR^JlC%*!3MtorJ2^wrh zidm%|Q#U90`&j86um6L+_m1ni|KI*!S=q8zlo@4arj)I$M8nKTHc>{=a@sSa%#u-( zB%^Xhk*z{xq-+%uqN$>O_eaLLuJ3ibu77^Ne}3=V?epP8@AvEddOe?yaU93vc!sXM zak1b{V>@hUU?WfURKp#xI8Vvbob%lAW$8yi7NcIqkAuHErq9XhY=gju!+p58^} zM|+(@{FUYE9-7!J%DJEx*Yu8B`$Sl9jfB}|6v6#jZCD>|tU4*pFUWhpRSdP~y#P}U zfY!s97{Nh5#;*gc=Rwwy%%w|`Z+&`eoE*PtzuLVScdr)tX+_Y`m|H$~@(oQr+rc!% zWr*MRn3*QokQ~iG@LRbRy3MF(?ALyxM&fhtlcAwkS%9LeLB?o+0tFqF&aGRw%q@4u zYESf7Yj|UO*TAXpf}&PI$**lXS!K_pIGBUGfZB{8RPHhVX*6l*BtR(j=1X#7112H7 zdr+Rt+tD#SWVmz|cM5LBo$|S$(J;67nUs1s4dr{a5PtMsihta{}`?k=3(?Jgs)<(vIwjySe45cS=lp1E-5Ml2ac= z0zazA53;vfQ1FperQZZxuL-S3ril%CcYk2vi}DS>cSs0mHFW3AY&Ue}b(!1SK4%_X zL3L)XI(6-O74i4#ju*c6o42~hL_?6Xnhl#KZo1QB>v9JR66$IXj~XMqd#+%HSKY`} z9i*h+?Aga6V?A4ITp{Nd=5+3}VO<*^sL?V?Qv=5X-8=#Uw8)*~PoLj3W9G~@$^l5; zByHb4C_E0C2abZ$xJpZ#_K|gS6lhJEO#L+WL_YUjNw^T*sKLzQy7u^#&dnLq z@190sB=7muXdizcxu60WDPA zQIa-d(OAS}0JU|zw9lvenIgT@XV0o`4gU}lUMUJa%HTOpvz|`R58Mm*UB-C%hPN1! zjLSChT}cIH8|35R6c(wgvwST6`z~vR_Hq^6|#W zRrcGO5A4Kd7n27i;kx}2gJn4tfi)6$=b>nsaBfkhXtx`t8h&$}ND$`Mt9MyjhNNxT zvgIpdmclldQBF*VXl`2gCI{Zk!`9jMK{4j9@MgZIfgj(-`^JUz_&$>3J3CCOU$#t{ z&^Pz@3MK(@zdEp20`5S*Iq0Yz)EUn`WnHR=NM;{_HB# z7~b2K*)Z3|)xNoKOuopqj&z<_aa+n4Uuz)VDK<7MDUa3l?8{xaa6xgWZ-3)BUr!%O zDK@=9jERPW&2y2$Q9ycGWi9*idUfpVR2eqgq~2inz0Bq=V@bxbv1YW4w;$&D#SetC z4!uy%Y*)m2+FEAFXAP^}@8-oC3BH+6zqtggr$nV!-hx0S`oV)b{VE0*wRX_}i|+>_ zXCGxZz|-i*vK+Lzk&42_9O?E|5);ktI!M*CXP1U2Z<}unF5?}wWjYLr8cbLj1yrUy zW$@1XsOVKR=at{alA1myzQ}YEjCL6XpyS||K_##`%UnKgZJjVDZ%fnO8_>DM>X?{3 zF`ACfZ%m|PXCc9cdH1Zz6nx_NXL@=e%1LM-d2f1RVxb5qO2q{%vUMmZeGOe6?C-v9 zrw?dAdse`9e_5!<5Usg~HvW^Gebis8Wy@)QhMofKQI1BQ@2zvpJg~WGIpzn)+r~_Z zfl^J2|9a!Xv9XqzgEj7xJbD$ANv%81g{_BPQ zr}u(9mBVkJSax&KEwHRvJ|AL^ZQ6glyksEt4a(P^f&O&<6wsv;Op&~b} zrUZ8-Z7Nbozq!?LbM|cc-YB#``8?DN$ZnY6e2cu*twM67bHS+UUGJqj6n@%&Z@0jgaDWXd zn8uEv2WyN3;q#|w`URH`=YPjCngF&6RYbD-ibbwl)b$Q6T>Jvj;cJn%JP+6erZQpg z;k)5eZ_zyGHd0yyt5x@NspscpK5KqAEsE6xLEc-odFOQ2%C5I3?O}Hh&xSfWI_4qP zO%#fN@;-64g9~4ZX-+RIt1a7&eXFE<1!jW8c6KfKz7$72oP!UTYd;L9r?IYnb-QZ~ zm58FE4u_ov(s4QE_MB(axA6Pu!-J}UK)iq2q2{*AqS>H|nnG)=tfOe0bGwIA)-;tq ziW*9ix;#Ve#d87I5sZwrNn)=dIc=+~lZ7AQK}T=@g#R0tjceeB<^wr~j?DqgiFd0(??6r-uj&d+4 zHwKbUQKN;sljRzad67vDMH8Rpwn{}><}cjvU|T9pE*kh@J)dg(H5*7j$}8@@>j^j> z!wX4z9g=#75aH`W{giQU0GTi(nN64Wr4TEMK))!b>_GxGC~9Y@n!G5c+!W0gGLssjzj=?!p$!*ou)l-)Nt31rJ7?Pcz zpSaAROQRs_-d!1_rZbM8U#{TaBBB z@~nkUNSxDy?$6=jR>5{En&9Nx;DYT|85c#N^6dz)t~n|0#l@xt1qGG(=E5g0EGc$z zTFzbU>HPI%n{lB>;T<0a1&rz-h)-(T*X?)K0-%p80wmpDRH08h%&~$$lD6Ys7zyPp zte9Ik7X#-kq}U-Uby;WHwhqfCMmT;sMA1@589;A$Ri3s>UVeUkx<*u3Bjym%pKf(q zDmLGz6Lilz+De`xA!Sa)@m z`t_6n93>$vz4@D!@~osC>$UV#JL0^*rS+5iWS)^347f@k3e9y?V6oYig!2`#PFiN_ zp4+O^TSBX1!Xl!SGVX1xPI&*x_Z_M2g;Li7@MIl=(xbO-L}mi`lyR5)Ah?oc$?C6} z*1gWVC6lGi_QYrBvKJpAsc*$k?GTX+Q=ZU5-g(1 zDJU4EBpZlfCcLq$6A!^Y2@EvQE6U;R7H8iVfWl72uesTmu~h?4y!m$U{l|~G*YLC+ zwc^d3-Ds`aZ#G{3XIw@!TBx=3z5p4+hpAiT122pL|(H_Nl%Y>s`) z>V2LS*5P{|qqt$GsTaIFHXbR6@J`5!kQ(J}D#x$4gc@zJ>Z@IGFa@W!!_v(7Tw{lU zv`RvUi+JQh2Uf;9a!;i$UAn0BS;VOk!IL6#i|!;Pjg`Y}y!DrkNXyid*diQmNDC~O z5*#C`wxK?`q}lp@0|xAw3fgsVxhQaybx;L;=j-JBIsqoHQ20eN@kFdC&k z6R^8msh%zqs3L9QBE(gtoas8Cu-L^qaKgN|=`j-{nqkYJ9_M`z>sXyQ`oNA|@S;;M zef^CTS2LsZ>hu$?H!hu8Tvnz0PrFCSp3M*WLPym{bHTzbm$+f8VNvEmOW$Sgo@%o$ zRYz)QuR)h(-g?fkk#Pn1~qktdw&B|nLY2#Kh$Ym!)x?G zMmchSRp%F=;HA2|MBb=puU?f&tzO}5wBRq^sj25qL-%^QCbOYF?j+0rz-V6SE`+&i z$Du`^_zn=c7KJA=c}|PYmzFKtiqm!7Xd0UxvkX3#)x_$Yn`qBaGuYqV9RAXuNzR-3 z`#Vm$aLe8(SDxUw=u!No#itcb$URQ$bMoyoxA$7?&|C9-A?tK%B&jtLtZ>v3jE?w;?PL5 zmCuV?uBW>!ZTqk{{@Mkv3?Lxrcm+&Tppy?B~vO~g~b^a0ixY5A{i+oZNyT094{J5vS{*12-s=k=! zq=CRJm|0(cH*$Pdx5Stj6LA|D_jXxAeBJhFou1dATJXwn1XHqTI(b;f97?4>&zop_AwRgl!r%90q4>m(@wt+==0JDe% zix&?>*t<$iW-HcIZ?XYLvRUoUquNxWp{=IOo$IZy|D{Cw0~GcZo0(fToJQ-zqe~5BRYn18Br0WS5`t|dzJypR{kbgnSmdBRM?~noe-ylt#3!RBZ6^GA@=mVH zkPUU({z2s=up~)S{t@z*jim7@aBQOUj{J~Q1U|Fi-Q8yGtRovBTNY`)S{ZbYSJ4@D z=G#<#g63+soi)GDLLhX1HP@Hc_D&OguNt5yWjFWW3|@<%dCpWi*1J zFcES?nak7*<}sI;Kt8?LSyy-J)rzuSM0me)Wm&?2S)}7aWx=lV{G9+Tj3_x2$|sm-{!m`OxvLJ3Ru}6y)z4_AbnL^+lgJW%6VN z?X^JJq8^7O>@sig-oY6O{#8Uoak0tGBfQZ|QWqw%bt!GivxXvFzc=bvQ9w@8r92CU z>GIk=9DjP6$%Lq7b*b$JGd-la${i*HS=bg7FO9KJc`&rZLD%;llpr1cL4HIg4FOqY zWPqk31@^7s^ZJb&HhcyDjmEFR5YIL%0OJeJpAWa%?RJcF)tDfu^o>PLt)$M~Kt;Au z2r<~7-QDKwd}Pl!?c)dsE%3-Hg!0!Qsz66qMH5c}WP?O;+}j;4&dw)gG$nX^eOOk& zPdwyR1uy5H#D$!QtwxE{qkH%3EJYO6r4xaVA2;Y%QD9+|UC~I|_vlbg9##btT_zU! zcDd7+j_6ZguSpBNk2Xu*v=;(`^2r9O3l4OR^KB#-EBTPtP+;Kh^;!J4vc7!&{J9T{ zXd7TSpFATXvO_|N>kjLs0Ux!H--OI#oTV1}L>UL2%rpYUhETe|cijZx$l7~nlkDZ5 z_Nf)&`QYx#HfYe`fOA2XY$eP~RC&;w)9h37pYcUH6ZZ+*YSh<)*D42CW(M&IG>^-#o#qoNA@{=&yC=AYw$xj zKI!8A8nsOfS6RrO{@Bl`xLOIw(M@EoXkf?J!n|3-WpDRs!Y6DiR{t(eM=hO(pPMih|X@UoeFc> z3Yk=^)sO?=@ymkutur(Nc21^Knfi5=YnP!jWSuKs-qJW z`KeaA*@Ow|68@3t9RR}S)-;b*6~@6&HV@-cIhM>lc*$67)Wg9)?)rcMp1X2-yR~jR zF0_qR*=Eh7K+pxqkxr{_| z$3B7_id?S(Pg+K!NcXE~g;2)Tq;n|^A?fLXmLqt^eAUP2mv)3@eERH})C?SiO&om1 z(O=x}gN93lkpAb({*qSMAD##`aGLU9Uivj_jUmtRM{Iu*gq-ZQ=)>ch5T$(=EaEc6r_$B2^wzaH7| zU;S$Mn!7)sK0M`C;>u|})i_mQg_oDb5nE*7D`~t%I7go?-&&Cphu&-;bu49j7iLY5 zd7|aG?5*dZD4QjKW`uZWv~50)z}Bog~F6k+0E$* zc~mQ+c=rl|j3A*rh^nBTwvy07yANd)X-4_zA^$&8AH| zsP^U{wrOKV3|S5;5ypX3C_%yiYB6rx#|c@}Ch zh3uEOTkCrsjv8TZb98nYws+C{wRM00TIiUXQP+>nu2nMr{+uki)8@rXk$jIEJ1;F^ z*YHUly6ovaylrov{6M3{V;4P3jr>%mW?Fv_)%ci<4$hwaBCBSft1`f|hF9*;+XnY% ztV^8GJhqx|VYgj6)za*I3)O$E@HDq`w@lOcD2laIH@L}Jw|4B_-KOLT(>lS&!|l`K zj&%IJuYY~X0U938O+*4-rR>Vki4XD`Mdm!Ye{qEAuEe+LS&a;Te~DkeiPbOY)hG7q z)pBrHstOrpl1HVjq^9%kyY#8tK!~`R+ChXRr(-tQxvMjd%HW#3mJQ+ zHIedR?8HA8^i7$QCkr2t?`W!Ee*btK@)&xd##SO%V`VZEJ4_&3m>_gt;p?lR8~`=f zo<(|LAiAu`nAq}R%Q#T3tRf@iv7T*rROv0V^8a`p@{Y|{8AXs>&5$O3ww-bAp!cbu zAZ1y{xPWHMmgSgGCIJ08M30ps)PV9Cgz^>TjeRneCpE9S5)A@lba(%MqL`Vbj6j6w z9}Hr)`w;51tdbkouF1SN5=n-Zx1P;>a#l>|ca@Y7#0P?K)oj?X60%j#_T%dTUkTxX zm;tEz5Af8ZVY|@CF_0j%8&vFqrAr6XEr9PSic}H;Ge>$i*R zuWO^R%)oJk_0m^|>%6wz?bN#Yp?2CCyY?nd{MzQr-k}2`UX8x^=FP5%s-v!D5Ba^| zC%);t$|d`oaabjOhHB&Vs21IF@4Ko|t~fwK zRz%1>X8iaoH;s)B4)=Xfd6e(UZ&{0)T5ZMkAiAz!*Ob|<2Y5C%%zZe_zDh_$>2K%E zcij`GX<-l|-zKN634RP@D%8W-7;y~n8_cE9E7IRMttrTQRvF)hf4sI+oO!*(TB}6^ zMgZN~Y2kygQLPL^`>0x1pbOy5%wTcULt0*w;^FVF!j^(uSKnff(?e8L@0Ev1@(cS_ z958rr3flxQ&@uZ>HM$!I^MDom3kUt*d;G z&r0h5_p6}Z4>kK=Pl(^Od7&HopJbi3^T#^V&2jwf9r>x>5r(3LG-GP>^6lI0t&$N* zR1otGH8mOjP94(NQ=fy6%#I9em;>X5mTlMB88e<57szDegMb>Hr#r~-Hsix}R;f8X z^Q!TNy>^r!fm}yq{xzN(^6>xpD!f|ifwCd;Qw5hbkx@}nhBH6?X0cV9CLKF=q-qGh zG#w3L!GXk0)B^_qK}0jkSeN0L^R@nVYt!5OuSyP%oN96ZG_DgjXsKS|#RBqJhwdGe z?JCuNmv#Z>+Mqj?5nNOOYdd-7On)ltmzkL%0Z~6MGO*62Aw7=mFsu#PAL>- zp7Eo12WRAT-it&P$=w#B!1tABZ(Du%{RGozGA|4@xo~IPGqw>O3c~nuXtB*G&$!1^ zDbXKCE$;!HSs4sJ%pO@KJl_>I8Q8Ftx)@ARnl!`jgaYvfwQ%mKIX@rw*l++boWY~x z;)Zt2g=!qqG579`Kss5ZJO(1UrC7fb{qjn1#?`u|(+#ETVG#%DuA^2Wpo!uKrp0XU)U6vBVhawLUPr0-#!-V$>;#!6`p)u|>y!?=GwWZo z#USy&85h^2_p&-P>V2rV7}VPU2y&44-P84(V|Z3!K|x6}?FY!IJ@3;nuasqqmk!;UFndk&wv>K|Vf}>I_B6qL z5qGFHZoH8-IhE2AUZ%O|PES1*ybK=sFaYtp2Z6OE&r(IpR-rgqfitIfKAsH%1Tq9G z^5;b#lcmU#BAi1U+#&d-gGze7mM~xgj6M^p9J3o>^*?A4rcfzAzUXEI`ex>5T+>VU z`Sa(}(6cn|GD#t598l^tHvMKQmxFwCQtZBol-M`;qJjW&dV+bYnKOVMB-ayDMjjp6 z458j@080rZa3w2IR0lq&+o;h7R#kHY19jOP02MIJq7Me*n~EY_v{wA#g5qyZ)bm0U zj>@>t5@T&2yT4&1OY|}&%3a!=s@cOSat3cv?~9c2E~j|YKu0Gg*2ll(3U|57ytjN+ zQ3#^y-UK#s5ag9g?3$_3_f<4OQDHvMI`6yZbZZzAf`!cUVEo$zxlpM{^49JZRO|u* zQ@z+fCy$Eu)Of^*L420Xs)z_oS}pWOk}kNwvc`=s5&*6tau+|{$4N;l3gefPXUtHA zhXsge##iRH+BZ&LxyL@kQ9MeN1s@)FMlUh$t&P{{zqxnC4wPF-HHHMK}JH*`_IWmcfxrogogng**{B;4iUdoS-q^XR$o!9SI8aWH(3LjY89x>PM z?D%=I;DI0}eJN`n#A5nc56XKWVOvGv+{Y@?ugmh_VM)?aG+VVQ&%zl%7Y-P4mnnjX zEriKKgxdza7PTP_;^?tA*hL<&%<6_^QQKmJ?Ysg(q755S`w6QPOm2uKI-mBA+TV|j z9vic-HX6mN9JGU=vs+jw^vN-w!*JWqobW6{LGE!H>>@`NkLp0QrcGB8 zJ`G30Ay%+u*+ZRl3p>tjNqdIG;N6q69Z^W@ek`G9Rr;i@Xgd6kuaSpTeW?T|H@9j5YT-?d zdyJS@Hvn^WO|BW>n~G!2xQq7Lj*^g-1q>z~Z*pAywNBpe&|`lOHK~e1HoZ#=QlonH zL2QI^5kNp!NSDDAkP}GE_WIcZo^v$%TtUGnB6TeXhv^+U^^_%(_OeajEg~VPt2;NY z|8rNoRs~rTN7f;e%PUeMkl?Sfp%-G7GdHt8aj0trE6$>-497OR=;XARTFR`TCy^ST z%PH*s+m_G08*u)|Bh6aF-`=FP63riVvH6x~5Pb{q1#xtAlmVpKX*`nDhf(x*omhY3 ziA6&+I_50tT#4p5x4_XQ3@=vH{8-$z1p#hXSx-c(t1IA7r2GkgdE_IgTT|-buUMs; zTbkpX)BrFcU{|<NeE0BT2p zWsp4mQSv?0E$RJ@BJMX-^<}2*ni^?T{#%U}+lnz+$OzQ~PWJlW^SHq>k>A&p)zxt4 zjsy~t=G%uBg_Y7avAL!NT1&}vsK!V3jNrMW0taxumGx4s@j1`zCcfXeY136u7U9gO zeq?OE)psya?Ob%_%B+y<%Ptm6vZnQ5Nbd^bP(p=PNV__X8fk}Udr=kTD}KSw_c^Iv z*{aci3%fTFlkRt6M&0cMM^S}B&Of;Gh5zrGmkD^RNRK9FQ%bRZ1=^TK zMOwLiM~|DYQA1T#HIig_-8c~UT$iIVNWK{6 zHPmgmep+W5II=+oDw#<673cbDsB2vbA2;J+d=lP4X@OiUuX_e2KN#!XCA?TyQ^a1BGw`|xj%Bj5O*6R6Y+9*fw5M#tu(sNkwxoJ!N}q z)rH0(y*YUmA4Uw@7!?Ks{o8t!EeLqqRXnI)J@vd3$^i%8~zXEvTE4Z?d8nEzzThVU|hE z@3KsB@Tx>wdywF7bt%n!zQ@>kU47yqxHW0^X%BXswGD6^6}>&&;+*b~_}eLBtx~bs z%U7=s=AY|w`LFK&(1fXYG8ml-{MgMg{cM2mx<_fbPUj-mc$8+qHoa*Ols?#a#^xa$ zc}c>EIr#x5*ur`ut!(Ehm&*}NWjOZvb4*M;wJj>s)LcQU+U?O|vXG1(4=&OyzulM) zx)Ws*3+bp=LFr`F3zz&RI7}Yex!-lXWfrtRZPEMg}(^JC<~a!}>#G4)dv3Yb0qt{6b6p#<)UsC8$o?L)Xi za2+AUyy|Y#AOMp^)BQI;ZF(kIY)8^Al#oSa{!=;Xd_>Y8nipCdX**|2#t8e;JorNH z=U4qV&zs@7f8UM%jXF|^-?mTke);!mfyt6eVg*N(lLXIb*626~lyY8?+o9W!`ORtW zZ{qX=(0cCHYWy-8(32syrJp8HoK#1K2|rdgn*ND!6JDBcqG$ z-nKVCsz&r#OXww(mgUp0kQNtye%TktuZmVDCd6bFbAV|h=|ed$LPkp@Tr&xNmCYc2 zK%3t((KwtFt}D5IeWfb1LiEV!1khw%BU;D+k>2Max^o|Qy5+4`TL=$Yr*6;BOuq^v z56wH6N*pxS;o~bG1Y3e6KE_l{gkip!?4`pHZFFEE-xiEol9spo;Sn?j(jU>HAoAD* z7ySzPp?I4z$*=j=0n(T(c#jkMgeKdhBBdST4>d*LcgMRg z$i>41|3nplhSAo~t+iDZ*#17iw(u3^vAtai&0XiM@+{2->mKxOYM>Qz{&U}86vA_o z8LJ(M#RK4t42H`yk_J^w1mXGtItH#$83he=m1Q8!G0itLxiq-+m`7rDuCEA93}LNR zL#G$b&RR|3a49-kVUnO9CFn~``n0qH=4QU7>NTU-#VWxD&PSZ+1SX-}pY7bO$=2|3 zrkr5&8QoQi(7FIQ=ugCPXevYbNp~`spd&lZeRi%cF=8cQ?gFDx!>|DWIf&1?fZs=X z*8gsX+665JTg4TxE=?ZXoX>R!^FsqFO}OCP@Z$Hp#)1h^=Tbpdoj-s6SM-e|PfqR| zrpt_-IJ3%M!-(m|eJ_{rM}*{Zp2-w?UcORh&*|N^{%);K-w?oR**`;uQ$sSEMyuk7W!I z$Ziuq6u7yFC~m`0?&sXxYdoN>7#Xk|<5a{dzCXkgv#D!P+*Cs#%uw1X_1#{LZ?s_C zPEagrbTdvrP*;yQK6+hFhKJey9TmO?xQ^R!VxM>7M9o9a?;OsrxM#6$*OWI*Kc7B& z-1p7W?QWkOZ?`)1^mE`OhwQisgO)fsIZdJNfmsDh@6z=RN5^W>Vyd8}637+PqY*-i zu*3mPm`>{_?a>GbynfVHYWNN#SU75+S6LyeFip`zgl&1#7L9QE^wvwVgJBaoD955a zEcDu$TTW|r=vG@MHj#&5b`T9naJud^PiP1v^0Z3j2nS|W-p9-nnwDryg}djYX2-$> zOe*~$qjVhbG!wS&NWtQ$>lwNp+s<^mUYdgB|JwBbKWAPF>eiLaB5q6p5QPmK-uU$% zpo_SzMyS>gFw@ib13nhaIl=``4!4@DOCb!GBMqXM+Qj$%7EdSiFub?(SFzCfW81cx zoa4B4&b%G26mgOR`%(-ns=Otk$Azgs@+8-2JQ!?fAX}Ua>-(byi_HgPC_^o2jt2tab#+kCoGlsOII}qCZWnP`k?LOjh{2Cm<8urGxsvzz zeCeR+0D@E};;+G+NzHVZsc5(?I2T#}%jl8+drnkH(!Xz(3W2Ykghf1LI*^?Sh0fEc zQU{aCkn{Zq3|Quu(an07Q`NFj`9I*o-wTu9ylZjkuWIU7P5FPvm59Xn->?6joBXfm z^7B_uI~jxe_baRY-xAHQcQ?CW>zUXD{~04=kl$yfkPGaP~e3AW6M9)Ou;h_=t#zOK?DmPuK@L;!zybrB^=O*;lO$`jYM9 zf-*Zen{L_u0y58x2TKMSL3;Mej3-?$EXnV4^huV3aUzA=8WN{5B#bvZF+z#RSMEm09jI2$LYygip4=2M?A&78f_Tuw@ z{yB5PrFRqvQksCqi3>BJ7-o8v)-lNurxP{*3-vu}e*@&an237&A2=<>8w5geSN8XB zB@6=n;OyHMQJDhu*TGQ<-|7Am`*2f(l!8>aRNg?b9y^bmk^GC5yZ8f7vifOa|- zO%clsh?`|;=oq=vQ0w>3+1s%7f479jjxvq>UT!R<^P-jikrQdNi+kE$g1O)%U@F)y zlwGAJbN5UoOR0}Wu$J-}&y?4aF~wJ&f*;)PHA_v16@+Np()#S)|18K%JF zD-wHvO=Xo}^n3{8b^N;;N;0Hox(vlY1}(d_-Z#-{(#EN{#|FKn=Sg(~$!tKSAmVN^ zwmXfH>WLgqG8s#A3zKlwpcxG@;*ke2~;Ywvh7|pmDzn(MQ6@V z6tyDiVNBsS581<35Jvz&F~O+>{&2PB1j;&en*HgGz5vt84Hg3dAp#iMJi0lXwsa-{|SEc^rNCKf;qtQ{lM0Nyu%LEhx#Rc+VB7ybeUdN)}vC^aD98=!Xyw)YYE%UBBmAF@@9+*xWxdVHDR-T+>z^V6u3^p9@rY zZbF2L@Y%`8--ggR+)m`h>66f;lEl2Z{*E!5nAD=$-kt06>kbayv5P!529CpoiI>BH$0 z;@29oz^f)(UKu&o#CTWYhikyg{CrA0KehOMJ}9q>bi4^|jg$|Ft=M5qdh8mqppGJ= z{<5NYAgSkW3>#E5 z*0*E;LhkbQVt4|h@j(lcl9Q)GHfcX$7IwW*ZLM2ZU;tp-Sz4zC6djoR8$B@W&kkM5 zJkz6M+rjgj*1)+?DcQW)wAz2ls#q-^l;RgPA|5b8W-O=)WQs%2l!0J5JcKp!ntewt zV-=V}XwSL`(7%aU-^mO@2uX$){YDb=l`B{Jw^zfY&Q%V#ki`UKaENkH7Tw%=^DMHM z0BuI(vK@~;JvDKi2@@2-i;e7_om&l~_?k5*p&IfeV6ld-0|=lJO%>VoL@cVXGKzQ> zJ}h%o_dYcd1>hw@xhP|VUKa1{y?^Elhk=@3gfX1BmHJVJ+JU)*GZeo$N&+*T@r2m0 zlzkSc&6EVoj0CUH%a(<8_qXJ}iPe&DeGGAM{7tMAx(HP1>u3gFrpD|5|CY0|?_tR4 zZQxW(*-CdRq&}sJOtwtO)gJVtubN{Jm2Un(ZV(b<<15sE2-=H~X_@zkIxR-(%3vyGnOqVrc%^)pT) z`@52Z?S=$NT2e8~;PmT?WC3EbEDP!>OQ(7JaRm^L36x)0@vQfwU8+Z$?9S34nd_v}vnIm{Y+Z2tX*$FQOg|w-M15Vf2v+a)+es%YSuHU%ve#8g?H@P@*vwjK7AR`xo|4E5;9wY`{Cl8-_sx{F#s7aKD3N}k>tS7P6{G63Glv`eb66Ojw zl2e)5%ZLyxV8yCc9|VRZm+8*QHJj<5c^xfp@tx^3A!0`44)v>hf=YDfM~l_Ex*+5- zR0ZgNmCn5rW^lvej4zE7US;Q{CMKHbm^H!Eg=sE}q@5RrlYtqk^(m?}Q)B!&DLt-#OmH1qr1kwQ zNJG~9aS`o%c&zPOPq)gaqA?9qW%%G9uXk4vT{l$@P%qD(wbyd-5K{zB;1j@x-2_Hf z1aG|_$uk*1zb?mZNx1?od4tF4@Tj1KzP~q<(MQVeW0wfsa*5*Gm4@TW^r_#Inr zR0X9`*_Y7asVSUJwAkr<&ig0?`;&QAYW)sSiz!kXUO|6Z)&3wSOnkW)X z8osg5uFXA9WRyNMd}6X)dQVPQ5G00DFBW12EaTBB?Wjk(hfjHrhYqMhj9(T~)c-%K z%6l_VH&%0BrpBQRR-eIJj;2w@@4Q~u!EYW@Y>GQHH`890?I(%tv3m2g+il6WP$1&+ zs{Mq!sB^K*XBRAF9CP1$ecO97=U??ZyK*bfSRimbE|MLC&W7}H?SI*^v z*^HyAkJ%yY*J{xxBj%wo8QB)2_7`RFb<1G?&UV>Aa>*Dvg0w0#FWOJgGM!?il8XNj zMMhR01)&U`a2Ac3Q`mu)kmvIjw`E!h{~TkRC(NKC^(j5@CWnxT0C6ptIX$muaF)|% zu~+-Yt8kbchayNkn@o=-s3L8(SdJ~ZIeaCb4ZMPSl~AzpDirEw8- z8zXo{0nL&*4vCL|V=Jh3Q@DLS`9b3MB$={cP~dKyp^!5obt2aPY-7ZJQ(${)egTrh zbR}HT5sD3i&>w7l(Ua4MD11pl94DSz)R!v!UZj)5pXblhAc_r@cqF1F!V2U3-24cX zcjzgdj}%Za%2PpCY(tYiE*t$?RY>xyq5u;?%(G_`M{J~fT<$V;nY5}0CJd6slpFnu zLn?8jqvZqU7SJKW}_Q+u-(q|@}ZpEorHIU3I z(u+&oP7IgH)a%qaA_9|c9vnlgxu5491V9iepBz-iXaR?`$&pn;IZ%XktzgVSwRI(M z@lP;85PNkQcSAu6SMO>6y>PMgnX=TVT48>K*CB!qOVO$1aD^*mI%_TE44}r?Iff`s z80mSa>A{W!f ziWRIV&fqSNTON_^ZEuf$ZB^u6&z9dyF8a3K({)xY>GfHDO<44o=xQc2gee6iM;xL2 z3K`*&XhDxJ25ZvQKo$=GdBev_lKWvgjoAge+K*q;@xs?K{M}UnqYzzC=1`|i1qylh z;^M_2#q1y17t{hh9Y1TbjF4!jdF>OyjoroX_0Z5<=N>d$)rUuh8@bm6{iallV%~~* zg4gC2c?(B!?tt~uKZ;wl_sC!1NqPY1)~THn83qf(H;h}x5NOT{5`iDmINk|{j~!+aAb#?)j^ zN%{9@xp+%WMk;=@xJMfgHW)nNf%^Z!c}VL2148_tQ3bB+eq`#0-Z&{#^v;n4As`EvHCx+^g5#zLdxX?rLRd zu9%`w`TQcxP-~O@gtGtqo@Pzy7_Y;gL+S%pR6%}%BSZs$&5-jz1xcF0>aEHTZpfL0 z$;rKLEP4%I}B^aff|{$2b0H4c^(5&PM-?Uxy5IIh<55OwhVP*h-5W zTfEO8wfob-m7X<}iT>|bbx0K_6h39WDsoR7{4ZucJJ*f!ebHWaV~tVR(mkD-mUP;g=C zQA7qnidGb;RtTOyR;+mM5P}F&?hq!oa@s9m$n@lJ!;GKblmjJh*~l>Zuh$_1PUvIU zWIY}1(Q<=T`T*cafq=?8=824*mf5Sw_!U${1?6efa;t#w+_7TD$?M*YEq@P;P9npU zj6ui4xZuI8w@i+)g%3VR#U>xatLx4xj2pw(E&TR%A*~EKv%JWInEPWjWldT7 z$M2>xYcuc?++Q^sgB3WTM@C^%ATq+`xlOlrk59+ytmGoZ3eb@USF9KJG2;wkba@@} zcsL__gS2)s;{KIxWC4PqI_<~Rk-`q-q15mJV1*iCb{b}B!iUL_Hc$Add0;I$!PmLK zUSuY8rMFi`HT&_tyz{r0Onmg`9=u9RTMfg}!qBiOfK)&HndJB|#yib|hn13IeSlAB zsl@E*xOG$`u}(ENH{Y3@IAh|^XP^-j-?|Uog_)Qm%Q!u#=qsKBzRZnel#4suyj836 zWFm^$;}cqU=ulm@A&^pM`&462DJysB(j}4m38%rH5_dkeeyOka|5!M(b^?S31Ci^8 zo5v|mI+m?W`68#ON=GPl8YqzX*j>*eQ%T|jfjxx?yp#wCFpamIl=Ih0d~>Ga)@95e zvg}n9DdkA9Xb3BHtjB{nf?95pQz9s5R6t5>ge zNNfLD4+C?az^ro|NL3q~lwn0o_2r!T>*nW}WMB_4E_CJ!oLa!% zP%8s)xI*;0lc`qa@)=N~Srbb~F}bBT6VDp{uvA9bT~?NmIb0-?-W_LW1pL~UrVnS- z*6hZJH2OFj{#hxIK8|xDw*{5-o5f$w3smEw}{|fwx|dRUsEu$*z;x{OLFI=$KwXS0oZG+) zUFFG%G#`jjRX!5Agd8Z~=;S2cHzE>}fpi6GcSl@nhVhSgVeJ>6W&Zfne+&JZwn;N; zYAyzK7P^wGLX>M`am>?ux{Zxco90JHssN!~M|Y|myLcFP#WWJa*qKM|t z41u9MHo-ZWD`YgpxZC7t1+efi{W3Fw_f=o~$2FjN>{A|*E#_V#k!76$YYoO0x>Tld zVnRb41K2r?Z$}d;H_^h!r7^E7psCEaLgzwDbP|e40yx?#+VVeuSL#$A*z{AA-_ifq zZ)RnWEoTe_Y&;RBgb~1gY`D*e(B-lT+9(xN3FtC68fMS+2$6c1Tn5$xFxnW(F5PBM`-;oYxG`0LlSBk|M!RvG=e z>xJJs{ks+8-T$vT(M_kfkFB@@CgT;&t!Q1zzT$}klo!n@6wK)MAqa~r7z&Xx12@!( z3H~b~{JucjApv#$1Puh9xB?Okdbbt^9$V5aAn(l~USK;U>5AH16FcZwzndXS=*X&LwL-!GI9OKdd}n>s+w%t9YQjZvpK|6&PVq*cD6 zxE0Yg2H_P+$k&MF8>s7CkADAk*P9m}eOh3Y_o;VrMnSPg$w!OKE#{-NE43Z6anGsF zIsu*MI&65XzCC72sNTHOWv8Z`+1zB4o<{R7p1V6$U0t>I=3ztHu4?WRxb%5$;rCOM zGDGrvU3mYU(r8)Kgy*~Bf^MV~I~v-VMs+l;ZQ`wM{1za?Z?d z0G}DifD1AvmF(63^k<8~8ZL{x7RMW8536qQIocV^W6n1kxa9GawLq;M5+^te2j%u= z%6i)QkKsZ7LF{p5Oi}x@eUE_=?$L9Yz9h+Z7bC;^@-Ndng%OHNL%6CB6+=f==}5;>3wb%QAv@v?TY%B+c;k zA+_jf`8wOn&(apOGtq_0$CsuH!l_v!^go8m8x8{p)&&StU;g1#!(NMKZZRx;7nzeV z6mx+vCnx!sIl*ZcriRekIN>Un{d!}^H=DZL88gMGYUZEd}O>Z#o=(;uHosg=z$^BO+d*ClUk+SjQ3=lfcw1Bl1Q9-Cj`1w5JD z2oqg|x{YG0@xvz#$IM?@N8aXSq3|^A!yh*{$%=O?c35A)jA&20$S;HVzWaQZKG!qh zi*93%h>t_hI0}y$vi`CBaK`G>b$7{cl%R~$aUJ3+X?bt0ZEDb&r>1c_^Fq;) zDOc7s>^9rnHEV}&>JC%G7=F~3;!Mi~p9u4aeGd|r_!NHoN)FBD5&Dzcb-esXwmEM8 zjE2MV*!+2+6UW|9-V)s?l#@7FNh7n5`S*PveD-;)mzDJ%w77;yoQI)GKa*&^JZ-R1 zp&6s%qniZC6}c}S2aU)m<&JOftuDsi8>}(W_5`#_LENO`?KWHVj@ZuyU-j}u5OLvw zO^2qF7@`OJ^{Ll>+=D*$rElOuQ6y`#L-lTcu-UCl*vHWd8YB zt9LHeu&Qhs-=I*=5vWdrLT^G4B`F_pm#2ySrDI{HVEnJ&o`021gXW54z7? zed_eq$KnmD)a~ph{ax0}W_5_lNswUCu*duf#RT!U2Ub>(9bEfpjHA5EnELHL z#;q+08q=<|2{I$!)QiJMb6ViB3_jWS{nCp?6RmL>mHVdm z>CcqYTz)Dpm?7R8ohJ7QPny1O!h%cX3s}E<;SN&uUlfdx^~Rm-eX;0S=Ik7~L(1fN zXP+&3(#qsHiqpvKJNiR!S(%&5M5@Vlm_Lgx8Vj%1G$}5sdV;<=b}!;xTPlB(?SLYW zjOX+7?zxw^#oMQ?ZL;Jhv)Vo?Wh+c$Br%B_ke#AY(vx6#d*}H1d#tRTTID}=Fuh|~ z^uc>kf(bFub^F?;%i7>dakKTlxudT9hy`=bmaX1XbKku1vHZg`>Ml9=EUfqR;P5AJ z=d2i~l+8Ux;SKO~;SGyBKFi(*&H~1`zNN`NjpEO1$5O0qFZpD=7^UM3c4yM80G|)9 zCH$XMU;X-Z)Oo7}Vp&$UZ;3(TBsUivpM7*r{Mr1)_fJdbXuqfsFtSa{0=MzULV}W? zEpweWSb5Zchv~P)^9GO6*_<))Y5+tjXU*7uxwR z*{WS{qvXyzyq`A@Fyh^zjaekBRwgK;b`WCTtg1cYW+vJT#D{u(v89{W$So*+jcKSe zcPqrUC0;T6uTXEkBr!1mN zT3sxB7|Fp$5$}%$WziVS2=G}l1PjU8x<AC-rfDc))!q#b^Q+~ z`G&pQ*4tR{>ix*OXW{C=aX<0t#hW}HnH2Cd%!#&@}p~qx%E|{JZr?LJy}Z&;pPAC^pT5y_`LvDg!*6Pod=R+uitM#M}K6sxM^wWKN^iZ>VQKjVs+H&&}!8>iTlmyKSre>t_y3 zv(*_LnsMU%8#}k6@xvK@|M@y7tcCm^{({um2chN7?s&x6PIqZj)6}%er;z zM!Z_n*gmfP+2cQIn9}#Kd}QC)Pm0DSOCC3qt(<+cg~v2*T&pI|OvM%4wsYMdd!|x?&=Hbo9I+kW6d6VcN6k89b zO7Lf2ofWSskSe$R>>UFFq!V(C(Wn;3;$?T{0|7jpyj;EKOZN|_ZZz#yPyN?*Ode=? ztnchol!|Y!);7IG;vS>do$8lk#f$)#jY(|BdTajr*U`tc1N+XN)jet2j@j#eKdq79 z-#=LL>z^p@dk_8nY0cVNnoi`eAB}J1_v@dz=kBb~_Sb(*j{3&~{vUtDa%^A~ZEbB` z@E-}Jw5=y}^Kk-x%WTjc`X1kjOP_V4hMK>(`@C`UN~`G7j~HT>RehAi1lc46$MzQ2 zSw-C>y57mzq3#wW$7 zCi{j_ac6`aF>^wqb_Sg|cP#nx?=S0lD78W$_5^;Awn@ZBog2ku7)gNz1SM}uejTI2 zdmdRYSJsfagE5DPjT-#=*vYnDPc?I?F8$fz7T4vWwv5>}xanBEN09Av$;^}sPiGI3 zq%SXb+vTsxS;Fi!99j2d&JUw5s zuuJ|k2lAi)@#F0Xn&YYZ`^d51j= zWh)1@Z};*_~los^$-(Vy)Rd5I}nb{_heAV&S!^C;2k19U#=4L zN_*_YR+*Z)KAFy1tf5;=36v9Dav!Fn{gF0-n)}bJ`dS5ciO*eH|(M1(0N;iZ0D9(xL%+m+TL>41bY*&rn}JDq!E^5_})8bE*ZD;?DJ(hCib5% zsdntV^k%cQE!QW02p%|O{?=Yt8s8_W;%cWoW53h%rj%22d6Wg*(6RpWS&Ss5q~)1W zK{`6W?o&&XVtU}q|>&Exae_AUSnUKkLa@>^l5!Y-?4Zd6* z;)AR72@|R4X0DG=)o|`)B5Nb~>FSXwLtL*}BYDW?-oHJvZ~p(o-g`h*b*^2bANv0zEIg(e9Kiin~n$_5ccdbc170*WG{wCGWz9u>C~sWy671Ox<3j8Q6SE`%iK`~LCY``>@uG42?5k8_N|-g~X}uJ?W3`OG<=XBFViU8)H%uf_9G zyqI!DIw1p4#X(A0?()Z?6t^IQo+)PJWh$AR({AS9iNnu@`c$+j#4$ib%(VF3)BVh< zt>67TKCW!elh5tpWS4VoLW7`c1Zf8+6dV)TaPvDQBKN=>ZL#NNBoAra&=s?I#(d3z zoEvCgF{8FbThTI7V{klDzQO}Q)=8>4bH?YsKClSug8Qi-swip^7`8KPFhd3_tt;{9 zeppqcGyk#Q(K%VO-5$FdGmopzOa8h0`qVyOQ4k6kF;vKG-COc!?Whg1tA$Kg%% zL;IY}YRT5jnt%z5c5f5FKtgI!LH?{Wp-3_}mFmpbk(9-zx+Kn<>fN)Qo5UmZ6U@ZE ztc2YQeSZ~r!Xz7BAq6rFj*792e>BYyL;>1Vs{MvBn#ki4!XnlV6x|9psW;@4vwhJMWF0io!-av`{UsZ6-)4k;qf#)i`LlM z(=`cCVv%twS$7s_g>@s)tdhJ+EnbYIamwD8k%30_CS}M@BM7T|+aD?d>FN+V z0D#tvuzt6U*#%s4K;_?NcGiZ>MTe(Xs19&PyRB5b|K4{)8>xz3)w^Gr)wEzH*x^dG zuTE)ByJw{>*^2y9Zczmk&TtV1dxKH^qoY*`?c6TF5E<4o&Wgkk*NugfvA*c`(}&|X z0yw?|osXP1tf#8K*ZMekOpn%(s@u>x&J@ncmPgoL4WT3m7bqHUwR@dT^&r5u8J6Bw zVP1!=itzjtmiwiGM;lJ42VirU$IO8Am?$3>Y0_gej?dlp^cttY1H8utB%WaqgnzRq zyI&l`WJ)Z6L+kM=5ekyFgBCGR%_Sb)`P=v6zK7RtRG!o8sdB4M)FA(2^V2>L1TP|= z0Mic4S8k@*-G2HaPb6=CPES)Z!^-kX(iXRd&NS%{Oh)T0eseEPdR^kYB)7+v$E6Yu zEgWfL^6>Ktt)@&39g};_nGJ=hpT?O@?XyxpQ<<`R6DH@RB#;GmC)C?-Va0?vd%T#$ z43)QqYXJKkmx0SKpRW{&IlI8t*`XX;7s@L3oiG7uF`GdDfkkLpy9KUA{}<3emhkH4 zWc_{~l0lw}2euF5FQ|6@TydZpbtDLmUlK8*r&Qr0WWWyq;J$_2T=PR2o^yGF4jBXDuWn_5pRkyFGKClc&1-c zl@+62(6`yEBbx~fsYVMVVV%e`c3`@0!XB+XZ>2)M(Y<5m6vyW|#Xm|TATcvkg+@m9CMqFLE$rvPnL z2RkI?E8nv?#l-(lXwz)1%YFl3K8Xl!W`XD9NP$4o#=l#z0_w1ayPJO~EKtJk^(hRP zhc}G*PmH^?8U4@%Z-{Z?2iY%J1s_vbtWN#@mpf zTEU|8sqTy#a&=%j{otyPz$A>9{$lVmHiilM`^(IobNsRJRIsn*Nkli+e|uorIj#L= zNU&V1flaYqJcKOt_DQTSb|8M(Hs^E{fq?V1-1T4vG`(U{Uf(??FajqG1=T=X zZ}4C~`oySU@E4*#W>IW(crb#-^zjzkmLkUGeD@f@N7#-SFVp@$lwHp@#9(l{!c*}= zm-IXvjWt%7*ob5fPsX@X@NDqwrHoc`bn(?#7l9zCl2X#KJrZonemHnXq)aTaN23$a zZ15Z=v6WoQ*v=GG1s0lLrQr(TYJXGO?KYggt;iGRWHg~E;%#7?Kw``I$$}2Rx7xV+ zJ(?zvLUZr#^aIp;t~$)`Y>$Ldr;td?Xir?CKB}d5=;Fnt?ZO z`^l`8h`1vW^H(c+cWNWxpKSK1QzOz#J2V(rrA#K^{L7JBa74(jkRa>?B+yfJg9;K& z%I~;(`+d?D<$*(2b@n?#lYHmmf1Fz_XNUFQxRB|!qF0c@pbCWx2#tFq024@_LIJaWZk z2Y4?o_G(Wp*BzoJQa&-dKdmiN(Nktt=(c4wXPg1aFT?FJ92${6ALP!$0z7}D8a+Kp zb;Kzua6a&*@i9K?3M#ht?()%zJ*}V&0vgjF&H=D?IQG$>rXdKZE^DmuRVZe4_-bfn zX{5s+cZrDhdq(D?Y2Hrl#|8vzKw=4}Z*fBdkece6$qM zk1pyrUx=b4A~qgK(8$2TlhsB79*os$=wKrZBmVI5=NUs#AlWLr0ThYmIlWsy44-16 zS^<{@qV9B9Px|Vk6E=~@7zOyg6$qWVtO~jw5MyN`Jq$EkVq4%B>ecm+}Mgk@dnkbDOcb1LY?h^to@k*C3`4@Ew9CT-h{!K=Jh zfN)cP)VgOqdYDMy<(etx^d?StU>~1Yf}hByVaw107Z^Wli!vXhPL^ue=tTlA3`c!0AnKBX`n(U&9ogfFbyGj@@uhr^pWgx(3sUpv9#e%6Q89Q{h z3c2awc{=*?<91Y^T)7D;s}9Ie{1Zn#BkRh&0=nRkPr?>B z50#GzN_qJ+Ly*LeidCXQY6~Q@1st^#8ZXVm=;nJ{Pu&gPIT{-gH$WHU(n%K^28Tn+ z$O;pN8G={Oi>U;$?wvJ(a{&@3yOym{1>%e=8wt`$+gST10Km0H3Bd!;h$Ru{&wqtme;Wi%prXgK5nK?vpsa98kj=z; z7ljhTW^m(^JxxCewCSs_2=%!2LfB@t|1 zy|yl|e|JDz*VW<^iVeyhgU8cod@yZd1c|PK;=(!9?9g(|v0xXv(A6&<!Nt~ z8QM%rFUr0{+@Anxq!E-q3mc(9a`D;RUJLC|4^PHwhVDAz-WoeN3w{ zjglS}KcftnPF?1{L>p(c3n^nGgN`E*;-Ogd*wu}K^|4A%unLxTZ!v+L2^_}_rbYCQ-T3} zN!$WTxdn6zn|{xd|A(8DkE?FJnr51F70R}z1GbD_{LW?ylHHmLJVOYU;RF{AUW$n| zN;Ri3fO3}*(LY0VZ&lbrWljb>%_@ulz_0>k>MDpzg-~WN`llGugRoR+1Hsu>gY+*1 zAGKyuAWuJKH9>KFV!9SO*Bus^&=jkNKW#;1J5V@eqBUM;jTpTHxo3Kdr&*Z$Sy=fDWqbPsPN@;&&-iASPa&p>e>32#5Jtr>rEY44= zAqe+dK$co${+YvbQd8Z>Bt&iuXuT4T>Ns_I3homco_}K0d`v&<(C- z{rJx~quM?)`Wpe`R!?kY^D zdc0mL*$80y5>8!iuQgD+bPEa#TXCDnZrs5h!C-{qKUJ|3M0zS=;t~)GkyAQaUm!lk zJd5Y}o6Pq|k_$5;LuMpmnq8Qy5rt8(*s8<|@nxXzstS2xoX42f@kv7PO(`Pkl~DhK zRY@Q`84bh~E;gYF3x7xqwgjwo=JO+R|NUkaR@a(stZ)b3n7$5w?*_?yxlQ-}JW!?4 zz0rbGrn%qJ5F!#~5*S&09g;FeaN;-C{Xz@==v zqij8tsv?e}DE86G-c|>ELrU3;fWSawFDHb(v>K*iCTFl#+Q7d=BKKjKHa5uy8*b$E zv5=uoiYw0hBpD^W+KHx%7K5J>QKkV1_num%(9q_7W~z0C!#j?t%1%IEPsC~<=QqdK0LCOFJQU1sf^Q}G#)~t_Jdd++Nb@L_U&UgSOOS&u z51$eE_*AW*_&ql6q!2xzHOU!vGhqWC6#MME!t@*C%r`QoNUmbl;4B}#f}=mX;38B` z1u>pt`eS60>7rcFX;BQ-!X9tqsgI-pTu(TRqcv2PT^c~Ag`>ag+`Wxy_hb(-T>01% z>w}ui)K8P2k(k*Sbev5PhH#BKs~2}x zn`O@ARkUBD- zOieXDIX4(aGX?U?+~+6&UU_l65Pp8fU9&5sy?k6(K8Tz13UL|SOc?ERh&n|W_|!MQ zPKpM_@e+(}qW9M*-aUNpJgk=v0Ie8fnwcKkQUAjQkP z=A&2ryQF`T_w3XdB9pTPr_KuHRzzn7AJIErUG5?-x!G>|2+9E^LA$5{(9I zkqI*3)O2Cp#wTzWcA_r`N`QAZ9^ejSlbG>HAW5RlR$nSNGB+&Tj-N`|T!dnDYlmRG zGuoUvQlECSb9yF;Um`6aP^kEpZ+q%(2?`x7IR5VAdd&syf=c`Na;HDk_ZWpjM_)M4 zN+urRo1`K`zTL0_v~X1o7I6_0PjdIR6_qb1m20H{3pcVUOxH@@eDnR+_XSsgk825YFG5!EjdwuE zSv?f4(?lC|q9M{#Nj(@DsQg;$!cpY!!74*(!~uPuaAKK|FX0tZHsdV?%46b*jldqw zM(}dTTo^eAk1@qjN!P=6Ql;8>xwHh6hOhzWvt~fnuo>ottl18}Mfy_g)r6Ssa1p^F zAR17)6A1SzV^oy3Cxv-q#EwsTYyv{Xa$WFZhD$D(;c5QgZ$+C=BCIU z^SNL3cjxsN!uMmnHkt!&Gb|0kX{MNIJ%CgcqCEE~mCDT*A_@Aa2RJBwC0xZ16CHfD zBuGGNA_J}B1_-m1A0{sL*zLarRuFZ}ck4}_0B_H}A+En4t31zwOL zvNxAhO)G~ppN4HpXRVO(GF8@dg6JK^1OZu-WB(Ozij*IPFG|_1_+ccX^8;Y7))U@6 zUlWn}XAR21uyzgjR&0hDM5hbO`&!%;0EZTQt_HZH5SG)E^n-&dX#2tyz92i&PXM$D zrPoc5i%=P7rq-?zttv7K=V|jlJv+=r_MEKFz@ z7Q)lkC)kyD)|bh^rD46Uk(30Sqe(v)@NyCy;ov5sE?5PlM3RL2Q&VAyeTn~~lh$yQaMKH2ew|<^SWih}aB3P` zx*C$$6uH9y)dIG8G066{oSf9OU&2k-_z@$>StEJ3;jxkKNdGPYxX?Xbn25dHie@c3 z{oV@(0g=?|@m($euC{18{Y3CiFkUkIU`CLBerR6C#l+k~N}Bp}7T^c@ zaG=-tG2CONjHqpr{%r-*Y>S{mKQ+&ol0HGj=PM_l1o@bdzG3L=x@b3m%%?(c6B#ze z)F$|2Jb6cvlP4Q#@S9CeQu^s^&&acUDC`v`Bgpj+uu-S^L~9)J4skNqX(yP37KD1D zv6TW6$9aOzC)EE#5tcGJhs3F?A|uzILK;0+2jQp!C$;TxFs=<-YwZ!aq+1!t4&DRe zGxL#1QQm-i#xfv#Z`tzE>VDKNk#Km>8>@W!Gn}nY+EOIOGxF)Jp)Z=ZhNJ|dT4yTW z6-llacgF=D2_rWvUZAE#FxcSctc@;enYx{N3iVeyK$ZPCx;|-Qe5pb@a|3uc#S;3J z85gi8l!A}0FA#Q*!neRGkqG~)zn|S7VD1LLUleA3C#Fj{6!NVjBN-QL94{ibI|F0g z++%Ba{Dd_iGK;iwl#=ykM_@%$#=NH?P-_(`@#TV3f)^^JfOkRyF{ccT=kSvzNfhx| zp@$1DS2jwPB-gb53A4rx_J)nVK(LQDuA! zx|Ivg(r7^Cdq)aV5i&sL(|scX%>6MW!p!$B|dkW8psxy%sH9w>Fe{f z?bkwOBaZ>@x2G-Ho0uW@b{1GqJMh$PM^NXBH+=`)#s&YTU9}hnN}=ip5qmpq!2tlu zpu$wKF3Dw*m!mg6O`4RHkC`6wI+&sFAP$6J%S}v4$Lt6~kEH>f(Pu1e6U^-B;aLqs zBzZMvw%A4aPdfE$Awz4z5$K>M-1f8xkWUC)M{YdVDqoEa8@iXwfGC-eK!Y@Ea+s0+ zd+L(K{2F8isSG!S^U?xXH6!MR&7c+We^~^9WV|MhI|E4B!3yuyUx7 zgjA*@An@DtLJp3eYE@H=%Plynn0w`R*Rpd+RrxEENdvZ4n=leSgP_dDe_{k3t#~#F zS4q$}>y~lhuD^Jttnxi7FcQx5oi*}dV^kmDWh1SJtQlfd>oI4KuVLt~R|+}5xVWN* zzvN59Q3m(VZb`SPm3xgpoyuS?ttjhI_C%5!d)R~TOIb#Jonjzvqat+?Ok)$(4onY_ z_)*vz(gtF3CDU}=eAC=~x~NrCUdeIRi|6$s2&vItNu`haj``M$H@T1?)(;;NSd%wD|L$>26?HNngoV|ejIXt%BM*j_@sRgsLNT2VuzsXqn9jF z%z3N-ehkI}uw|5hIHb68AdO)MSC##d{s$-u-(*tz8+fSH2{k7gtj3{qz1 zI0B8cUcyv-7m5g32a3ZqwvvW3*zaN=Xkfx;JOL&`*}Yrjq-M^YPbaC!bDU6;qP_4Q zSiehP4r*|Pw}Aq}_K#XP8_f-hF^U1m0~IlPD;W#X)NZq(;&3UI1;{EVeq(d(lhNNG zl}Bc8AJjTvyovdkNE4Y?3zDE{>_deKlQ8hGd7Q?+;yf~Hn3Rp@8fcTSE=TbJOt3}_ zAi5JEvpLj2=`RF`52UHRunOI*!y!EW9oP*m5mshh0p%=Wrcx2 zJc-$I03TRWO%2`l^T(`Sl?ePiP2{A}opU=k;kRy8DJWOpNGg_44cyaQTS-~asfD^!Tbg{lGeNP0S4XH!YQnj}L~VT8P+V(C%0{ooT4nH(gh^wB|s z%rux@c#LL)?3oTAphDP}Pmh>$Wg67J!oa+q8fq7?)|rrp1^*PQ^Mus&gn2DDkRnkYo3Kk5|4kY?X74GH$lVtA+HFn@87&e(1V&#wx zAhJn(G3?sG7+5lBiJ&+OD}Y^qdB^R!#e!N4@$2${OX;ciNW=}oCctE0)|v3{ct&n8 z3o_}xqFO;uJ4E%fwX=co1+AH0O9JNH_OxV-B?pd{Elv!mqvnY_bO9EaUXt~K4!3~2 z3DsUq5EaBy>lSKf%;^$$NL@P^g_wxihb7RnCcGMC)wa3>UvP5QC1*RYn->&;Q?jWp^v zwt@sxBhAJc!uWv11^;t&fw7Dp={u;E*ny-xx!qmLW;u5bkV|B=61PptM|iaZNnC&* z8L0~SpZqQ$&RRGf80*P*A~wyp3*Ekgnlm5*jilUL2JY~DkW{P*$FdM(nxTkJ)_dIi znPFIWNK#ZA5>m-1;$w7_8rp+OdVc&R(`%q!MiO!waO5F2#SVK=Q?fI2~wsUT6i->AZl z(u#5^S#b++%7(P0&!tr6&B$Bd>|ot(Mn4>8ykn*-)j*^zEosS~j{euVPhVS4A3E$A zm&=?B=c7|TfQuz4Agd9`W6tiR+YLR#10Mk~82;LiXdMZp(pjGD<^Px^{y$SVJ&*M^=_8iu%L zXOu_WMhUfG^5V#P!8cR~6S)@i6AYm6U067vlc9XoG1SB!e#Co-mxBTBODWPX|D-b@ zaFyzKAo%p;U7Kh%LULqcwm`}z2+Wt3gtelQ?ht=9;!AAT++6$dRq%>}=mC1#$F^Ne?Zs3?IhOY-&>X0maKJDX7~g34By*oh?J3{uI=w@0P!OI@)ZhN*E3 z=`%UwREQ~?aDoYw(YvRZ*%A#xC}F?F8hgfJcn59L1jYzMS=kQdCJOlj`2@O~X4Jyz z=tsOHEQ@2rVDL-;D%I1rbKiM7kNVrsi%cv5i| zj0ieVzIR|DC6;v3##;7`ltn z7?3$6fPo7`5g2Qk9Ku;b{b0!C7o+3dReGickg2x9-1!dNifH(|iW3XB zqee<3UJb4rVr}xTMZ;2(T=G5|CkH!1fu9WOs4VNtI=!{owu3cmV4sU&EIAF%oI8sS z(&V|wp6o{ol$n%Nnk{S@swie+#f)&n(k7Fy0KQ~-HTLv-W}|%4{JWK3yAyVxND@8n znJCMoAN;CVL4aBT@xhFmtMK1EgZ#s(}wAzMT7MK9WF|FGXTe zr3HUzGZ<=7pGxT<1^t7p)Q~Gwqyud$c<=QZXa+X*r06s(YBDiMtQv%vo=FzB-7 ziv0-lFfJ(!5MyD}9k4sfL-FjHua00MuBFvcyQ zVpnLvV@=%a@0@ph@NRO4gN-Rm&wx>c1^}3?1t=OIw_Qv158=o-(n(#=U-6nWeDOTWXT=g7Q_eK%-$MnPrvcX!BV z?nKXe6!uv+`j$5W72d`+*wX0itu|Wy?OlBbZo>aJd@|4E2JWVf4uje~Ws++Tg3)BJip> z`#-}5#r9!r3xX%USGx2sdG!3AGW#yXyUy`xJIOKRrf1oXIa7;Rq6>J~!piB)G=g|Z zHKlvN+PK^P{{E3@wyVwBzkKl+@tsQuQXPrS`Xe8w{InzQV4L+h z6ZvrtYQF?C2S!zabv|=vqNaTBjJw%LJa?d0g>3`;*$71wd($N*Xs8absLx(WI}jL; zabgK&ptowvM;!QBt30v6TcOcOJx}N`kw2?1EB)&P|6kiGB1RbG{b$38=XTN!U4N}@ zN@;psRWT{RwKvbrW_ewB&N|b;<_B`ElQ-<&ed7rlMeSf+ImRKgHrT<)WXWGlIu#yX z9{ zBQ6zQ*JRDXEkOCQQkX?;B5ksrA>1c$`EeVw+n(!F(0aoB^5T^30 ztcE1^0~r}X(ZR-3s6X~wyIL$E>_%USYx)h$m|;{9(T~r+GXnvhwVre3={|C%4&PA8 zxt2wB55fSh&ZK7l_@g%v%FG5-ex*8=YJjcS9Xt9gi>pbbAobbX5>nMOle=IjJS;H@ z%^b1_)*i1J%^5MOJN$j~Um=0q1?E61Wp+OPsnz1ks@AK$HgbHra5lj8v2OPg@HBERAIr5B~&g?{utwu zkNHLo29=J(9;`pAK)P=gwq)*_EM-FcvSqiE#uy$ZVY$%D2h(gd{6wY9@dj#EsOsS% zH$vqsL;v9?tHuJo zpaahYv`j&buy+lJ6Wg={mZfZegs)R3(5DQ{k|5lgLZ&GIbdi{MY0`kt7)F7rph`^D?2?#Yz?KF z%;_aCL@w8Y%aE=h{z!Eo7Q6P)sG~3pAt@gH2^^|D8oGcG+qnVsMaW9vu_B&HPwJ7+>ra`m~-{ss_rK) z4&&j^BUl!f0OHa!P7KdFB9!T zIrw_7O!gj#I+Ft0dc!SSPA&eAh|e#=LximRYF=Jr?&p#t_cR z8DNeuqtIWXK8|G{EU{y9{BswY1{!x`0r=bV1p_Qv%Y%W00j)%3!5sd z?;LrMCjEo*X3IXy4{=TNCh2tRI~)YW)YJh@BwA6>@M$vvfq_|8_~Yka3u--@4v^4f(;sweGw^CnKsy{3)1e7Z9eVF! zAyR$4mi3%r0dZw68qdid(=DWc%k~@?FSFW)*2PP56YjkhrrIYX^|Ak!XTiuw6U!ph zMU(oc;y_iM^z?kxVW9TtTvjS~|7#2D{!i@{4Of87%(k+03;m{yEKTwCQZ_jT^5fV(@g?GP?9s};6Zz?0y+LP6*H*+x+-U7y zHcFC+gu=G_u*^tAs?UG?S|VagEt;NdP9u?FuOdkV$_yM{nej9#zDNCj8@-!!xC=vo zssW+g2S}uYg}*U9wSsFjr3E(olgME=(e8`=4k`925nSK8h--7fZzAH(WQRnBSzM7O z*@-1`?X&_w)V4(jAe^IE0ud~-mKI?efG9zMvAu6UoFDKRDaOvp9)g6`tb(Kuk^Cc; zSpg6f1sOX)3u+wpg1UOmED`D|$x#L>LIG2|Fn?G@WYH9@@C#Q2fex^7EQowBjZYF9 zodGW1!L10O+Z<`KAl)LTAd^nJhT}?NUXunIlIc)jNe*`E_(!>H%b;E6iVC$vv$O(m z-g#Yuo@Ar`KMQgRhoCBg4h`4Bx|a*N5MYOXAgn+&mJviz97yU~Jw;XsrK@3#G>%Kx zo9(v;9PGf$#~!s?W#Ht3DT^IoVIztq2&0Yu;~VTDCKTf)v@i;0x(fFlt`U?qI1I39 z!WSkS|G#c~~JEMu&ILJkt3Uk<`pY=XEFM7%BOIq z3NIU5zr=#`NbweNp%I58SQ{QE)hU*+Qwh0Z@vJZdbzwAx&lvqAtBjr-C|WB4`e#}E zf7oD%N@#Pfzy0z1!$|2}G9>Q>d%*k5EIDb>;P0f$qd?`eb^?V_!M6qwK7Of}$W*jG z=7NAN(00xpA`~W#!&gJ4N7wAhN??O4LVR%n5nK!4w21}xY(pWaf7OCbjK?yu1-$_O zk+#5pf+}ZwH5SCRu%OMlx89f*#yalOAZ+!%6!uc#B(*@08%W3ovxf_lFqToXFuD}m z2&ry*MgedyA&S+}qXkL8s<3IcY8a7EpWXxf42%pb0JjMt&aPK`1l~ z*2BdQ^l#+HH1dtIm&Ubdpau@AMNvIpKcOMqI8?#T?C2>#T%WHwSCbCosU@JZ)YBLgi&4_mOB*et??Qk?g`Ndx2e z$sS?=>*vZS6(irC%Nb0_3m1`yHZe45yIBpE-3i&|+Qh$Bz#8C7S(#K26~ks;Y|zAN zX(HtEDRdJFFB?NxOO+wzUPdDi8p!z`W@)j91-ess6FRGW6pIQL5wsL@$T^^8=hB>Ji!GBQREkIYff1ZBWKCde zoAOZt-sPwC=;$Y93`YS+m4Z24jS8t&1HNS8P3Bk;SvXyX0pBElrjdpvP>;rYF@Nb? zu-b9x`lVuI$XmH%R4AU%IK~!++$daYh9;1SWBld)Wyted0Cnaeh_cgGD{719qXE@= z|6ue+lOalk9X5Ud?FdJY#Tj)$f^%WtHS#gwmdW1=g_c?L-hwk^w((y+gj^!@+4Vzq z?CXIqZ3R2ZRtef=jVLjWMV2uIxa@Ku@atIk9@DugF z;T!n!DMzU@q!!JKCKj=kAlO*O^q*z&u6WQg6Ha*51I-6*J)J*~&rOMYFz_|_(?}a2 ziLH}Zb8@Elm0e+?8Y&G=i7-*C<7WI3eyD4NK{z0TnuNzH2vY~S0od0-A;)FsLhK20 zq+gJhX0ylQUt_g@)>-6K?jV`4VX+jgAQK2*B*vig18nw0XI5L}0L_N8n=Lr?{x=Lc zyuOr@|K51R-$})&V8RS>57)A6{M~%bg4tLJsm5)g(;F-j1U+b@WF8hRe29OTY~ggI zBMm~u9aK}9+V-%CBb^egjL5{cxC69s9V*{%A<_6#A21CWOgF5!Lu|^+E)EGwUQ}Xe z6U3Ia1I|@js?mV7EORh2HyJ!C8U`W=K+z(!fpz8kn)?)V(Ld3e`L9q+4zWSt&awVz z05uynbng-pusYeYM;5I&mB5II1f_PNYv0~micno?5~u2I|KlG!UKTz=+YsznL#6b1 zkD={Vuz<9~8!1j7JiBYMY(YT$fxJlx^?agyTsT2Kjfb6;_i~LQcLCM0nbLpu>0m5G z35O7Z8T*;s&`bi5sLPVx26~R^VZ#F~;w!EV9#Tp!KB4TxCEX8-mGG1imX2{+aT8$f zk1|ZH$6&ZwG4~27W4S-mdf|0egn5i;HivoOSYwNmAeiTpef4^Ged;EZj3nsK_jvc3 zW%{b{k^Sf0(~=~nSISa^2r%D)mQ;!Q)82nE6g&O**je~VnV(@LY+n%T7t#g6ZcWe| zKs(GNd(BP;182reS$Ns_54KhTVq1&`{T`AC6M3T|E)+}X0Fhu z!xPN~2r#*+(UU__gAK#D8zCrh3!t5D5r|1P31Xs;y7h`bIzbKC@gR+V&#$1b36|VC z{g5+kamFU5Libqoc&dgqGASTs@SLS0W7gL1<6cd36F^fy=G-#8B^-&G8h->a=W6Bj zp?%JX7AKkw=x4ZtUWu8mjMWG!bCG_%w^sAZQx;;W*t5E9zWN=Af{;rU+lDS$s+_G4 zLF3E;g?0rZuMt@O;leO_y+vCepawP?Z$v8y>Z!=XDPn$QB@*(6{XaF>!}< zqhRnrZ74?0_%CfN(y!)YS-Qo(0Nx;(LzNChBrX0d#p8-%1sh3zwjf1pv&FP6Myc1D zub&NFbATNfG*&P?`v4PtF0cd$|8oWJxLL6l4}HUpG=!7IA3laK(8MAeNQ|94_%o?; zCwv3e=e^*9p>Ne|9IQ#@+kApAJ(7+H5Ij}Dj)Ck_gVczgb;8MH&qfEHv8&yC(j8%J z#tdblNjNbfoeH)UH0pLjA3DhnLurCeE}TNbaeuEHPvANzeFf5kGXXFbOO07Eoqr^9 zCQkytPyQqn6Gu5nNbLAwn*(V6Sq~Agh%lasC^i?}CLD>aCLjzIGo{A{My6k|dcp+} z1+|earrF&pxM&Evq^v>TB-rQ)FZKV+V#ng-JLXyr2%iH5PVxNIR`0|KwcnvO_t83R}k`F?LE@K7=q5j^HEe z?7)RoktvI06h+?!lq{(w{AKd88w{AaP1wS<*^6W0Ht33_KQtq=q?|5v z-W~A4@P=HgXXoAb?Uq=mLxY}{^joH`oZkR&h}ns|$e;)>AH$32Fpkthk@eF;GY{bF z&OFo}Q90L6?8O~mzsedkYT7f{gor9qy!yPsFG151^Puze`*b3d1%bqy0~?N_%WvP0 zk7Nnm`zj^egjqDGlBs2J7gBp+V?>HnvD0ht%Y1CjVn2$d3xb{cXhIOO5;$(?MZJoG zNjPWlQU5e%Cnvn#UZ7J)M$SC;`p}kG_M?B3jVwA1upbetLWRdBU?$9^UlmW*CPB>h zhUl=kQfTji(n{qZ!OG0@u!;1$dSfkas(>+tM&5tM*s*IL4y{xv`+|>tn}#|*c9@~A zK@;(%mr)^67-&|Un?E_?;l7Z=kfiJIHae>?i-+E zIo^e#OJF#Vh_Hz!DtW;sF;mR4PGt77I}pdTVXz-4-Y>c`bZW|M_hGaVozcV+WY5OO zv0yi%tKEBz@A30DpqFzGemS&gj4Q-gWGWhu&g-08^>slKz1& zwt0MU>3mHcNZSa-9+GN4R7n->B3ZR#1tjEJITyYk6@?t%z@sg$R2-XDb_dhRbn5 z%HRA5wQU$L`Z6f<=c1mFWkfMbRYOE_{kPbs-#ylub?it?xVhx6|_4!L9qZ`kFl&L&m@Z7`_-VBappz zV>^2s+7|a`72gp#ZOYM*g2b2bnI>aC{>^Zgt82XUimD+AvjPlPq%0iyuD(UMzDfE2zj`lAdr`L35LVwn_%--#RbrPh$ch|@$fz)+#{0!w^czhNa zBC=!j)R6L{e=&L6V|FhjQAtLIg=gHdSSm!an|L1$D{gTGEg!AEbEL(IS9Q3u+_15(ZN(ffM=J?6S@L8ornhi= z+<)(h=goV&JG>`*pLsRy@aMlAF%_>#{rs07WzRnUn zm~D1pbNP>z>x(OlzE)BG+Nidz`?}}q?~C%kQq6y}XYmyG%bB?^x;%8B?@h9}SLcyu zy#<@DtZ`B(6toCDB)qe$3(p}lonR$-4}-tKQ#V6@{`u#foh`O_s?aiwqt2S9XV2Dk z_P=}gZcJ6kjT<*i`>IMy=XUQKpbu_cpK|2yvDwaJq*YzM!voIqw>?Bp%gv|@nfUGc ze;Fm1oWqQZ-~Hx!{cjfzQI`BP@wzvaeI^{>qc`!24oI&12h9NUsC zGS{~)_H&=K7|(8W-@Dh&`7S03UhZYfPfi;M*rgMWaqj}6z@_daj(9rpaii}GC0y+94C{bdbH@F@D4hK7($A$YuvmITo4+%LcUGR789 ziw~Y_cU%+;;p4%V0~pR{*tEfx`?ogXai;Z8a z3Ki7$n3+dToCp-%`1RK~Ab~8Gnj?@L&!P6sw&VSnw8)R&JBY^@WFbN|U>6M#WoBi? zp^{gn;Ym(dIJy*~XL%x+{FiX#lmM0)Bw47U`-~qB@u^rH9d+&pRLU|j*P9$*_&}>ykZh4zTXK??rIqf z4Aevp98fJ<_o1tFTKhDlTV33(V ze?ETY38-qi(9Oak6wS6rlqZ@S=jP_h>YepLxA`^nxGls6+xw|dqUWM+G}NhL+Hh=W z`rbWn4t+9a_E~iOY5*3-l)JKhIntpxQ7ocDOKWQ>(&*HkPk#C3JM65hU_~~zu{n#( zYo?oRNky0#vKjtea?Yhs!A$nPfaTgi7p#*aGLGV8sZe$Zv>D(Wg)Ull3cwz1%Q0oL2s6 zz|JBu*@NDTSO+DE4YjpVSS_*N9sZ)j^9dwKEeRl`!mMb&6CWb(%o1mT5%WAFtUDLE z!I>^4wao@51Amc%>80=R1ZtTASkvZ2?AtC9`RY?dzw7bG{f7$Ic-|g$DIW+Lse!yJ=WHUx%$y~s+Sl}ts0vObz zP)uHU(MbQ(Djcq|=j~?H0j)#<+&Ng46qhVnf}kCbOAS_YOG3flc z)(ZUl(`&-@>m$8e>t7zTX8D0n#+Jb32nexrt(lyzMwVaU0X@!w)~q z2lTwTp2Of1TD`uRrz5;}{}ZK78o=DXBF-AghYylW6+-5^J{q;~R^O>B2wAd3?F`47i>U#`euJRZ8E10W%zpo4{DGio@ zF>PSu&Z6SaBsWiOX+eN~q}CR|IbgyQ=$rDD&Y8uQm}RnS&i@OK(o{yPr4K*)=t;4# zl}q+jn{A3;QHd%kuzq@c%U}<=y>h&ix~dNcd@h@ zrI#h`Ougm(N_yY0xf``|r)OMIcgf4KT%CXKmGpbWfOGa)_0>|@(b;et5QqdxE%mgU|Wm9zYozvSwqO0~Zq+9aAKyZBp^`I4+#btN}lbQah*`wEvW z{IT(GAM3jtU_~COo;`m2c)*T=jY!!#6!EWYpZp}_U-*KRI;H_DDWTnR-aFCZYPc$JC-I|Iabli0zsodIe(30XWMg` zy@#Z(ec<1w;Mn|`OXR!4@wm+8b3c`-J-Bnt48PO6Ew@i`t#;p$mh;{q%rEp^y1IRo zl<5wPm)Ondc!6X78iblJPKjIc6;;)=XO36Ak-cQof4wAqeTk?h&an+a-C*Xa>U#O0 zRdbX=TOO+Y!6!=vY3wtYveE^(Q1zF$d5UkI2s@;38PzlXh*-i8wwe5|e=rAU`XKu4 z+jZ@urt2K-Ym?+G*I0NYagIatXC-gle&3GEH<|p2Te{mnw#d%+O3hg=eDlB`*#MUA zR(HzrLwnY->(l>F($v%XzM4SC%q4rU7+oQ~|0l*R4x3{!X4 zI-2gRC)0nqIOt^Sw2mtsZnyID#ZNx;e5>idvb^ts-CKj3?M4mFS=*HEcqLqHSHn}v z6UOE#{8r+gx4F2;GRx)VrO?nYgYyP5<#EQw{q>dNw0-;K+q^rsrytDgSrJ?(vnJ|t zz^nT)5fLKgSPRPx=O<;sdAsDifB2hBz2yQot24~zTwdccKCGE#T zl-mMT<4Vt31t%}XjTm=3H1fud+Ly__!*{lJjdUOT_N4R0^KnM;QNjOGHr{M9Lc2Gy zVSasQboOlZj_~2_FRZGIn$LT0SV}seYn@c{T+*e#p}WYl z%f5bc;^UO%bw$>a_@hUA3g5+kpV~FCEH6aMUp^r2PH;@4{clb_qSy`Dvy^vK#u&Js z*9~2xk+{qLGmGW%!E!RP9szsoH6cb{|arncQ0X>qEPKW>q2 zZPr`AY~T6*h3Ct)1GhMoebo4{E&8Jq{|tZWl^|mpwev``VtBv#{_aojCMlTv=V^RU z?ogr`Ss3WQ?w<>{zdapL)ct*H?wQzi7gqcpIZ(kRL7dz~}(TiO;`J$WJ#+1c5t zPtn(n50o!$9~n}9<@?kzZRrW-iejapRh1LdrW@`nOAN_)Th|`eaywABe1Cm}Y7=fo z&Lee;2IHiFz!N7XDtj-xq3x%)Y}wW0lNUtHXdUPYD9c@2aaUvP^1U5037+OT%C*bg$IG8S zU(|Nr#IxhZ#v4}I0dbz_Ka5@LSKRL!`E!47cz9z+`ndjA z7w)b&5nX>_S!c<@J+J%@jy!XEy?@NVXE#_cYaZn}eXZl*^-D=rdooT*xx_#Hb);e6 zNiC&Mm+y7!dvmS3zu9>0&dtq>%M&I=^mo^%8Xy)LTr1R895pGyYFM{j=OWihhcqSW z3EE*&X*2Bi+n0^h-yfy(w&TH$Ba1ym-*;B@r+wRTGQiS2LoBIWT&im5;wN&iZ8gxl z{!!5JshPTqbw~HwZJT<-B0K5ihNz7(I&Tlp?aI5jwx+)Ry!(=WYx_^0A#QxQ_}qz= zxlx!nBPT901MG;c|NFhzDDO1;^CLt0@Ag<5Kj|2f*%4qD0~Ajid2pR(R_ce3_p3B_ z2T3BvKiO@%di56Fn@&wlri*nWuSt!SF*7*S-c(v%Xe@tIcgoR<2dAP9GS&_IP&q;I zWl@}|+rz6(MIApKn;5k>eBXgj#FFDv)q`tHPP+AEJC8Svi@5u8cI{cw8nIlpSylDZCCH8c-KC~^}fh(+S-3C_V@KYT|-;```7LT zDL1A}{x#y;7i*>EOrtJWx;CsowE5{jR1!_2f4|O@z#z@&*ryq(?b)-%O-)Vptpyt5 zlFU-Oo$X~?GD#Zj-(z~D`DwVPO0i+iYJ~&y9PB$6$E+Eq5Y}-teTAc5YkK00$ENC9 zl6@0Z^lsp~TNKVGHmJlnoUxKb+=nME1Te%y|Y`R2&~F)hnjODoN^Am#F8w1)x3Ch zYG0R5wn(fyFE(V8I<{ryEe0!>+&NbE>m6^C$D5K}A}`h7i{GCcyl^F#sdn#~e7)N@ zbwkU4JdvAjHtw~is_VZpKMW*WyvX2c8p6o$HWy6chB}L&-GPXFcwC>gBm*E*-CL>0jlYK9|#-5a8;4 z&KaE2(-kArc0N(8{37j%WLlc*<2^NsdK!lIMuGVoOJ0nucW@}%GvVO$Q~42&4fADX zWW*;9&AWB?6SE)6<6mA^oK^oKN0NQXrOfhlJKgY0 zommIc?U(K|m{X1zR6b(QsyunK#I}%KG7(lfA+E(?c_Oi_W!&zp-heso(M3T!#&4}~ zx4YFEth)Cimv;Sw#A6;;M?^eqesjvs(dpxN$woSV2D6jLe5}9ipV@OlFEe7@{&?Zc zQ(~*dPvQ)dlPWuQuSisLyJfIMwJrNya#Gm5=Q|q2-*?14jQK&dr6Fr%zy|XRDse_R zSuWc%Ta7*|OUd=>Z<{auC{_1|6Ncph{pBN_CQF{3He1}QsQ%l+Re1B}d$oxRQ}!nB za>5agew}8&J)&~w%ZSglKYw=elz7+oN2^Sy&#EmLd*g9#SdC$XQk;RQx4&#dGM2~AK4g+s$9{_(F<$=g zTFKkpnx5j40M|AB+P+65q7UagosQi>I%;X@O#8c+4~t}QD+|ZZG5SSrf7`=XnS0K= zYGaDuA2xBqt3)e3SJ%xCSG9Uso>OfNjNP%fA^w}rv2y2!9XkH9>}BiAcK7<*VGC#U z9*Ht-uJLxecdyjDV!U;6iBE3W+^LI(=Bv-4zfG97J7&!5c8SO`$K%GPFgdj2m0b0> zx>NWaskV;U#Tue+t%pweSER;IOHZ|U@Yk)~lx&yOBQ$Cd`TPTJY| z^Y_xK+calr1xmaRv~;*yVY^N9=(66kOJhl4=QEQPSJm{AlIHBO`(^x*6S^s8(MxkC zN+SFn(jy)i1G!YJX!I48k4`$d$#V2)x9_jEIfGwq$T?}fak|j&WZ;ZP5BnnGwO*`6 z+7Z#qV#kMx0kdY#w6B`#9ThWTW8f(DY;8&Ig#K7bsY&@N$@3S_o4P$*`!fum1h_UJ z;OAT&(KY+&#Wpq7e?rMeH`l~2o6y!=D*o+e z@$W}vQWGj(Vt$8)g|!u)FRyfa`s1D4O+ByUi$b%{7Wfy$ZP#qvS^W4y!`e7gb&XUn zt0?L0c02d?^dL`q^7xPScgI|ADzhpoDhlrCJ<;W0T|fNg+F!lnC@Lp@40%eclhzBxK>>0o)?MRU3TrN zu-kCRc60n%#FpQh^S-+N&D)}X7@Z{ZG4S#YKAJO3%7wRlPwVx69CLTLvgh)j6Ezu)1B`}czVAwT9fyDVqgA0Lp(i{JR%mg)}@-YKTr8dc1@OFP4~+$^X?`u zDM~lX=x+6VyZPA7CTERX{xgqFa86Cw5+CqMPgR^wc;}+FnuKQME5%X@;cC_nUkAop zomwGlnVazG^}G2SeyhB+D<|pZulDzU|2(#9;T1dUU{s6w-dpQo9bvM@@Y95ZuZNEk zcg-#LRauF5 zjTFkRIyM+M7KbkKuQl28wpq@3>X}b(?h7@(;(OxYRaAw4?_r->l)c>g?y-=Jd2b4X z_FNUaDSMyKjr+TS-m>-QRUA9lnx{8|;KS9(>@IMsTU|WY^ZHo5#5k`| zC7tZ_t)=ymh1K=-aV0f9<#jbb)OS7~A!`tka;Lq}+k9(k!peRxnJ*%4KlC##eH$B) zxp--P^W7K7n{x9Z_IOiW}#qx#YDTV|NN4S=DU?u#z=BRdHRtU z0*ADQCx*%mQLD$PUUoY(s`0U1t3}65O|kyt6(bcs)?YfZAzD_^{NmLk{;x}`?22QT zY1oc!lMAmkX>NaXRPk2cGF497y!OU>zZyD>89zQ6FeP^N{;oZ7FG}sp-)sq56@@_# z#~?RUvuXWT4(oPO%(-jGJ^0O+b_oG$s;XOV|9G#g^W``pIeB3n1p6z>VkY(_zck}HPE3YP089O1yG@iMR9ZK2d_Lz_w_3X4i zF?UkiG-h7^=F`2yfABv2nJ1q4 zt^H|mnF;^ZSp5f8CH%nW{}AIZdt&aV*Pl#BQ=M(!^mWX5vUf;n@VWZ0zsD{rc<{hf z;^*tDAwdHF;Py8W{}SbY^M$Qe?z-k}f1Kd}!2$JZhWPN|!%$#85kni<_~muq^-h{% zY?S|$%eeBmebkWUQ%YmzmHTQ^8;?PC>Feuuo-u1y11e2f?q^|Xi7eukbg)R~rAoYm z)b7{Es}?ws%ZOO8cjeP-eHktW`VzmL-3hD27eU)RezN9&^!DXpHRu1^2Q$+!XqGZc z8%}6Nwo=)pQ>4;f3N5tKrafWAm?Wnk3Q}`gXeX4lp=eZb7V~9kA1>tI^_E8l8!Pm}C!t<+66 z&;k{d=h)%TX0v;R*^e87y?W{ObaD-Vx&%qJD*b3V@GXw0I54yz_i-O*vagRhV+;5B zPI-I_7$^!{(L8?1m>uWlH7SPh6`3fMi=w1%&=H6S6g6>LyLTtU6b~e zD_1ZqqP=aK-$Ehz8}O1-2dfSGBBxh)+2`vLT09o_`A->vGVhYjX;mG5Q5u05TX9P485aago|JN1t^Ul?_zHsSMJrp@i770@m zhoFN=a_X!A$=8@xJRR}uPr2iRUmZ_<9twCleMKzPA5gXAmMx}eJv^ZmOKE_-`zDi2 z>J&>6*Pw;|~#rU1i|pf$zuSU%Jl*%IMUPQ?+lKX-U*n(BYb|hSp;X2b`^KO2(x~ z>8Gl)@suqx19PiP{+z*a*Sx>=Gv|Balfib$1vrNi6l890Q*uXtzbp$}kDmX;`uQEx zbLI$L7!QvB*v#ST|#|LNG!eenv?n?PZZEmx~1`gGH;r8Shu9TJ4V88C}4qv|Z^QL(D>YpdF=Zub^T!xZ|3P<73dN$+C>L$=Gu502t1Rv4u?gUjS|{rob1Jm>!7JL?j4)g2rhF8=Zh9ZHql@bg8gVtIJF zERKC%N$y{t`1iy43PYyF`;f0C<<~NBu*%EbfDb~#A>Ggg+G7r(BD6}^>Z-4(hTz(6)1aV_yRp5 zRbXR5#q7(Mhf+*(wZV*KI)`j)L*L3|?cL1?n!4&dORNiz+WmJtr{^V;vW(ZlRZWZ_ zw>3u}J_!;F-Hx3^qtQf&!&oy3J9vi8ckft`o1fpT_-AD;FaPgt`1$(&{9T9>jEd>s zzx;Z4{6nwJ{Kfg*|7%~!|C*PV+DO<{^$J(a*!eV*V1bRW_YW54=jV&S1c2oxlD%us9$Ro}FVfA=lVAgr3`TuC4523=k4K>|eG601 zD@?GQQft;|A`?N9R(uafK>5Im%@drRVdoNt(`gVV)lmuuU^kR*RD`jpNew$;>>>;? zO0y)5vy(qgO=TUe6@e{<@dS4HJ@0WR4^L04`^8Y%8R0-NHd9no6f`RNbkPy=_wdd8 zu5H$ZJDV@(pS9+YDpLH?Zj_GFhjgC4Xc@(&t`b3 zsj6y1(KiZlRy@e@39zEBuYUUy$Hnf%;jB+!oRUJ0H$VjM-v6NgCaYN7Z`^dL`p6_g-~(Ct$rD!(SK* zN)2tCVet=b;%+sS8!n%jCh_>?{Q2`ZCMyjh3RN~7-mSYXhy>idy9P=ZFLq2>nJV77 zsph*`+ukohHGm@=#86Agm=&48kj&&FZ{hfd4{u-&_B$4n1Zx5cv@EAiHLr8uFn9~W z<#xkH`*%cc$fHwrI#FCs;KDnxcae6ix`p6C5_EVm2{llrSSpxeBhcEIQIt)=WE}_hLpaK@e{IY%hzR-LO-CE?6kCFA8(A}0Ho=*<)C==ZZDb5(V~`ks)s48tj)4@+c=}T0O!6>d z-}4-`sWb^fX2!&BB9sah(OZix)r)XTv7JMu^lP}|Pa|(<+WHyYSS=*`5QMYE^95u5sZJNfZGmE)YG+7?*TV*HZ=ni6dj*9A z41Tl88Q(DQ==&*&<&ElmnLpmg2N9sx>VsMnEs=hUZZ zPe?Q^7W>nj)BNZTlr?Xk#a;gR@goYh1Pt=(z(+~@$dNy${COF?b%;{vgI;%bTDtNt z&xC3YoUt|e!!16j2H|Z8Gbu?`2FDiuC~Klg^VB2TxzI8~YPy#_LXH-a$6M~FL*v}d<>3|4!93M^XYO8pDZRb3X3gT*HA7bdkKKJJ#q}&K zVoXd-bh2!858{9TOokycXJNAc&faSSnAl6yPrDA$M?A)Iq{PIwiHL{@uCof*v2!Q? zk3SyG?1Lxt9m;-?tb*m%g@W*PZ*MZ5rsVqdbwlOBUNEaQxOwv?i3c6p3KF0+N!oUL z_KQ5%B-k}1;sWl(<7izz$WhE_>+RTahD3q5J`(A`cI6pv|AA|0{FPyQ>WMR7v)l$u zL!}K7b3&hD%#rE_h&dl|@87z03mmXOL5qHe27LakioM^W-Rn`V|%;V(xpo!58Mf0Ccw;c-rTubs;U=A!7F{~ zn{EAi*hr9p(ne>GAQBo+x1PuUmX@yE?F0A?&SO2$r{6RA!PCpD-A$-T0i&@!Y4a8= zsK@YzE@Gd6|4jtkbN>EsAreiUjU<3b6fz5luWDkx| z8b`T?+oylArxZ)Yb)XIWGpx37Jj}9JBT(3{b{n zL_E)Z@JQk?PB$?_+96R67A@c6#qk(Z*upz~DTD9=KnRoyi_k+s(p!yKkC$Cd=8DK()G!`>nhD*8JdSHpo{ z%%iAp#PsKW{k0})0GFu=*T|o@LQ6_^<5;FxIh=>zP2a{IrD%ezln@gW!)M8jk#PQA z*Q&22_WP&1eB0PS&1e0v`s&WWGHg>Qs(!L%PbZFPEU5nZC zA$aY;lNAs-ibpk{rGi@@fSY0*cpTH^?}mrh0V_!<$p&_YfC#YPDXwhl2@t~9Q| zOCNRj@DPxdl`X-P;+0#i$b$~5a!N`{0dV9lQQf=uUI+qe>s2L>jC2%jmFbXj86H7s z;tlxer!TNEmakp=M9vE0M{}%kiJD`gIo$fl?qQ3ukDDRMtIT?XVU$Y<==fnu4(|pBS-R7hg~TI)($C6$ zK9&t91G&d2uoz~m{!Bz+L5@NjZh(S9)3LhvD@)7Wagxa;3~L!xpaeXITBIh(f-DLi zd(_~N3~0jf;@AtZ?(K_l_Il@wFk^^Z)(yMnW%Ue#4Ze*GkJm- zY|HVxkG&TT=R!B9h#{}$jQzcoR?tHL)ojwf4!it9n0Ikv7sVzj7#yyV(kHtMT&I>0{1IsAzc$g{>zX!YL%ilv(-0 zPL8r7suz5)nuf}GVm$IgE#5f@U~kZiqTZ)$cse=8mG+t;DNR zbi|w-FNE?tV6j8>B)lQc^F;?4BQ#P+1OY5fJ5bdan~aKJ0%K1)c`nwZlwGM2bvFbC zn)(-i{#h%_rhYwaruYVykRPR^@_fcNBhtrGeTX9y;+P50&SOE#RR-FgtGXBvP=}ct zCW|T%=Oy1VPJDr?gdM{-_VJl^jOurl@8h`H*=TfCFoMN_e%JToAW7F+v>R^i{$_#b zmKLt_myEk%@TybM(9kf#*^UVM>_l%=0PGk@=U=-VOE74*I*t-G&u20lMe*Tbfuo*P z9kM#{LFkI)Y}2%?2)NQ)W%uOPIebRzM)#l`h%=x6?D0oYWVuC#(B*&t?;Bk`bqT@H zVh6qbK+@>R_x8#d`#lHI8A7 zNz&y0UDWPZUl}x{nWe!eEuKa@&@%a(hs2;md~B0D{-Jg2c?gqNZQg8zXy*yHe(fv? z-NcX=ImeG@6=Sf6#jZce*2%QmhX<;GnGx0)?`}p@>6I>Sej$9z^ez`85U}koKQkSi z?JkctySX5{BC+>+8v2j0w+1N4IuEC04N>8E{rYu0u_tg5m-9|V__BtpA;*5Ss=4oy zh_Vqi&svS%GT7!0uGWLVA(HU+fW{jj)0Qa>lQvw|T{C$$E7F2H2ElRv2As`}0~Iup z&~@O1pi8F=M#*bEy~eYSd`gEVgAGrbNX2xbO5&`gmIEb|HhLQf9BCnu^1SrOEQZ(5 zmoA0691W~l<=jdLgJJE*vGXZiJgW=dok8MS=WWU;n=7ssq6vtWUsN=WCOKCrdc99Z zl_HL`LoS6HNaB#GlYAGp&1sOutLJ^{8;v=YotJrX-*N6=z$vHJ{5`A&k71<_y?@^T zYpOmG-l0W=rzj=&n^wPZfM)&*Q&`D;&7PVZuQ3PKQ#3--lf`X4D1F#5s6vmvG2uS1 zHqRy8X!h*c)WRpFBPhgUujw@lerh)V*l&PryplC<-aNH*rw|$By?V6d*Q^4#=hcu7 z$+!lvlD&X_xSS>ZA?sS!G(5#_Vt$B~7aVd(YR)8994EbXDuKmNpeG#=)u>dH-&NG| z?P|aC2T-N0bFmK-z`k#q;B&>`jw{9xTq@z!b3Gw+CHjUrw7V2f_69KtO$pE$?lHH*p!Bk6Scp?g_rb>I%?lY1Fi_w+^qK`hXOAq_>y8~e>hj%=Q$4TU&>mft z(P6YyhL93;Rh^Sa>+wL~Xy6CV8yom#P2^{u;o#5^+okKen@V`ki@Z1oPFuTZTU#3i zk4{rX#_L5mBjR^pT_f;bc!PQ~N9Ys6Z3y&_RBGl%XlXc}JgJ8?u^xF2iFiL2#}gD* zz`tS$#Te`P59s>oRN4pXiG7f70eU^7Ivhhd`6XvbGx$IQ?_@Q4-=oQ3c;#9VKI7;& zYqm0w2z2tKezaWwOGA{aooxVHTl%usacM9$5)Sf)<~7ry)8nsyzI=KAoj)@9OAAZQ z&CP)y__U)D#R896BHC2pH#HNVM@l57){V7R&+Io#?hoYxp{>KADOaoK4t0k{Zk->b zg^g?jRzZAwB49JU;KAySHr&!YpEl+GkkptvV|||$>abUurhnx zjCj~(Y9UcPL&1PWEWygP^-|6RBto+E3AlV?jm#DBcQi}d!xCstm0jN47JC%go3J5t zyUD2jv~cHhY?aC)pC9498;o#epzJ#h)zK&K?;lDRo?j6@{-~t2%2<4XfZQ(s!!hHb zPwZ8yd?NI%GfI>+Z2MqJ6X_uBR=kkQ^8v+D_{Ca1p)rw7pQQWUOxP~S`!1#Yf`Sn@ z9l_NJc{mgqdv=6qU#`DCIQv1N99z@Ee&NY`<2IOho@0Sgt+m??L{>V5v4uX zBL_Hb@&nf=<(B1leEHJA&VEyrKzDU9)vkTN3~*J4b@%QKz(w}Z!froI5=UKTjkiOIo9wY#$!F?|>nWrKqSp}8JsvAOh|0(Q%eLDg7R zTf4eCuX}3hyCq8^`_&#W4y{Ih3md6T)Z%`^>`hxnr?JD~qG<9qBw`XQ!C1W+T6`jP zFrz{SST@&Yrb14fIB{pv?Czn{n7{}{XaK7>1O7#fR(Czmu>7Uo{ypJNm>{xJ5P5A+ z$itE8hc8WW0K++^gtWBu<3VhEwY+uV?Y3BL6BuF5;M;@I+}Hj6spxkjPq|y@VbmN{ z4)BE)_U%Q=y5q=ln0gA=DV0Jej)yL_VucD4P360B1VSA!eb=_0GKG2HLH`#p;L>J~ zP?;#RNpw?VFe1}744LSmMFgC$mbej9h4q*|N`Bv%ZjO}&5NjQuC}Z-(>)dgN?2>WB zJ#{sOG0R;iOTT%L?(XTSmRBsZ=@&kUWk9Y0;2FdFPea$CN2PFiwLVIMIxOir6g@OF zMr#YD@F+|bY+*?$@iroD_sad(lTjpDeGuY~DGyJ+EUX%U$BD&m>uBN(*HthuT~JUU-P~&E<%`3JXy{56B%ckCp*s_S0RcMr1IpES zoUZx?!`FLr=l}!V`zH=#5Q$34go@&E?h=+Zi0KjdFvE|hk_jiXN#5|5`Bl9@{g8o1q>l|FqX{N7MrD+fHTldiL*T6 z$wPyE>P={qHXM2Mb&~Vl+g187IC_foasywq#o2xcR~RPDYnujEEwD{O?Feo|sn8A633W%&t=L!aLAXAR)49~yI9J7$s_E|cO9TZIZ`=^W<4!`G zAfY$kw8%TR?bIiq$Xb5JgEriKI@gr-6gU&^*241I+Wq^L27kJ?Ts;MVixIvVqsiC1 zdDWYTV3G#x*czXX2osso%R&mb(8Q^+F=uzY=~by6mLZLE1IG%p34MU99*eeLcBpgwd zJ9Fkt0Q#R2D-#@0u@>oR0ZRp*pHGu0M-8z z>~EEuJI)2bY^gcOVgxRmy3ME-mY~DUDOiD*+;HaX*-P-}d-VMt#BqN!a|UnCL%B_1 zGR6%-7GRD`P9Wn}g>rLQ>_JRs#@K{i8(fHPF34g&ezz&+o*c8mICOoka^W=NIUVS5 zbUf!E@YLIY%vIo56acJN5Eu|>G$3oJ4_TSf$d!U{(D!F9H!Jd1L6Exy{sR~bU8P(X zoPDKt=l4dL4JbEGaf}sxQRS*f0VQD7hk4lH@vlcZlP-lN@$oNsc#KOx_j=sMQ&GX1 zpO3k|%0bwM$G)LX(mylP`J!zv5Cy<= zQ2-$s=<#N}R3+R9nWjW;zn7QS5>)*gL8MsS&&@ULk1K?GQNjxmct&#zJV7p2wl9Gq zW#%)0#lyRx?-0a>&-UE&>Kbt4w=NoYUf>K{86AA4zhi`MDc zUp}?VM03g4RaWJiIX<12)fLq}4*Xu)d^N~ZEwqmhp_U!`I1H6c!i$!vh*mGNWWY99 z0HA}vo;x>vd;>Zuov9ToRtQod1eCJeLXIxDdp~_=L$1oHW=_Nyy0!6>U*?g->QK;_3!&l+V~T}m}Aj7ab$)&`YR zmi03g;J1_($vyyM%%=F(drh*dYxVsPuToMn(N8sb0t>dI;}(Ck!ie_<_USHg)tvp0 zSZ=AcxTSH(Q7U+CYEAD!V02B%LmQjA9{w}*zYq&zPA0f^ipWh1IYe(Ina(WdqTFK+E?(dGZ9{_!(2rZt*GHW$S5st9_7~ z(Qr0)TzP5f9z_38pt>}DynpMbkH}{SHeULg(Qk$`ZFB(_RF0vp+@G@#VFYRui{T!G z@q`y9#lFhb8{ZrGxB|)`FbJm%q=HkUWq@kE0k%%@C|gz`K7_xmRSE=Tjdr1pOYMSo z7U?!1RvEz+A*>h?R71ruC}1)Wo4`^LExUSU?CSi7CBB-BjC13&ub=XSIe?P1vorK5 zB!NPZ*^53Q(@p+wz0S74Lo*73zrVm(_{$fcHpyil>jOa4~YHs6Epu6Q@s2C zq564Q^pn3ov4KcO5`lYWNLLB0%g1ELk4z~6kiYbZ_qTd!rZSM>fQ9usKbz5HgO3BQ zC=}&BvKIcK#l}@Smf96>R~R?TPkF6bT#5GrB@3Xk1w6adw`)-MYRD~eQ^LH z5I!Yp0n{(Y4E;q$P~;l3IpGhB|I)p0%LWagi#33)}(#XIXU?Pk>%)=im22%$Uwh_k;ysuW-p69HVd$&;LQ& zVa(odc7Jz+nSeezq2emfEU~deMPJF4{)bUUnJ~7jIBRHRkVf;FVUw|Aa6OfHwxB=X8sH4>6db|M!afZF!rK`IE52-_ zQ)nPi|B*0=^b9Ci{rni%;_(*cY%)xl*y48kG2j-B z{#aMr(OrGkIvlnK#MT2nten(@i4Y9Q()W(J=Aeoulfm7^@GEOT?U&q8>=lLc_`-;A zLnbbN_;4paY$I^yYp_kuIA;v>{6NmXG`5Q(}UFUQY%bX zgwP2YDfL|SImgW+?SJ_G`??HEb&}Ok@`4Ow6q&XMT}1;-K*3RbaH-`LJB}_U3e8(0 zx@k#V5pEqtY)U`SM@9BQIg$hgB+k%M1zJqHNNL`8bSwvIOluq+KpHO4x2w>25yOq! zu8BrlyJ|JOr>~-O2CON=0#zAdDKdhcJoFr`1jNLfT>D!LK?^!LI%<*kCloED!$HAC zj`SIIV`MCX@F8PbU;q#;(X=oRXz_X|4$*%ezz=S0?uQ5p8TSbqnNEn)sGmWep><1V zBitMw>wdO}J+muVkI=VYV+RMak3iIVa2PLC9%S)ha&iff z=Y3iy0aBQwec=pz0ykm~BZ?A~8`^b>J`?v~n8LG@z1Hb$@uK|53a`NKL%3-}wrTwzWI{&oqr!CIyOXw!X9aPj7-xIint8yQ*eJ3W3>-O$7& z>PkomMSE$}g6GfgJKn}zc+{;aG~kzjFzjT1$Il;XBg784=Mb5OlNf?5$Or53AfDi2 zLV}qBD16spq1#Cq-#>Bl3Y?m7ogPCLk!d@z7So|uP;Y|6?j>+9=x z03OM%GXKAD(pAH$&;UG%+b`OIHOt8W#vn+9A~Xu9ZgE2OB~${26`LGdj`7JD)dg96 zgw&hGADp7ly2h^dtlQ;I)8oZc*-Ojgjj|HcQ8`r(BJD0;w(Ped5zr`oE@o-@SXgC4 zg5JO$ISQXZH_ecPs&b@-j>54CZ$F@`xio9eSBvp3cSE3%`8CJ_h>0Mu^nFii8oZ34 zhge$v0V1!I5&mpj6hPY-ix3j~eB*vLaE=7Ruh=4QL5f&DWG)J@Rd4JG6iCN{!{(~swgxe-tYEu>v|DRrrif9yhe zwhyo#ffUKvNx0KR(-XFxwbAWPRnMLsKsoaiURYFIqmoY0NzmpD;o7VLYp`SJLjm`0 z+L#J5nLKRBo@kM*32C0y!%>9cw9!=bu{0S0;f%(eiH&K3XdP;kaM&kDp&fx24VgBW zC5rUu&kXHFA>}}j+d*<^Aur@=Dt@tG)NvsdnnGOu*#m7E4R)yIC?TtHq!Vy#jfIsv z!%1RhPaXsSG*jX*{Lac9AAXW;Z>$VOfPhUf9s+K95}+tRI|o3z*WEq5lUNOetn&+n z=}=)2Rd1q}P||A)^Uj;64dxpIU#P5;v-^-CB79K&8B)yjeBYaZ>}6cC7UzJ^oKf1Z z=$nZE2aEt@*&jE!)N+B*N`&C_HKDw`dHk99PD8k7L6bnZY77GpSo3PoZ| z>vdfeS$d);Ro(P7sl}@QX&KZ?{MgS{#gtFb`?$i^F47g%K*+eCy*!OT#2Uj3=- z)@aDB+qda#7}(_8S(T=f0Fn}^CfKFx*Y6pnR#HFLE2SAke)G&GtgV0)SqNn4b~Nz7 zzyKOp?W_qxHLuP_V7`M~iXj4I0+!n7-OVz<$MsO-lO_xb%p_MN5y_dm!E4hG`A{)@ zKlJ}AKaY8%iroPYtXZn!`g}< zy>?~T>LkeA1OW%ap9sjL3}#r#atI}s_aXD3X^&OrflU#p7^F6D-h7~A?aIrB%^Y4o z^Yjg(cQ*W}mfdwZphn$#bV}^1=$+`zu4-s5)iMF{{Qx64Lo|E)bXP)1{B&!_@aSk( z__4_PMp-FmY&#z~gz`}x%He@lwN@W6KFYE*KR>_uV_%B7na?bMe`W&YSHY-^r44~+ zo-00Y5~}J-gavhuwAPhnyS3}ly;RJ(L;|~wl{L{@SF<4PtI&x?JZQjn&`C2@_JKAN zRiZ@2Gb3HeB=F#3-O*Q5%HO&(l!U+&l0#YC=Iiyj%X6yKx$-z@;TA0AS3T^bu?O_p zam@p0;{oH_jo$RqsLB8J*I!XPBodxUz#CLBoW2OMx$W!X339%gcHl^nis=#M-G4c2 z2X%$#Bq14^=egd#eOtV>Y5Jj&QytQn=m)*yq$$K2sn38yS)E;-B5$XF){U8fS508w zW?BRN4-b&@;VwpHV4J11Vns;?Kg+6g&dXPat`FM@*Y>ttX)6dp(rx-mQn5>Xcrpkt zL30O(7bg@|VRb_rwGtYE7cDgv-ZfDXZe&TyqIzHBx>5rA$_m^|B=qVl!*j|6sv0HM znk`@b&#a)34!&QU1p=+^^cE`*;OX(rcve>;|FN=K zi2Z3qf?@J;Ow^SkGH&-c&PpBu<*1%FoG^$rM!?tv6l2m-if9avA&in(5APvz%o}AM zdFzoFr81qWQQ#G9I@pY$g9APrZR%8?UOUg4(UQTQQV)f$jMQF3^DT`~sK~k2VE5Bx z7L5er*kD6+QuW%|2(_2srpLxnn`@GijAlK6J=X|sy#cokA{{y<>ILWl=wa%MPkq`u z+K4lD&~0JDc{|nLD6P#Un!z~XkXT(7ox7Cbs=oYx<`^R0DoZM(bPi@xU;@gV$sB7# zq^GL?{XlyfdcE%UPt#*lyv#XhA?s5QD#9(!AUp0z{)z{KYs}V}Eg$&Dm{I6CthMU^ z7E#RrKpvg2J~AnBx}mZMjlTQtJ9a-)in<4O3k zoGnOnDN0Omw~1(TP~EmxWBCI|)dC`X5A6b#PPhaDcrZ_qf;CF~HAz|Iltmc4=b;Ge z2HvcX7uH2@4jH*MMs;X(9JrdC@}~&+?_u-L*c7_}UZBUucV$ttm(Xsm&P;XpvVb?A$5=UxoG zAjuN?{5qUI0~!3FouHu&*FF-h38@FDi!ZHNAa?Y>9>`U29$*<#fm)Kv1483^NERhf zCJ+oT0aJZxSDyKcZ@_YxMK=(!8G_r@G-3h?+ktGQ5Jxw+MrxIzJ$ZuypKC8(6zIIpVYk=jd_Z#l(~Kpo&vb^od67Iq7B5JFTz_Q z?l>WOgnPwqk-|Iy(5z#4D|(Ws|Kd>ROUTO`pxAqgT`c;c!mk0kc5AR-6QHw*m?8QL zr2-Xo^fVC8Y>+mI<-0Q}f;kSFC_;dcz`P++C{f5%A)^%FK0mq73Jiii$TM*kW;}$F zzM8%8!c684E5Dl^{x1UxJ4;`&%8t#YC!iL^;^_v2O@pRXM8RuJNvx_d@Z9*st4H(x zO8Ch8C!%Qt1Ep6I=nN%09zT-+e9NxCAtQWC%XzY}#B?ls{fU>`6!*+w+@+U!yvXa% zx&f1C!gnnXv~7YwlsaKRl=TSyd_qFW0CJ6dvl&7F=G#iW7yR3^&QDq%NG#Og;F;^P yZ1qvJM4#_t1bwsC>@48(fB%yIUoyL!7JbIqc_CN-4TiHB4AyRqU8y?`o%uh!h!QXW literal 0 HcmV?d00001 diff --git a/runs/fidelity-headroom/run_pilot_simulator.py b/runs/fidelity-headroom/run_pilot_simulator.py index 6db18b4..d1833ec 100644 --- a/runs/fidelity-headroom/run_pilot_simulator.py +++ b/runs/fidelity-headroom/run_pilot_simulator.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Run and score the 12 frozen Frontier P1 primary probes, CPU only.""" +"""Run and score a frozen Frontier probe manifest, CPU only.""" from __future__ import annotations @@ -54,9 +54,16 @@ def git_capture(root: Path, *arguments: str) -> str: def execute(args: argparse.Namespace) -> dict[str, Any]: + args.output = args.output.resolve() prepared = json.loads(args.prepared_manifest.read_text(encoding="utf-8")) if prepared["status"] != "PASS": raise RuntimeError("prepared simulator manifest did not pass") + expected_runs = int(prepared.get("expected_runs", len(prepared["entries"]))) + if expected_runs != len(prepared["entries"]): + raise RuntimeError( + f"prepared manifest expected {expected_runs} runs but contains " + f"{len(prepared['entries'])} entries" + ) driver = load_module( "simfid_execution_driver", args.replayserve_root @@ -71,7 +78,7 @@ def execute(args: argparse.Namespace) -> dict[str, Any]: failures = [] gpu_visibility_disabled = True for sequence, entry in enumerate(prepared["entries"]): - run_root = args.output / f"{sequence:02d}_{entry['fixture_id']}" + run_root = args.output / f"{sequence:03d}_{entry['fixture_id']}" scorer_path = run_root / "scorer_output.json" if scorer_path.is_file() and args.resume: scorer = json.loads(scorer_path.read_text(encoding="utf-8")) @@ -205,8 +212,8 @@ def execute(args: argparse.Namespace) -> dict[str, Any]: red_flags = [] if failures: red_flags.append("frontier_run_failure") - if len(results) != 12: - red_flags.append("runs_not_12") + if len(results) != expected_runs: + red_flags.append("runs_not_expected") if any(not 0.0 <= value <= 1.0 for value in pass_rates): red_flags.append("pass_rate_out_of_range") if any(value <= 0 for value in throughputs): @@ -251,7 +258,8 @@ def execute(args: argparse.Namespace) -> dict[str, Any]: "distinct_n": len(set(runtimes)), }, "invariants": { - "runs_12": len(results) == 12, + "runs_expected": len(results) == expected_runs, + "expected_runs": expected_runs, "zero_failures": not failures, "ratios_bounded": all(0.0 <= value <= 1.0 for value in pass_rates), "nonnegative_metrics": all(value > 0 for value in throughputs), diff --git a/runs/frontier-qwen30-vllm020-profile-v1/analyze_op_trace_delta.py b/runs/frontier-qwen30-vllm020-profile-v1/analyze_op_trace_delta.py new file mode 100644 index 0000000..07883e4 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/analyze_op_trace_delta.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +"""Compare Frontier operator predictions at the identical initial scheduler state.""" + +from __future__ import annotations + +import argparse +import json +import re +from pathlib import Path + + +PATTERN = re.compile( + r"\[OP-TRACE\]\[MONOLITHIC\]\[(?:ATTENTION|MOE)\]\[([^]]+)\] " + r"batch_id=(\d+), layer_id=(\d+), predicted_time_ms=([0-9.eE+-]+)" +) +COMPONENTS = ( + "input_layernorm", + "attn_pre_proj", + "attn_rope", + "attn_kv_cache_save", + "attn_prefill", + "attn_decode", + "attn_post_proj", + "post_attention_layernorm", + "moe_gating_linear", + "moe_gating_routing_topk", + "moe_shuffling", + "moe_grouped_gemm", +) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--old", type=Path, required=True) + parser.add_argument("--new", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + return parser.parse_args() + + +def first_state(path: Path) -> dict[str, float]: + values: dict[str, set[float]] = {} + with path.open(errors="replace") as handle: + for line in handle: + match = PATTERN.search(line) + if match and int(match[2]) == 0 and int(match[3]) == 0: + values.setdefault(match[1], set()).add(float(match[4])) + ambiguous = {name: sorted(items) for name, items in values.items() if len(items) != 1} + if ambiguous: + raise ValueError(f"ambiguous initial predictions in {path}: {ambiguous}") + result = {name: next(iter(items)) for name, items in values.items()} + result.setdefault("attn_decode", 0.0) + missing = sorted(set(COMPONENTS) - set(result)) + if missing: + raise ValueError(f"missing initial predictions in {path}: {missing}") + return result + + +def main() -> None: + args = parse_args() + old = first_state(args.old) + new = first_state(args.new) + rows = [] + for component in COMPONENTS: + rows.append( + { + "component": component, + "historical_profile_ms": old[component], + "vllm020_profile_ms": new[component], + "new_over_old": new[component] / old[component] + if old[component] != 0 + else None, + } + ) + old_total = sum(old[name] for name in COMPONENTS) + new_total = sum(new[name] for name in COMPONENTS) + output = { + "schema": "frontier-initial-op-trace-delta.v1", + "comparison_contract": { + "fixture": "fidelity_p1_tp1_mns64_low1", + "scheduler_state": "batch_id=0, layer_id=0 before profile-dependent trajectories diverge", + "calibration_a_tp": 1.0, + }, + "layer_component_sum_ms": { + "historical_profile": old_total, + "vllm020_profile": new_total, + "new_over_old": new_total / old_total, + }, + "rows": rows, + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(output, indent=2, sort_keys=True) + "\n") + print(args.output) + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-qwen30-vllm020-profile-v1/analyze_p1_profile_ablation.py b/runs/frontier-qwen30-vllm020-profile-v1/analyze_p1_profile_ablation.py new file mode 100644 index 0000000..67ec218 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/analyze_p1_profile_ablation.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +"""Analyze real, calibrated, old-profile, and new-profile P1 probe outcomes.""" + +from __future__ import annotations + +import argparse +import csv +import json +import statistics +from pathlib import Path +from typing import Any + + +MODES = ("historical-calibrated", "historical-profile-only", "vllm020-profile-only") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--controller-state", type=Path, required=True) + parser.add_argument("--calibrated", type=Path, required=True) + parser.add_argument("--old-profile-only", type=Path, required=True) + parser.add_argument("--new-profile-only", type=Path, required=True) + parser.add_argument("--output-json", type=Path, required=True) + parser.add_argument("--output-csv", type=Path, required=True) + return parser.parse_args() + + +def load_results(path: Path) -> dict[tuple[str, str], dict[str, Any]]: + payload = json.loads(path.read_text()) + if payload["status"] != "PASS" or len(payload["results"]) != 12: + raise ValueError(f"expected 12 passing simulator probes in {path}") + return {(row["cell"], row["role"]): row for row in payload["results"]} + + +def main() -> None: + args = parse_args() + controller = json.loads(args.controller_state.read_text()) + real: dict[tuple[str, str], dict[str, Any]] = {} + for cell, value in controller["cells"].items(): + tp = int(value["tp"]) + for run in value["runs"]: + if run["role"] in ("low1", "high1"): + real[(cell, run["role"])] = { + **run, + "tp": tp, + "offered_req_s_per_gpu": int(run["selected_count"]) / 60 / tp, + } + if len(real) != 12: + raise ValueError(f"expected 12 real P1 probes, found {len(real)}") + + modes = { + "historical-calibrated": load_results(args.calibrated), + "historical-profile-only": load_results(args.old_profile_only), + "vllm020-profile-only": load_results(args.new_profile_only), + } + rows: list[dict[str, Any]] = [] + summaries: dict[str, Any] = {} + for mode in MODES: + predicted = modes[mode] + false_feasible = 0 + false_infeasible = 0 + pass_errors: list[float] = [] + capacity_lower_bounds: dict[str, float] = {} + for key in sorted(real): + real_row = real[key] + sim_row = predicted[key] + scorer = sim_row["scorer"] + sim_feasible = bool(scorer["slo"]["feasible"]) + real_feasible = bool(real_row["feasible"]) + false_feasible += int(sim_feasible and not real_feasible) + false_infeasible += int(real_feasible and not sim_feasible) + pass_error = abs(float(scorer["slo"]["pass_rate"]) - float(real_row["pass_rate"])) + pass_errors.append(pass_error) + rows.append( + { + "mode": mode, + "cell": key[0], + "role": key[1], + "real_feasible": real_feasible, + "sim_feasible": sim_feasible, + "real_pass_rate": float(real_row["pass_rate"]), + "sim_pass_rate": float(scorer["slo"]["pass_rate"]), + "pass_rate_absolute_error": pass_error, + "offered_req_s_per_gpu": float(real_row["offered_req_s_per_gpu"]), + "sim_throughput_req_s_per_gpu": float( + scorer["throughput_requests_per_second_per_gpu"] + ), + } + ) + if sim_feasible: + capacity_lower_bounds[key[0]] = max( + capacity_lower_bounds.get(key[0], 0.0), + float(real_row["offered_req_s_per_gpu"]), + ) + agreement = 12 - false_feasible - false_infeasible + summaries[mode] = { + "probe_classification": { + "agreement": agreement, + "accuracy": agreement / 12, + "false_feasible": false_feasible, + "false_infeasible": false_infeasible, + }, + "pass_rate_mae": statistics.mean(pass_errors), + "feasible_probe_count": sum( + bool(row["scorer"]["slo"]["feasible"]) for row in predicted.values() + ), + "p1_capacity_lower_bounds_req_s_per_gpu": { + cell: capacity_lower_bounds.get(cell, 0.0) + for cell in sorted(controller["cells"]) + }, + "rank_identifiable": bool(capacity_lower_bounds), + } + + output = { + "schema": "frontier-qwen30-p1-profile-ablation.v1", + "scope": { + "cells": 6, + "probes_per_cell": 2, + "roles": ["low1", "high1"], + "reading": "held-out boundary classification, not a complete capacity sweep", + }, + "sources": { + "controller_state": str(args.controller_state.resolve()), + "historical_calibrated": str(args.calibrated.resolve()), + "historical_profile_only": str(args.old_profile_only.resolve()), + "vllm020_profile_only": str(args.new_profile_only.resolve()), + }, + "summaries": summaries, + "rows": rows, + } + args.output_json.parent.mkdir(parents=True, exist_ok=True) + args.output_json.write_text(json.dumps(output, indent=2, sort_keys=True) + "\n") + args.output_csv.parent.mkdir(parents=True, exist_ok=True) + with args.output_csv.open("w", newline="") as handle: + writer = csv.DictWriter(handle, fieldnames=list(rows[0])) + writer.writeheader() + writer.writerows(rows) + print(args.output_json) + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-qwen30-vllm020-profile-v1/analyze_routing_mismatch.py b/runs/frontier-qwen30-vllm020-profile-v1/analyze_routing_mismatch.py new file mode 100644 index 0000000..56d8492 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/analyze_routing_mismatch.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +"""Compare captured vLLM expert loads with Frontier's fixed routing prior.""" + +from __future__ import annotations + +import argparse +import json +import math +import statistics +from pathlib import Path +from typing import Any + +import numpy as np + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--routing", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--seed", type=int, default=42) + return parser.parse_args() + + +def gini(values: np.ndarray) -> float: + values = np.asarray(values, dtype=np.float64) + if values.sum() == 0: + return 0.0 + ordered = np.sort(values) + n = len(ordered) + indices = np.arange(1, n + 1, dtype=np.float64) + return float((2 * np.sum(indices * ordered) / np.sum(ordered) - (n + 1)) / n) + + +def stats(values: np.ndarray) -> dict[str, float]: + values = np.asarray(values, dtype=np.float64) + mean = float(np.mean(values)) + return { + "load_cv": float(np.std(values) / mean), + "load_gini": gini(values), + "max_load_ratio": float(np.max(values) / mean), + "expert_utilization": float(np.count_nonzero(values) / len(values)), + } + + +def proportional_counts(total: int, ratios: np.ndarray) -> np.ndarray: + exact = total * ratios / ratios.sum() + counts = np.floor(exact).astype(np.int64) + remainder = total - int(counts.sum()) + order = sorted( + range(len(ratios)), + key=lambda i: (-(exact[i] - counts[i]), -(ratios[i] / ratios.sum()), i), + ) + for index in range(remainder): + counts[order[index % len(order)]] += 1 + assert int(counts.sum()) == total + return counts + + +def correlation(left: np.ndarray, right: np.ndarray) -> float: + value = float(np.corrcoef(left, right)[0, 1]) + return value if math.isfinite(value) else 0.0 + + +def distribution(values: list[float]) -> dict[str, float]: + return { + "min": min(values), + "median": statistics.median(values), + "max": max(values), + } + + +def main() -> None: + args = parse_args() + routing = json.loads(args.routing.read_text()) + phases = routing["phases"] + layer_count = len(phases["prefill"]["per_layer"]) + expert_count = len(phases["prefill"]["per_layer"][0]["counts"]) + + rows: list[dict[str, Any]] = [] + for phase in ("prefill", "decode"): + for layer, actual in enumerate(phases[phase]["per_layer"]): + rng = np.random.RandomState(args.seed + layer) + ratios = rng.uniform(0.1, 1.0, expert_count) + synthetic = proportional_counts(int(actual["total_routed_tokens"]), ratios) + synthetic_stats = stats(synthetic) + for name in synthetic_stats: + if not math.isclose( + stats(np.asarray(actual["counts"]))[name], + float(actual[name]), + rel_tol=0, + abs_tol=1e-12, + ): + raise ValueError(f"captured metric mismatch: {phase} layer {layer} {name}") + rows.append( + { + "phase": phase, + "layer": layer, + "total_routed_tokens": int(actual["total_routed_tokens"]), + "actual": {name: float(actual[name]) for name in synthetic_stats}, + "frontier_simulation": synthetic_stats, + "actual_vs_frontier_pearson": correlation( + np.asarray(actual["counts"], dtype=np.float64), synthetic + ), + } + ) + + phase_summary: dict[str, Any] = {} + for phase in ("prefill", "decode"): + selected = [row for row in rows if row["phase"] == phase] + phase_summary[phase] = { + "token_count": int(phases[phase]["token_count"]), + "actual": { + name: distribution([row["actual"][name] for row in selected]) + for name in selected[0]["actual"] + }, + "frontier_simulation": { + name: distribution([row["frontier_simulation"][name] for row in selected]) + for name in selected[0]["frontier_simulation"] + }, + "actual_vs_frontier_pearson": distribution( + [row["actual_vs_frontier_pearson"] for row in selected] + ), + } + + phase_correlations = [] + for layer in range(layer_count): + prefill = np.asarray(phases["prefill"]["per_layer"][layer]["counts"]) + decode = np.asarray(phases["decode"]["per_layer"][layer]["counts"]) + phase_correlations.append(correlation(prefill, decode)) + + output = { + "schema": "frontier-routing-mismatch.v1", + "source": str(args.routing.resolve()), + "frontier_contract": { + "mode": "simulation", + "seed": args.seed, + "allocation": "per-layer fixed Uniform(0.1, 1.0), normalized once and reused for every batch and phase", + "layer_count": layer_count, + "expert_count": expert_count, + }, + "phase_summary": phase_summary, + "actual_prefill_vs_decode_pearson": distribution(phase_correlations), + "frontier_prefill_vs_decode_pearson": 1.0, + "rows": rows, + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(output, indent=2, sort_keys=True) + "\n") + print(args.output) + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-qwen30-vllm020-profile-v1/analyze_s2_profile_ablation.py b/runs/frontier-qwen30-vllm020-profile-v1/analyze_s2_profile_ablation.py new file mode 100644 index 0000000..ac4dfec --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/analyze_s2_profile_ablation.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +"""Score a replacement-profile S2 sweep against the frozen real oracle.""" + +from __future__ import annotations + +import argparse +import importlib.util +import json +import math +import sys +from pathlib import Path +from typing import Any + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--shard-metrics", type=Path, action="append", required=True) + parser.add_argument("--ground-truth", type=Path, required=True) + parser.add_argument("--historical-metrics", type=Path, required=True) + parser.add_argument("--historical-analyzer", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + return parser.parse_args() + + +def load_module(path: Path): + spec = importlib.util.spec_from_file_location("simfid_s2_analyzer", path) + if spec is None or spec.loader is None: + raise ImportError(path) + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +def ranking(scores: dict[str, float]) -> list[dict[str, Any]]: + return [ + {"rank": index + 1, "cell": cell, "score": score} + for index, (cell, score) in enumerate( + sorted(scores.items(), key=lambda item: (-item[1], item[0])) + ) + ] + + +def robust_loao( + analyzer: Any, + runs: list[dict[str, Any]], + mode: str, + reading: str, + real_scores: dict[str, float], +) -> dict[str, Any]: + """Historical LOAO with an explicit null range for all-tied concordance.""" + anchors = sorted( + {(row["cell_id"], int(row["probe_index"])) for row in runs}, + key=lambda item: (analyzer.CELL_ORDER.index(item[0]), item[1]), + ) + replicates = [] + undefined = [] + for cell, probe in anchors: + scores, detail = analyzer.cell_scores( + runs, mode, reading, removed=(cell, probe) + ) + if scores is None: + undefined.append( + {"removed_cell_id": cell, "removed_probe_index": probe, **detail} + ) + continue + metric = analyzer.rank_metrics(real_scores, scores) + replicates.append( + { + "removed_cell_id": cell, + "removed_probe_index": probe, + "top1_optimistic_regret": metric["top1"]["optimistic_regret"], + "top1_worst_case_regret": metric["top1"]["worst_case_regret"], + "top5_minimum_exact_five_overlap": metric["top5"]["minimum_exact_five_overlap"], + "top5_maximum_exact_five_overlap": metric["top5"]["maximum_exact_five_overlap"], + "top5_optimistic_regret": metric["top5"]["optimistic_regret"], + "top5_worst_case_regret": metric["top5"]["worst_case_regret"], + "tau_b": metric["kendall_tau_b"]["tau_b"], + "pairwise_exact_sign_accuracy": metric["pairwise_direction"]["exact_sign_accuracy"], + "pairwise_non_tied_concordance": metric["pairwise_direction"]["non_tied_concordance"], + "trap_reproduced": metric["named_interactions"]["trap_reproduced"], + "tp2_mns32_unique_global_best": metric["named_interactions"]["tp2_mns32_unique_global_best"], + } + ) + scalar_keys = ( + "top1_optimistic_regret", + "top1_worst_case_regret", + "top5_minimum_exact_five_overlap", + "top5_maximum_exact_five_overlap", + "top5_optimistic_regret", + "top5_worst_case_regret", + "tau_b", + "pairwise_exact_sign_accuracy", + "pairwise_non_tied_concordance", + ) + ranges = {} + for key in scalar_keys: + values = [row[key] for row in replicates if row[key] is not None] + ranges[key] = { + "min": min(values) if values else None, + "max": max(values) if values else None, + } + return { + "replicate_count": len(anchors), + "defined_replicates": len(replicates), + "undefined_replicates": len(undefined), + "undefined": undefined, + "ranges": ranges, + "trap_reproduced_count": sum(row["trap_reproduced"] for row in replicates), + "tp2_mns32_unique_global_best_count": sum( + row["tp2_mns32_unique_global_best"] for row in replicates + ), + "replicates": replicates, + "range_semantics": "deterministic LOAO sensitivity ranges, not confidence intervals", + } + + +def main() -> None: + args = parse_args() + analyzer = load_module(args.historical_analyzer) + ground = json.loads(args.ground_truth.read_text()) + cells = {str(cell["cell_id"]): cell for cell in ground["cells"]} + if set(cells) != set(analyzer.CELL_ORDER): + raise ValueError("ground-truth cells differ from the frozen 3x4 surface") + + result_rows: list[dict[str, Any]] = [] + sources = [] + for path in args.shard_metrics: + payload = json.loads(path.read_text()) + if payload["status"] != "PASS": + raise ValueError(f"shard did not pass: {path}") + sources.append({"path": str(path.resolve()), "runs": len(payload["results"])}) + result_rows.extend(payload["results"]) + if len(result_rows) != 92: + raise ValueError(f"expected 92 replacement-profile probes, found {len(result_rows)}") + + seen: set[tuple[str, int]] = set() + runs = [] + for row in result_rows: + cell_id = str(row["cell"]) + probe_index = int(row["probe_index"]) + key = (cell_id, probe_index) + if key in seen: + raise ValueError(f"duplicate probe {key}") + seen.add(key) + real_probe = cells[cell_id]["probe_history"][probe_index] + if not math.isclose( + float(real_probe["sampling_u"]), float(row["sampling_u"]), rel_tol=0, abs_tol=1e-15 + ): + raise ValueError(f"sampling_u mismatch for {key}") + if int(real_probe["request_count"]) != int(row["selected_count"]): + raise ValueError(f"request count mismatch for {key}") + runs.append( + { + **row, + "cell_id": cell_id, + "mode": "vllm020-profile-only", + "probe_index": probe_index, + "sampling_u": float(row["sampling_u"]), + "request_count": int(row["selected_count"]), + "tensor_parallel_size": int(row["tensor_parallel_size"]), + "real_anchor": { + "feasible": bool(real_probe["feasible"]), + "pass_rate": float(real_probe["pass_rate"]), + "request_count": int(real_probe["request_count"]), + }, + } + ) + + historical = json.loads(args.historical_metrics.read_text()) + real_scores = {cell: float(value) for cell, value in historical["real_scores"].items()} + analyses = {} + for reading in analyzer.READINGS: + scores, detail = analyzer.cell_scores(runs, "vllm020-profile-only", reading) + if scores is None: + raise ValueError(f"undefined {reading} scores: {detail}") + analysis = { + "reading": reading, + "simulated_scores": scores, + "ranking": ranking(scores), + "cell_score_details": detail["cells"], + "metrics": analyzer.rank_metrics(real_scores, scores), + "loao": robust_loao( + analyzer, runs, "vllm020-profile-only", reading, real_scores + ), + } + if reading == "SLO-gated": + analysis["false_feasibility"] = analyzer.false_feasibility( + runs, "vllm020-profile-only" + ) + analyses[reading] = analysis + + historical_modes = {} + for label, key in ( + ("historical-profile-only", "uncalibrated/SLO-gated"), + ("historical-per-tp-calibration", "frozen-calibrated/SLO-gated"), + ): + value = historical["analyses"][key] + historical_modes[label] = { + "simulated_scores": value["simulated_scores"], + "ranking": ranking(value["simulated_scores"]), + "metrics": value["metrics"], + "false_feasibility": value["false_feasibility"], + } + + output = { + "schema": "frontier-qwen30-s2-profile-ablation.v1", + "scope": { + "cells": len(analyzer.CELL_ORDER), + "probes": len(runs), + "trace_horizon_seconds": 60, + "calibration_a_tp": 1.0, + }, + "sources": { + "replacement_profile_shards": sources, + "ground_truth": str(args.ground_truth.resolve()), + "historical_metrics": str(args.historical_metrics.resolve()), + }, + "real_scores": real_scores, + "historical_modes": historical_modes, + "vllm020_profile_only": analyses, + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(output, indent=2, sort_keys=True) + "\n") + print(args.output) + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-initial-op-trace-delta.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-initial-op-trace-delta.json new file mode 100644 index 0000000..58346dc --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-initial-op-trace-delta.json @@ -0,0 +1,87 @@ +{ + "comparison_contract": { + "calibration_a_tp": 1.0, + "fixture": "fidelity_p1_tp1_mns64_low1", + "scheduler_state": "batch_id=0, layer_id=0 before profile-dependent trajectories diverge" + }, + "layer_component_sum_ms": { + "historical_profile": 1.148334, + "new_over_old": 2.700194368537377, + "vllm020_profile": 3.1007249999999997 + }, + "rows": [ + { + "component": "input_layernorm", + "historical_profile_ms": 0.010619, + "new_over_old": 1.955833882663151, + "vllm020_profile_ms": 0.020769 + }, + { + "component": "attn_pre_proj", + "historical_profile_ms": 0.204389, + "new_over_old": 1.0199276869107439, + "vllm020_profile_ms": 0.208462 + }, + { + "component": "attn_rope", + "historical_profile_ms": 0.018908, + "new_over_old": 7.394171779141103, + "vllm020_profile_ms": 0.139809 + }, + { + "component": "attn_kv_cache_save", + "historical_profile_ms": 0.014226, + "new_over_old": 1.427386475467454, + "vllm020_profile_ms": 0.020306 + }, + { + "component": "attn_prefill", + "historical_profile_ms": 0.107759, + "new_over_old": 2.670709639102071, + "vllm020_profile_ms": 0.287793 + }, + { + "component": "attn_decode", + "historical_profile_ms": 0.0, + "new_over_old": null, + "vllm020_profile_ms": 0.0 + }, + { + "component": "attn_post_proj", + "historical_profile_ms": 0.134153, + "new_over_old": 0.967559428413826, + "vllm020_profile_ms": 0.129801 + }, + { + "component": "post_attention_layernorm", + "historical_profile_ms": 0.011481, + "new_over_old": 0.9000087100426792, + "vllm020_profile_ms": 0.010333 + }, + { + "component": "moe_gating_linear", + "historical_profile_ms": 0.011802, + "new_over_old": 2.2642772411455687, + "vllm020_profile_ms": 0.026723 + }, + { + "component": "moe_gating_routing_topk", + "historical_profile_ms": 0.009662, + "new_over_old": 2.2922790312564687, + "vllm020_profile_ms": 0.022148 + }, + { + "component": "moe_shuffling", + "historical_profile_ms": 0.030431, + "new_over_old": 0.0, + "vllm020_profile_ms": 0.0 + }, + { + "component": "moe_grouped_gemm", + "historical_profile_ms": 0.594904, + "new_over_old": 3.756204362384519, + "vllm020_profile_ms": 2.234581 + } + ], + "schema": "frontier-initial-op-trace-delta.v1" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.csv b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.csv new file mode 100644 index 0000000..2750398 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.csv @@ -0,0 +1,37 @@ +mode,cell,role,real_feasible,sim_feasible,real_pass_rate,sim_pass_rate,pass_rate_absolute_error,offered_req_s_per_gpu,sim_throughput_req_s_per_gpu +historical-calibrated,tp1_mns64,high1,False,True,0.24581005586592178,0.9888268156424581,0.7430167597765364,2.9833333333333334,2.8823345959582403 +historical-calibrated,tp1_mns64,low1,True,True,1.0,1.0,0.0,2.033333333333333,1.9806287931485522 +historical-calibrated,tp1_mns8,high1,False,False,0.20670391061452514,0.16759776536312848,0.03910614525139666,2.9833333333333334,2.162661799726284 +historical-calibrated,tp1_mns8,low1,True,True,1.0,0.9754098360655737,0.024590163934426257,2.033333333333333,1.9806313066623409 +historical-calibrated,tp2_mns64,high1,True,True,1.0,1.0,0.0,2.875,2.809583898291986 +historical-calibrated,tp2_mns64,low1,True,True,1.0,1.0,0.0,1.9583333333333333,1.911740196570019 +historical-calibrated,tp2_mns8,high1,False,False,0.20238095238095238,0.15476190476190477,0.047619047619047616,2.8,2.083217332903509 +historical-calibrated,tp2_mns8,low1,True,True,1.0,0.9868995633187773,0.013100436681222738,1.9083333333333334,1.8637394408880168 +historical-calibrated,tp4_mns16,high1,False,False,0.10666666666666667,0.2693333333333333,0.16266666666666663,3.125,2.6829294600763345 +historical-calibrated,tp4_mns16,low1,False,True,0.6196078431372549,1.0,0.3803921568627451,2.125,2.0865667413849516 +historical-calibrated,tp4_mns64,high1,True,True,1.0,1.0,0.0,3.125,3.0718260341342285 +historical-calibrated,tp4_mns64,low1,True,True,1.0,1.0,0.0,2.125,2.0967062495193307 +historical-profile-only,tp1_mns64,high1,False,False,0.24581005586592178,0.24581005586592178,0.0,2.9833333333333334,2.82546810606982 +historical-profile-only,tp1_mns64,low1,True,False,1.0,0.7377049180327869,0.2622950819672131,2.033333333333333,1.9427723213024963 +historical-profile-only,tp1_mns8,high1,False,False,0.20670391061452514,0.09497206703910614,0.111731843575419,2.9833333333333334,1.5728783582441022 +historical-profile-only,tp1_mns8,low1,True,False,1.0,0.1721311475409836,0.8278688524590164,2.033333333333333,1.5629164685645112 +historical-profile-only,tp2_mns64,high1,True,False,1.0,0.2608695652173913,0.7391304347826086,2.875,2.7121507155597584 +historical-profile-only,tp2_mns64,low1,True,False,1.0,0.8382978723404255,0.16170212765957448,1.9583333333333333,1.849101894293262 +historical-profile-only,tp2_mns8,high1,False,False,0.20238095238095238,0.041666666666666664,0.16071428571428573,2.8,0.9859710483293953 +historical-profile-only,tp2_mns8,low1,True,False,1.0,0.0611353711790393,0.9388646288209607,1.9083333333333334,0.9771135206177947 +historical-profile-only,tp4_mns16,high1,False,False,0.10666666666666667,0.028,0.07866666666666668,3.125,0.9604809617478992 +historical-profile-only,tp4_mns16,low1,False,False,0.6196078431372549,0.058823529411764705,0.5607843137254902,2.125,0.9495221159963836 +historical-profile-only,tp4_mns64,high1,True,False,1.0,0.0026666666666666666,0.9973333333333333,3.125,2.281094127221267 +historical-profile-only,tp4_mns64,low1,True,False,1.0,0.4627450980392157,0.5372549019607843,2.125,1.9793960278798877 +vllm020-profile-only,tp1_mns64,high1,False,False,0.24581005586592178,0.0,0.24581005586592178,2.9833333333333334,2.074240230678028 +vllm020-profile-only,tp1_mns64,low1,True,False,1.0,0.0,1.0,2.033333333333333,1.6189525827713862 +vllm020-profile-only,tp1_mns8,high1,False,False,0.20670391061452514,0.0,0.20670391061452514,2.9833333333333334,0.5271192714936628 +vllm020-profile-only,tp1_mns8,low1,True,False,1.0,0.0,1.0,2.033333333333333,0.5225514701978402 +vllm020-profile-only,tp2_mns64,high1,True,False,1.0,0.0,1.0,2.875,1.7237810220598582 +vllm020-profile-only,tp2_mns64,low1,True,False,1.0,0.0,1.0,1.9583333333333333,1.608919184557297 +vllm020-profile-only,tp2_mns8,high1,False,False,0.20238095238095238,0.0,0.20238095238095238,2.8,0.39315152956277477 +vllm020-profile-only,tp2_mns8,low1,True,False,1.0,0.0,1.0,1.9083333333333334,0.3894201655965407 +vllm020-profile-only,tp4_mns16,high1,False,False,0.10666666666666667,0.0,0.10666666666666667,3.125,0.43700447014112276 +vllm020-profile-only,tp4_mns16,low1,False,False,0.6196078431372549,0.0,0.6196078431372549,2.125,0.43475717185302865 +vllm020-profile-only,tp4_mns64,high1,True,False,1.0,0.0,1.0,3.125,1.2598449015844073 +vllm020-profile-only,tp4_mns64,low1,True,False,1.0,0.0,1.0,2.125,1.2025831680037373 diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.json new file mode 100644 index 0000000..0bf3077 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1-profile-ablation.json @@ -0,0 +1,511 @@ +{ + "rows": [ + { + "cell": "tp1_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.7430167597765364, + "real_feasible": false, + "real_pass_rate": 0.24581005586592178, + "role": "high1", + "sim_feasible": true, + "sim_pass_rate": 0.9888268156424581, + "sim_throughput_req_s_per_gpu": 2.8823345959582403 + }, + { + "cell": "tp1_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 0.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 1.9806287931485522 + }, + { + "cell": "tp1_mns8", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.03910614525139666, + "real_feasible": false, + "real_pass_rate": 0.20670391061452514, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.16759776536312848, + "sim_throughput_req_s_per_gpu": 2.162661799726284 + }, + { + "cell": "tp1_mns8", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 0.024590163934426257, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 0.9754098360655737, + "sim_throughput_req_s_per_gpu": 1.9806313066623409 + }, + { + "cell": "tp2_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.875, + "pass_rate_absolute_error": 0.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 2.809583898291986 + }, + { + "cell": "tp2_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 1.9583333333333333, + "pass_rate_absolute_error": 0.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 1.911740196570019 + }, + { + "cell": "tp2_mns8", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.8, + "pass_rate_absolute_error": 0.047619047619047616, + "real_feasible": false, + "real_pass_rate": 0.20238095238095238, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.15476190476190477, + "sim_throughput_req_s_per_gpu": 2.083217332903509 + }, + { + "cell": "tp2_mns8", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 1.9083333333333334, + "pass_rate_absolute_error": 0.013100436681222738, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 0.9868995633187773, + "sim_throughput_req_s_per_gpu": 1.8637394408880168 + }, + { + "cell": "tp4_mns16", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 0.16266666666666663, + "real_feasible": false, + "real_pass_rate": 0.10666666666666667, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.2693333333333333, + "sim_throughput_req_s_per_gpu": 2.6829294600763345 + }, + { + "cell": "tp4_mns16", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 0.3803921568627451, + "real_feasible": false, + "real_pass_rate": 0.6196078431372549, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 2.0865667413849516 + }, + { + "cell": "tp4_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 0.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 3.0718260341342285 + }, + { + "cell": "tp4_mns64", + "mode": "historical-calibrated", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 0.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": true, + "sim_pass_rate": 1.0, + "sim_throughput_req_s_per_gpu": 2.0967062495193307 + }, + { + "cell": "tp1_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.0, + "real_feasible": false, + "real_pass_rate": 0.24581005586592178, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.24581005586592178, + "sim_throughput_req_s_per_gpu": 2.82546810606982 + }, + { + "cell": "tp1_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 0.2622950819672131, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.7377049180327869, + "sim_throughput_req_s_per_gpu": 1.9427723213024963 + }, + { + "cell": "tp1_mns8", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.111731843575419, + "real_feasible": false, + "real_pass_rate": 0.20670391061452514, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.09497206703910614, + "sim_throughput_req_s_per_gpu": 1.5728783582441022 + }, + { + "cell": "tp1_mns8", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 0.8278688524590164, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.1721311475409836, + "sim_throughput_req_s_per_gpu": 1.5629164685645112 + }, + { + "cell": "tp2_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.875, + "pass_rate_absolute_error": 0.7391304347826086, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.2608695652173913, + "sim_throughput_req_s_per_gpu": 2.7121507155597584 + }, + { + "cell": "tp2_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 1.9583333333333333, + "pass_rate_absolute_error": 0.16170212765957448, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.8382978723404255, + "sim_throughput_req_s_per_gpu": 1.849101894293262 + }, + { + "cell": "tp2_mns8", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.8, + "pass_rate_absolute_error": 0.16071428571428573, + "real_feasible": false, + "real_pass_rate": 0.20238095238095238, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.041666666666666664, + "sim_throughput_req_s_per_gpu": 0.9859710483293953 + }, + { + "cell": "tp2_mns8", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 1.9083333333333334, + "pass_rate_absolute_error": 0.9388646288209607, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0611353711790393, + "sim_throughput_req_s_per_gpu": 0.9771135206177947 + }, + { + "cell": "tp4_mns16", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 0.07866666666666668, + "real_feasible": false, + "real_pass_rate": 0.10666666666666667, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.028, + "sim_throughput_req_s_per_gpu": 0.9604809617478992 + }, + { + "cell": "tp4_mns16", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 0.5607843137254902, + "real_feasible": false, + "real_pass_rate": 0.6196078431372549, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.058823529411764705, + "sim_throughput_req_s_per_gpu": 0.9495221159963836 + }, + { + "cell": "tp4_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 0.9973333333333333, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0026666666666666666, + "sim_throughput_req_s_per_gpu": 2.281094127221267 + }, + { + "cell": "tp4_mns64", + "mode": "historical-profile-only", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 0.5372549019607843, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.4627450980392157, + "sim_throughput_req_s_per_gpu": 1.9793960278798877 + }, + { + "cell": "tp1_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.24581005586592178, + "real_feasible": false, + "real_pass_rate": 0.24581005586592178, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 2.074240230678028 + }, + { + "cell": "tp1_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 1.6189525827713862 + }, + { + "cell": "tp1_mns8", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.9833333333333334, + "pass_rate_absolute_error": 0.20670391061452514, + "real_feasible": false, + "real_pass_rate": 0.20670391061452514, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.5271192714936628 + }, + { + "cell": "tp1_mns8", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.033333333333333, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.5225514701978402 + }, + { + "cell": "tp2_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.875, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 1.7237810220598582 + }, + { + "cell": "tp2_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 1.9583333333333333, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 1.608919184557297 + }, + { + "cell": "tp2_mns8", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.8, + "pass_rate_absolute_error": 0.20238095238095238, + "real_feasible": false, + "real_pass_rate": 0.20238095238095238, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.39315152956277477 + }, + { + "cell": "tp2_mns8", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 1.9083333333333334, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.3894201655965407 + }, + { + "cell": "tp4_mns16", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 0.10666666666666667, + "real_feasible": false, + "real_pass_rate": 0.10666666666666667, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.43700447014112276 + }, + { + "cell": "tp4_mns16", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 0.6196078431372549, + "real_feasible": false, + "real_pass_rate": 0.6196078431372549, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 0.43475717185302865 + }, + { + "cell": "tp4_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 3.125, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "high1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 1.2598449015844073 + }, + { + "cell": "tp4_mns64", + "mode": "vllm020-profile-only", + "offered_req_s_per_gpu": 2.125, + "pass_rate_absolute_error": 1.0, + "real_feasible": true, + "real_pass_rate": 1.0, + "role": "low1", + "sim_feasible": false, + "sim_pass_rate": 0.0, + "sim_throughput_req_s_per_gpu": 1.2025831680037373 + } + ], + "schema": "frontier-qwen30-p1-profile-ablation.v1", + "scope": { + "cells": 6, + "probes_per_cell": 2, + "reading": "held-out boundary classification, not a complete capacity sweep", + "roles": [ + "low1", + "high1" + ] + }, + "sources": { + "controller_state": "/home/gahow/phd/replayserve/runs/fidelity_p1_frontier_committed_20260714/real/p1b/controller-state.json", + "historical_calibrated": "/home/gahow/phd/replayserve/runs/fidelity_p1_frontier_committed_20260714/results/metrics.json", + "historical_profile_only": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/comparison/old-profile-only-v2/results/metrics.json", + "vllm020_profile_only": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/comparison/new-profile-only-v2/results/metrics.json" + }, + "summaries": { + "historical-calibrated": { + "feasible_probe_count": 9, + "p1_capacity_lower_bounds_req_s_per_gpu": { + "tp1_mns64": 2.9833333333333334, + "tp1_mns8": 2.033333333333333, + "tp2_mns64": 2.875, + "tp2_mns8": 1.9083333333333334, + "tp4_mns16": 2.125, + "tp4_mns64": 3.125 + }, + "pass_rate_mae": 0.11754094806600345, + "probe_classification": { + "accuracy": 0.8333333333333334, + "agreement": 10, + "false_feasible": 2, + "false_infeasible": 0 + }, + "rank_identifiable": true + }, + "historical-profile-only": { + "feasible_probe_count": 0, + "p1_capacity_lower_bounds_req_s_per_gpu": { + "tp1_mns64": 0.0, + "tp1_mns8": 0.0, + "tp2_mns64": 0.0, + "tp2_mns8": 0.0, + "tp4_mns16": 0.0, + "tp4_mns64": 0.0 + }, + "pass_rate_mae": 0.44802887255544604, + "probe_classification": { + "accuracy": 0.4166666666666667, + "agreement": 5, + "false_feasible": 0, + "false_infeasible": 7 + }, + "rank_identifiable": false + }, + "vllm020-profile-only": { + "feasible_probe_count": 0, + "p1_capacity_lower_bounds_req_s_per_gpu": { + "tp1_mns64": 0.0, + "tp1_mns8": 0.0, + "tp2_mns64": 0.0, + "tp2_mns8": 0.0, + "tp4_mns16": 0.0, + "tp4_mns64": 0.0 + }, + "pass_rate_mae": 0.69843078572211, + "probe_classification": { + "accuracy": 0.4166666666666667, + "agreement": 5, + "false_feasible": 0, + "false_infeasible": 7 + }, + "rank_identifiable": false + } + } +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1b-opprof-summary.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1b-opprof-summary.json new file mode 100644 index 0000000..34efb09 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-p1b-opprof-summary.json @@ -0,0 +1,2171 @@ +{ + "cell_root": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells", + "cells": [ + { + "cell": "tp1_mns64", + "cudagraph_runtime_mode_counts": { + "FULL": 26305, + "NONE": 698, + "PIECEWISE": 141 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 33, + "mean": 4.150661496350365, + "min": 1, + "p50": 3, + "p95": 13, + "p99": 21 + }, + "kv_usage": { + "max": 0.35797781996203415, + "mean": 0.03727774678883895, + "min": 0.00029973024278151517, + "p50": 0.023728644220201822, + "p95": 0.13018283544809672, + "p99": 0.21860325706863826 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 33, + "mean": 4.150661496350365, + "min": 1, + "p50": 3, + "p95": 13, + "p99": 21 + }, + "steps": 26304, + "submit_to_complete_ms": { + "max": 771.351779, + "mean": 20.43450573646594, + "min": 5.345856, + "p50": 15.161645, + "p95": 35.769253, + "p99": 179.487345 + }, + "total_tokens": { + "max": 33, + "mean": 4.150661496350365, + "min": 1, + "p50": 3, + "p95": 13, + "p99": 21 + } + }, + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.02532720551503642, + "mean": 0.02532720551503642, + "min": 0.02532720551503642, + "p50": 0.02532720551503642, + "p95": 0.02532720551503642, + "p99": 0.02532720551503642 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 1, + "submit_to_complete_ms": { + "max": 7.226884, + "mean": 7.226884, + "min": 7.226884, + "p50": 7.226884, + "p95": 7.226884, + "p99": 7.226884 + }, + "total_tokens": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.022329903087221492, + "mean": 0.00819839067915799, + "min": 0.000549505445099463, + "p50": 0.007043660705365218, + "p95": 0.020731341792386893, + "p99": 0.022329903087221492 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 7089, + "mean": 2337.153846153846, + "min": 163, + "p50": 1828, + "p95": 6569, + "p99": 7089 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 52, + "submit_to_complete_ms": { + "max": 462.299574, + "mean": 154.1463595769231, + "min": 41.988631, + "p50": 121.390432, + "p95": 426.234755, + "p99": 462.299574 + }, + "total_tokens": { + "max": 7089, + "mean": 2337.153846153846, + "min": 163, + "p50": 1828, + "p95": 6569, + "p99": 7089 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.011539614347087612, + "mean": 0.002140381349093522, + "min": 0.00029973024278151517, + "p50": 0.0007992806474172998, + "p95": 0.011539614347087612, + "p99": 0.011539614347087612 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 118, + "mean": 43.07692307692308, + "min": 6, + "p50": 27, + "p95": 118, + "p99": 118 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 13, + "submit_to_complete_ms": { + "max": 20.969793, + "mean": 15.511612692307692, + "min": 10.185672, + "p50": 15.302969, + "p95": 20.969793, + "p99": 20.969793 + }, + "total_tokens": { + "max": 118, + "mean": 43.07692307692308, + "min": 6, + "p50": 27, + "p95": 118, + "p99": 118 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 32, + "mean": 7.1671826625387, + "min": 1, + "p50": 5, + "p95": 20, + "p99": 27 + }, + "kv_usage": { + "max": 0.35622939354580874, + "mean": 0.08236302498030411, + "min": 0.003446897791987258, + "p50": 0.06049555400139872, + "p95": 0.2183534818663203, + "p99": 0.3386452193026276 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8189, + "mean": 3407.3668730650156, + "min": 119, + "p50": 2823, + "p95": 7968, + "p99": 8188 + }, + "queue_waiting": { + "max": 1, + "mean": 0.009287925696594427, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 33, + "mean": 8.292569659442725, + "min": 2, + "p50": 6, + "p95": 21, + "p99": 28 + }, + "steps": 646, + "submit_to_complete_ms": { + "max": 1031.099195, + "mean": 262.67329438235294, + "min": 41.593929, + "p50": 208.770469, + "p95": 560.110521, + "p99": 836.430251 + }, + "total_tokens": { + "max": 8192, + "mean": 3414.534055727554, + "min": 131, + "p50": 2838, + "p95": 7973, + "p99": 8192 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 26, + "mean": 5.8203125, + "min": 1, + "p50": 4, + "p95": 15, + "p99": 25 + }, + "kv_usage": { + "max": 0.31431711459686285, + "mean": 0.05598086721950245, + "min": 0.0004995504046357846, + "p50": 0.03536816864821657, + "p95": 0.13977420321710465, + "p99": 0.29343590768308525 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 122, + "mean": 38.9140625, + "min": 2, + "p50": 27, + "p95": 94, + "p99": 119 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 27, + "mean": 6.8203125, + "min": 2, + "p50": 5, + "p95": 16, + "p99": 26 + }, + "steps": 128, + "submit_to_complete_ms": { + "max": 549.993756, + "mean": 38.9609057265625, + "min": 13.155768, + "p50": 24.716054, + "p95": 86.104443, + "p99": 407.701862 + }, + "total_tokens": { + "max": 123, + "mean": 44.734375, + "min": 3, + "p50": 35, + "p95": 105, + "p99": 120 + } + } + ], + "max_num_seqs": 64, + "phase_counts": { + "pure_decode": 26304, + "pure_prefill": 66, + "true_mixed": 774 + }, + "prefix": { + "hit_rate": 0.1199154023961761, + "hits": 317232, + "queries": 2645465 + }, + "records": 27144, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp1_mns64/opprof/opprof-v1-dp0-pid234511-1784005631788937266.jsonl", + "tensor_parallel_size": 1 + }, + { + "cell": "tp1_mns8", + "cudagraph_runtime_mode_counts": { + "FULL": 27496, + "NONE": 800, + "PIECEWISE": 13 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 8, + "mean": 3.827968721585743, + "min": 1, + "p50": 3, + "p95": 8, + "p99": 8 + }, + "kv_usage": { + "max": 0.13572814567888947, + "mean": 0.03436450743578334, + "min": 0.0002985223145429705, + "p50": 0.02666799343250903, + "p95": 0.09512911090103982, + "p99": 0.11562764316632668 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 13, + "mean": 0.7083106019276232, + "min": 0, + "p50": 0, + "p95": 5, + "p99": 9 + }, + "scheduled_requests": { + "max": 8, + "mean": 3.827968721585743, + "min": 1, + "p50": 3, + "p95": 8, + "p99": 8 + }, + "steps": 27495, + "submit_to_complete_ms": { + "max": 561.758474, + "mean": 19.407119342862337, + "min": 5.267886, + "p50": 15.55276, + "p95": 24.123839, + "p99": 151.668642 + }, + "total_tokens": { + "max": 8, + "mean": 3.827968721585743, + "min": 1, + "p50": 3, + "p95": 8, + "p99": 8 + } + }, + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.025225135578884506, + "mean": 0.025225135578884506, + "min": 0.025225135578884506, + "p50": 0.025225135578884506, + "p95": 0.025225135578884506, + "p99": 0.025225135578884506 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 1, + "submit_to_complete_ms": { + "max": 7.195164, + "mean": 7.195164, + "min": 7.195164, + "p50": 7.195164, + "p95": 7.195164, + "p99": 7.195164 + }, + "total_tokens": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.02318523309617393, + "mean": 0.007211759417999546, + "min": 0.0002985223145429705, + "p50": 0.005373401661774246, + "p95": 0.02064779342255829, + "p99": 0.02318523309617393 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 7089, + "mean": 2017.593220338983, + "min": 18, + "p50": 1501, + "p95": 6569, + "p99": 7089 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 59, + "submit_to_complete_ms": { + "max": 463.900987, + "mean": 140.730381559322, + "min": 41.733004, + "p50": 101.529539, + "p95": 425.237592, + "p99": 463.900987 + }, + "total_tokens": { + "max": 7089, + "mean": 2017.593220338983, + "min": 18, + "p50": 1501, + "p95": 6569, + "p99": 7089 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.011493109109905975, + "mean": 0.004925618189959698, + "min": 0.0005472909099955015, + "p50": 0.0027364545499776183, + "p95": 0.011493109109905975, + "p99": 0.011493109109905975 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 10, + "mean": 8.0, + "min": 6, + "p50": 8, + "p95": 10, + "p99": 10 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 3, + "submit_to_complete_ms": { + "max": 11.597111, + "mean": 10.493325333333333, + "min": 9.464417, + "p50": 10.418448, + "p95": 11.597111, + "p99": 11.597111 + }, + "total_tokens": { + "max": 10, + "mean": 8.0, + "min": 6, + "p50": 8, + "p95": 10, + "p99": 10 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 7, + "mean": 4.6396761133603235, + "min": 1, + "p50": 5, + "p95": 7, + "p99": 7 + }, + "kv_usage": { + "max": 0.13562863824070848, + "mean": 0.05433522417609084, + "min": 0.0004477834718145113, + "p50": 0.05353500174138015, + "p95": 0.10617443653913128, + "p99": 0.12702124483805166 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8189, + "mean": 2800.905533063428, + "min": 13, + "p50": 1881, + "p95": 7847, + "p99": 8186 + }, + "queue_waiting": { + "max": 12, + "mean": 1.2199730094466936, + "min": 0, + "p50": 0, + "p95": 7, + "p99": 10 + }, + "scheduled_requests": { + "max": 8, + "mean": 5.711201079622132, + "min": 2, + "p50": 6, + "p95": 8, + "p99": 8 + }, + "steps": 741, + "submit_to_complete_ms": { + "max": 1024.27287, + "mean": 224.85357696356274, + "min": 40.32457, + "p50": 144.763835, + "p95": 549.585886, + "p99": 785.810047 + }, + "total_tokens": { + "max": 8192, + "mean": 2805.545209176788, + "min": 17, + "p50": 1884, + "p95": 7854, + "p99": 8192 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 5, + "mean": 2.4, + "min": 1, + "p50": 2, + "p95": 5, + "p99": 5 + }, + "kv_usage": { + "max": 0.06567490919946262, + "mean": 0.033126026170456235, + "min": 0.008557639683566376, + "p50": 0.02617045624160408, + "p95": 0.06567490919946262, + "p99": 0.06567490919946262 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 13, + "mean": 7.5, + "min": 2, + "p50": 7, + "p95": 13, + "p99": 13 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 6, + "mean": 3.4, + "min": 2, + "p50": 3, + "p95": 6, + "p99": 6 + }, + "steps": 10, + "submit_to_complete_ms": { + "max": 22.147232, + "mean": 17.1428369, + "min": 13.210445, + "p50": 15.229545, + "p95": 22.147232, + "p99": 22.147232 + }, + "total_tokens": { + "max": 15, + "mean": 9.9, + "min": 3, + "p50": 9, + "p95": 15, + "p99": 15 + } + } + ], + "max_num_seqs": 8, + "phase_counts": { + "pure_decode": 27495, + "pure_prefill": 63, + "true_mixed": 751 + }, + "prefix": { + "hit_rate": 0.12292016112369349, + "hits": 307568, + "queries": 2502177 + }, + "records": 28309, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp1_mns8/opprof/opprof-v1-dp0-pid227734-1784005177936445360.jsonl", + "tensor_parallel_size": 1 + }, + { + "cell": "tp2_mns64", + "cudagraph_runtime_mode_counts": { + "FULL": 30746, + "NONE": 1555, + "PIECEWISE": 298 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 39, + "mean": 7.531678917582775, + "min": 1, + "p50": 6, + "p95": 21, + "p99": 30 + }, + "kv_usage": { + "max": 0.10309634347542496, + "mean": 0.016984430152386328, + "min": 7.673713693745476e-05, + "p50": 0.011983782885060523, + "p95": 0.05189988361534226, + "p99": 0.07517681515302665 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 39, + "mean": 7.531678917582775, + "min": 1, + "p50": 6, + "p95": 21, + "p99": 30 + }, + "steps": 30746, + "submit_to_complete_ms": { + "max": 327.486803, + "mean": 19.866698748357507, + "min": 6.465612, + "p50": 13.818435, + "p95": 29.678643, + "p99": 212.284891 + }, + "total_tokens": { + "max": 39, + "mean": 7.531678917582775, + "min": 1, + "p50": 6, + "p95": 21, + "p99": 30 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.0061261814321708075, + "mean": 0.0026679719731172026, + "min": 0.00014068475105188938, + "p50": 0.0020719026973103905, + "p95": 0.005857601452889827, + "p99": 0.0061261814321708075 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 7612, + "mean": 2967.242424242424, + "min": 129, + "p50": 2331, + "p95": 7273, + "p99": 7612 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 33, + "submit_to_complete_ms": { + "max": 285.377954, + "mean": 125.60165333333333, + "min": 58.085137, + "p50": 87.591746, + "p95": 269.63345, + "p99": 285.377954 + }, + "total_tokens": { + "max": 7612, + "mean": 2967.242424242424, + "min": 129, + "p50": 2331, + "p95": 7273, + "p99": 7612 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.0007545818465513054, + "mean": 0.00022381664940082646, + "min": 7.673713693745476e-05, + "p50": 8.952665976036389e-05, + "p95": 0.0007545818465513054, + "p99": 0.0007545818465513054 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 93, + "mean": 46.25, + "min": 10, + "p50": 32, + "p95": 93, + "p99": 93 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 8, + "submit_to_complete_ms": { + "max": 17.211201, + "mean": 12.989633, + "min": 10.521338, + "p50": 13.034104, + "p95": 17.211201, + "p99": 17.211201 + }, + "total_tokens": { + "max": 93, + "mean": 46.25, + "min": 10, + "p50": 32, + "p95": 93, + "p99": 93 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 37, + "mean": 11.961892247043364, + "min": 1, + "p50": 11, + "p95": 28, + "p99": 32 + }, + "kv_usage": { + "max": 0.10278939492767525, + "mean": 0.03137185077117546, + "min": 0.0009336351660719222, + "p50": 0.02681962935962856, + "p95": 0.07204338206141525, + "p99": 0.08896392075611659 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8191, + "mean": 3282.0696452036796, + "min": 114, + "p50": 2770, + "p95": 7855, + "p99": 8176 + }, + "queue_waiting": { + "max": 1, + "mean": 0.0032851511169513796, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 39, + "mean": 13.06898817345598, + "min": 2, + "p50": 12, + "p95": 29, + "p99": 34 + }, + "steps": 1522, + "submit_to_complete_ms": { + "max": 560.812857, + "mean": 146.33081431603154, + "min": 56.009573, + "p50": 112.614117, + "p95": 307.930472, + "p99": 403.669994 + }, + "total_tokens": { + "max": 8192, + "mean": 3294.0315374507227, + "min": 130, + "p50": 2779, + "p95": 7865, + "p99": 8192 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 34, + "mean": 10.627586206896552, + "min": 1, + "p50": 9, + "p95": 25, + "p99": 33 + }, + "kv_usage": { + "max": 0.10290450063308143, + "mean": 0.025070992877117823, + "min": 0.0008313189834887602, + "p50": 0.021217818363196916, + "p95": 0.06711941577459746, + "p99": 0.08507590581795388 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 122, + "mean": 38.53793103448276, + "min": 2, + "p50": 27, + "p95": 96, + "p99": 119 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 35, + "mean": 11.63448275862069, + "min": 2, + "p50": 10, + "p95": 26, + "p99": 34 + }, + "steps": 290, + "submit_to_complete_ms": { + "max": 310.419123, + "mean": 25.218022886206896, + "min": 10.997474, + "p50": 20.06169, + "p95": 35.895051, + "p99": 196.114372 + }, + "total_tokens": { + "max": 127, + "mean": 49.16551724137931, + "min": 5, + "p50": 41, + "p95": 104, + "p99": 124 + } + } + ], + "max_num_seqs": 64, + "phase_counts": { + "pure_decode": 30746, + "pure_prefill": 41, + "true_mixed": 1812 + }, + "prefix": { + "hit_rate": 0.1232028946400688, + "hits": 717296, + "queries": 5822071 + }, + "records": 32599, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp2_mns64/opprof/opprof-v1-dp0-pid247791-1784006495467408663.jsonl", + "tensor_parallel_size": 2 + }, + { + "cell": "tp2_mns8", + "cudagraph_runtime_mode_counts": { + "FULL": 27697, + "NONE": 1201, + "PIECEWISE": 13 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 8, + "mean": 5.417373722785861, + "min": 1, + "p50": 6, + "p95": 8, + "p99": 8 + }, + "kv_usage": { + "max": 0.03395735232188657, + "mean": 0.012474261139679475, + "min": 7.656674706180144e-05, + "p50": 0.011918890292612616, + "p95": 0.026530377856896714, + "p99": 0.03005244822173725 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 24, + "mean": 2.201646387695418, + "min": 0, + "p50": 0, + "p95": 13, + "p99": 20 + }, + "scheduled_requests": { + "max": 8, + "mean": 5.417373722785861, + "min": 1, + "p50": 6, + "p95": 8, + "p99": 8 + }, + "steps": 27697, + "submit_to_complete_ms": { + "max": 314.563834, + "mean": 16.962280882044986, + "min": 6.575488, + "p50": 13.532942, + "p95": 15.503119, + "p99": 174.775316 + }, + "total_tokens": { + "max": 8, + "mean": 5.417373722785861, + "min": 1, + "p50": 6, + "p95": 8, + "p99": 8 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.005844595025713661, + "mean": 0.0019588326123298008, + "min": 7.656674706180144e-05, + "p50": 0.001365440322601219, + "p95": 0.005704222656100488, + "p99": 0.005844595025713661 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 7273, + "mean": 2182.5666666666666, + "min": 24, + "p50": 1060, + "p95": 7073, + "p99": 7273 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 30, + "submit_to_complete_ms": { + "max": 269.442406, + "mean": 103.43858230000001, + "min": 55.279405, + "p50": 66.596689, + "p95": 260.579, + "p99": 269.442406 + }, + "total_tokens": { + "max": 7273, + "mean": 2182.5666666666666, + "min": 24, + "p50": 1060, + "p95": 7073, + "p99": 7273 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.00014037236961317312, + "mean": 0.00014037236961317312, + "min": 0.00014037236961317312, + "p50": 0.00014037236961317312, + "p95": 0.00014037236961317312, + "p99": 0.00014037236961317312 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 10, + "mean": 10.0, + "min": 10, + "p50": 10, + "p95": 10, + "p99": 10 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 1, + "submit_to_complete_ms": { + "max": 10.336689, + "mean": 10.336689, + "min": 10.336689, + "p50": 10.336689, + "p95": 10.336689, + "p99": 10.336689 + }, + "total_tokens": { + "max": 10, + "mean": 10.0, + "min": 10, + "p50": 10, + "p95": 10, + "p99": 10 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 7, + "mean": 5.772843723313407, + "min": 1, + "p50": 7, + "p95": 7, + "p99": 7 + }, + "kv_usage": { + "max": 0.03394459119737636, + "mean": 0.0159228647453862, + "min": 0.0008167119686586233, + "p50": 0.016079016882967756, + "p95": 0.02733432870104513, + "p99": 0.0316731110345444 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8191, + "mean": 2652.5926558497013, + "min": 13, + "p50": 1837, + "p95": 7634, + "p99": 8066 + }, + "queue_waiting": { + "max": 23, + "mean": 2.9812126387702818, + "min": 0, + "p50": 1, + "p95": 13, + "p99": 21 + }, + "scheduled_requests": { + "max": 8, + "mean": 6.7933390264731, + "min": 2, + "p50": 8, + "p95": 8, + "p99": 8 + }, + "steps": 1171, + "submit_to_complete_ms": { + "max": 506.291757, + "mean": 121.45648444577284, + "min": 53.060612, + "p50": 81.564408, + "p95": 292.93805, + "p99": 310.013083 + }, + "total_tokens": { + "max": 8192, + "mean": 2658.3654995730144, + "min": 17, + "p50": 1840, + "p95": 7641, + "p99": 8073 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 7, + "mean": 3.3333333333333335, + "min": 1, + "p50": 3, + "p95": 7, + "p99": 7 + }, + "kv_usage": { + "max": 0.01494327680155172, + "mean": 0.009233737010238682, + "min": 0.0034837869913096897, + "p50": 0.009315620892513032, + "p95": 0.01494327680155172, + "p99": 0.01494327680155172 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 13, + "mean": 6.916666666666667, + "min": 2, + "p50": 6, + "p95": 13, + "p99": 13 + }, + "queue_waiting": { + "max": 11, + "mean": 0.9166666666666666, + "min": 0, + "p50": 0, + "p95": 11, + "p99": 11 + }, + "scheduled_requests": { + "max": 8, + "mean": 4.333333333333333, + "min": 2, + "p50": 4, + "p95": 8, + "p99": 8 + }, + "steps": 12, + "submit_to_complete_ms": { + "max": 15.924106, + "mean": 13.055620500000002, + "min": 10.64629, + "p50": 12.616157, + "p95": 15.924106, + "p99": 15.924106 + }, + "total_tokens": { + "max": 16, + "mean": 10.25, + "min": 5, + "p50": 9, + "p95": 16, + "p99": 16 + } + } + ], + "max_num_seqs": 8, + "phase_counts": { + "pure_decode": 27697, + "pure_prefill": 31, + "true_mixed": 1183 + }, + "prefix": { + "hit_rate": 0.12439998012356517, + "hits": 450624, + "queries": 3622380 + }, + "records": 28911, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp2_mns8/opprof/opprof-v1-dp0-pid241594-1784006096655191299.jsonl", + "tensor_parallel_size": 2 + }, + { + "cell": "tp4_mns16", + "cudagraph_runtime_mode_counts": { + "FULL": 17418, + "NONE": 1752, + "PIECEWISE": 53 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 16, + "mean": 13.292530286501695, + "min": 1, + "p50": 16, + "p95": 16, + "p99": 16 + }, + "kv_usage": { + "max": 0.02384243790712981, + "mean": 0.011910732119220589, + "min": 0.00021424527002555926, + "p50": 0.012732290332947316, + "p95": 0.01879237082795593, + "p99": 0.02112866448680606 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 48, + "mean": 11.14313601653557, + "min": 0, + "p50": 5, + "p95": 48, + "p99": 48 + }, + "scheduled_requests": { + "max": 16, + "mean": 13.292530286501695, + "min": 1, + "p50": 16, + "p95": 16, + "p99": 16 + }, + "steps": 17417, + "submit_to_complete_ms": { + "max": 185.583096, + "mean": 18.308918529310446, + "min": 6.71116, + "p50": 12.899641, + "p95": 64.79132, + "p99": 141.517546 + }, + "total_tokens": { + "max": 16, + "mean": 13.292530286501695, + "min": 1, + "p50": 16, + "p95": 16, + "p99": 16 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.0014436050337436335, + "mean": 0.0005439024265827402, + "min": 0.0003213679050383389, + "p50": 0.0003570754500425988, + "p95": 0.0014436050337436335, + "p99": 0.0014436050337436335 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 4459, + "mean": 1152.125, + "min": 201, + "p50": 699, + "p95": 4459, + "p99": 4459 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 8, + "submit_to_complete_ms": { + "max": 169.859824, + "mean": 79.969349875, + "min": 59.109261, + "p50": 63.446202, + "p95": 169.859824, + "p99": 169.859824 + }, + "total_tokens": { + "max": 4459, + "mean": 1152.125, + "min": 201, + "p50": 699, + "p95": 4459, + "p99": 4459 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.0014334028780281782, + "mean": 0.0006869451515105393, + "min": 0.0002805592821762959, + "p50": 0.00034687329432714353, + "p95": 0.0014334028780281782, + "p99": 0.0014334028780281782 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 23, + "mean": 13.0, + "min": 3, + "p50": 13, + "p95": 23, + "p99": 23 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 3, + "submit_to_complete_ms": { + "max": 13.064208, + "mean": 12.249279000000001, + "min": 10.993105, + "p50": 12.690524, + "p95": 13.064208, + "p99": 13.064208 + }, + "total_tokens": { + "max": 23, + "mean": 13.0, + "min": 3, + "p50": 13, + "p95": 23, + "p99": 23 + } + }, + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 15, + "mean": 15.0, + "min": 15, + "p50": 15, + "p95": 15, + "p99": 15 + }, + "kv_usage": { + "max": 0.014119783510255668, + "mean": 0.014119783510255668, + "min": 0.014119783510255668, + "p50": 0.014119783510255668, + "p95": 0.014119783510255668, + "p99": 0.014119783510255668 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "queue_waiting": { + "max": 3, + "mean": 3.0, + "min": 3, + "p50": 3, + "p95": 3, + "p99": 3 + }, + "scheduled_requests": { + "max": 16, + "mean": 16.0, + "min": 16, + "p50": 16, + "p95": 16, + "p99": 16 + }, + "steps": 1, + "submit_to_complete_ms": { + "max": 31.93902, + "mean": 31.93902, + "min": 31.93902, + "p50": 31.93902, + "p95": 31.93902, + "p99": 31.93902 + }, + "total_tokens": { + "max": 16, + "mean": 16.0, + "min": 16, + "p50": 16, + "p95": 16, + "p99": 16 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 15, + "mean": 13.41112385321101, + "min": 1, + "p50": 15, + "p95": 15, + "p99": 15 + }, + "kv_usage": { + "max": 0.02384243790712981, + "mean": 0.013269559018371043, + "min": 0.0002397506593143639, + "p50": 0.013645383269484834, + "p95": 0.019067829032274553, + "p99": 0.021705086284732 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8191, + "mean": 2915.523509174312, + "min": 18, + "p50": 2078, + "p95": 7887, + "p99": 8180 + }, + "queue_waiting": { + "max": 48, + "mean": 13.461582568807339, + "min": 0, + "p50": 10, + "p95": 47, + "p99": 47 + }, + "scheduled_requests": { + "max": 16, + "mean": 14.555045871559633, + "min": 2, + "p50": 16, + "p95": 16, + "p99": 16 + }, + "steps": 1744, + "submit_to_complete_ms": { + "max": 379.907708, + "mean": 108.41418502752293, + "min": 56.308147, + "p50": 83.525673, + "p95": 217.228507, + "p99": 297.197569 + }, + "total_tokens": { + "max": 8192, + "mean": 2928.934633027523, + "min": 33, + "p50": 2093, + "p95": 7900, + "p99": 8192 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 15, + "mean": 9.54, + "min": 1, + "p50": 9, + "p95": 15, + "p99": 15 + }, + "kv_usage": { + "max": 0.022806919102006273, + "mean": 0.009802027168340671, + "min": 0.0015405255130409579, + "p50": 0.008386171998143177, + "p95": 0.018516912623637416, + "p99": 0.022806919102006273 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 25, + "mean": 13.94, + "min": 2, + "p50": 13, + "p95": 23, + "p99": 25 + }, + "queue_waiting": { + "max": 47, + "mean": 5.82, + "min": 0, + "p50": 0, + "p95": 47, + "p99": 47 + }, + "scheduled_requests": { + "max": 16, + "mean": 10.54, + "min": 2, + "p50": 10, + "p95": 16, + "p99": 16 + }, + "steps": 50, + "submit_to_complete_ms": { + "max": 91.408766, + "mean": 24.5079404, + "min": 11.206266, + "p50": 14.216713, + "p95": 83.023614, + "p99": 91.408766 + }, + "total_tokens": { + "max": 32, + "mean": 23.48, + "min": 4, + "p50": 25, + "p95": 32, + "p99": 32 + } + } + ], + "max_num_seqs": 16, + "phase_counts": { + "pure_decode": 17417, + "pure_prefill": 11, + "true_mixed": 1795 + }, + "prefix": { + "hit_rate": 0.13543755577854244, + "hits": 798096, + "queries": 5892723 + }, + "records": 19223, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp4_mns16/opprof/opprof-v1-dp0-pid256090-1784007028237607411.jsonl", + "tensor_parallel_size": 4 + }, + { + "cell": "tp4_mns64", + "cudagraph_runtime_mode_counts": { + "FULL": 21812, + "NONE": 2809, + "PIECEWISE": 354 + }, + "dropped_records_before_max": 0, + "groups": [ + { + "cudagraph_runtime_mode": "FULL", + "decode_tokens": { + "max": 64, + "mean": 20.639510361269025, + "min": 1, + "p50": 15, + "p95": 62, + "p99": 64 + }, + "kv_usage": { + "max": 0.07507819047813735, + "mean": 0.01804654466537005, + "min": 4.088391013712389e-05, + "p50": 0.013655225985813257, + "p95": 0.05230074204296897, + "p99": 0.062281526605204474 + }, + "phase": "pure_decode", + "prefill_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 64, + "mean": 20.639510361269025, + "min": 1, + "p50": 15, + "p95": 62, + "p99": 64 + }, + "steps": 21812, + "submit_to_complete_ms": { + "max": 198.715632, + "mean": 21.35240870649184, + "min": 6.440609, + "p50": 13.906458, + "p95": 68.920454, + "p99": 155.977421 + }, + "total_tokens": { + "max": 64, + "mean": 20.639510361269025, + "min": 1, + "p50": 15, + "p95": 62, + "p99": 64 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.0025552443835727967, + "mean": 0.0008350538645516159, + "min": 0.00032196079233015595, + "p50": 0.00038839714630312105, + "p95": 0.0025552443835727967, + "p99": 0.0025552443835727967 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 7950, + "mean": 2158.0, + "min": 201, + "p50": 959, + "p95": 7950, + "p99": 7950 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 10, + "submit_to_complete_ms": { + "max": 173.889993, + "mean": 88.2164954, + "min": 60.32347, + "p50": 64.173068, + "p95": 173.889993, + "p99": 173.889993 + }, + "total_tokens": { + "max": 7950, + "mean": 2158.0, + "min": 201, + "p50": 959, + "p95": 7950, + "p99": 7950 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "kv_usage": { + "max": 0.00034751323616588614, + "mean": 0.0003142950591794591, + "min": 0.00028107688219303206, + "p50": 0.00028107688219303206, + "p95": 0.00034751323616588614, + "p99": 0.00034751323616588614 + }, + "phase": "pure_prefill", + "prefill_tokens": { + "max": 23, + "mean": 13.0, + "min": 3, + "p50": 3, + "p95": 23, + "p99": 23 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 1, + "mean": 1.0, + "min": 1, + "p50": 1, + "p95": 1, + "p99": 1 + }, + "steps": 2, + "submit_to_complete_ms": { + "max": 14.426163, + "mean": 12.918343, + "min": 11.410523, + "p50": 11.410523, + "p95": 14.426163, + "p99": 14.426163 + }, + "total_tokens": { + "max": 23, + "mean": 13.0, + "min": 3, + "p50": 3, + "p95": 23, + "p99": 23 + } + }, + { + "cudagraph_runtime_mode": "NONE", + "decode_tokens": { + "max": 63, + "mean": 31.312254376563057, + "min": 1, + "p50": 27, + "p95": 62, + "p99": 63 + }, + "kv_usage": { + "max": 0.07563012326498908, + "mean": 0.02885461746554652, + "min": 0.00024019297205579715, + "p50": 0.025511559925591287, + "p95": 0.05791716919806211, + "p99": 0.06878206831701383 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 8191, + "mean": 3841.2243658449447, + "min": 73, + "p50": 3432, + "p95": 8154, + "p99": 8181 + }, + "queue_waiting": { + "max": 11, + "mean": 0.1907824222936763, + "min": 0, + "p50": 0, + "p95": 1, + "p99": 5 + }, + "scheduled_requests": { + "max": 64, + "mean": 32.843515541264736, + "min": 2, + "p50": 28, + "p95": 63, + "p99": 64 + }, + "steps": 2799, + "submit_to_complete_ms": { + "max": 373.577501, + "mean": 134.91752637549124, + "min": 55.209363, + "p50": 114.740321, + "p95": 314.91308, + "p99": 343.860853 + }, + "total_tokens": { + "max": 8192, + "mean": 3872.5366202215077, + "min": 129, + "p50": 3456, + "p95": 8192, + "p99": 8192 + } + }, + { + "cudagraph_runtime_mode": "PIECEWISE", + "decode_tokens": { + "max": 63, + "mean": 25.65340909090909, + "min": 1, + "p50": 20, + "p95": 60, + "p99": 63 + }, + "kv_usage": { + "max": 0.07241562583045447, + "mean": 0.022061428307276035, + "min": 0.00047016496657736884, + "p50": 0.017590302336515484, + "p95": 0.05158016312680147, + "p99": 0.05824424047915944 + }, + "phase": "true_mixed", + "prefill_tokens": { + "max": 114, + "mean": 35.32670454545455, + "min": 2, + "p50": 25, + "p95": 87, + "p99": 106 + }, + "queue_waiting": { + "max": 0, + "mean": 0.0, + "min": 0, + "p50": 0, + "p95": 0, + "p99": 0 + }, + "scheduled_requests": { + "max": 64, + "mean": 26.678977272727273, + "min": 2, + "p50": 21, + "p95": 61, + "p99": 64 + }, + "steps": 352, + "submit_to_complete_ms": { + "max": 196.960993, + "mean": 27.942972144886365, + "min": 11.037722, + "p50": 17.402246, + "p95": 97.041082, + "p99": 187.504426 + }, + "total_tokens": { + "max": 128, + "mean": 60.98011363636363, + "min": 4, + "p50": 60, + "p95": 114, + "p99": 126 + } + } + ], + "max_num_seqs": 64, + "phase_counts": { + "pure_decode": 21812, + "pure_prefill": 12, + "true_mixed": 3151 + }, + "prefix": { + "hit_rate": 0.13386788146702433, + "hits": 1667008, + "queries": 12452636 + }, + "records": 24975, + "stream": "/home/admin/cpfs/wjh/fidelity-prefix-pilot-20260714/runs/p1b/cells/tp4_mns64/opprof/opprof-v1-dp0-pid262293-1784007376383569515.jsonl", + "tensor_parallel_size": 4 + } + ], + "contains_prompt_text": false, + "measurement_semantics": "complete_mono_ns - submit_mono_ns from the existing vLLM opprof record; this includes the instrumented submit-to-completion interval and is not claimed to be a single-kernel CUDA-event duration", + "schema_version": "qwen30_vllm020_opprof_summary.v1" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-routing-mismatch.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-routing-mismatch.json new file mode 100644 index 0000000..e2a4fb0 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-routing-mismatch.json @@ -0,0 +1,1853 @@ +{ + "actual_prefill_vs_decode_pearson": { + "max": 0.9436904928897797, + "median": 0.6667880423793499, + "min": 0.48720283009127985 + }, + "frontier_contract": { + "allocation": "per-layer fixed Uniform(0.1, 1.0), normalized once and reused for every batch and phase", + "expert_count": 128, + "layer_count": 48, + "mode": "simulation", + "seed": 42 + }, + "frontier_prefill_vs_decode_pearson": 1.0, + "phase_summary": { + "decode": { + "actual": { + "expert_utilization": { + "max": 1.0, + "median": 0.96875, + "min": 0.921875 + }, + "load_cv": { + "max": 1.5122257286912568, + "median": 1.106820300518243, + "min": 0.7532423759874015 + }, + "load_gini": { + "max": 0.647222736853249, + "median": 0.5427848362430705, + "min": 0.3623759672389899 + }, + "max_load_ratio": { + "max": 8.630736064059132, + "median": 5.642131198028951, + "min": 3.392670157068063 + } + }, + "actual_vs_frontier_pearson": { + "max": 0.17269736915133127, + "median": -0.024141635934415796, + "min": -0.20201754939516248 + }, + "frontier_simulation": { + "expert_utilization": { + "max": 1.0, + "median": 1.0, + "min": 1.0 + }, + "load_cv": { + "max": 0.5319387026702922, + "median": 0.4852775824549782, + "min": 0.4143052194562559 + }, + "load_gini": { + "max": 0.3057696286957192, + "median": 0.2796991393497844, + "min": 0.2373612300777641 + }, + "max_load_ratio": { + "max": 2.0104712041884816, + "median": 1.8392362180474282, + "min": 1.6482907299045273 + } + }, + "token_count": 6494 + }, + "prefill": { + "actual": { + "expert_utilization": { + "max": 1.0, + "median": 0.984375, + "min": 0.9453125 + }, + "load_cv": { + "max": 1.636444303545179, + "median": 1.0764214888570005, + "min": 0.802893981590087 + }, + "load_gini": { + "max": 0.6967902002938451, + "median": 0.5262265677660404, + "min": 0.42613218222079463 + }, + "max_load_ratio": { + "max": 10.381092808695286, + "median": 6.121413826515567, + "min": 3.8360365673842525 + } + }, + "actual_vs_frontier_pearson": { + "max": 0.1797880356509229, + "median": -0.01729201163458405, + "min": -0.20008636491506096 + }, + "frontier_simulation": { + "expert_utilization": { + "max": 1.0, + "median": 1.0, + "min": 1.0 + }, + "load_cv": { + "max": 0.5319950183538887, + "median": 0.48529878894960354, + "min": 0.41421985083210333 + }, + "load_gini": { + "max": 0.3057985522338542, + "median": 0.2797113699735645, + "min": 0.23730966555377675 + }, + "max_load_ratio": { + "max": 2.0093524876774658, + "median": 1.838817036693769, + "min": 1.649408097063656 + } + }, + "token_count": 23737 + } + }, + "rows": [ + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 1.0209765758908849, + "load_gini": 0.46969517196254795, + "max_load_ratio": 5.4827484517841345 + }, + "actual_vs_frontier_pearson": -0.09214641606187762, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5013611454809463, + "load_gini": 0.28879565986118716, + "max_load_ratio": 1.8509499936807516 + }, + "layer": 0, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 0.9656310061810012, + "load_gini": 0.4405106117295783, + "max_load_ratio": 6.154105405063825 + }, + "actual_vs_frontier_pearson": -0.14455565868271067, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4633214169333404, + "load_gini": 0.2672016031143363, + "max_load_ratio": 1.7579306567805535 + }, + "layer": 1, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 1.4100541859296152, + "load_gini": 0.5967419337426803, + "max_load_ratio": 8.47284829590934 + }, + "actual_vs_frontier_pearson": 0.10746117235272135, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4915202242607809, + "load_gini": 0.28343845117853994, + "max_load_ratio": 1.8556683658423558 + }, + "layer": 2, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 1.1750115312430194, + "load_gini": 0.49178514160382525, + "max_load_ratio": 7.965286261953912 + }, + "actual_vs_frontier_pearson": 0.07854011611932744, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5153981688841472, + "load_gini": 0.29577933447781946, + "max_load_ratio": 1.899481821628681 + }, + "layer": 3, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 1.2753111721870192, + "load_gini": 0.5858468253675697, + "max_load_ratio": 7.488056620465939 + }, + "actual_vs_frontier_pearson": 0.047570378008613835, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5319950183538887, + "load_gini": 0.3057985522338542, + "max_load_ratio": 2.0093524876774658 + }, + "layer": 4, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.2689973799039043, + "load_gini": 0.5545393103330243, + "max_load_ratio": 9.569532796899356 + }, + "actual_vs_frontier_pearson": -0.06358262657671977, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.46397269621367815, + "load_gini": 0.2675475161404137, + "max_load_ratio": 1.7828706239204617 + }, + "layer": 5, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.3617880106985483, + "load_gini": 0.5929317066973501, + "max_load_ratio": 10.381092808695286 + }, + "actual_vs_frontier_pearson": -0.01786861982721008, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5065069021962776, + "load_gini": 0.29121334835910173, + "max_load_ratio": 1.9075704596200025 + }, + "layer": 6, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.4508622399317908, + "load_gini": 0.633230738799132, + "max_load_ratio": 8.563845473311707 + }, + "actual_vs_frontier_pearson": -0.018533706086765106, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4174667228740326, + "load_gini": 0.23938283981758435, + "max_load_ratio": 1.649408097063656 + }, + "layer": 7, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0194348783142033, + "load_gini": 0.5101870727924758, + "max_load_ratio": 4.746008341407928 + }, + "actual_vs_frontier_pearson": -0.07019410060413582, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.45521406973427264, + "load_gini": 0.2624579704153853, + "max_load_ratio": 1.7660192947718751 + }, + "layer": 8, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0499203578258598, + "load_gini": 0.5348460473101067, + "max_load_ratio": 4.87475249610313 + }, + "actual_vs_frontier_pearson": 0.055984358629187964, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4981686541927147, + "load_gini": 0.28707712050280154, + "max_load_ratio": 1.935880692589628 + }, + "layer": 9, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.9182859260805778, + "load_gini": 0.4667757285566836, + "max_load_ratio": 6.065130387159287 + }, + "actual_vs_frontier_pearson": 0.04566572558971987, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4410838523022549, + "load_gini": 0.2539255039600623, + "max_load_ratio": 1.7262501579812108 + }, + "layer": 10, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.8938335625889317, + "load_gini": 0.46192282552028474, + "max_load_ratio": 4.6934321944643385 + }, + "actual_vs_frontier_pearson": 0.05102058572481217, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4344763177468921, + "load_gini": 0.250220186312508, + "max_load_ratio": 1.7592787631124405 + }, + "layer": 11, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.9842127914363633, + "load_gini": 0.48561951344420096, + "max_load_ratio": 6.4446223195854575 + }, + "actual_vs_frontier_pearson": -0.117474412760527, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4881943608268652, + "load_gini": 0.28113027986371497, + "max_load_ratio": 1.86038673800396 + }, + "layer": 12, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 1.073206640427139, + "load_gini": 0.5187799341481654, + "max_load_ratio": 6.354973248514977 + }, + "actual_vs_frontier_pearson": -0.020599525349797518, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4551370538191022, + "load_gini": 0.2622560506803724, + "max_load_ratio": 1.7660192947718751 + }, + "layer": 13, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0501051337772571, + "load_gini": 0.5237924640329443, + "max_load_ratio": 4.951594557020685 + }, + "actual_vs_frontier_pearson": -0.1404264118915223, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4843196647309149, + "load_gini": 0.2793572699003666, + "max_load_ratio": 1.8071365378944264 + }, + "layer": 14, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 1.1589582379096603, + "load_gini": 0.5428402257024898, + "max_load_ratio": 6.021990984538905 + }, + "actual_vs_frontier_pearson": 0.010817413166755824, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4523916462775862, + "load_gini": 0.2604694642067238, + "max_load_ratio": 1.8084846442263134 + }, + "layer": 15, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.1496287137851553, + "load_gini": 0.5617946797194253, + "max_load_ratio": 6.50933142351603 + }, + "actual_vs_frontier_pearson": 0.1797880356509229, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48641030098466176, + "load_gini": 0.2805311032091249, + "max_load_ratio": 1.8334246113662216 + }, + "layer": 16, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.2394125145202786, + "load_gini": 0.5729841103814719, + "max_load_ratio": 7.101150103214391 + }, + "actual_vs_frontier_pearson": -0.20008636491506096, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.443419246367453, + "load_gini": 0.25561211794877203, + "max_load_ratio": 1.7754560390950835 + }, + "layer": 17, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.2168439400279965, + "load_gini": 0.575970613520032, + "max_load_ratio": 8.145258457260816 + }, + "actual_vs_frontier_pearson": -0.06530349438725558, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4516257974939683, + "load_gini": 0.25957785774845177, + "max_load_ratio": 1.8010700594009352 + }, + "layer": 18, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.2427942152510565, + "load_gini": 0.5980218283955427, + "max_load_ratio": 6.7688418924042635 + }, + "actual_vs_frontier_pearson": -0.04180797903095555, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4681222179773095, + "load_gini": 0.26999935161878086, + "max_load_ratio": 1.8111808568900871 + }, + "layer": 19, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 0.9706255724368628, + "load_gini": 0.5072024621371698, + "max_load_ratio": 4.138012385726924 + }, + "actual_vs_frontier_pearson": 0.007542212699855623, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4876159778421919, + "load_gini": 0.2809273727461348, + "max_load_ratio": 1.7734338795972533 + }, + "layer": 20, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.9454143633213303, + "load_gini": 0.5064155182310317, + "max_load_ratio": 3.8980494586510512 + }, + "actual_vs_frontier_pearson": -0.005313631721923769, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4407612899555989, + "load_gini": 0.25342531240784427, + "max_load_ratio": 1.7006361376753591 + }, + "layer": 21, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.8037705358927761, + "load_gini": 0.42613218222079463, + "max_load_ratio": 5.447697687155074 + }, + "actual_vs_frontier_pearson": 0.006893096788933473, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5096984088007344, + "load_gini": 0.292796698587648, + "max_load_ratio": 1.9850865737035008 + }, + "layer": 22, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.802893981590087, + "load_gini": 0.43984914769136796, + "max_load_ratio": 3.953321818258415 + }, + "actual_vs_frontier_pearson": 0.055518113087740455, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5020829253028674, + "load_gini": 0.28819319193137294, + "max_load_ratio": 1.9695833508868013 + }, + "layer": 23, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.8487498379405487, + "load_gini": 0.44496173234296665, + "max_load_ratio": 4.682647343809243 + }, + "actual_vs_frontier_pearson": -0.11069406175185324, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4937827979946325, + "load_gini": 0.28478219657075443, + "max_load_ratio": 1.8812823861482075 + }, + "layer": 24, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.8842495554569121, + "load_gini": 0.4609973189272023, + "max_load_ratio": 5.068205754728904 + }, + "actual_vs_frontier_pearson": 0.04041373985743766, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5094957270929035, + "load_gini": 0.29290695630766317, + "max_load_ratio": 1.9264439482664195 + }, + "layer": 25, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.910991140491345, + "load_gini": 0.47597056415090355, + "max_load_ratio": 4.189240426338627 + }, + "actual_vs_frontier_pearson": -0.001853343235349625, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5141430671669248, + "load_gini": 0.2956995210536293, + "max_load_ratio": 1.870497535493112 + }, + "layer": 26, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.0416423824930179, + "load_gini": 0.5048694416944011, + "max_load_ratio": 5.7442810801701985 + }, + "actual_vs_frontier_pearson": 0.021178350576558223, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4563109042451374, + "load_gini": 0.2625302961884399, + "max_load_ratio": 1.8846526519779248 + }, + "layer": 27, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.953125, + "load_cv": 1.0513699281689028, + "load_gini": 0.5286606714991364, + "max_load_ratio": 5.484096558116021 + }, + "actual_vs_frontier_pearson": -0.195005081355267, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4931389294946141, + "load_gini": 0.28378707950667725, + "max_load_ratio": 1.7983738467371615 + }, + "layer": 28, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.953125, + "load_cv": 1.079636337286862, + "load_gini": 0.5304158262943928, + "max_load_ratio": 6.738509499936807 + }, + "actual_vs_frontier_pearson": -0.016715403441958022, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4500354635096657, + "load_gini": 0.2587639253854741, + "max_load_ratio": 1.7316425833087585 + }, + "layer": 29, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.1836591453389935, + "load_gini": 0.5595659927012682, + "max_load_ratio": 7.912710115010322 + }, + "actual_vs_frontier_pearson": 0.009080640196552386, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4501844468319078, + "load_gini": 0.25952453908981754, + "max_load_ratio": 1.845557568353204 + }, + "layer": 30, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.1837797460931923, + "load_gini": 0.5779810067089355, + "max_load_ratio": 6.173652946876185 + }, + "actual_vs_frontier_pearson": -0.11789359921128652, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5029280507742879, + "load_gini": 0.2893184789305725, + "max_load_ratio": 1.92846610776425 + }, + "layer": 31, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 0.9485322853469729, + "load_gini": 0.4766967017472723, + "max_load_ratio": 5.981547794582298 + }, + "actual_vs_frontier_pearson": -0.11341887598082027, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4862779131682921, + "load_gini": 0.2800654700467624, + "max_load_ratio": 1.8307283987024476 + }, + "layer": 32, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.9147261414047101, + "load_gini": 0.48626378056936437, + "max_load_ratio": 4.4292033534145006 + }, + "actual_vs_frontier_pearson": -0.0734554681462204, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4826868638135814, + "load_gini": 0.278262015787589, + "max_load_ratio": 1.8347727176981083 + }, + "layer": 33, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.822096011945377, + "load_gini": 0.4335047210051819, + "max_load_ratio": 5.387032902220162 + }, + "actual_vs_frontier_pearson": 0.041109767501958036, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5205338188216663, + "load_gini": 0.2990128478219658, + "max_load_ratio": 1.84286135568943 + }, + "layer": 34, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.8350377321986099, + "load_gini": 0.4458607441704934, + "max_load_ratio": 3.8360365673842525 + }, + "actual_vs_frontier_pearson": -0.002498639457316309, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4931172415832444, + "load_gini": 0.28332819345852456, + "max_load_ratio": 1.9008299279605678 + }, + "layer": 35, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.936559272961729, + "load_gini": 0.4615142959830645, + "max_load_ratio": 5.575767788684333 + }, + "actual_vs_frontier_pearson": -0.04463576992397696, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.47788893428675927, + "load_gini": 0.27538099801996885, + "max_load_ratio": 1.7997219530690483 + }, + "layer": 36, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0424990294361898, + "load_gini": 0.5039767655716814, + "max_load_ratio": 6.859839069806631 + }, + "actual_vs_frontier_pearson": -0.05047148070882558, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.41421985083210333, + "load_gini": 0.23730966555377675, + "max_load_ratio": 1.6965918186796984 + }, + "layer": 37, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 1.081067450691553, + "load_gini": 0.515087617037747, + "max_load_ratio": 6.495850360197161 + }, + "actual_vs_frontier_pearson": -0.03189531872213542, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48198382691720465, + "load_gini": 0.27773105081202343, + "max_load_ratio": 1.8037662720647092 + }, + "layer": 38, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.140261877881891, + "load_gini": 0.5301265232021739, + "max_load_ratio": 6.088722247967309 + }, + "actual_vs_frontier_pearson": -0.1047856089108959, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.49823287732736005, + "load_gini": 0.28601938692758133, + "max_load_ratio": 1.9102666722837764 + }, + "layer": 39, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.16210598515629, + "load_gini": 0.5750575314909214, + "max_load_ratio": 5.264355226018452 + }, + "actual_vs_frontier_pearson": 0.07101910025349224, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5231673221525147, + "load_gini": 0.30064416838690655, + "max_load_ratio": 1.9163331507772676 + }, + "layer": 40, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.335821482050506, + "load_gini": 0.6172422174506045, + "max_load_ratio": 8.129755234444117 + }, + "actual_vs_frontier_pearson": 0.04271119117719951, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4592680576699305, + "load_gini": 0.26492856616253113, + "max_load_ratio": 1.8145511227198046 + }, + "layer": 41, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.5340944192835082, + "load_gini": 0.6802103190693853, + "max_load_ratio": 9.211610565783376 + }, + "actual_vs_frontier_pearson": 0.012121305370270835, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.493325400417425, + "load_gini": 0.28234122230062764, + "max_load_ratio": 1.9055483001221722 + }, + "layer": 42, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.5076855954950434, + "load_gini": 0.6597892728124868, + "max_load_ratio": 7.8324977882630495 + }, + "actual_vs_frontier_pearson": 0.1787454639272607, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4651216460072469, + "load_gini": 0.267678755739984, + "max_load_ratio": 1.870497535493112 + }, + "layer": 43, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 1.4676145461991041, + "load_gini": 0.666736825683532, + "max_load_ratio": 6.086700088469478 + }, + "actual_vs_frontier_pearson": -0.1318454052741815, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.47511235321400247, + "load_gini": 0.2737368414816532, + "max_load_ratio": 1.84286135568943 + }, + "layer": 44, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.5817687300685335, + "load_gini": 0.6967902002938451, + "max_load_ratio": 6.617853983232927 + }, + "actual_vs_frontier_pearson": -0.042931525341602716, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.47921880192242294, + "load_gini": 0.2763617157549396, + "max_load_ratio": 1.7754560390950835 + }, + "layer": 45, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.5934457162349587, + "load_gini": 0.6958883908823776, + "max_load_ratio": 7.270337447866201 + }, + "actual_vs_frontier_pearson": 0.02211603536084719, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5297987184237168, + "load_gini": 0.30463451046888834, + "max_load_ratio": 1.8799342798163206 + }, + "layer": 46, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.636444303545179, + "load_gini": 0.6918075387317268, + "max_load_ratio": 8.385895437502633 + }, + "actual_vs_frontier_pearson": -0.01870726023327083, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4952385440074709, + "load_gini": 0.28391033776382857, + "max_load_ratio": 1.9170072039432111 + }, + "layer": 47, + "phase": "prefill", + "total_routed_tokens": 189896 + }, + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 0.7564860612847418, + "load_gini": 0.3623759672389899, + "max_load_ratio": 4.043116723129042 + }, + "actual_vs_frontier_pearson": -0.11076278775511662, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5013193007157182, + "load_gini": 0.288770162842624, + "max_load_ratio": 1.8503233754234678 + }, + "layer": 0, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 1.0, + "load_cv": 0.7532423759874015, + "load_gini": 0.36718870303356943, + "max_load_ratio": 4.479211579919926 + }, + "actual_vs_frontier_pearson": -0.20201754939516248, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4633429809491391, + "load_gini": 0.2672133050700647, + "max_load_ratio": 1.7566984909146905 + }, + "layer": 1, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.9982932903554329, + "load_gini": 0.48608902207807203, + "max_load_ratio": 5.430243301509085 + }, + "actual_vs_frontier_pearson": 0.12507453392144424, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4914341503043837, + "load_gini": 0.2833871891361257, + "max_load_ratio": 1.8552510009239298 + }, + "layer": 2, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.887995113903465, + "load_gini": 0.4407307466507546, + "max_load_ratio": 4.843855866954112 + }, + "actual_vs_frontier_pearson": 0.09916207755901395, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5153762623410879, + "load_gini": 0.2957582840891593, + "max_load_ratio": 1.8995996304280875 + }, + "layer": 3, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0374295217881528, + "load_gini": 0.5126796730635972, + "max_load_ratio": 5.198644902987373 + }, + "actual_vs_frontier_pearson": 0.1087630450097359, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5319387026702922, + "load_gini": 0.3057696286957192, + "max_load_ratio": 2.0104712041884816 + }, + "layer": 4, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.9864025871023987, + "load_gini": 0.5000595501616878, + "max_load_ratio": 6.716353557129658 + }, + "actual_vs_frontier_pearson": -0.060788024591760324, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.46389740539367647, + "load_gini": 0.26750173236833996, + "max_load_ratio": 1.7838004311672313 + }, + "layer": 5, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.2953358972433757, + "load_gini": 0.629114675565907, + "max_load_ratio": 5.74314752078842 + }, + "actual_vs_frontier_pearson": -0.07165433962410654, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5065225414304516, + "load_gini": 0.2912228475323375, + "max_load_ratio": 1.9069910686787803 + }, + "layer": 6, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.2699902455381382, + "load_gini": 0.6262021312942716, + "max_load_ratio": 6.66954111487527 + }, + "actual_vs_frontier_pearson": 0.01205569571775735, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.41747315017256753, + "load_gini": 0.2393889431590699, + "max_load_ratio": 1.6482907299045273 + }, + "layer": 7, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.0541527297772746, + "load_gini": 0.5379860857137357, + "max_load_ratio": 5.171542962734832 + }, + "actual_vs_frontier_pearson": -0.04958458083380716, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4553076424255581, + "load_gini": 0.2625118498806591, + "max_load_ratio": 1.7665537419156143 + }, + "layer": 8, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.192957622384299, + "load_gini": 0.5506200435016939, + "max_load_ratio": 8.320295657530028 + }, + "actual_vs_frontier_pearson": -0.05509740986705497, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4981311718832551, + "load_gini": 0.28705553924776717, + "max_load_ratio": 1.9365568216815523 + }, + "layer": 9, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.8076732412246237, + "load_gini": 0.4410110534724361, + "max_load_ratio": 3.392670157068063 + }, + "actual_vs_frontier_pearson": -0.09000721184282558, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4410207617483597, + "load_gini": 0.2538882044964583, + "max_load_ratio": 1.7271327379119188 + }, + "layer": 10, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.946297012928892, + "load_gini": 0.4790344332268248, + "max_load_ratio": 4.728056667693255 + }, + "actual_vs_frontier_pearson": 0.034097483022671266, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4344893792424141, + "load_gini": 0.25022677182784103, + "max_load_ratio": 1.7591623036649215 + }, + "layer": 11, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.9479122820728094, + "load_gini": 0.48800966517169697, + "max_load_ratio": 5.097628580227902 + }, + "actual_vs_frontier_pearson": -0.02153501737741947, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48821731504828314, + "load_gini": 0.28114623835463504, + "max_load_ratio": 1.8601786264243918 + }, + "layer": 12, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.9047451307311554, + "load_gini": 0.4740120688327687, + "max_load_ratio": 4.555589775177086 + }, + "actual_vs_frontier_pearson": -0.05894159287248561, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4550660315489719, + "load_gini": 0.26222101651524476, + "max_load_ratio": 1.7665537419156143 + }, + "layer": 13, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.1102662993215426, + "load_gini": 0.550685007314444, + "max_load_ratio": 5.5214043732676314 + }, + "actual_vs_frontier_pearson": -0.07473125180903177, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4843214689622731, + "load_gini": 0.2793576281952572, + "max_load_ratio": 1.80597474591931 + }, + "layer": 14, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.0424321211996845, + "load_gini": 0.5389009927433015, + "max_load_ratio": 4.885740683708038 + }, + "actual_vs_frontier_pearson": -0.122334501258848, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.45239738453493195, + "load_gini": 0.26047060267169697, + "max_load_ratio": 1.808438558669541 + }, + "layer": 15, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.1000158272634826, + "load_gini": 0.5458891139898367, + "max_load_ratio": 5.321835540498922 + }, + "actual_vs_frontier_pearson": 0.06285259077675373, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48638660674407463, + "load_gini": 0.2805170517978133, + "max_load_ratio": 1.833076686171851 + }, + "layer": 16, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.1000359607690584, + "load_gini": 0.5519229288574068, + "max_load_ratio": 5.201108715737604 + }, + "actual_vs_frontier_pearson": -0.14790969026732273, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.44351655698688397, + "load_gini": 0.25566538583692644, + "max_load_ratio": 1.7764089929165383 + }, + "layer": 17, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.921875, + "load_cv": 1.275279013013624, + "load_gini": 0.6363662611641516, + "max_load_ratio": 5.637203572528488 + }, + "actual_vs_frontier_pearson": -0.017099613299867974, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4514828672543027, + "load_gini": 0.259494942446874, + "max_load_ratio": 1.801047120418848 + }, + "layer": 18, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.921875, + "load_cv": 1.2773056983164457, + "load_gini": 0.6308308029527256, + "max_load_ratio": 5.979673544810594 + }, + "actual_vs_frontier_pearson": -0.08479638082455722, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4680898752103892, + "load_gini": 0.2699814853133662, + "max_load_ratio": 1.810902371419772 + }, + "layer": 19, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.142557882037356, + "load_gini": 0.573428958461657, + "max_load_ratio": 5.856482907299045 + }, + "actual_vs_frontier_pearson": -0.16520423265299047, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48760009420143696, + "load_gini": 0.2809182634932246, + "max_load_ratio": 1.7739451801663073 + }, + "layer": 20, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.2250892374067721, + "load_gini": 0.5839970068524791, + "max_load_ratio": 6.6547582383738835 + }, + "actual_vs_frontier_pearson": 0.030713168827124045, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.44079057860501963, + "load_gini": 0.25344789421004, + "max_load_ratio": 1.7000307976593778 + }, + "layer": 21, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.9505437008130998, + "load_gini": 0.49268164603865117, + "max_load_ratio": 5.647058823529412 + }, + "actual_vs_frontier_pearson": -0.06756357177648568, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5096150033498628, + "load_gini": 0.2927473918232215, + "max_load_ratio": 1.9858330766861718 + }, + "layer": 22, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.0080029689110093, + "load_gini": 0.521078351170311, + "max_load_ratio": 5.109947643979058 + }, + "actual_vs_frontier_pearson": 0.051969177479756205, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.502148823760943, + "load_gini": 0.288229700011549, + "max_load_ratio": 1.968586387434555 + }, + "layer": 23, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.0336730047933789, + "load_gini": 0.5219367156221126, + "max_load_ratio": 6.2309824453341545 + }, + "actual_vs_frontier_pearson": 0.046624159557719196, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4937452666192137, + "load_gini": 0.2847580458885124, + "max_load_ratio": 1.8798891284262396 + }, + "layer": 24, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.9370799623414752, + "load_gini": 0.49417972359100704, + "max_load_ratio": 4.348629504157684 + }, + "actual_vs_frontier_pearson": 0.003630591230348502, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5094100439322153, + "load_gini": 0.29286198077071135, + "max_load_ratio": 1.9267015706806283 + }, + "layer": 25, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.1307693127116234, + "load_gini": 0.562033222975054, + "max_load_ratio": 5.900831536803203 + }, + "actual_vs_frontier_pearson": 0.12889829096423783, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5140701353957097, + "load_gini": 0.2956587330612874, + "max_load_ratio": 1.8700338774253156 + }, + "layer": 26, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.1066234149756957, + "load_gini": 0.5586361569333231, + "max_load_ratio": 5.615029257776409 + }, + "actual_vs_frontier_pearson": 0.027435906393056993, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4562891247455973, + "load_gini": 0.26251997035725294, + "max_load_ratio": 1.8848167539267016 + }, + "layer": 27, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.15194374689878, + "load_gini": 0.5561218167731752, + "max_load_ratio": 6.691715429627348 + }, + "actual_vs_frontier_pearson": -0.0851905104644269, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4931885285350055, + "load_gini": 0.28381426605327986, + "max_load_ratio": 1.7985833076686173 + }, + "layer": 28, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9296875, + "load_cv": 1.1356431750011955, + "load_gini": 0.5496513007198953, + "max_load_ratio": 5.863874345549738 + }, + "actual_vs_frontier_pearson": -0.016979392910092525, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.45012219999295283, + "load_gini": 0.25880680724514926, + "max_load_ratio": 1.7320603634123806 + }, + "layer": 29, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9296875, + "load_cv": 1.3264510778008716, + "load_gini": 0.647222736853249, + "max_load_ratio": 5.84416384354789 + }, + "actual_vs_frontier_pearson": -0.08251025635608537, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.45023597421285283, + "load_gini": 0.25955389109177696, + "max_load_ratio": 1.8453957499230058 + }, + "layer": 30, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.921875, + "load_cv": 1.2804663472936682, + "load_gini": 0.6305014725130891, + "max_load_ratio": 5.723437018786572 + }, + "actual_vs_frontier_pearson": -0.07964706640411469, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5029240802777508, + "load_gini": 0.2893154378079765, + "max_load_ratio": 1.9291653834308593 + }, + "layer": 31, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.1507881607782275, + "load_gini": 0.5729281957383738, + "max_load_ratio": 6.021558361564521 + }, + "actual_vs_frontier_pearson": -0.10452258144829583, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48623369594768334, + "load_gini": 0.2800406505043116, + "max_load_ratio": 1.83061287342162 + }, + "layer": 32, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.2686811219716572, + "load_gini": 0.583570832210502, + "max_load_ratio": 7.844779796735448 + }, + "actual_vs_frontier_pearson": -0.01888683352026748, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48261072157815704, + "load_gini": 0.2782189569217739, + "max_load_ratio": 1.8355404989220818 + }, + "layer": 33, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9921875, + "load_cv": 0.8839459404636472, + "load_gini": 0.4794891799160763, + "max_load_ratio": 3.9618109023714196 + }, + "actual_vs_frontier_pearson": -0.028493286082986517, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5205697308164966, + "load_gini": 0.2990305353980598, + "max_load_ratio": 1.8429319371727748 + }, + "layer": 34, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 0.9362312679691519, + "load_gini": 0.4916611728133662, + "max_load_ratio": 4.747767169695103 + }, + "actual_vs_frontier_pearson": -0.13290690148552678, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.49297481569205803, + "load_gini": 0.2832476372420696, + "max_load_ratio": 1.8995996304280875 + }, + "layer": 35, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 0.9574253286736439, + "load_gini": 0.49605465140899296, + "max_load_ratio": 4.767477671696951 + }, + "actual_vs_frontier_pearson": -0.02212359104446765, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.47796935463002527, + "load_gini": 0.27542581373190633, + "max_load_ratio": 1.7985833076686173 + }, + "layer": 36, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 0.897443530050085, + "load_gini": 0.46608167154296276, + "max_load_ratio": 4.484139205420388 + }, + "actual_vs_frontier_pearson": -0.019587227325278997, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4143052194562559, + "load_gini": 0.2373612300777641, + "max_load_ratio": 1.6975669849091468 + }, + "layer": 37, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.0030386322057563, + "load_gini": 0.5019200415768401, + "max_load_ratio": 5.198644902987373 + }, + "actual_vs_frontier_pearson": 0.028921565758140203, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.48203207236683104, + "load_gini": 0.27775819506467503, + "max_load_ratio": 1.803510933169079 + }, + "layer": 38, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9765625, + "load_cv": 1.1070171860607907, + "load_gini": 0.5396805584963043, + "max_load_ratio": 5.164151524484139 + }, + "actual_vs_frontier_pearson": -0.042234189776402496, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.49820199968589846, + "load_gini": 0.2860022833577147, + "max_load_ratio": 1.9094548814290113 + }, + "layer": 39, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.1143666092181908, + "load_gini": 0.5215875351285801, + "max_load_ratio": 6.679396365876193 + }, + "actual_vs_frontier_pearson": -0.0013066971352570613, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5231859746946843, + "load_gini": 0.3006501193409301, + "max_load_ratio": 1.9168463196797043 + }, + "layer": 40, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9375, + "load_cv": 1.3163699264356221, + "load_gini": 0.576891890591315, + "max_load_ratio": 6.450261780104712 + }, + "actual_vs_frontier_pearson": 0.038349159249901725, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.45930246027155186, + "load_gini": 0.2649497974091468, + "max_load_ratio": 1.815829996920234 + }, + "layer": 41, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9609375, + "load_cv": 1.4367616763803446, + "load_gini": 0.6064525307014168, + "max_load_ratio": 8.630736064059132 + }, + "actual_vs_frontier_pearson": -0.005385768830336229, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.49323689442136087, + "load_gini": 0.2822840073529411, + "max_load_ratio": 1.9069910686787803 + }, + "layer": 42, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.9453125, + "load_cv": 1.5122257286912568, + "load_gini": 0.6255329438712658, + "max_load_ratio": 8.19956883276871 + }, + "actual_vs_frontier_pearson": 0.17269736915133127, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4650946236339636, + "load_gini": 0.2676644426586079, + "max_load_ratio": 1.8700338774253156 + }, + "layer": 43, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.4453751038205662, + "load_gini": 0.6368104813096704, + "max_load_ratio": 6.94548814290114 + }, + "actual_vs_frontier_pearson": -0.18470982231222025, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4751830338518044, + "load_gini": 0.27377735698336925, + "max_load_ratio": 1.8429319371727748 + }, + "layer": 44, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.96875, + "load_cv": 1.464195386895173, + "load_gini": 0.6367434121881737, + "max_load_ratio": 7.145056975669849 + }, + "actual_vs_frontier_pearson": -0.026159680824363943, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4792291952239595, + "load_gini": 0.2763707966007083, + "max_load_ratio": 1.7764089929165383 + }, + "layer": 45, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.3411915327005308, + "load_gini": 0.5801415850207885, + "max_load_ratio": 6.0437326763165995 + }, + "actual_vs_frontier_pearson": 0.02225870145809893, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.5297396161604814, + "load_gini": 0.3045975732406838, + "max_load_ratio": 1.8798891284262396 + }, + "layer": 46, + "phase": "decode", + "total_routed_tokens": 51952 + }, + { + "actual": { + "expert_utilization": 0.984375, + "load_cv": 1.351786104177472, + "load_gini": 0.536063938828149, + "max_load_ratio": 6.908530951647675 + }, + "actual_vs_frontier_pearson": -0.04368832283746608, + "frontier_simulation": { + "expert_utilization": 1.0, + "load_cv": 0.4952080715601842, + "load_gini": 0.2838945685440406, + "max_load_ratio": 1.9168463196797043 + }, + "layer": 47, + "phase": "decode", + "total_routed_tokens": 51952 + } + ], + "schema": "frontier-routing-mismatch.v1", + "source": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-trace-routing-20260716-v1-20260716T151552356215Z/artifacts/artifacts/trace-routing-v1/raw/routing.json" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-s2-profile-ablation.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-s2-profile-ablation.json new file mode 100644 index 0000000..32d8bdf --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/qwen30-s2-profile-ablation.json @@ -0,0 +1,5222 @@ +{ + "historical_modes": { + "historical-per-tp-calibration": { + "false_feasibility": { + "overall": { + "agreement": 64, + "false_feasible": 21, + "false_infeasible": 7 + }, + "per_cell": { + "tp1_mns16": { + "agreement": 7, + "false_feasible": 1, + "false_infeasible": 0 + }, + "tp1_mns32": { + "agreement": 6, + "false_feasible": 2, + "false_infeasible": 0 + }, + "tp1_mns64": { + "agreement": 6, + "false_feasible": 2, + "false_infeasible": 0 + }, + "tp1_mns8": { + "agreement": 6, + "false_feasible": 0, + "false_infeasible": 2 + }, + "tp2_mns16": { + "agreement": 7, + "false_feasible": 1, + "false_infeasible": 0 + }, + "tp2_mns32": { + "agreement": 3, + "false_feasible": 5, + "false_infeasible": 0 + }, + "tp2_mns64": { + "agreement": 2, + "false_feasible": 6, + "false_infeasible": 0 + }, + "tp2_mns8": { + "agreement": 3, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp4_mns16": { + "agreement": 6, + "false_feasible": 1, + "false_infeasible": 0 + }, + "tp4_mns32": { + "agreement": 6, + "false_feasible": 1, + "false_infeasible": 0 + }, + "tp4_mns64": { + "agreement": 6, + "false_feasible": 1, + "false_infeasible": 0 + }, + "tp4_mns8": { + "agreement": 6, + "false_feasible": 1, + "false_infeasible": 0 + } + } + }, + "metrics": { + "kendall_tau_b": { + "both_tied": 4, + "concordant": 58, + "discordant": 0, + "pair_count": 66, + "real_only_tied": 1, + "sim_only_tied": 3, + "tau_b": 0.9668009539030813 + }, + "named_interactions": { + "relations": { + "tp2_mns32_gt_tp4_mns16": true, + "tp4_mns16_eq_tp4_mns32": true, + "tp4_mns16_eq_tp4_mns64": true, + "tp4_mns16_gt_tp1_mns16": true, + "tp4_mns16_gt_tp2_mns16": true, + "tp4_mns16_gt_tp4_mns8": true + }, + "simulator_top_bucket_cells": [ + "tp2_mns32", + "tp2_mns64" + ], + "tp2_mns32_unique_global_best": false, + "trap_reproduced": true + }, + "pairwise_direction": { + "exact_sign_accuracy": 0.9393939393939394, + "exact_sign_agreement": 62, + "non_tied_concordance": 1.0, + "non_tied_concordant": 58, + "non_tied_pair_count": 58, + "pair_count": 66 + }, + "per_mns_tp_direction": { + "accuracy": 1.0, + "comparisons": 8, + "exact_sign_agreement": 8, + "lines": [ + { + "comparisons": 2, + "exact_sign_agreement": 2, + "line_class_agrees": true, + "mns": 8, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + -1 + ], + "sim_line_class": "non-monotonic" + }, + { + "comparisons": 2, + "exact_sign_agreement": 2, + "line_class_agrees": true, + "mns": 16, + "real_adjacent_signs": [ + -1, + 1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + 1 + ], + "sim_line_class": "non-monotonic" + }, + { + "comparisons": 2, + "exact_sign_agreement": 2, + "line_class_agrees": true, + "mns": 32, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + -1 + ], + "sim_line_class": "non-monotonic" + }, + { + "comparisons": 2, + "exact_sign_agreement": 2, + "line_class_agrees": true, + "mns": 64, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + -1 + ], + "sim_line_class": "non-monotonic" + } + ] + }, + "per_tp_mns_direction": { + "accuracy": 0.6666666666666666, + "comparisons": 9, + "exact_sign_agreement": 6, + "lines": [ + { + "comparisons": 3, + "exact_sign_agreement": 2, + "line_class_agrees": false, + "real_adjacent_signs": [ + 1, + -1, + 0 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + 0, + 0 + ], + "sim_line_class": "increasing", + "tp": 1 + }, + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 0, + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + 1, + 0 + ], + "sim_line_class": "increasing", + "tp": 2 + }, + { + "comparisons": 3, + "exact_sign_agreement": 3, + "line_class_agrees": true, + "real_adjacent_signs": [ + 1, + 0, + 0 + ], + "real_line_class": "increasing", + "sim_adjacent_signs": [ + 1, + 0, + 0 + ], + "sim_line_class": "increasing", + "tp": 4 + } + ] + }, + "tie_buckets": { + "real": { + "buckets": { + "tp1_mns16": 715736, + "tp1_mns32": 695431, + "tp1_mns64": 695431, + "tp1_mns8": 639593, + "tp2_mns16": 692893, + "tp2_mns32": 1000000, + "tp2_mns64": 992385, + "tp2_mns8": 692893, + "tp4_mns16": 743654, + "tp4_mns32": 743654, + "tp4_mns64": 743654, + "tp4_mns8": 390862 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp2_mns32" + ], + "interval": [ + 3.2833333333333328, + 3.2833366166666664 + ] + }, + { + "bucket_id": 992385, + "cells": [ + "tp2_mns64" + ], + "interval": [ + 3.25833075, + 3.258334033333333 + ] + }, + { + "bucket_id": 743654, + "cells": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 2.4416639666666664, + 2.4416672499999996 + ] + }, + { + "bucket_id": 715736, + "cells": [ + "tp1_mns16" + ], + "interval": [ + 2.3499998666666664, + 2.3500031499999996 + ] + }, + { + "bucket_id": 695431, + "cells": [ + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 2.283331783333333, + 2.2833350666666665 + ] + }, + { + "bucket_id": 692893, + "cells": [ + "tp2_mns8", + "tp2_mns16" + ], + "interval": [ + 2.274998683333333, + 2.2750019666666663 + ] + }, + { + "bucket_id": 639593, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 2.0999970166666664, + 2.1000002999999996 + ] + }, + { + "bucket_id": 390862, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 1.2833302333333332, + 1.2833335166666666 + ] + } + ], + "tolerance": 3.283333333333333e-06 + }, + "simulator": { + "buckets": { + "tp1_mns16": 635555, + "tp1_mns32": 635555, + "tp1_mns64": 635555, + "tp1_mns8": 457777, + "tp2_mns16": 613333, + "tp2_mns32": 1000000, + "tp2_mns64": 1000000, + "tp2_mns8": 464444, + "tp4_mns16": 666666, + "tp4_mns32": 666666, + "tp4_mns64": 666666, + "tp4_mns8": 352222 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp2_mns32", + "tp2_mns64" + ], + "interval": [ + 3.7499999999999996, + 3.75000375 + ] + }, + { + "bucket_id": 666666, + "cells": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 2.4999974999999997, + 2.50000125 + ] + }, + { + "bucket_id": 635555, + "cells": [ + "tp1_mns16", + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 2.38333125, + 2.3833349999999998 + ] + }, + { + "bucket_id": 613333, + "cells": [ + "tp2_mns16" + ], + "interval": [ + 2.29999875, + 2.3000024999999997 + ] + }, + { + "bucket_id": 464444, + "cells": [ + "tp2_mns8" + ], + "interval": [ + 1.7416649999999998, + 1.7416687499999999 + ] + }, + { + "bucket_id": 457777, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 1.71666375, + 1.7166674999999998 + ] + }, + { + "bucket_id": 352222, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 1.3208324999999999, + 1.32083625 + ] + } + ], + "tolerance": 3.7499999999999997e-06 + } + }, + "top1": { + "candidate_cells": [ + "tp2_mns32", + "tp2_mns64" + ], + "effective_k": 2, + "optimistic_regret": 0.0, + "worst_case_regret": 0.0076142131979695165 + }, + "top5": { + "maximum_exact_five_overlap": 5, + "minimum_exact_five_overlap": 5, + "optimistic_regret": 0.0, + "real_cutoff": { + "boundary": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 3, + "expanded_effective_k": 5, + "higher": [ + "tp2_mns32", + "tp2_mns64" + ] + }, + "simulator_cutoff": { + "boundary": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 3, + "expanded_effective_k": 5, + "higher": [ + "tp2_mns32", + "tp2_mns64" + ] + }, + "worst_case_regret": 0.0 + } + }, + "ranking": [ + { + "cell": "tp2_mns32", + "rank": 1, + "score": 3.75 + }, + { + "cell": "tp2_mns64", + "rank": 2, + "score": 3.75 + }, + { + "cell": "tp4_mns16", + "rank": 3, + "score": 2.5 + }, + { + "cell": "tp4_mns32", + "rank": 4, + "score": 2.5 + }, + { + "cell": "tp4_mns64", + "rank": 5, + "score": 2.5 + }, + { + "cell": "tp1_mns16", + "rank": 6, + "score": 2.3833333333333333 + }, + { + "cell": "tp1_mns32", + "rank": 7, + "score": 2.3833333333333333 + }, + { + "cell": "tp1_mns64", + "rank": 8, + "score": 2.3833333333333333 + }, + { + "cell": "tp2_mns16", + "rank": 9, + "score": 2.3 + }, + { + "cell": "tp2_mns8", + "rank": 10, + "score": 1.7416666666666667 + }, + { + "cell": "tp1_mns8", + "rank": 11, + "score": 1.7166666666666666 + }, + { + "cell": "tp4_mns8", + "rank": 12, + "score": 1.3208333333333333 + } + ], + "simulated_scores": { + "tp1_mns16": 2.3833333333333333, + "tp1_mns32": 2.3833333333333333, + "tp1_mns64": 2.3833333333333333, + "tp1_mns8": 1.7166666666666666, + "tp2_mns16": 2.3, + "tp2_mns32": 3.75, + "tp2_mns64": 3.75, + "tp2_mns8": 1.7416666666666667, + "tp4_mns16": 2.5, + "tp4_mns32": 2.5, + "tp4_mns64": 2.5, + "tp4_mns8": 1.3208333333333333 + } + }, + "historical-profile-only": { + "false_feasibility": { + "overall": { + "agreement": 37, + "false_feasible": 0, + "false_infeasible": 55 + }, + "per_cell": { + "tp1_mns16": { + "agreement": 3, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp1_mns32": { + "agreement": 4, + "false_feasible": 0, + "false_infeasible": 4 + }, + "tp1_mns64": { + "agreement": 4, + "false_feasible": 0, + "false_infeasible": 4 + }, + "tp1_mns8": { + "agreement": 5, + "false_feasible": 0, + "false_infeasible": 3 + }, + "tp2_mns16": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp2_mns32": { + "agreement": 5, + "false_feasible": 0, + "false_infeasible": 3 + }, + "tp2_mns64": { + "agreement": 6, + "false_feasible": 0, + "false_infeasible": 2 + }, + "tp2_mns8": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 7 + }, + "tp4_mns16": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp4_mns32": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp4_mns64": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp4_mns8": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 5 + } + } + }, + "metrics": { + "kendall_tau_b": { + "both_tied": 2, + "concordant": 23, + "discordant": 23, + "pair_count": 66, + "real_only_tied": 3, + "sim_only_tied": 15, + "tau_b": 0.0 + }, + "named_interactions": { + "relations": { + "tp2_mns32_gt_tp4_mns16": false, + "tp4_mns16_eq_tp4_mns32": false, + "tp4_mns16_eq_tp4_mns64": false, + "tp4_mns16_gt_tp1_mns16": false, + "tp4_mns16_gt_tp2_mns16": false, + "tp4_mns16_gt_tp4_mns8": false + }, + "simulator_top_bucket_cells": [ + "tp4_mns32", + "tp4_mns64" + ], + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + "pairwise_direction": { + "exact_sign_accuracy": 0.3787878787878788, + "exact_sign_agreement": 25, + "non_tied_concordance": 0.5, + "non_tied_concordant": 23, + "non_tied_pair_count": 46, + "pair_count": 66 + }, + "per_mns_tp_direction": { + "accuracy": 0.0, + "comparisons": 8, + "exact_sign_agreement": 0, + "lines": [ + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": false, + "mns": 8, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + 0 + ], + "sim_line_class": "decreasing" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": true, + "mns": 16, + "real_adjacent_signs": [ + -1, + 1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + -1 + ], + "sim_line_class": "non-monotonic" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": true, + "mns": 32, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + 1 + ], + "sim_line_class": "non-monotonic" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": true, + "mns": 64, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + 1 + ], + "sim_line_class": "non-monotonic" + } + ] + }, + "per_tp_mns_direction": { + "accuracy": 0.2222222222222222, + "comparisons": 9, + "exact_sign_agreement": 2, + "lines": [ + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 1, + -1, + 0 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0, + 0 + ], + "sim_line_class": "flat", + "tp": 1 + }, + { + "comparisons": 3, + "exact_sign_agreement": 0, + "line_class_agrees": true, + "real_adjacent_signs": [ + 0, + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + -1, + 0 + ], + "sim_line_class": "non-monotonic", + "tp": 2 + }, + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": true, + "real_adjacent_signs": [ + 1, + 0, + 0 + ], + "real_line_class": "increasing", + "sim_adjacent_signs": [ + 0, + 1, + 0 + ], + "sim_line_class": "increasing", + "tp": 4 + } + ] + }, + "tie_buckets": { + "real": { + "buckets": { + "tp1_mns16": 715736, + "tp1_mns32": 695431, + "tp1_mns64": 695431, + "tp1_mns8": 639593, + "tp2_mns16": 692893, + "tp2_mns32": 1000000, + "tp2_mns64": 992385, + "tp2_mns8": 692893, + "tp4_mns16": 743654, + "tp4_mns32": 743654, + "tp4_mns64": 743654, + "tp4_mns8": 390862 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp2_mns32" + ], + "interval": [ + 3.2833333333333328, + 3.2833366166666664 + ] + }, + { + "bucket_id": 992385, + "cells": [ + "tp2_mns64" + ], + "interval": [ + 3.25833075, + 3.258334033333333 + ] + }, + { + "bucket_id": 743654, + "cells": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 2.4416639666666664, + 2.4416672499999996 + ] + }, + { + "bucket_id": 715736, + "cells": [ + "tp1_mns16" + ], + "interval": [ + 2.3499998666666664, + 2.3500031499999996 + ] + }, + { + "bucket_id": 695431, + "cells": [ + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 2.283331783333333, + 2.2833350666666665 + ] + }, + { + "bucket_id": 692893, + "cells": [ + "tp2_mns8", + "tp2_mns16" + ], + "interval": [ + 2.274998683333333, + 2.2750019666666663 + ] + }, + { + "bucket_id": 639593, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 2.0999970166666664, + 2.1000002999999996 + ] + }, + { + "bucket_id": 390862, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 1.2833302333333332, + 1.2833335166666666 + ] + } + ], + "tolerance": 3.283333333333333e-06 + }, + "simulator": { + "buckets": { + "tp1_mns16": 832807, + "tp1_mns32": 832807, + "tp1_mns64": 832807, + "tp1_mns8": 832807, + "tp2_mns16": 902208, + "tp2_mns32": 0, + "tp2_mns64": 0, + "tp2_mns8": 0, + "tp4_mns16": 0, + "tp4_mns32": 1000000, + "tp4_mns64": 1000000, + "tp4_mns8": 0 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 1.3208333333333333, + 1.3208346541666667 + ] + }, + { + "bucket_id": 902208, + "cells": [ + "tp2_mns16" + ], + "interval": [ + 1.1916664, + 1.1916677208333333 + ] + }, + { + "bucket_id": 832807, + "cells": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 1.0999992458333334, + 1.1000005666666666 + ] + }, + { + "bucket_id": 0, + "cells": [ + "tp2_mns8", + "tp2_mns32", + "tp2_mns64", + "tp4_mns8", + "tp4_mns16" + ], + "interval": [ + 0.0, + 1.3208333333333333e-06 + ] + } + ], + "tolerance": 1.3208333333333333e-06 + } + }, + "top1": { + "candidate_cells": [ + "tp4_mns32", + "tp4_mns64" + ], + "effective_k": 2, + "optimistic_regret": 0.25634517766497456, + "worst_case_regret": 0.25634517766497456 + }, + "top5": { + "maximum_exact_five_overlap": 2, + "minimum_exact_five_overlap": 2, + "optimistic_regret": 0.25634517766497456, + "real_cutoff": { + "boundary": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 3, + "expanded_effective_k": 5, + "higher": [ + "tp2_mns32", + "tp2_mns64" + ] + }, + "simulator_cutoff": { + "boundary": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64" + ], + "choose_from_boundary": 2, + "expanded_effective_k": 7, + "higher": [ + "tp4_mns32", + "tp4_mns64", + "tp2_mns16" + ] + }, + "worst_case_regret": 0.25634517766497456 + } + }, + "ranking": [ + { + "cell": "tp4_mns32", + "rank": 1, + "score": 1.3208333333333333 + }, + { + "cell": "tp4_mns64", + "rank": 2, + "score": 1.3208333333333333 + }, + { + "cell": "tp2_mns16", + "rank": 3, + "score": 1.1916666666666667 + }, + { + "cell": "tp1_mns16", + "rank": 4, + "score": 1.1 + }, + { + "cell": "tp1_mns32", + "rank": 5, + "score": 1.1 + }, + { + "cell": "tp1_mns64", + "rank": 6, + "score": 1.1 + }, + { + "cell": "tp1_mns8", + "rank": 7, + "score": 1.1 + }, + { + "cell": "tp2_mns32", + "rank": 8, + "score": 0.0 + }, + { + "cell": "tp2_mns64", + "rank": 9, + "score": 0.0 + }, + { + "cell": "tp2_mns8", + "rank": 10, + "score": 0.0 + }, + { + "cell": "tp4_mns16", + "rank": 11, + "score": 0.0 + }, + { + "cell": "tp4_mns8", + "rank": 12, + "score": 0.0 + } + ], + "simulated_scores": { + "tp1_mns16": 1.1, + "tp1_mns32": 1.1, + "tp1_mns64": 1.1, + "tp1_mns8": 1.1, + "tp2_mns16": 1.1916666666666667, + "tp2_mns32": 0.0, + "tp2_mns64": 0.0, + "tp2_mns8": 0.0, + "tp4_mns16": 0.0, + "tp4_mns32": 1.3208333333333333, + "tp4_mns64": 1.3208333333333333, + "tp4_mns8": 0.0 + } + } + }, + "real_scores": { + "tp1_mns16": 2.35, + "tp1_mns32": 2.283333333333333, + "tp1_mns64": 2.283333333333333, + "tp1_mns8": 2.1, + "tp2_mns16": 2.275, + "tp2_mns32": 3.283333333333333, + "tp2_mns64": 3.2583333333333333, + "tp2_mns8": 2.275, + "tp4_mns16": 2.441666666666667, + "tp4_mns32": 2.441666666666667, + "tp4_mns64": 2.441666666666667, + "tp4_mns8": 1.2833333333333334 + }, + "schema": "frontier-qwen30-s2-profile-ablation.v1", + "scope": { + "calibration_a_tp": 1.0, + "cells": 12, + "probes": 92, + "trace_horizon_seconds": 60 + }, + "sources": { + "ground_truth": "/home/gahow/phd/replayserve/docs/assets/simfid_s2r/ground_truth.json", + "historical_metrics": "/home/gahow/phd/replayserve/runs/simfid_s2rb/results/metrics.json", + "replacement_profile_shards": [ + { + "path": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/comparison/new-profile-only-v2-s2/results-shard-00/metrics.json", + "runs": 46 + }, + { + "path": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/comparison/new-profile-only-v2-s2/results-shard-01/metrics.json", + "runs": 46 + } + ] + }, + "vllm020_profile_only": { + "SLO-gated": { + "cell_score_details": { + "tp1_mns16": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp1_mns32": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp1_mns64": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp1_mns8": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp2_mns16": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp2_mns32": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp2_mns64": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp2_mns8": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 8, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp4_mns16": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 7, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp4_mns32": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 7, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp4_mns64": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 7, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + }, + "tp4_mns8": { + "feasible": false, + "feasible_anchor_count": 0, + "recorded_anchor_count_after_removal": 7, + "score": 0.0, + "selected_probe_index": null, + "selected_sampling_u": null + } + }, + "false_feasibility": { + "overall": { + "agreement": 30, + "false_feasible": 0, + "false_infeasible": 62 + }, + "per_cell": { + "tp1_mns16": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp1_mns32": { + "agreement": 3, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp1_mns64": { + "agreement": 3, + "false_feasible": 0, + "false_infeasible": 5 + }, + "tp1_mns8": { + "agreement": 4, + "false_feasible": 0, + "false_infeasible": 4 + }, + "tp2_mns16": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 7 + }, + "tp2_mns32": { + "agreement": 5, + "false_feasible": 0, + "false_infeasible": 3 + }, + "tp2_mns64": { + "agreement": 6, + "false_feasible": 0, + "false_infeasible": 2 + }, + "tp2_mns8": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 7 + }, + "tp4_mns16": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp4_mns32": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp4_mns64": { + "agreement": 1, + "false_feasible": 0, + "false_infeasible": 6 + }, + "tp4_mns8": { + "agreement": 2, + "false_feasible": 0, + "false_infeasible": 5 + } + } + }, + "loao": { + "defined_replicates": 92, + "range_semantics": "deterministic LOAO sensitivity ranges, not confidence intervals", + "ranges": { + "pairwise_exact_sign_accuracy": { + "max": 0.07575757575757576, + "min": 0.07575757575757576 + }, + "pairwise_non_tied_concordance": { + "max": null, + "min": null + }, + "tau_b": { + "max": 0.0, + "min": 0.0 + }, + "top1_optimistic_regret": { + "max": 0.0, + "min": 0.0 + }, + "top1_worst_case_regret": { + "max": 0.6091370558375634, + "min": 0.6091370558375634 + }, + "top5_maximum_exact_five_overlap": { + "max": 5, + "min": 5 + }, + "top5_minimum_exact_five_overlap": { + "max": 0, + "min": 0 + }, + "top5_optimistic_regret": { + "max": 0.0, + "min": 0.0 + }, + "top5_worst_case_regret": { + "max": 0.30456852791878175, + "min": 0.30456852791878175 + } + }, + "replicate_count": 92, + "replicates": [ + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 7, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 0, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 1, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 2, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 3, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 4, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 5, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.07575757575757576, + "pairwise_non_tied_concordance": null, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 6, + "tau_b": 0.0, + "top1_optimistic_regret": 0.0, + "top1_worst_case_regret": 0.6091370558375634, + "top5_maximum_exact_five_overlap": 5, + "top5_minimum_exact_five_overlap": 0, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.30456852791878175, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + } + ], + "tp2_mns32_unique_global_best_count": 0, + "trap_reproduced_count": 0, + "undefined": [], + "undefined_replicates": 0 + }, + "metrics": { + "kendall_tau_b": { + "both_tied": 5, + "concordant": 0, + "discordant": 0, + "pair_count": 66, + "real_only_tied": 0, + "sim_only_tied": 61, + "tau_b": 0.0 + }, + "named_interactions": { + "relations": { + "tp2_mns32_gt_tp4_mns16": false, + "tp4_mns16_eq_tp4_mns32": true, + "tp4_mns16_eq_tp4_mns64": true, + "tp4_mns16_gt_tp1_mns16": false, + "tp4_mns16_gt_tp2_mns16": false, + "tp4_mns16_gt_tp4_mns8": false + }, + "simulator_top_bucket_cells": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64", + "tp2_mns8", + "tp2_mns16", + "tp2_mns32", + "tp2_mns64", + "tp4_mns8", + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + "pairwise_direction": { + "exact_sign_accuracy": 0.07575757575757576, + "exact_sign_agreement": 5, + "non_tied_concordance": null, + "non_tied_concordant": 0, + "non_tied_pair_count": 0, + "pair_count": 66 + }, + "per_mns_tp_direction": { + "accuracy": 0.0, + "comparisons": 8, + "exact_sign_agreement": 0, + "lines": [ + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": false, + "mns": 8, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0 + ], + "sim_line_class": "flat" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": false, + "mns": 16, + "real_adjacent_signs": [ + -1, + 1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0 + ], + "sim_line_class": "flat" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": false, + "mns": 32, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0 + ], + "sim_line_class": "flat" + }, + { + "comparisons": 2, + "exact_sign_agreement": 0, + "line_class_agrees": false, + "mns": 64, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0 + ], + "sim_line_class": "flat" + } + ] + }, + "per_tp_mns_direction": { + "accuracy": 0.4444444444444444, + "comparisons": 9, + "exact_sign_agreement": 4, + "lines": [ + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 1, + -1, + 0 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0, + 0 + ], + "sim_line_class": "flat", + "tp": 1 + }, + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 0, + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 0, + 0, + 0 + ], + "sim_line_class": "flat", + "tp": 2 + }, + { + "comparisons": 3, + "exact_sign_agreement": 2, + "line_class_agrees": false, + "real_adjacent_signs": [ + 1, + 0, + 0 + ], + "real_line_class": "increasing", + "sim_adjacent_signs": [ + 0, + 0, + 0 + ], + "sim_line_class": "flat", + "tp": 4 + } + ] + }, + "tie_buckets": { + "real": { + "buckets": { + "tp1_mns16": 715736, + "tp1_mns32": 695431, + "tp1_mns64": 695431, + "tp1_mns8": 639593, + "tp2_mns16": 692893, + "tp2_mns32": 1000000, + "tp2_mns64": 992385, + "tp2_mns8": 692893, + "tp4_mns16": 743654, + "tp4_mns32": 743654, + "tp4_mns64": 743654, + "tp4_mns8": 390862 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp2_mns32" + ], + "interval": [ + 3.2833333333333328, + 3.2833366166666664 + ] + }, + { + "bucket_id": 992385, + "cells": [ + "tp2_mns64" + ], + "interval": [ + 3.25833075, + 3.258334033333333 + ] + }, + { + "bucket_id": 743654, + "cells": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 2.4416639666666664, + 2.4416672499999996 + ] + }, + { + "bucket_id": 715736, + "cells": [ + "tp1_mns16" + ], + "interval": [ + 2.3499998666666664, + 2.3500031499999996 + ] + }, + { + "bucket_id": 695431, + "cells": [ + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 2.283331783333333, + 2.2833350666666665 + ] + }, + { + "bucket_id": 692893, + "cells": [ + "tp2_mns8", + "tp2_mns16" + ], + "interval": [ + 2.274998683333333, + 2.2750019666666663 + ] + }, + { + "bucket_id": 639593, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 2.0999970166666664, + 2.1000002999999996 + ] + }, + { + "bucket_id": 390862, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 1.2833302333333332, + 1.2833335166666666 + ] + } + ], + "tolerance": 3.283333333333333e-06 + }, + "simulator": { + "buckets": { + "tp1_mns16": 0, + "tp1_mns32": 0, + "tp1_mns64": 0, + "tp1_mns8": 0, + "tp2_mns16": 0, + "tp2_mns32": 0, + "tp2_mns64": 0, + "tp2_mns8": 0, + "tp4_mns16": 0, + "tp4_mns32": 0, + "tp4_mns64": 0, + "tp4_mns8": 0 + }, + "occupied_intervals": [ + { + "bucket_id": 0, + "cells": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64", + "tp2_mns8", + "tp2_mns16", + "tp2_mns32", + "tp2_mns64", + "tp4_mns8", + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 0.0, + 1e-09 + ] + } + ], + "tolerance": 1e-09 + } + }, + "top1": { + "candidate_cells": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64", + "tp2_mns8", + "tp2_mns16", + "tp2_mns32", + "tp2_mns64", + "tp4_mns8", + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "effective_k": 12, + "optimistic_regret": 0.0, + "worst_case_regret": 0.6091370558375634 + }, + "top5": { + "maximum_exact_five_overlap": 5, + "minimum_exact_five_overlap": 0, + "optimistic_regret": 0.0, + "real_cutoff": { + "boundary": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 3, + "expanded_effective_k": 5, + "higher": [ + "tp2_mns32", + "tp2_mns64" + ] + }, + "simulator_cutoff": { + "boundary": [ + "tp1_mns8", + "tp1_mns16", + "tp1_mns32", + "tp1_mns64", + "tp2_mns8", + "tp2_mns16", + "tp2_mns32", + "tp2_mns64", + "tp4_mns8", + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 5, + "expanded_effective_k": 12, + "higher": [] + }, + "worst_case_regret": 0.30456852791878175 + } + }, + "ranking": [ + { + "cell": "tp1_mns16", + "rank": 1, + "score": 0.0 + }, + { + "cell": "tp1_mns32", + "rank": 2, + "score": 0.0 + }, + { + "cell": "tp1_mns64", + "rank": 3, + "score": 0.0 + }, + { + "cell": "tp1_mns8", + "rank": 4, + "score": 0.0 + }, + { + "cell": "tp2_mns16", + "rank": 5, + "score": 0.0 + }, + { + "cell": "tp2_mns32", + "rank": 6, + "score": 0.0 + }, + { + "cell": "tp2_mns64", + "rank": 7, + "score": 0.0 + }, + { + "cell": "tp2_mns8", + "rank": 8, + "score": 0.0 + }, + { + "cell": "tp4_mns16", + "rank": 9, + "score": 0.0 + }, + { + "cell": "tp4_mns32", + "rank": 10, + "score": 0.0 + }, + { + "cell": "tp4_mns64", + "rank": 11, + "score": 0.0 + }, + { + "cell": "tp4_mns8", + "rank": 12, + "score": 0.0 + } + ], + "reading": "SLO-gated", + "simulated_scores": { + "tp1_mns16": 0.0, + "tp1_mns32": 0.0, + "tp1_mns64": 0.0, + "tp1_mns8": 0.0, + "tp2_mns16": 0.0, + "tp2_mns32": 0.0, + "tp2_mns64": 0.0, + "tp2_mns8": 0.0, + "tp4_mns16": 0.0, + "tp4_mns32": 0.0, + "tp4_mns64": 0.0, + "tp4_mns8": 0.0 + } + }, + "throughput-proxy": { + "cell_score_details": { + "tp1_mns16": { + "recorded_anchor_count_after_removal": 8, + "score": 0.8453202347375465, + "selected_probe_index": 1, + "selected_sampling_u": 0.25, + "valid_anchor_count": 8 + }, + "tp1_mns32": { + "recorded_anchor_count_after_removal": 8, + "score": 1.4213857973581445, + "selected_probe_index": 0, + "selected_sampling_u": 0.5, + "valid_anchor_count": 8 + }, + "tp1_mns64": { + "recorded_anchor_count_after_removal": 8, + "score": 2.1437448608949605, + "selected_probe_index": 0, + "selected_sampling_u": 0.5, + "valid_anchor_count": 8 + }, + "tp1_mns8": { + "recorded_anchor_count_after_removal": 8, + "score": 0.5319246206192596, + "selected_probe_index": 1, + "selected_sampling_u": 0.25, + "valid_anchor_count": 8 + }, + "tp2_mns16": { + "recorded_anchor_count_after_removal": 8, + "score": 0.6441840113363596, + "selected_probe_index": 4, + "selected_sampling_u": 0.46875, + "valid_anchor_count": 8 + }, + "tp2_mns32": { + "recorded_anchor_count_after_removal": 8, + "score": 1.093439153724593, + "selected_probe_index": 4, + "selected_sampling_u": 0.78125, + "valid_anchor_count": 8 + }, + "tp2_mns64": { + "recorded_anchor_count_after_removal": 8, + "score": 1.7227463064785613, + "selected_probe_index": 2, + "selected_sampling_u": 0.875, + "valid_anchor_count": 8 + }, + "tp2_mns8": { + "recorded_anchor_count_after_removal": 8, + "score": 0.3900292387118045, + "selected_probe_index": 4, + "selected_sampling_u": 0.46875, + "valid_anchor_count": 8 + }, + "tp4_mns16": { + "recorded_anchor_count_after_removal": 7, + "score": 0.4355571852372527, + "selected_probe_index": 5, + "selected_sampling_u": 0.033182214016, + "valid_anchor_count": 7 + }, + "tp4_mns32": { + "recorded_anchor_count_after_removal": 7, + "score": 0.760215065879823, + "selected_probe_index": 5, + "selected_sampling_u": 0.033182214016, + "valid_anchor_count": 7 + }, + "tp4_mns64": { + "recorded_anchor_count_after_removal": 7, + "score": 1.2313111686958826, + "selected_probe_index": 5, + "selected_sampling_u": 0.033182214016, + "valid_anchor_count": 7 + }, + "tp4_mns8": { + "recorded_anchor_count_after_removal": 7, + "score": 0.25160540206585935, + "selected_probe_index": 0, + "selected_sampling_u": 0.034252608017, + "valid_anchor_count": 7 + } + }, + "loao": { + "defined_replicates": 92, + "range_semantics": "deterministic LOAO sensitivity ranges, not confidence intervals", + "ranges": { + "pairwise_exact_sign_accuracy": { + "max": 0.6515151515151515, + "min": 0.6515151515151515 + }, + "pairwise_non_tied_concordance": { + "max": 0.7049180327868853, + "min": 0.7049180327868853 + }, + "tau_b": { + "max": 0.39400626128204935, + "min": 0.39400626128204935 + }, + "top1_optimistic_regret": { + "max": 0.30456852791878175, + "min": 0.30456852791878175 + }, + "top1_worst_case_regret": { + "max": 0.30456852791878175, + "min": 0.30456852791878175 + }, + "top5_maximum_exact_five_overlap": { + "max": 3, + "min": 3 + }, + "top5_minimum_exact_five_overlap": { + "max": 3, + "min": 3 + }, + "top5_optimistic_regret": { + "max": 0.0, + "min": 0.0 + }, + "top5_worst_case_regret": { + "max": 0.0, + "min": 0.0 + } + }, + "replicate_count": 92, + "replicates": [ + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns8", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns16", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns32", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp1_mns64", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns8", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns16", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns32", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp2_mns64", + "removed_probe_index": 7, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns8", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns16", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns32", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 0, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 1, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 2, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 3, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 4, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 5, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + { + "pairwise_exact_sign_accuracy": 0.6515151515151515, + "pairwise_non_tied_concordance": 0.7049180327868853, + "removed_cell_id": "tp4_mns64", + "removed_probe_index": 6, + "tau_b": 0.39400626128204935, + "top1_optimistic_regret": 0.30456852791878175, + "top1_worst_case_regret": 0.30456852791878175, + "top5_maximum_exact_five_overlap": 3, + "top5_minimum_exact_five_overlap": 3, + "top5_optimistic_regret": 0.0, + "top5_worst_case_regret": 0.0, + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + } + ], + "tp2_mns32_unique_global_best_count": 0, + "trap_reproduced_count": 0, + "undefined": [], + "undefined_replicates": 0 + }, + "metrics": { + "kendall_tau_b": { + "both_tied": 0, + "concordant": 43, + "discordant": 18, + "pair_count": 66, + "real_only_tied": 5, + "sim_only_tied": 0, + "tau_b": 0.39400626128204935 + }, + "named_interactions": { + "relations": { + "tp2_mns32_gt_tp4_mns16": true, + "tp4_mns16_eq_tp4_mns32": false, + "tp4_mns16_eq_tp4_mns64": false, + "tp4_mns16_gt_tp1_mns16": false, + "tp4_mns16_gt_tp2_mns16": false, + "tp4_mns16_gt_tp4_mns8": true + }, + "simulator_top_bucket_cells": [ + "tp1_mns64" + ], + "tp2_mns32_unique_global_best": false, + "trap_reproduced": false + }, + "pairwise_direction": { + "exact_sign_accuracy": 0.6515151515151515, + "exact_sign_agreement": 43, + "non_tied_concordance": 0.7049180327868853, + "non_tied_concordant": 43, + "non_tied_pair_count": 61, + "pair_count": 66 + }, + "per_mns_tp_direction": { + "accuracy": 0.5, + "comparisons": 8, + "exact_sign_agreement": 4, + "lines": [ + { + "comparisons": 2, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "mns": 8, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + -1 + ], + "sim_line_class": "decreasing" + }, + { + "comparisons": 2, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "mns": 16, + "real_adjacent_signs": [ + -1, + 1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + -1 + ], + "sim_line_class": "decreasing" + }, + { + "comparisons": 2, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "mns": 32, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + -1 + ], + "sim_line_class": "decreasing" + }, + { + "comparisons": 2, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "mns": 64, + "real_adjacent_signs": [ + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + -1, + -1 + ], + "sim_line_class": "decreasing" + } + ] + }, + "per_tp_mns_direction": { + "accuracy": 0.3333333333333333, + "comparisons": 9, + "exact_sign_agreement": 3, + "lines": [ + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 1, + -1, + 0 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + 1, + 1 + ], + "sim_line_class": "increasing", + "tp": 1 + }, + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": false, + "real_adjacent_signs": [ + 0, + 1, + -1 + ], + "real_line_class": "non-monotonic", + "sim_adjacent_signs": [ + 1, + 1, + 1 + ], + "sim_line_class": "increasing", + "tp": 2 + }, + { + "comparisons": 3, + "exact_sign_agreement": 1, + "line_class_agrees": true, + "real_adjacent_signs": [ + 1, + 0, + 0 + ], + "real_line_class": "increasing", + "sim_adjacent_signs": [ + 1, + 1, + 1 + ], + "sim_line_class": "increasing", + "tp": 4 + } + ] + }, + "tie_buckets": { + "real": { + "buckets": { + "tp1_mns16": 715736, + "tp1_mns32": 695431, + "tp1_mns64": 695431, + "tp1_mns8": 639593, + "tp2_mns16": 692893, + "tp2_mns32": 1000000, + "tp2_mns64": 992385, + "tp2_mns8": 692893, + "tp4_mns16": 743654, + "tp4_mns32": 743654, + "tp4_mns64": 743654, + "tp4_mns8": 390862 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp2_mns32" + ], + "interval": [ + 3.2833333333333328, + 3.2833366166666664 + ] + }, + { + "bucket_id": 992385, + "cells": [ + "tp2_mns64" + ], + "interval": [ + 3.25833075, + 3.258334033333333 + ] + }, + { + "bucket_id": 743654, + "cells": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "interval": [ + 2.4416639666666664, + 2.4416672499999996 + ] + }, + { + "bucket_id": 715736, + "cells": [ + "tp1_mns16" + ], + "interval": [ + 2.3499998666666664, + 2.3500031499999996 + ] + }, + { + "bucket_id": 695431, + "cells": [ + "tp1_mns32", + "tp1_mns64" + ], + "interval": [ + 2.283331783333333, + 2.2833350666666665 + ] + }, + { + "bucket_id": 692893, + "cells": [ + "tp2_mns8", + "tp2_mns16" + ], + "interval": [ + 2.274998683333333, + 2.2750019666666663 + ] + }, + { + "bucket_id": 639593, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 2.0999970166666664, + 2.1000002999999996 + ] + }, + { + "bucket_id": 390862, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 1.2833302333333332, + 1.2833335166666666 + ] + } + ], + "tolerance": 3.283333333333333e-06 + }, + "simulator": { + "buckets": { + "tp1_mns16": 394319, + "tp1_mns32": 663038, + "tp1_mns64": 1000000, + "tp1_mns8": 248128, + "tp2_mns16": 300494, + "tp2_mns32": 510060, + "tp2_mns64": 803615, + "tp2_mns8": 181938, + "tp4_mns16": 203175, + "tp4_mns32": 354620, + "tp4_mns64": 574373, + "tp4_mns8": 117367 + }, + "occupied_intervals": [ + { + "bucket_id": 1000000, + "cells": [ + "tp1_mns64" + ], + "interval": [ + 2.1437448608949605, + 2.1437470046398217 + ] + }, + { + "bucket_id": 803615, + "cells": [ + "tp2_mns64" + ], + "interval": [ + 1.7227455263881037, + 1.7227476701329647 + ] + }, + { + "bucket_id": 663038, + "cells": [ + "tp1_mns32" + ], + "interval": [ + 1.421384305078073, + 1.4213864488229337 + ] + }, + { + "bucket_id": 574373, + "cells": [ + "tp4_mns64" + ], + "interval": [ + 1.2313091669868212, + 1.2313113107316822 + ] + }, + { + "bucket_id": 510060, + "cells": [ + "tp2_mns32" + ], + "interval": [ + 1.0934385037480836, + 1.0934406474929446 + ] + }, + { + "bucket_id": 394319, + "cells": [ + "tp1_mns16" + ], + "interval": [ + 0.84531932980324, + 0.8453214735481008 + ] + }, + { + "bucket_id": 354620, + "cells": [ + "tp4_mns32" + ], + "interval": [ + 0.760214802570571, + 0.7602169463154318 + ] + }, + { + "bucket_id": 300494, + "cells": [ + "tp2_mns16" + ], + "interval": [ + 0.6441824682297703, + 0.6441846119746312 + ] + }, + { + "bucket_id": 248128, + "cells": [ + "tp1_mns8" + ], + "interval": [ + 0.5319231248441448, + 0.5319252685890057 + ] + }, + { + "bucket_id": 203175, + "cells": [ + "tp4_mns16" + ], + "interval": [ + 0.43555536211233364, + 0.4355575058571945 + ] + }, + { + "bucket_id": 181938, + "cells": [ + "tp2_mns8" + ], + "interval": [ + 0.39002865250150737, + 0.3900307962463682 + ] + }, + { + "bucket_id": 117367, + "cells": [ + "tp4_mns8" + ], + "interval": [ + 0.25160490308865885, + 0.25160704683351975 + ] + } + ], + "tolerance": 2.1437448608949606e-06 + } + }, + "top1": { + "candidate_cells": [ + "tp1_mns64" + ], + "effective_k": 1, + "optimistic_regret": 0.30456852791878175, + "worst_case_regret": 0.30456852791878175 + }, + "top5": { + "maximum_exact_five_overlap": 3, + "minimum_exact_five_overlap": 3, + "optimistic_regret": 0.0, + "real_cutoff": { + "boundary": [ + "tp4_mns16", + "tp4_mns32", + "tp4_mns64" + ], + "choose_from_boundary": 3, + "expanded_effective_k": 5, + "higher": [ + "tp2_mns32", + "tp2_mns64" + ] + }, + "simulator_cutoff": { + "boundary": [ + "tp2_mns32" + ], + "choose_from_boundary": 1, + "expanded_effective_k": 5, + "higher": [ + "tp1_mns64", + "tp2_mns64", + "tp1_mns32", + "tp4_mns64" + ] + }, + "worst_case_regret": 0.0 + } + }, + "ranking": [ + { + "cell": "tp1_mns64", + "rank": 1, + "score": 2.1437448608949605 + }, + { + "cell": "tp2_mns64", + "rank": 2, + "score": 1.7227463064785613 + }, + { + "cell": "tp1_mns32", + "rank": 3, + "score": 1.4213857973581445 + }, + { + "cell": "tp4_mns64", + "rank": 4, + "score": 1.2313111686958826 + }, + { + "cell": "tp2_mns32", + "rank": 5, + "score": 1.093439153724593 + }, + { + "cell": "tp1_mns16", + "rank": 6, + "score": 0.8453202347375465 + }, + { + "cell": "tp4_mns32", + "rank": 7, + "score": 0.760215065879823 + }, + { + "cell": "tp2_mns16", + "rank": 8, + "score": 0.6441840113363596 + }, + { + "cell": "tp1_mns8", + "rank": 9, + "score": 0.5319246206192596 + }, + { + "cell": "tp4_mns16", + "rank": 10, + "score": 0.4355571852372527 + }, + { + "cell": "tp2_mns8", + "rank": 11, + "score": 0.3900292387118045 + }, + { + "cell": "tp4_mns8", + "rank": 12, + "score": 0.25160540206585935 + } + ], + "reading": "throughput-proxy", + "simulated_scores": { + "tp1_mns16": 0.8453202347375465, + "tp1_mns32": 1.4213857973581445, + "tp1_mns64": 2.1437448608949605, + "tp1_mns8": 0.5319246206192596, + "tp2_mns16": 0.6441840113363596, + "tp2_mns32": 1.093439153724593, + "tp2_mns64": 1.7227463064785613, + "tp2_mns8": 0.3900292387118045, + "tp4_mns16": 0.4355571852372527, + "tp4_mns32": 0.760215065879823, + "tp4_mns64": 1.2313111686958826, + "tp4_mns8": 0.25160540206585935 + } + } + } +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/artifacts/trace-support/support.json b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/trace-support/support.json new file mode 100644 index 0000000..5bd1e82 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/artifacts/trace-support/support.json @@ -0,0 +1,469 @@ +{ + "block_size": 64, + "cohort_output": "/home/admin/cpfs/wjh/frontier_qwen30_vllm020_profiles/trace-support/cohort.jsonl", + "cohort_sha256": "9ef15a4c8843127a5c52ff8455bdeb9945ac6921f2977dd11070ed6944eed7c8", + "full_downsampled_cohort": { + "hash_blocks_per_request": { + "max": 128.0, + "min": 2.0, + "p10": 4.0, + "p25": 15.0, + "p50": 38.0, + "p75": 82.0, + "p90": 111.0, + "p95": 122.0, + "p99": 127.0 + }, + "input_tokens": { + "max": 8186.0, + "min": 71.0, + "p10": 208.0, + "p25": 933.0, + "p50": 2421.0, + "p75": 5244.0, + "p90": 7103.0, + "p95": 7775.0, + "p99": 8074.0 + }, + "interarrival_s": { + "max": 0.20259999999998257, + "min": 0.06279999999997088, + "p10": 0.0917999999999708, + "p25": 0.10240000000003846, + "p50": 0.1163999999999703, + "p75": 0.13009999999999167, + "p90": 0.14210000000002765, + "p95": 0.15119999999997447, + "p99": 0.17959999999997933 + }, + "multi_turn_fraction": 0.140625, + "output_tokens": { + "max": 128.0, + "min": 128.0, + "p10": 128.0, + "p25": 128.0, + "p50": 128.0, + "p75": 128.0, + "p90": 128.0, + "p95": 128.0, + "p99": 128.0 + }, + "prefix_reuse_upper_bound": { + "any_position_reusable_block_ratio": 0.09274807669777795, + "leading_reusable_blocks_per_request": { + "max": 55.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 1.0, + "p75": 13.0, + "p90": 13.0, + "p95": 13.0, + "p99": 49.0 + }, + "leading_reusable_tokens_per_request": { + "max": 3520.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 64.0, + "p75": 832.0, + "p90": 832.0, + "p95": 832.0, + "p99": 3136.0 + }, + "rows_with_hash_ids": 512, + "semantics": "arrival-ordered, infinite-capacity/no-eviction upper bound; not an observed KV-cache hit rate", + "total_blocks": 25607, + "unique_blocks": 23232 + }, + "request_count": 512, + "sampling_u": { + "max": 0.9979913161468553, + "min": 0.0017297900650431776, + "p10": 0.10365756051317851, + "p25": 0.22877823992809823, + "p50": 0.4667483893139273, + "p75": 0.7338360613813898, + "p90": 0.8969698510725516, + "p95": 0.9558957048665733, + "p99": 0.991130680217395 + } + }, + "limits": [ + "Trace length/hash support does not determine dynamic decode or mixed batch shapes.", + "Those shapes depend jointly on arrival history, SLO pressure, TP execution time, MNS, chunking, and KV eviction.", + "MoE expert routing is not present in the trace and must be measured from model execution." + ], + "loader_contract": { + "completion_tokens_override": 128, + "downsampling": "AITuner _downsample_requests before sampling_u threshold", + "input_length_filter": { + "max": 8192, + "min": 0 + }, + "max_requests_per_probe": 512, + "ordering": "arrival_s", + "replay_time_scale": 0.1 + }, + "schema_version": "qwen30_trace_profile_support.v1", + "study": "/home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/configs/examples/dash0_qwen30b_a3b_community_vllm020_noharness.json", + "study_sha256": "cd0b9e2385751478f459faeae2cf3d12c58229866176911051421bc043bf99d4", + "threshold_cohorts": { + "0.125": { + "hash_blocks_per_request": { + "max": 127.0, + "min": 2.0, + "p10": 7.0, + "p25": 15.0, + "p50": 30.0, + "p75": 76.0, + "p90": 105.0, + "p95": 111.0, + "p99": 127.0 + }, + "input_tokens": { + "max": 8110.0, + "min": 74.0, + "p10": 392.0, + "p25": 922.0, + "p50": 1864.0, + "p75": 4844.0, + "p90": 6686.0, + "p95": 7054.0, + "p99": 8110.0 + }, + "interarrival_s": { + "max": 6.217200000000002, + "min": 0.10639999999998517, + "p10": 0.16680000000001272, + "p25": 0.30810000000001736, + "p50": 0.6001999999999938, + "p75": 1.1201000000000016, + "p90": 1.8216999999999643, + "p95": 2.419699999999967, + "p99": 6.217200000000002 + }, + "multi_turn_fraction": 0.15151515151515152, + "output_tokens": { + "max": 128.0, + "min": 128.0, + "p10": 128.0, + "p25": 128.0, + "p50": 128.0, + "p75": 128.0, + "p90": 128.0, + "p95": 128.0, + "p99": 128.0 + }, + "prefix_reuse_upper_bound": { + "any_position_reusable_block_ratio": 0.10466666666666667, + "leading_reusable_blocks_per_request": { + "max": 13.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 1.0, + "p75": 13.0, + "p90": 13.0, + "p95": 13.0, + "p99": 13.0 + }, + "leading_reusable_tokens_per_request": { + "max": 832.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 64.0, + "p75": 832.0, + "p90": 832.0, + "p95": 832.0, + "p99": 832.0 + }, + "rows_with_hash_ids": 66, + "semantics": "arrival-ordered, infinite-capacity/no-eviction upper bound; not an observed KV-cache hit rate", + "total_blocks": 3000, + "unique_blocks": 2686 + }, + "request_count": 66, + "sampling_u": { + "max": 0.12321850600323363, + "min": 0.0017297900650431776, + "p10": 0.01599560440427848, + "p25": 0.03636425746001375, + "p50": 0.06451196858246099, + "p75": 0.10162658487005978, + "p90": 0.1138971596689021, + "p95": 0.12001874701158237, + "p99": 0.12321850600323363 + } + }, + "0.25": { + "hash_blocks_per_request": { + "max": 128.0, + "min": 2.0, + "p10": 4.0, + "p25": 14.0, + "p50": 34.0, + "p75": 87.0, + "p90": 107.0, + "p95": 122.0, + "p99": 127.0 + }, + "input_tokens": { + "max": 8149.0, + "min": 72.0, + "p10": 197.0, + "p25": 867.0, + "p50": 2167.0, + "p75": 5568.0, + "p90": 6841.0, + "p95": 7745.0, + "p99": 8110.0 + }, + "interarrival_s": { + "max": 2.3110999999999855, + "min": 0.07340000000003499, + "p10": 0.11439999999997497, + "p25": 0.14210000000002765, + "p50": 0.3411000000000044, + "p75": 0.5650000000000093, + "p90": 0.8215000000000146, + "p95": 1.088799999999992, + "p99": 1.7577999999999996 + }, + "multi_turn_fraction": 0.11888111888111888, + "output_tokens": { + "max": 128.0, + "min": 128.0, + "p10": 128.0, + "p25": 128.0, + "p50": 128.0, + "p75": 128.0, + "p90": 128.0, + "p95": 128.0, + "p99": 128.0 + }, + "prefix_reuse_upper_bound": { + "any_position_reusable_block_ratio": 0.07953890489913544, + "leading_reusable_blocks_per_request": { + "max": 13.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 1.0, + "p75": 13.0, + "p90": 13.0, + "p95": 13.0, + "p99": 13.0 + }, + "leading_reusable_tokens_per_request": { + "max": 832.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 64.0, + "p75": 832.0, + "p90": 832.0, + "p95": 832.0, + "p99": 832.0 + }, + "rows_with_hash_ids": 143, + "semantics": "arrival-ordered, infinite-capacity/no-eviction upper bound; not an observed KV-cache hit rate", + "total_blocks": 6940, + "unique_blocks": 6388 + }, + "request_count": 143, + "sampling_u": { + "max": 0.24941730181025415, + "min": 0.0017297900650431776, + "p10": 0.03095529459918134, + "p25": 0.07431293234041883, + "p50": 0.13301201741611407, + "p75": 0.1994148366998705, + "p90": 0.2292686392189136, + "p95": 0.24107176388894497, + "p99": 0.24671643798343437 + } + }, + "0.5": { + "hash_blocks_per_request": { + "max": 128.0, + "min": 2.0, + "p10": 2.0, + "p25": 15.0, + "p50": 42.0, + "p75": 86.0, + "p90": 109.0, + "p95": 117.0, + "p99": 127.0 + }, + "input_tokens": { + "max": 8149.0, + "min": 71.0, + "p10": 113.0, + "p25": 905.0, + "p50": 2648.0, + "p75": 5490.0, + "p90": 6926.0, + "p95": 7476.0, + "p99": 8074.0 + }, + "interarrival_s": { + "max": 1.2561000000000142, + "min": 0.06749999999997236, + "p10": 0.10019999999999563, + "p25": 0.11840000000002249, + "p50": 0.15819999999994394, + "p75": 0.2599999999999483, + "p90": 0.3867999999999938, + "p95": 0.5083999999999804, + "p99": 0.696700000000007 + }, + "multi_turn_fraction": 0.14130434782608695, + "output_tokens": { + "max": 128.0, + "min": 128.0, + "p10": 128.0, + "p25": 128.0, + "p50": 128.0, + "p75": 128.0, + "p90": 128.0, + "p95": 128.0, + "p99": 128.0 + }, + "prefix_reuse_upper_bound": { + "any_position_reusable_block_ratio": 0.08318264014466546, + "leading_reusable_blocks_per_request": { + "max": 52.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 1.0, + "p75": 13.0, + "p90": 13.0, + "p95": 13.0, + "p99": 24.0 + }, + "leading_reusable_tokens_per_request": { + "max": 3328.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 64.0, + "p75": 832.0, + "p90": 832.0, + "p95": 832.0, + "p99": 1536.0 + }, + "rows_with_hash_ids": 276, + "semantics": "arrival-ordered, infinite-capacity/no-eviction upper bound; not an observed KV-cache hit rate", + "total_blocks": 13825, + "unique_blocks": 12675 + }, + "request_count": 276, + "sampling_u": { + "max": 0.49832600818075473, + "min": 0.0017297900650431776, + "p10": 0.056494245471656455, + "p25": 0.1313132001019981, + "p50": 0.24403265916374703, + "p75": 0.3706937275751198, + "p90": 0.4530058956953501, + "p95": 0.48171254599865826, + "p99": 0.49639910750753047 + } + }, + "1.0": { + "hash_blocks_per_request": { + "max": 128.0, + "min": 2.0, + "p10": 4.0, + "p25": 15.0, + "p50": 38.0, + "p75": 82.0, + "p90": 111.0, + "p95": 122.0, + "p99": 127.0 + }, + "input_tokens": { + "max": 8186.0, + "min": 71.0, + "p10": 208.0, + "p25": 933.0, + "p50": 2421.0, + "p75": 5244.0, + "p90": 7103.0, + "p95": 7775.0, + "p99": 8074.0 + }, + "interarrival_s": { + "max": 0.20259999999998257, + "min": 0.06279999999997088, + "p10": 0.0917999999999708, + "p25": 0.10240000000003846, + "p50": 0.1163999999999703, + "p75": 0.13009999999999167, + "p90": 0.14210000000002765, + "p95": 0.15119999999997447, + "p99": 0.17959999999997933 + }, + "multi_turn_fraction": 0.140625, + "output_tokens": { + "max": 128.0, + "min": 128.0, + "p10": 128.0, + "p25": 128.0, + "p50": 128.0, + "p75": 128.0, + "p90": 128.0, + "p95": 128.0, + "p99": 128.0 + }, + "prefix_reuse_upper_bound": { + "any_position_reusable_block_ratio": 0.09274807669777795, + "leading_reusable_blocks_per_request": { + "max": 55.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 1.0, + "p75": 13.0, + "p90": 13.0, + "p95": 13.0, + "p99": 49.0 + }, + "leading_reusable_tokens_per_request": { + "max": 3520.0, + "min": 0.0, + "p10": 0.0, + "p25": 0.0, + "p50": 64.0, + "p75": 832.0, + "p90": 832.0, + "p95": 832.0, + "p99": 3136.0 + }, + "rows_with_hash_ids": 512, + "semantics": "arrival-ordered, infinite-capacity/no-eviction upper bound; not an observed KV-cache hit rate", + "total_blocks": 25607, + "unique_blocks": 23232 + }, + "request_count": 512, + "sampling_u": { + "max": 0.9979913161468553, + "min": 0.0017297900650431776, + "p10": 0.10365756051317851, + "p25": 0.22877823992809823, + "p50": 0.4667483893139273, + "p75": 0.7338360613813898, + "p90": 0.8969698510725516, + "p95": 0.9558957048665733, + "p99": 0.991130680217395 + } + } + }, + "trace": "/home/admin/cpfs/wjh/aituner/aituner/trace_windows/traces/chat_w20260311_1000.jsonl", + "trace_sha256": "f539f38eb0ee0f750e3c23ff47df6eed3faf723a25f1444d55665a85871750b9", + "window_id": "chat_w20260311_1000" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/experiment-card.md b/runs/frontier-qwen30-vllm020-profile-v1/experiment-card.md index a51365c..4f38358 100644 --- a/runs/frontier-qwen30-vllm020-profile-v1/experiment-card.md +++ b/runs/frontier-qwen30-vllm020-profile-v1/experiment-card.md @@ -1,6 +1,6 @@ # 实验 EXP-SIMFID-Q30-P020:同栈 per-TP operator profile 能否恢复 Frontier ranking? -> **状态:** 运行中(用户已批准 5-step campaign) +> **状态:** 完成;H1 rejected,结果支持 H2(2026-07-16) ## Claim 与决策 @@ -22,8 +22,8 @@ ## 预期产物与 review -- **预期数据:** TP1/2/4 attention、KV-cache update、linear、MoE、collective raw profiles;冻结 manifest/sha256;12-cell simulation outputs;三 baseline comparison table。 -- **Figure prototype:** `mock-profile-ablation.png`;x 为 12 configs,y 为 normalized capacity;series 为 real、old profile-only、new profile-only、calibrated。图中数值明确标为 mock,不进入结论。 +- **实际数据:** TP1/2/4 attention、KV-cache update、linear、MoE、collective raw profiles;冻结 manifest/sha256;92/92 new profile-only runs;old/new/calibrated comparison;scheduler graph-mode 与 native MoE routing diagnostics。 +- **Figure:** `../../docs/assets/simulator-fidelity/qwen30-vllm020-profile-ablation.png`;四个 panels 分别展示完整 ranking、routing skew、phase-dependent graph mode 和 held-out P1 boundary accuracy。图中只使用实测或冻结分析结果。 - **人工 review:** 已批准。用户明确要求推进 5 个步骤,并要求 smoke 通过后直接完整运行。 - **Review 意见:** 不能把 TP–MNS 耦合拆成互不相关问题;profile 只冻结 execution counterfactual 的证据,最终仍以完整 config ranking 判断。 @@ -32,12 +32,27 @@ - **Code:** AITuner 当前 branch `codex/fidelity-prefix-pilot-20260714`;Frontier canonical commit `d9cfeb6d8791fbf2f295dd9744c56a666171776e`;vLLM commit/tag `88d34c6409e9fb3c7b8ca0c04756f061d2099eb1` / `0.20.0`。 - **Environment:** `/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1`;hardware/driver/package freeze 写入每个 profile artifact。 - **产物路径:** remote `/home/admin/cpfs/wjh/frontier_qwen30_vllm020_profiles/`; local harvest `runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/`。 -- **已知 deviation:** 历史 real ground truth 来自 dash1;本次 profile 按用户要求在 dash0 生成。driver 也已从历史 570.133.20 漂移到 dash0 当前 580.95.05。结果只能归因于“profile stack alignment 在当前 dash0 上的效果”,不能声称严格复现旧 dash1 execution latency。 +- **已知 deviation:** 历史 real ground truth 与本次 profile 都来自 dash0;早期文档中的主机 provenance 标注错误。driver 从历史 570.133.20 漂移到当前 580.95.05,因此结果仍不能解释为严格的逐 kernel latency 复现,只能作为同一 H20 主机上 profile-stack alignment 的对照。 ## 结果 -- **观察事实:** 待完整 profile 与 simulation。 -- **异常:** Frontier 原生 attention profiler 只实现 `FLASHINFER`/`NO_OP`,不能调用真实 serving 的 `FLASH_ATTN`;其 MoE wrapper声明并硬编码 vLLM 0.10.x API。vLLM 0.20.0 自带的 attention benchmark可调用实际 FlashAttention backend,但 mixed prefill+decode 在 FA3 中是一个 fused varlen call,而 Frontier schema将其拆成 `attn_prefill` 与 `attn_decode` 两项。 -- **Interpretation 与剩余 alternatives:** 这既是 profiler compatibility gap,也是潜在 representational gap。先用真实 kernel smoke 判断能否无损物化 Frontier profile;不能无损时同时保留 fused total 与 schema projection,避免误把 projection error 当 kernel error。 -- **Claim update:** unchanged。 -- **下一步:** 通过 vLLM 0.20 exact-kernel smoke;冻结 trace-derived shape support;完整 TP1/2/4 profiling;profile-only rerun。 +- **Step 1—同栈固定:** dash0 8×H20;Qwen3-30B-A3B BF16;community vLLM `0.20.0+cu129` / source commit `88d34c6409e9fb3c7b8ca0c04756f061d2099eb1`。真实 serving 与 profiles 使用同一主机和 model family;历史 driver 570.133.20 到当前 580.95.05 的漂移保留为限制。 +- **Step 2—per-TP profiles:** profile-v2 冻结 attention 132 rows、直接测量 fused-mixed diagnostic 30 rows、linear 36 rows、MoE 72 rows、all-reduce 24 rows。attention/linear/MoE 通过单 H20 local-shard shape 表达 TP;all-reduce 使用真实 TP2/4 ranks。base comparison 保持 historical analytical CC backend,measured all-reduce 仅作独立诊断。 +- **Step 3—trace execution coverage:** 6 个 P1 cells 共 161,161 scheduler/model steps:pure decode 151,471(100% FULL graph),pure prefill 224(192 NONE、30 PIECEWISE、2 FULL),true mixed 9,466(8,623 NONE、842 PIECEWISE、1 FULL)。exact-trace 8-request native routing probe 表明实际 median max/mean expert load 为 prefill 6.12、decode 5.64,而 Frontier fixed prior 为 1.84;actual-vs-prior Pearson median 接近 0。该小 cohort 用于机制否证,不作为 routing population estimate。 +- **Step 4—冻结 profile-only:** profile-v1 因 true-mixed schema 缺少 `attn_decode_in_mixed` 在第一个 mixed batch fail。profile-v2 使用 same-TP pure prefill/decode ratio 做 total-conserving compatibility split,同时保留直接实测 fused total。两个 46-run CPU shards 均 PASS,92/92 runs 无 crash,总 simulator runtime 2,394.9 s(0.665 CPU-hour)。 +- **Step 5—ranking comparison:** real optimum 为 TP2/MNS32。old profile-only top set 为 TP4/MNS32/64,τ-b=0、worst regret=25.63%;new vLLM 0.20 profile-only 在所有 92 anchors 上都 SLO-infeasible,12 configs 全并列,τ-b=0、exact pair sign=7.58%、worst tie-break regret=60.91%;historical frozen per-TP calibration top set 为 TP2/MNS32/64,τ-b=0.9668、worst regret=0.76%。在 held-out P1 12 boundary labels 上,new profile-only accuracy 41.67%、pass-rate MAE 69.84%,也没有优于 old profile-only;calibration 分别为 83.33% 和 11.75%。 +- **Same-state delta:** 在 `tp1_mns64` 的 batch 0/layer 0、profile-dependent trajectories 尚未分叉时,new/old layer component sum 已为 2.70×;MoE grouped GEMM 3.76×、RoPE 7.39×、attention prefill 2.67×。误差不是可由一个 version correction 解释的一致 scale。 +- **异常与 schema gap:** Frontier 原生 attention profiler 只实现 `FLASHINFER`/`NO_OP`,不能调用真实 serving 的 `FLASH_ATTN`;其 MoE wrapper声明并硬编码 vLLM 0.10.x API。vLLM 0.20.0 的 FA3 mixed prefill+decode 是一个 fused varlen call,而 Frontier schema要求 `attn_prefill` 和 `attn_decode_in_mixed` 两项。兼容 split 是归因,不是观测。 +- **Interpretation:** H1 被否证。同栈 isolated operator profile 不等价于真实 execution counterfactual。TP 与 MNS 共同改变 local shape、collective、queue/batch composition、phase mixture、routing 和 CUDA graph regime;static operator sum 在 scheduler 推进后产生 feedback amplification。历史 per-TP calibration 是 composition 之后的外部 E2E scale,能吸收这些残差,但不是 Frontier 原生 per-TP profiling 或机制解释。 +- **Claim update:** 支持 H2。新的 research target 是验证 execution-context-conditioned composition,而不是继续把更多 isolated kernel rows 当作 fidelity 的充分条件。 +- **下一步:** 分别做 graph-conditioned step profile、fused mixed total、trace-conditioned routing 和 measured collective 四个单变量消融,再回到完整 TP×MNS joint surface 评测;frozen calibration 仅作上界,不参与 mechanism fitting。 + +## 产物索引 + +- Frozen profile:`frozen/profile-v2/manifest.json` +- Full-surface comparison:`artifacts/qwen30-s2-profile-ablation.json` +- P1 boundary comparison:`artifacts/qwen30-p1-profile-ablation.json` +- Scheduler/graph-mode summary:`artifacts/qwen30-p1b-opprof-summary.json` +- Native routing mismatch:`artifacts/qwen30-routing-mismatch.json` +- Same-state operator delta:`artifacts/qwen30-initial-op-trace-delta.json` +- Figure script:`plot_profile_ablation.py` diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/allreduce.json b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/allreduce.json new file mode 100644 index 0000000..aae1f0a --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/allreduce.json @@ -0,0 +1,824 @@ +{ + "environment": [ + { + "backend_env": { + "VLLM_ALLREDUCE_USE_FLASHINFER": "1", + "VLLM_FLASHINFER_ALLREDUCE_BACKEND": "trtllm" + }, + "gpu": "NVIDIA H20", + "model": "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B", + "torch_cuda": "12.9", + "torch_version": "2.11.0+cu129", + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + }, + { + "backend_env": { + "VLLM_ALLREDUCE_USE_FLASHINFER": "1", + "VLLM_FLASHINFER_ALLREDUCE_BACKEND": "trtllm" + }, + "gpu": "NVIDIA H20", + "model": "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B", + "torch_cuda": "12.9", + "torch_version": "2.11.0+cu129", + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + } + ], + "frontier_consumption": "diagnostic_only_in_base_profile_only_run; measured lookup requires a separate CC-backend injection ablation", + "rows": [ + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08288000151515007, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1, + "payload_bytes": 4096, + "per_rank_time_ms": [ + { + "max": 0.4872959852218628, + "mean": 0.1310015980154276, + "median": 0.07679999992251396, + "min": 0.06217600032687187, + "std": 0.12790721677293843 + }, + { + "max": 0.4402880072593689, + "mean": 0.12842560112476348, + "median": 0.08288000151515007, + "min": 0.0655680000782013, + "std": 0.11220176524616535 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0793600007891655, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8, + "payload_bytes": 32768, + "per_rank_time_ms": [ + { + "max": 0.12716799974441528, + "mean": 0.07871360033750534, + "median": 0.0759200006723404, + "min": 0.06032000109553337, + "std": 0.019331314939874535 + }, + { + "max": 0.12380799651145935, + "mean": 0.08059840016067028, + "median": 0.0793600007891655, + "min": 0.06217600032687187, + "std": 0.01687088356254092 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0713919997215271, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 16, + "payload_bytes": 65536, + "per_rank_time_ms": [ + { + "max": 0.12697599828243256, + "mean": 0.0767391998320818, + "median": 0.07078400254249573, + "min": 0.05910399928689003, + "std": 0.018775178979463278 + }, + { + "max": 0.11430399864912033, + "mean": 0.07594559974968433, + "median": 0.0713919997215271, + "min": 0.06124800071120262, + "std": 0.015719922150631036 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08056000247597694, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 32, + "payload_bytes": 131072, + "per_rank_time_ms": [ + { + "max": 0.1037760004401207, + "mean": 0.07954559996724128, + "median": 0.08056000247597694, + "min": 0.05955199897289276, + "std": 0.0135697420393132 + }, + { + "max": 0.10608000308275223, + "mean": 0.07971520014107228, + "median": 0.07593599706888199, + "min": 0.06028800085186958, + "std": 0.015319849772775456 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0865279994904995, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 64, + "payload_bytes": 262144, + "per_rank_time_ms": [ + { + "max": 0.14470399916172028, + "mean": 0.09121599942445754, + "median": 0.0865279994904995, + "min": 0.06441599875688553, + "std": 0.024893837894277456 + }, + { + "max": 0.12438400089740753, + "mean": 0.08531199917197227, + "median": 0.08031999692320824, + "min": 0.06364800035953522, + "std": 0.01878029830059533 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.07135999947786331, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 128, + "payload_bytes": 524288, + "per_rank_time_ms": [ + { + "max": 0.11753600090742111, + "mean": 0.07606079950928687, + "median": 0.07135999947786331, + "min": 0.05843200162053108, + "std": 0.01755519771639284 + }, + { + "max": 0.1103999987244606, + "mean": 0.07607359997928143, + "median": 0.07073600217700005, + "min": 0.05721599981188774, + "std": 0.016904445220949783 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.07321599870920181, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 256, + "payload_bytes": 1048576, + "per_rank_time_ms": [ + { + "max": 0.11740799993276596, + "mean": 0.07749119997024537, + "median": 0.07203200086951256, + "min": 0.05862399935722351, + "std": 0.017701381594822835 + }, + { + "max": 0.11382400244474411, + "mean": 0.07733759954571724, + "median": 0.07321599870920181, + "min": 0.059039998799562454, + "std": 0.017188890882557036 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09025600180029869, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 512, + "payload_bytes": 2097152, + "per_rank_time_ms": [ + { + "max": 0.13980799913406372, + "mean": 0.0950367994606495, + "median": 0.09025600180029869, + "min": 0.06815999746322632, + "std": 0.022829835127539378 + }, + { + "max": 0.14764800667762756, + "mean": 0.09710080176591873, + "median": 0.08720000088214874, + "min": 0.07152000069618225, + "std": 0.02500574954063789 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08083200082182884, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1024, + "payload_bytes": 4194304, + "per_rank_time_ms": [ + { + "max": 0.15574400126934052, + "mean": 0.08760640025138855, + "median": 0.07846399769186974, + "min": 0.07097599655389786, + "std": 0.024487311423551025 + }, + { + "max": 0.16284799575805664, + "mean": 0.08963519930839539, + "median": 0.08083200082182884, + "min": 0.07100799679756165, + "std": 0.026047320562445356 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.10891199856996536, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 2048, + "payload_bytes": 8388608, + "per_rank_time_ms": [ + { + "max": 0.1582079976797104, + "mean": 0.11541439890861512, + "median": 0.10836799815297127, + "min": 0.09062399715185165, + "std": 0.018285136316576037 + }, + { + "max": 0.1578879952430725, + "mean": 0.11537599861621857, + "median": 0.10891199856996536, + "min": 0.0960640013217926, + "std": 0.018246538626977286 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1703840047121048, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 4096, + "payload_bytes": 16777216, + "per_rank_time_ms": [ + { + "max": 0.19327999651432037, + "mean": 0.1707327976822853, + "median": 0.1703840047121048, + "min": 0.14815999567508698, + "std": 0.014211056022719618 + }, + { + "max": 0.19276799261569977, + "mean": 0.1658592015504837, + "median": 0.16379200667142868, + "min": 0.14560000598430634, + "std": 0.013840249648693638 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.25539200007915497, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8192, + "payload_bytes": 33554432, + "per_rank_time_ms": [ + { + "max": 0.2807359993457794, + "mean": 0.25750079900026324, + "median": 0.25539200007915497, + "min": 0.24624000489711761, + "std": 0.008925204570802302 + }, + { + "max": 0.2863999903202057, + "mean": 0.2585055992007256, + "median": 0.255280002951622, + "min": 0.24371199309825897, + "std": 0.012059738582656496 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1021759994328022, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1, + "payload_bytes": 4096, + "per_rank_time_ms": [ + { + "max": 0.9770879745483398, + "mean": 0.1974783968180418, + "median": 0.10099200159311295, + "min": 0.05913599953055382, + "std": 0.2660581738745569 + }, + { + "max": 0.892799973487854, + "mean": 0.18164799660444259, + "median": 0.1021759994328022, + "min": 0.06435199826955795, + "std": 0.23947520188197013 + }, + { + "max": 0.6467199921607971, + "mean": 0.15839359983801843, + "median": 0.10100800171494484, + "min": 0.06800000369548798, + "std": 0.16617013141866102 + }, + { + "max": 0.6725760102272034, + "mean": 0.15686400160193442, + "median": 0.10044800117611885, + "min": 0.06063999980688095, + "std": 0.17523222161300497 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.12694399803876877, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8, + "payload_bytes": 32768, + "per_rank_time_ms": [ + { + "max": 0.6659520268440247, + "mean": 0.1927648030221462, + "median": 0.12694399803876877, + "min": 0.07609599828720093, + "std": 0.16697784531907736 + }, + { + "max": 0.695360004901886, + "mean": 0.19356480240821838, + "median": 0.11726400256156921, + "min": 0.0796160027384758, + "std": 0.17588096678867862 + }, + { + "max": 0.5939840078353882, + "mean": 0.1868800014257431, + "median": 0.12379200011491776, + "min": 0.07427199929952621, + "std": 0.1463231714943902 + }, + { + "max": 0.6635839939117432, + "mean": 0.1874335989356041, + "median": 0.12014400213956833, + "min": 0.07526399940252304, + "std": 0.16680959677760304 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09161599725484848, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 16, + "payload_bytes": 65536, + "per_rank_time_ms": [ + { + "max": 0.12665599584579468, + "mean": 0.09443839862942696, + "median": 0.09124799817800522, + "min": 0.06431999802589417, + "std": 0.0205690155775906 + }, + { + "max": 0.1303039938211441, + "mean": 0.09712959825992584, + "median": 0.09161599725484848, + "min": 0.07648000121116638, + "std": 0.019072048129173236 + }, + { + "max": 0.13836799561977386, + "mean": 0.09821119979023933, + "median": 0.09148800000548363, + "min": 0.0727040022611618, + "std": 0.021314066545189116 + }, + { + "max": 0.12992000579833984, + "mean": 0.09272959977388381, + "median": 0.08931199833750725, + "min": 0.06406400352716446, + "std": 0.021360803830354765 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08580800145864487, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 32, + "payload_bytes": 131072, + "per_rank_time_ms": [ + { + "max": 0.13449600338935852, + "mean": 0.08960640132427215, + "median": 0.08299200236797333, + "min": 0.06796800345182419, + "std": 0.020633597898445998 + }, + { + "max": 0.14735999703407288, + "mean": 0.09248319901525974, + "median": 0.08580800145864487, + "min": 0.05913599953055382, + "std": 0.025960234928829564 + }, + { + "max": 0.13705599308013916, + "mean": 0.08947199806571007, + "median": 0.08460799977183342, + "min": 0.0634239986538887, + "std": 0.02122838946992339 + }, + { + "max": 0.13846400380134583, + "mean": 0.0859104000031948, + "median": 0.08308799937367439, + "min": 0.05974400043487549, + "std": 0.022373631424433445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09867199882864952, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 64, + "payload_bytes": 262144, + "per_rank_time_ms": [ + { + "max": 0.1279039978981018, + "mean": 0.09748799875378608, + "median": 0.09678399935364723, + "min": 0.0655359998345375, + "std": 0.02315719144614622 + }, + { + "max": 0.1356479972600937, + "mean": 0.10018239840865135, + "median": 0.09532799944281578, + "min": 0.06185600161552429, + "std": 0.02330700253650042 + }, + { + "max": 0.13142399489879608, + "mean": 0.09778879955410957, + "median": 0.09492799639701843, + "min": 0.06560000032186508, + "std": 0.02307579212430045 + }, + { + "max": 0.1276479959487915, + "mean": 0.09611519873142242, + "median": 0.09867199882864952, + "min": 0.0642239972949028, + "std": 0.02273612181973431 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09646400064229965, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 128, + "payload_bytes": 524288, + "per_rank_time_ms": [ + { + "max": 0.14060799777507782, + "mean": 0.09770880043506622, + "median": 0.09115200117230415, + "min": 0.06950400024652481, + "std": 0.024752645089849798 + }, + { + "max": 0.14377599954605103, + "mean": 0.09824960008263588, + "median": 0.08999999985098839, + "min": 0.07103999704122543, + "std": 0.025403407389046027 + }, + { + "max": 0.13680000603199005, + "mean": 0.09993600100278854, + "median": 0.09646400064229965, + "min": 0.06790400296449661, + "std": 0.022297424273985882 + }, + { + "max": 0.1391039937734604, + "mean": 0.09769919961690902, + "median": 0.09601600095629692, + "min": 0.06835199892520905, + "std": 0.023899922100804445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08377600088715553, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 256, + "payload_bytes": 1048576, + "per_rank_time_ms": [ + { + "max": 0.1464959979057312, + "mean": 0.09276160076260567, + "median": 0.08377600088715553, + "min": 0.06777600198984146, + "std": 0.024751086465295658 + }, + { + "max": 0.14319999516010284, + "mean": 0.09080640003085136, + "median": 0.080400001257658, + "min": 0.06796800345182419, + "std": 0.023365718881708488 + }, + { + "max": 0.1382399946451187, + "mean": 0.09063360020518303, + "median": 0.08193599805235863, + "min": 0.06627199798822403, + "std": 0.02372618650854302 + }, + { + "max": 0.14313599467277527, + "mean": 0.09044799953699112, + "median": 0.08128000050783157, + "min": 0.06652799993753433, + "std": 0.02462486862033686 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1128000020980835, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 512, + "payload_bytes": 2097152, + "per_rank_time_ms": [ + { + "max": 0.1600320041179657, + "mean": 0.11426239982247352, + "median": 0.1128000020980835, + "min": 0.07657600194215775, + "std": 0.030240087702350687 + }, + { + "max": 0.15881599485874176, + "mean": 0.11206399947404862, + "median": 0.10628800094127655, + "min": 0.0772159993648529, + "std": 0.029933135345483627 + }, + { + "max": 0.15612800419330597, + "mean": 0.10761600062251091, + "median": 0.09860799834132195, + "min": 0.07689599692821503, + "std": 0.02634237020678647 + }, + { + "max": 0.15865600109100342, + "mean": 0.11094079986214637, + "median": 0.10979199782013893, + "min": 0.07583999633789062, + "std": 0.028619217028542445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08755199983716011, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1024, + "payload_bytes": 4194304, + "per_rank_time_ms": [ + { + "max": 0.11999999731779099, + "mean": 0.0843871995806694, + "median": 0.08755199983716011, + "min": 0.06332799792289734, + "std": 0.016638543890716024 + }, + { + "max": 0.1218239963054657, + "mean": 0.08518079966306687, + "median": 0.08032000064849854, + "min": 0.06393600255250931, + "std": 0.019900899429956945 + }, + { + "max": 0.11849600076675415, + "mean": 0.0843968003988266, + "median": 0.08702399954199791, + "min": 0.06297600269317627, + "std": 0.017031908773433545 + }, + { + "max": 0.12300799787044525, + "mean": 0.0846304003149271, + "median": 0.08139199763536453, + "min": 0.06195199862122536, + "std": 0.020106523698622265 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.12361599877476692, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 2048, + "payload_bytes": 8388608, + "per_rank_time_ms": [ + { + "max": 0.17155200242996216, + "mean": 0.12168959975242614, + "median": 0.12055999785661697, + "min": 0.09609600156545639, + "std": 0.022565485532483928 + }, + { + "max": 0.9246399998664856, + "mean": 0.19978560134768486, + "median": 0.12361599877476692, + "min": 0.09715200215578079, + "std": 0.24230694305662265 + }, + { + "max": 0.9317439794540405, + "mean": 0.20037759989500045, + "median": 0.12327999994158745, + "min": 0.09603200107812881, + "std": 0.24450903278000383 + }, + { + "max": 0.9321280121803284, + "mean": 0.19875840097665787, + "median": 0.12230399996042252, + "min": 0.0950080007314682, + "std": 0.24519252220785093 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.20030399411916733, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 4096, + "payload_bytes": 16777216, + "per_rank_time_ms": [ + { + "max": 0.3261440098285675, + "mean": 0.20826880186796187, + "median": 0.19974400103092194, + "min": 0.1409280002117157, + "std": 0.051397264855718945 + }, + { + "max": 0.3248000144958496, + "mean": 0.20548800230026246, + "median": 0.1979840025305748, + "min": 0.141184002161026, + "std": 0.04980002399656717 + }, + { + "max": 0.32547199726104736, + "mean": 0.21280319690704347, + "median": 0.20030399411916733, + "min": 0.14127999544143677, + "std": 0.05304243085685509 + }, + { + "max": 0.26047998666763306, + "mean": 0.1969312012195587, + "median": 0.18079999834299088, + "min": 0.14057600498199463, + "std": 0.042174123638424224 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.2924960106611252, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8192, + "payload_bytes": 33554432, + "per_rank_time_ms": [ + { + "max": 0.45052799582481384, + "mean": 0.3013375997543335, + "median": 0.28273600339889526, + "min": 0.21334399282932281, + "std": 0.07214223764527236 + }, + { + "max": 0.4466240108013153, + "mean": 0.2968191936612129, + "median": 0.27796798944473267, + "min": 0.21241599321365356, + "std": 0.07400678240849741 + }, + { + "max": 0.3830080032348633, + "mean": 0.2946112036705017, + "median": 0.2924960106611252, + "min": 0.21084800362586975, + "std": 0.05323627615746332 + }, + { + "max": 0.4609600007534027, + "mean": 0.3054272010922432, + "median": 0.289792001247406, + "min": 0.21062399446964264, + "std": 0.07608482904865672 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + } + ], + "schema_version": "qwen30_vllm020_allreduce_frozen.v1" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention.csv new file mode 100644 index 0000000..e53b40b --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention.csv @@ -0,0 +1,103 @@ +time_stats.attn_input_reshape.min,time_stats.attn_input_reshape.max,time_stats.attn_input_reshape.mean,time_stats.attn_input_reshape.median,time_stats.attn_input_reshape.std,time_stats.attn_kv_cache_save.min,time_stats.attn_kv_cache_save.max,time_stats.attn_kv_cache_save.mean,time_stats.attn_kv_cache_save.median,time_stats.attn_kv_cache_save.std,time_stats.attn_prefill.min,time_stats.attn_prefill.max,time_stats.attn_prefill.mean,time_stats.attn_prefill.median,time_stats.attn_prefill.std,time_stats.attn_decode.min,time_stats.attn_decode.max,time_stats.attn_decode.mean,time_stats.attn_decode.median,time_stats.attn_decode.std,time_stats.attn_output_reshape.min,time_stats.attn_output_reshape.max,time_stats.attn_output_reshape.mean,time_stats.attn_output_reshape.median,time_stats.attn_output_reshape.std,n_embd,n_q_head,n_kv_head,block_size,num_tensor_parallel_workers,max_model_len,batch_size,prefill_chunk_size,kv_cache_size,is_prefill,attention_backend,is_mixed_batch,mode,seq_lens,total_tokens,max_seq_len,min_seq_len,avg_seq_len,equal_seq_len,seq_len_variance,seq_len_std,seq_len_cv,is_chunked_prefill_sample,chunk_start_token,chunk_end_token,total_prefill_tokens,profiling_precision,model_arch,quant_signature,measurement_type,is_true_mixed_batch,prefill_seq_lens,prefill_kv_cache_sizes,decode_kv_cache_sizes,num_prefill_seqs,num_decode_seqs,decode_batch_size,total_batch_size,total_decode_tokens,decode_avg_kv_cache_size,batch_composition_ratio,batch_spec,projection_policy +0.0,0.0,0.0,0.0,0.0,0.01414399966597557,0.028863999992609024,0.019705599918961526,0.01771199982613325,0.005157200849836681,0.047968000173568726,0.07046400010585785,0.05810240097343922,0.05810240097343922,0.007477463486041561,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.04947200044989586,0.020412799902260303,0.01635199971497059,0.010107497379722417,0.046560000628232956,0.08323200047016144,0.05587520003318787,0.05587520003318787,0.011126758739503428,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.022207999601960182,0.017033600155264138,0.015312000177800655,0.002819235991970241,0.05104000121355057,0.07692799717187881,0.056396800279617305,0.056396800279617305,0.007481982178637539,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015072000212967396,0.022272000089287758,0.01706880023702979,0.01616000011563301,0.002460889579319197,0.06931199878454208,0.0838719978928566,0.07432000041007995,0.07432000041007995,0.004777766433175866,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.018592000007629395,0.028543999418616295,0.02095999978482723,0.019183999858796597,0.003198175496053494,0.12179200351238251,0.15408000349998474,0.1307712011039257,0.1307712011039257,0.00858807797538298,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.027775999158620834,0.03385600075125694,0.030131200328469276,0.029680000618100166,0.0021152558103575215,0.32678401470184326,0.3450239896774292,0.33396480381488797,0.33396480381488797,0.0045872424917606375,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.04438399896025658,0.05084799975156784,0.046540799736976626,0.04531199857592583,0.002277905811237223,1.0959680080413818,1.1151360273361206,1.0999775886535645,1.0999775886535645,0.005694403246120485,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.078015998005867,0.08691199868917465,0.08114239946007729,0.08019199967384338,0.00292795706334475,4.070400238037109,4.113152027130127,4.087088012695312,4.087088012695312,0.013660567012509554,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016063999384641647,0.05167999863624573,0.022115200012922286,0.017583999782800674,0.010340094822340818,0.05196800082921982,0.09011200070381165,0.06328320093452933,0.06328320093452933,0.012557341255467452,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01583999954164028,0.026623999699950218,0.018927999772131443,0.017376000061631203,0.003514650316260619,0.06681600213050842,0.07993599772453308,0.0725280001759529,0.0725280001759529,0.004343502558613716,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01648000068962574,0.030880000442266464,0.01945280022919178,0.017967999912798405,0.004096211183007485,0.1311360001564026,0.1546880006790161,0.13908160030841826,0.13908160030841826,0.007511906874366178,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017855999991297722,0.03558399900794029,0.020851199887692927,0.018559999763965607,0.005235911594130716,0.32950401306152344,0.350271999835968,0.33912960588932034,0.33912960588932034,0.006027400986663648,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.019328000023961067,0.040608000010252,0.022790400311350822,0.020704000256955624,0.006113051965778337,1.1415679454803467,1.1518720388412476,1.144483208656311,1.144483208656311,0.0032332311374389127,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015807999297976494,0.030688000842928886,0.019596799835562707,0.01774400006979704,0.004343384771033462,0.0,0.0,0.0,0.0,0.0,0.049056001007556915,0.07580800354480743,0.05948160067200661,0.05948160067200661,0.009031541471446955,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01603199914097786,0.02486399933695793,0.01923839971423149,0.018079999834299088,0.0032282528537266424,0.0,0.0,0.0,0.0,0.0,0.05142400041222572,0.07353600114583969,0.059328000620007516,0.059328000620007516,0.0073307807735143084,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016543999314308167,0.03977600112557411,0.021379199624061585,0.018511999398469925,0.006593576176246171,0.0,0.0,0.0,0.0,0.0,0.0488319993019104,0.06435199826955795,0.05479039996862411,0.05479039996862411,0.005672522998491864,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01635199971497059,0.02844800055027008,0.019267200119793416,0.017952000722289085,0.0035068687666949577,0.0,0.0,0.0,0.0,0.0,0.049855999648571014,0.07798399776220322,0.05986879989504815,0.05986879989504815,0.01043914754878828,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016383999958634377,0.026079999282956123,0.01923519968986511,0.017791999503970146,0.0032161974331284568,0.0,0.0,0.0,0.0,0.0,0.058111999183893204,0.1045759990811348,0.06708480007946492,0.06708480007946492,0.013479022462646494,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.04057599976658821,0.019100800156593323,0.015455999877303839,0.007512281243011577,0.0,0.0,0.0,0.0,0.0,0.05363199859857559,0.07782399654388428,0.06090559959411622,0.06090559959411622,0.007544620176348091,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.02191999927163124,0.016684799920767546,0.01563199982047081,0.0024293118621811216,0.0,0.0,0.0,0.0,0.0,0.0629120022058487,0.07891199737787247,0.06891520097851753,0.06891520097851753,0.005472695665695425,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014560000039637089,0.038943998515605927,0.018313600029796363,0.01561600062996149,0.007127270260115769,0.0,0.0,0.0,0.0,0.0,0.08675199747085571,0.10662399977445602,0.09391999915242194,0.09391999915242194,0.006988099589086635,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014527999795973301,0.054687999188899994,0.021439999900758268,0.01539199985563755,0.012052764849597775,0.0,0.0,0.0,0.0,0.0,0.13488000631332397,0.1528639942407608,0.1431359991431236,0.1431359991431236,0.005436271464033599,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.041919998824596405,0.01899839974939823,0.015343999955803156,0.007989843526623287,0.0,0.0,0.0,0.0,0.0,0.06176000088453293,0.08374399691820145,0.06747519969940186,0.06747519969940186,0.0066067747128778,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016256000846624374,0.11353600025177002,0.042761600017547606,0.028960000723600388,0.029104301538020762,0.0,0.0,0.0,0.0,0.0,0.09734400361776352,0.14422400295734406,0.11392960175871848,0.11392960175871848,0.013198594600417867,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.034143999218940735,0.018918400071561335,0.01643200032413006,0.005500943993080684,0.0,0.0,0.0,0.0,0.0,0.12918399274349213,0.15087999403476715,0.13807999789714814,0.13807999789714814,0.007658330538677587,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016063999384641647,0.03641600161790848,0.0198208000510931,0.01780799962580204,0.0057264128169845765,0.0,0.0,0.0,0.0,0.0,0.22099199891090393,0.23904000222682953,0.2293503984808922,0.2293503984808922,0.004861342907006028,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014751999638974667,0.035840000957250595,0.018908800091594458,0.015792000107467175,0.0064374817924757475,0.0,0.0,0.0,0.0,0.0,0.10134399682283401,0.12201599776744843,0.10896319895982742,0.10896319895982742,0.006336330809165179,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013856000266969204,0.03417599946260452,0.017846399918198586,0.014800000004470348,0.006495007539635255,0.0,0.0,0.0,0.0,0.0,0.13126400113105774,0.15561600029468536,0.1389280006289482,0.1389280006289482,0.008381472811075022,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.03519999980926514,0.019168000388890504,0.01600000075995922,0.005995522477654695,0.0,0.0,0.0,0.0,0.0,0.21728000044822693,0.2343679964542389,0.2231455981731415,0.2231455981731415,0.004720730646739123,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.03670400008559227,0.018441599886864425,0.015023999847471714,0.006596535162793127,0.0,0.0,0.0,0.0,0.0,0.39321601390838623,0.4524799883365631,0.4058080047369003,0.4058080047369003,0.01578349755088941,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.022143999114632607,0.016912000067532063,0.015168000012636185,0.0028156089295136347,0.0,0.0,0.0,0.0,0.0,0.15587200224399567,0.3079040050506592,0.17838079929351805,0.17838079929351805,0.04355865575265927,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.02112000063061714,0.015516800060868263,0.01488000014796853,0.001940870731593904,0.0,0.0,0.0,0.0,0.0,0.21587200462818146,0.23561599850654602,0.22250880002975468,0.22250880002975468,0.006181951170646666,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015552000142633915,0.039264000952243805,0.023609600123018028,0.02131200022995472,0.007236979625711548,0.0,0.0,0.0,0.0,0.0,0.408735990524292,0.470335990190506,0.4336863994598388,0.4336863994598388,0.01844662383160074,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.025407999753952026,0.016227199975401164,0.014960000291466713,0.0031617375441736185,0.0,0.0,0.0,0.0,0.0,0.7412800192832947,0.7627840042114258,0.7464000046253203,0.7464000046253203,0.006112167448837547,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.02364799939095974,0.01809599995613098,0.016352000646293163,0.0035481127058959038,0.04822399839758873,0.08566399663686752,0.05961279980838299,0.05961279980838299,0.011445665413968877,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014175999909639359,0.020864000543951988,0.01668160008266568,0.015664000064134598,0.0025769063833097584,0.049695998430252075,0.08057600259780884,0.05882879942655563,0.05882879942655563,0.009515126108519331,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.028704000636935234,0.017430400010198355,0.015056000091135502,0.004349294613335555,0.049855999648571014,0.07366400212049484,0.05459520071744919,0.05459520071744919,0.0069610920757925574,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.03161599859595299,0.017788799852132796,0.015711999963968992,0.005005385723318659,0.06102399900555611,0.08179199695587158,0.06650560013949873,0.06650560013949873,0.006947995595801105,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014655999839305878,0.04416000097990036,0.019200000166893005,0.015488000120967627,0.008561241323364038,0.08054400235414505,0.09196799993515015,0.08607039973139763,0.08607039973139763,0.004145329035483754,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017855999991297722,0.023391999304294586,0.019667199812829494,0.018463999964296818,0.0022577669687832585,0.18729600310325623,0.20585599541664124,0.19546559900045393,0.19546559900045393,0.006339068824303663,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.026240000501275063,0.03446400165557861,0.028297600522637367,0.027088000439107418,0.0025148441522922374,0.5754240155220032,0.5889919996261597,0.5800191938877105,0.5800191938877105,0.003858869273829596,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.04182400181889534,0.047200001776218414,0.043036799877882004,0.0423360001295805,0.0017073405772076728,2.063199996948242,2.0787200927734375,2.067151999473572,2.067151999473572,0.004959651271127835,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.05648000165820122,0.02270399993285537,0.017935999669134617,0.012377915150727689,0.049536000937223434,0.07196799665689468,0.056015999615192415,0.056015999615192415,0.0070476637552742884,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01408000010997057,0.021344000473618507,0.01611520005390048,0.014928000047802925,0.0025499884993961702,0.07072000205516815,0.2642880082130432,0.1588256008923054,0.1588256008923054,0.053220347086102376,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01360000018030405,0.03014400042593479,0.016975999902933837,0.015056000091135502,0.004715159697364111,0.08393599838018417,0.11036799848079681,0.09160000011324881,0.09160000011324881,0.007911669434472792,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014495999552309513,0.020767999812960625,0.016233599931001663,0.015392000321298838,0.002202615907995427,0.1998399943113327,0.22070400416851044,0.20855360180139543,0.20855360180139543,0.00689307200230667,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.033440001308918,0.018684800155460833,0.016048000194132328,0.00553991005639174,0.6043199896812439,0.635807991027832,0.6126143991947173,0.6126143991947173,0.008745933953408096,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013824000023305416,0.03359999880194664,0.017811199743300678,0.014944000169634819,0.005926140483565472,0.0,0.0,0.0,0.0,0.0,0.045471999794244766,0.07539200037717819,0.054758400097489356,0.054758400097489356,0.010253548506101549,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.02409599907696247,0.01641279999166727,0.01473599998280406,0.003347158638713987,0.0,0.0,0.0,0.0,0.0,0.0461760014295578,0.07529599964618683,0.05460800044238568,0.05460800044238568,0.009748937798340135,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.028416000306606293,0.018611199874430894,0.01598400017246604,0.005209875093863647,0.0,0.0,0.0,0.0,0.0,0.048128001391887665,0.07897599786520004,0.061353600397706036,0.061353600397706036,0.010488153655157845,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014112000353634357,0.025728000327944756,0.016092800162732603,0.01512000011280179,0.003300888123052605,0.0,0.0,0.0,0.0,0.0,0.04864000156521797,0.07648000121116638,0.05810560062527656,0.05810560062527656,0.009473544218404408,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014655999839305878,0.03551999852061272,0.018588799890130757,0.016064000315964222,0.006071057437992447,0.0,0.0,0.0,0.0,0.0,0.04822399839758873,0.07862400263547897,0.05660480037331582,0.05660480037331582,0.009565394213730401,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014303999952971935,0.028831999748945236,0.01699519995599985,0.015024000313133001,0.004285000744868188,0.0,0.0,0.0,0.0,0.0,0.04854400083422661,0.06719999760389328,0.05778240002691746,0.05778240002691746,0.006852125554679805,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.0144640002399683,0.024927999824285507,0.0161183999851346,0.01521599991247058,0.0029774808524673907,0.0,0.0,0.0,0.0,0.0,0.05379199981689453,0.08966399729251862,0.06270079985260964,0.06270079985260964,0.009983591277092696,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.03001599945127964,0.017648000083863736,0.01547200046479702,0.004585126309484848,0.0,0.0,0.0,0.0,0.0,0.061664000153541565,0.07692799717187881,0.06704320013523103,0.06704320013523103,0.005500191798490629,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014175999909639359,0.026367999613285065,0.016947199776768684,0.015039999969303608,0.0037951566103550205,0.0,0.0,0.0,0.0,0.0,0.08799999952316284,0.111455999314785,0.0964031994342804,0.0964031994342804,0.007397541615558088,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01369599997997284,0.021247999742627144,0.015359999984502793,0.014640000183135271,0.0020942770950814317,0.0,0.0,0.0,0.0,0.0,0.051711998879909515,0.07065600156784058,0.058054400235414506,0.058054400235414506,0.006633034815910025,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014208000153303146,0.0307839997112751,0.017148799914866685,0.015039999969303608,0.004882374686312284,0.0,0.0,0.0,0.0,0.0,0.061919998377561576,0.07843200117349625,0.06628479920327664,0.06628479920327664,0.004962852689801192,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013887999579310417,0.02969600073993206,0.017500799987465142,0.015232000034302473,0.00467273319705314,0.0,0.0,0.0,0.0,0.0,0.08819200098514557,0.11097600311040878,0.09493440166115762,0.09493440166115762,0.007509235042985577,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.022112000733613968,0.01751680001616478,0.016047999262809753,0.0030306621792915785,0.0,0.0,0.0,0.0,0.0,0.13065600395202637,0.15110400319099426,0.13857279866933822,0.13857279866933822,0.00750137841249771,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.04012800008058548,0.01892479993402958,0.01550400024279952,0.007459545267816961,0.0,0.0,0.0,0.0,0.0,0.06278400123119354,0.08259200304746628,0.0704512007534504,0.0704512007534504,0.005979055984382744,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.02236800082027912,0.016332800220698118,0.014928000047802925,0.002784044363186731,0.0,0.0,0.0,0.0,0.0,0.1003199964761734,0.1279360055923462,0.10921279862523078,0.10921279862523078,0.00862769617046716,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.0225600004196167,0.016128000058233737,0.014800000004470348,0.002958953332547708,0.0,0.0,0.0,0.0,0.0,0.13116799294948578,0.14812800288200378,0.13783999979496003,0.13783999979496003,0.005696384361148053,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014208000153303146,0.029983999207615852,0.017468800116330386,0.01508800033479929,0.0047379550962483065,0.0,0.0,0.0,0.0,0.0,0.217631995677948,0.2447360008955002,0.22715839892625808,0.22715839892625808,0.008831828221847138,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.02304000034928322,0.016512000095099212,0.014512000139802694,0.0035026774828624254,0.0,0.0,0.0,0.0,0.0,0.11020799726247787,0.12307199835777283,0.11600959971547126,0.11600959971547126,0.004667637266950902,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014112000353634357,0.042080000042915344,0.017510399967432023,0.014607999939471483,0.00823117883530167,0.0,0.0,0.0,0.0,0.0,0.15702399611473083,0.17587199807167053,0.16399359852075576,0.16399359852075576,0.006588299074676393,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.0208320003002882,0.015299199987202883,0.01462399959564209,0.001916768086505386,0.0,0.0,0.0,0.0,0.0,0.21779200434684753,0.2415360063314438,0.2260768011212349,0.2260768011212349,0.007251352080685236,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014015999622642994,0.021088000386953354,0.015619200188666582,0.01473599998280406,0.002013227452302141,0.0,0.0,0.0,0.0,0.0,0.3959999978542328,0.4152640104293823,0.40332479774951924,0.40332479774951924,0.006942401431914052,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014560000039637089,0.022784000262618065,0.016435200069099664,0.015519999898970127,0.0023688301421469523,0.04879999905824661,0.09139200299978256,0.06054079942405224,0.06054079942405224,0.012152608702448775,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014816000126302242,0.02844800055027008,0.017008000146597625,0.015696000307798386,0.003941466294662679,0.047807998955249786,0.07356800138950348,0.05626560002565384,0.05626560002565384,0.00842179125412236,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.053408000618219376,0.019353600218892097,0.01532800029963255,0.01138302400841626,0.048448000103235245,0.0785600021481514,0.0556256003677845,0.0556256003677845,0.009348274502616908,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015039999969303608,0.03139200061559677,0.01823679991066456,0.016159999649971724,0.004860071238302512,0.055424001067876816,0.08505599945783615,0.0640383992344141,0.0640383992344141,0.00921448636178623,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014751999638974667,0.026528000831604004,0.017324799951165915,0.01536000007763505,0.0036004822686428305,0.07660800218582153,0.0942080020904541,0.08209280073642732,0.08209280073642732,0.00515895587669752,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014879999682307243,0.021247999742627144,0.016403199825435876,0.01532800029963255,0.001995897022647934,0.11395200341939926,0.15113599598407745,0.12431039959192276,0.12431039959192276,0.011164431123683732,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017184000462293625,0.028672000393271446,0.019865600019693376,0.017823999747633934,0.0035798491315929977,0.3171840012073517,0.3341119885444641,0.3261695951223373,0.3261695951223373,0.005111046452878918,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.024639999493956566,0.030400000512599945,0.02656640000641346,0.02556800004094839,0.0020189846603237303,1.0648640394210815,1.0828479528427124,1.0715327858924866,1.0715327858924866,0.005558639263049851,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014976000413298607,0.021695999428629875,0.017305599898099898,0.01593599934130907,0.0025718046517268054,0.04956800118088722,0.07932800054550171,0.06228480041027069,0.06228480041027069,0.01027160349757827,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01539199985563755,0.03580800071358681,0.019686400331556796,0.017136000096797943,0.005918387811304003,0.05158400163054466,0.10713600367307663,0.06364160068333148,0.06364160068333148,0.015832957809696766,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015168000012636185,0.02223999984562397,0.016672000009566545,0.015887999907135963,0.0020934945946034563,0.06521599739789963,0.08902399986982346,0.07520959973335266,0.07520959973335266,0.007913840684102929,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015231999568641186,0.04028800129890442,0.019971200078725816,0.01646399963647127,0.007351305886577286,0.14467200636863708,0.16844800114631653,0.15363519936800005,0.15363519936800005,0.008174435899956223,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015519999898970127,0.02304000034928322,0.01775679988786578,0.016784000210464,0.0025077243712082584,0.33740800619125366,0.35343998670578003,0.3445120006799698,0.3445120006799698,0.00445648463590358,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015647999942302704,0.02393599972128868,0.01809599995613098,0.01654400024563074,0.002998393102466254,0.0,0.0,0.0,0.0,0.0,0.0504320003092289,0.0843840017914772,0.060083200410008426,0.060083200410008426,0.00986959318572296,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01603199914097786,0.030047999694943428,0.019510399922728537,0.017680000513792038,0.004065185265963332,0.0,0.0,0.0,0.0,0.0,0.05004800111055374,0.07036799937486649,0.059315200522542,0.059315200522542,0.006537768821329647,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.02393599972128868,0.018035199772566558,0.016512000001966953,0.0030667689116777724,0.0,0.0,0.0,0.0,0.0,0.05100800096988678,0.06735999882221222,0.058387200161814694,0.058387200161814694,0.005832787739241381,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01500799972563982,0.026208000257611275,0.017500799987465142,0.01646399963647127,0.0030666103306165714,0.0,0.0,0.0,0.0,0.0,0.05023999884724617,0.07254400104284286,0.057254400476813315,0.057254400476813315,0.006890853653068151,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.027327999472618103,0.0179776000790298,0.01648000068962574,0.003783417447531392,0.0,0.0,0.0,0.0,0.0,0.04819199815392494,0.07100799679756165,0.05621119923889638,0.05621119923889638,0.007824391484124725,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,127.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015647999942302704,0.036448001861572266,0.019136000238358975,0.016704000532627106,0.006076530095624803,0.0,0.0,0.0,0.0,0.0,0.047488000243902206,0.08441600203514099,0.0588383998721838,0.0588383998721838,0.011275940726332522,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015135999768972397,0.033952001482248306,0.02119360016658902,0.018000000156462193,0.007136646614305304,0.0,0.0,0.0,0.0,0.0,0.04931199923157692,0.06992000341415405,0.05755840018391609,0.05755840018391609,0.007297587694315226,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014879999682307243,0.034272000193595886,0.0204415999352932,0.017311999574303627,0.00695404701803013,0.0,0.0,0.0,0.0,0.0,0.05215999856591225,0.0735040009021759,0.06117440015077591,0.06117440015077591,0.007381118436894922,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.03743999823927879,0.02012479966506362,0.01775999926030636,0.006181045509079057,0.0,0.0,0.0,0.0,0.0,0.06355199962854385,0.08508799970149994,0.07019200026988984,0.07019200026988984,0.0062246580442117845,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,1023.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015552000142633915,0.032607998698949814,0.01959999995306134,0.017487999983131886,0.004882475068460749,0.0,0.0,0.0,0.0,0.0,0.04918399825692177,0.0865280032157898,0.05973760038614274,0.05973760038614274,0.011546847942113974,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015168000012636185,0.02675200067460537,0.017430400010198355,0.016560000367462635,0.003243135094239819,0.0,0.0,0.0,0.0,0.0,0.052671998739242554,0.08367999643087387,0.06238719932734965,0.06238719932734965,0.011207824780630104,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01500799972563982,0.03612799942493439,0.019327999837696553,0.01688000001013279,0.006058251425153085,0.0,0.0,0.0,0.0,0.0,0.06364800035953522,0.07878399640321732,0.06935679838061332,0.06935679838061332,0.004515588328677643,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015104000456631184,0.03711999952793121,0.019670399930328132,0.017152000218629837,0.006165994646522264,0.0,0.0,0.0,0.0,0.0,0.09071999788284302,0.11507199704647064,0.10252480059862136,0.10252480059862136,0.008782544051535657,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,2047.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015039999969303608,0.026528000831604004,0.018396800104528665,0.01601599995046854,0.004279788048986283,0.0,0.0,0.0,0.0,0.0,0.05331199988722801,0.07977599650621414,0.06076480001211167,0.06076480001211167,0.008761579122069606,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.02643200010061264,0.01726400004699826,0.015855999663472176,0.003210008417242029,0.0,0.0,0.0,0.0,0.0,0.062431998550891876,0.08246400207281113,0.06970879957079888,0.06970879957079888,0.007016341676068233,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014911999925971031,0.02223999984562397,0.0166015999391675,0.015887999907135963,0.00204913969129354,0.0,0.0,0.0,0.0,0.0,0.10127999633550644,0.1141119971871376,0.10621120035648347,0.10621120035648347,0.004029318311754605,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.03363199904561043,0.019305599946528675,0.016671999357640743,0.0055445582307981234,0.0,0.0,0.0,0.0,0.0,0.1319040060043335,0.15839999914169312,0.14040640145540234,0.14040640145540234,0.007998041073596942,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,4095.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014368000440299511,0.04447999969124794,0.018908800091594458,0.0157279996201396,0.0086814937461721,0.0,0.0,0.0,0.0,0.0,0.06428799778223038,0.08982399851083755,0.07349760085344315,0.07349760085344315,0.008605284512197258,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015104000456631184,0.028672000393271446,0.01890560006722808,0.016080000437796116,0.004797584627815021,0.0,0.0,0.0,0.0,0.0,0.11123199760913849,0.14115199446678162,0.11942399889230729,0.11942399889230729,0.008513394706791027,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.024927999824285507,0.016915200091898442,0.015216000378131866,0.003374147499442635,0.0,0.0,0.0,0.0,0.0,0.15887999534606934,0.18111999332904816,0.16934399753808976,0.16934399753808976,0.007415181260761123,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.026944000273942947,0.017737600207328796,0.015199999790638685,0.00415598714375255,0.0,0.0,0.0,0.0,0.0,0.2192319929599762,0.23472000658512115,0.22809920012950893,0.22809920012950893,0.004730841376327335,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,8191.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention_true_mixed_fused.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention_true_mixed_fused.csv new file mode 100644 index 0000000..1b7a751 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/attention_true_mixed_fused.csv @@ -0,0 +1,31 @@ +num_tensor_parallel_workers,batch_spec,num_prefill_seqs,num_decode_seqs,total_prefill_tokens,total_decode_tokens,decode_avg_kv_cache_size,attention_core_mean_ms,attention_core_mean_as_median_ms,kv_cache_update_median_ms,representation +1,q64_8q1s512,1,8,64,8,511.0,0.06604800000786781,0.06604800000786781,0.021359999664127827,one_fused_FA3_call_not_split_into_prefill_decode +1,q128_8q1s1k,1,8,128,8,1023.0,0.07483199909329416,0.07483199909329416,0.024255999363958836,one_fused_FA3_call_not_split_into_prefill_decode +1,q128_16q1s1k,1,16,128,16,1023.0,0.10597119852900506,0.10597119852900506,0.018112000077962875,one_fused_FA3_call_not_split_into_prefill_decode +1,q256_16q1s2k,1,16,256,16,2047.0,0.13697599917650224,0.13697599917650224,0.01673599984496832,one_fused_FA3_call_not_split_into_prefill_decode +1,q256_32q1s2k,1,32,256,32,2047.0,0.2163648009300232,0.2163648009300232,0.01515199989080429,one_fused_FA3_call_not_split_into_prefill_decode +1,q512_32q1s4k,1,32,512,32,4095.0,0.3746495962142944,0.3746495962142944,0.016191999427974224,one_fused_FA3_call_not_split_into_prefill_decode +1,q512_64q1s4k,1,64,512,64,4095.0,0.6718560099601746,0.6718560099601746,0.024848000146448612,one_fused_FA3_call_not_split_into_prefill_decode +1,q1k_64q1s8k,1,64,1024,64,8191.0,1.3472000002861022,1.3472000002861022,0.019600000232458115,one_fused_FA3_call_not_split_into_prefill_decode +1,q2k_32q1s4k,1,32,2048,32,4095.0,0.6351647913455962,0.6351647913455962,0.028256000019609928,one_fused_FA3_call_not_split_into_prefill_decode +1,q4k_16q1s4k,1,16,4096,16,4095.0,1.2515872120857237,1.2515872120857237,0.04395199939608574,one_fused_FA3_call_not_split_into_prefill_decode +2,q64_8q1s512,1,8,64,8,511.0,0.05652800053358078,0.05652800053358078,0.019600000232458115,one_fused_FA3_call_not_split_into_prefill_decode +2,q128_8q1s1k,1,8,128,8,1023.0,0.07362559959292413,0.07362559959292413,0.014431999996304512,one_fused_FA3_call_not_split_into_prefill_decode +2,q128_16q1s1k,1,16,128,16,1023.0,0.0736224003136158,0.0736224003136158,0.014479999896138906,one_fused_FA3_call_not_split_into_prefill_decode +2,q256_16q1s2k,1,16,256,16,2047.0,0.10047360062599181,0.10047360062599181,0.01425600005313754,one_fused_FA3_call_not_split_into_prefill_decode +2,q256_32q1s2k,1,32,256,32,2047.0,0.14032640159130094,0.14032640159130094,0.01566399959847331,one_fused_FA3_call_not_split_into_prefill_decode +2,q512_32q1s4k,1,32,512,32,4095.0,0.22105600088834762,0.22105600088834762,0.016032000072300434,one_fused_FA3_call_not_split_into_prefill_decode +2,q512_64q1s4k,1,64,512,64,4095.0,0.36867519915103913,0.36867519915103913,0.015263999812304974,one_fused_FA3_call_not_split_into_prefill_decode +2,q1k_64q1s8k,1,64,1024,64,8191.0,0.6853824079036711,0.6853824079036711,0.015856000129133463,one_fused_FA3_call_not_split_into_prefill_decode +2,q2k_32q1s4k,1,32,2048,32,4095.0,0.3503839999437332,0.3503839999437332,0.018432000651955605,one_fused_FA3_call_not_split_into_prefill_decode +2,q4k_16q1s4k,1,16,4096,16,4095.0,0.7185311973094941,0.7185311973094941,0.026575999334454536,one_fused_FA3_call_not_split_into_prefill_decode +4,q64_8q1s512,1,8,64,8,511.0,0.0562208004295826,0.0562208004295826,0.015520000364631414,one_fused_FA3_call_not_split_into_prefill_decode +4,q128_8q1s1k,1,8,128,8,1023.0,0.061199999228119854,0.061199999228119854,0.018240000121295452,one_fused_FA3_call_not_split_into_prefill_decode +4,q128_16q1s1k,1,16,128,16,1023.0,0.06104319989681244,0.06104319989681244,0.016207999549806118,one_fused_FA3_call_not_split_into_prefill_decode +4,q256_16q1s2k,1,16,256,16,2047.0,0.07356479987502099,0.07356479987502099,0.015584000386297703,one_fused_FA3_call_not_split_into_prefill_decode +4,q256_32q1s2k,1,32,256,32,2047.0,0.09806400015950203,0.09806400015950203,0.015008000191301107,one_fused_FA3_call_not_split_into_prefill_decode +4,q512_32q1s4k,1,32,512,32,4095.0,0.1509471982717514,0.1509471982717514,0.014864000026136637,one_fused_FA3_call_not_split_into_prefill_decode +4,q512_64q1s4k,1,64,512,64,4095.0,0.21687040030956264,0.21687040030956264,0.015343999955803156,one_fused_FA3_call_not_split_into_prefill_decode +4,q1k_64q1s8k,1,64,1024,64,8191.0,0.3848575979471207,0.3848575979471207,0.015647999942302704,one_fused_FA3_call_not_split_into_prefill_decode +4,q2k_32q1s4k,1,32,2048,32,4095.0,0.2785151988267898,0.2785151988267898,0.01726400014013052,one_fused_FA3_call_not_split_into_prefill_decode +4,q4k_16q1s4k,1,16,4096,16,4095.0,0.456512001156807,0.456512001156807,0.017680000513792038,one_fused_FA3_call_not_split_into_prefill_decode diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/linear_op.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/linear_op.csv new file mode 100644 index 0000000..2803f02 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/linear_op.csv @@ -0,0 +1,37 @@ +time_stats.emb.min,time_stats.emb.max,time_stats.emb.mean,time_stats.emb.median,time_stats.emb.std,time_stats.input_layernorm.min,time_stats.input_layernorm.max,time_stats.input_layernorm.mean,time_stats.input_layernorm.median,time_stats.input_layernorm.std,time_stats.attn_pre_proj.min,time_stats.attn_pre_proj.max,time_stats.attn_pre_proj.mean,time_stats.attn_pre_proj.median,time_stats.attn_pre_proj.std,time_stats.attn_rope.min,time_stats.attn_rope.max,time_stats.attn_rope.mean,time_stats.attn_rope.median,time_stats.attn_rope.std,time_stats.attn_post_proj.min,time_stats.attn_post_proj.max,time_stats.attn_post_proj.mean,time_stats.attn_post_proj.median,time_stats.attn_post_proj.std,time_stats.post_attention_layernorm.min,time_stats.post_attention_layernorm.max,time_stats.post_attention_layernorm.mean,time_stats.post_attention_layernorm.median,time_stats.post_attention_layernorm.std,n_head,n_kv_head,n_embd,n_expanded_embd,vocab_size,use_gated_mlp,use_qk_norm,attn_output_gate,num_tokens,num_tensor_parallel_workers,padded_n_embd,padded_n_expanded_embd,model_arch,is_step2_mini,share_expert_dim,share_q_dim,measurement_type,profiling_precision,quant_signature +0.029184000566601753,0.06780800223350525,0.03157280012965202,0.030736000277101994,0.005874173435341216,0.033215999603271484,0.04825599864125252,0.03443359974771738,0.0337119996547699,0.0031825678429048183,1.438431978225708,1.505568027496338,1.446228802204132,1.4429279565811157,0.014128607642643025,0.538752019405365,0.5440319776535034,0.5416463971138,0.5420799851417542,0.0016099306164432847,1.0073280334472656,1.0163840055465698,1.0098415970802308,1.0081279873847961,0.0032980457197329728,0.04022400081157684,0.041728001087903976,0.04091359991580248,0.04081599973142147,0.0004728505416767937,32,4,2048,768,151936,True,True,False,8192,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.01360000018030405,0.06784000247716904,0.017755200061947106,0.0179840000346303,0.00837681421401443,0.01836800016462803,0.03651199862360954,0.019606399815529585,0.018719999119639397,0.0038821958848767424,0.7512000203132629,0.8208960294723511,0.7566704005002975,0.75382399559021,0.014793092586577971,0.28995200991630554,0.29337599873542786,0.29135999977588656,0.29150401055812836,0.000998381071258815,0.5149760246276855,0.5169600248336792,0.5160208016633987,0.5158880054950714,0.0005038652783291977,0.02051199972629547,0.021503999829292297,0.021067200042307378,0.021104000508785248,0.00023542855306902367,32,4,2048,768,151936,True,True,False,4096,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.0080960001796484,0.04281599819660187,0.011092799971811474,0.011039999779313803,0.005489135752949302,0.012223999947309494,0.026335999369621277,0.013187199970707298,0.01247999956831336,0.0030236510562153375,0.3928639888763428,0.45372799038887024,0.3976895987987518,0.39528000354766846,0.012905176716136006,0.1547199934720993,0.15884800255298615,0.15712319910526276,0.1573439985513687,0.001165121945135037,0.26633599400520325,0.268095999956131,0.26719200164079665,0.2671840041875839,0.0004242740199415328,0.013024000450968742,0.013887999579310417,0.013489600038155913,0.013520000036805868,0.0002382817554057738,32,4,2048,768,151936,True,True,False,2048,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.00825599953532219,0.04755200073122978,0.02398160002194345,0.01961600035429001,0.00874683840888523,0.018880000337958336,0.03868800029158592,0.021590400114655496,0.0208320003002882,0.004057015751746236,0.24316799640655518,0.2710399925708771,0.2521967992186546,0.25065599381923676,0.007998418528894075,0.09644799679517746,0.19120000302791595,0.10407840013504029,0.09963199868798256,0.020043722414992166,0.13600000739097595,0.18892799317836761,0.15760480016469955,0.15760000050067902,0.0112223677907762,0.009664000011980534,0.010015999898314476,0.009836799977347255,0.009824000298976898,9.016971952948177e-05,32,4,2048,768,151936,True,True,False,1024,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017376000061631203,0.044704001396894455,0.026318399980664254,0.027312000282108784,0.007565344034680866,0.01836800016462803,0.03014400042593479,0.021276800055056812,0.020655999891459942,0.002632977855097951,0.1438719928264618,0.17132799327373505,0.152497598528862,0.15012799948453903,0.007947150319625347,0.1430719941854477,0.19305600225925446,0.16630879789590836,0.1685439944267273,0.014628024163894684,0.08899199962615967,0.10467199981212616,0.0943599995225668,0.09374399855732918,0.003472669494074113,0.007615999784320593,0.007935999892652035,0.007769599952735007,0.0077760000713169575,7.680004540222077e-05,32,4,2048,768,151936,True,True,False,512,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.016992000862956047,0.0544000007212162,0.02573199989274144,0.026016000658273697,0.00803323401720434,0.018432000651955605,0.02348800003528595,0.020648000109940768,0.02062400057911873,0.0013939985047930988,0.10220800340175629,0.1361600011587143,0.11850560046732425,0.11684799939393997,0.010637754898360304,0.16710400581359863,0.21110400557518005,0.19078560024499894,0.19409599900245667,0.013714352646558832,0.06265600025653839,0.0740479975938797,0.06842879951000214,0.0690080001950264,0.0031292240446560557,0.00979200005531311,0.033440001308918,0.01864320016466081,0.017280000261962414,0.006957998188876383,32,4,2048,768,151936,True,True,False,256,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017152000218629837,0.04396799951791763,0.025907999789342284,0.02598400041460991,0.007714554737915267,0.018400000408291817,0.03667199984192848,0.024132800102233887,0.02112000063061714,0.006120348733354326,0.10678400099277496,0.1363839954137802,0.1193264003843069,0.11583999916911125,0.009838647443214228,0.17017599940299988,0.22748799622058868,0.18853759989142418,0.18433599919080734,0.015728078443174653,0.04569600149989128,0.06652799993753433,0.05192639995366335,0.05151999928057194,0.004516605694976449,0.021856000646948814,0.026335999369621277,0.02384479995816946,0.023599999956786633,0.0011301153013314744,32,4,2048,768,151936,True,True,False,128,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017343999817967415,1.0683200359344482,0.05748240072280168,0.029504000209271908,0.16366824814254827,0.018688000738620758,0.3317759931087494,0.03685439983382821,0.021151999942958355,0.06767422466731164,0.10255999863147736,0.9434880018234253,0.16412640027701855,0.11956800147891045,0.17964606281728834,0.1714559942483902,2.1306240558624268,0.3011296011507511,0.1926399990916252,0.42310127734378766,0.03574400022625923,0.6859520077705383,0.08389280084520578,0.04279999993741512,0.14321647071615612,0.020479999482631683,0.1831360012292862,0.033024000097066165,0.023856000043451786,0.03470987082429836,32,4,2048,768,151936,True,True,False,64,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.016095999628305435,0.05142400041222572,0.026363200135529043,0.02676799986511469,0.008637725852473854,0.01849599927663803,0.03577600046992302,0.022193600237369538,0.020848000422120094,0.004615266181181815,0.10540799796581268,0.15014399588108063,0.12211520001292228,0.11896000057458878,0.012772013396624768,0.17315199971199036,0.21478399634361267,0.1881632000207901,0.1873439997434616,0.011761164657572015,0.03481600061058998,0.058079998940229416,0.042200000025331974,0.03969600051641464,0.006461281521769989,0.02143999934196472,0.038816001266241074,0.02466559996828437,0.023856000043451786,0.0035418033748569927,32,4,2048,768,151936,True,True,False,32,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.015904000028967857,0.03753599897027016,0.023127999808639287,0.02527999971061945,0.0054230027890305385,0.018400000408291817,0.03001599945127964,0.020488000102341176,0.020096000283956528,0.002585688394137697,0.10355199873447418,0.1438400000333786,0.11536479964852334,0.11124800145626068,0.011136028294919255,0.16502399742603302,0.2072959989309311,0.18646399974822997,0.19075199961662292,0.013296437761247597,0.03142400085926056,0.05215999856591225,0.03888959977775812,0.03750399872660637,0.0057399302067536314,0.020128000527620316,0.04064000025391579,0.023937600292265417,0.023648000322282314,0.004144197400898248,32,4,2048,768,151936,True,True,False,16,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.015200000256299973,0.037151999771595,0.02144480012357235,0.02195199951529503,0.005576364091933697,0.017952000722289085,0.0226879995316267,0.019934400077909233,0.019952000118792057,0.0011812499470458758,0.10063999891281128,0.13468800485134125,0.11595199964940547,0.1207519993185997,0.011974301621092394,0.16332800686359406,0.20748800039291382,0.18162400051951408,0.1767839938402176,0.01474120743720334,0.03222399950027466,0.043455999344587326,0.03829439990222454,0.03859200142323971,0.0031378131240041122,0.020959999412298203,0.03587200120091438,0.023795200139284135,0.023423999547958374,0.0031339489695198443,32,4,2048,768,151936,True,True,False,8,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.014944000169634819,0.04022400081157684,0.02162720002233982,0.022463999688625336,0.006017219317026815,0.018464000895619392,0.026528000831604004,0.021264000236988066,0.020896000787615776,0.001934095017586082,0.10156799852848053,0.1703999936580658,0.12565439902245998,0.1244799979031086,0.01641776722785409,0.1653759926557541,0.23865599930286407,0.1969360001385212,0.19223999977111816,0.02058903050274278,0.03254399821162224,0.06752000004053116,0.0443536002188921,0.041519999504089355,0.00984829071098989,0.020096000283956528,0.040031999349594116,0.026934400014579297,0.02478400059044361,0.00562071702648593,32,4,2048,768,151936,True,True,False,1,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.7531200051307678,0.8461440205574036,0.7618160009384155,0.7576479911804199,0.019464233617982506,0.2922559976577759,0.2985599935054779,0.2953856036067009,0.29576000571250916,0.001575901077689139,0.510047972202301,0.5140479803085327,0.5121696025133133,0.5123839974403381,0.0012263137313476844,,,,,,32,4,2048,768,151936,True,True,False,8192,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.39529600739479065,0.47279998660087585,0.40216960161924364,0.39825600385665894,0.0162749796240819,0.15625600516796112,0.16211199760437012,0.15959519892930984,0.15988799929618835,0.0011493418942396922,0.2635200023651123,0.2642880082130432,0.2639120012521744,0.26392000913619995,0.0001903593401384135,,,,,,32,4,2048,768,151936,True,True,False,4096,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.2531839907169342,0.32419198751449585,0.26924319565296173,0.26049599051475525,0.01657194262368116,0.10051199793815613,0.2375359982252121,0.12411200068891048,0.10311999917030334,0.039466165428540506,0.15881599485874176,0.19289599359035492,0.16896959990262986,0.1640480011701584,0.009162416086418127,,,,,,32,4,2048,768,151936,True,True,False,2048,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.15302400290966034,0.1780800074338913,0.16284480094909667,0.16113600134849548,0.00740355661356144,0.14521600306034088,0.20233599841594696,0.17807039842009545,0.1796799972653389,0.013908448560094403,0.0907519981265068,0.09750399738550186,0.09460479989647866,0.09478399902582169,0.0017965487667361475,,,,,,32,4,2048,768,151936,True,True,False,1024,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11740799993276596,0.17958399653434753,0.13262080028653145,0.12878400087356567,0.014146060532423056,0.17468799650669098,0.21161599457263947,0.1910431995987892,0.18966399878263474,0.01270903647700971,0.05926400050520897,0.07577600330114365,0.06530559975653887,0.06404799968004227,0.00479458462514625,,,,,,32,4,2048,768,151936,True,True,False,512,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11260800063610077,0.17209599912166595,0.13610880002379416,0.13809599727392197,0.017675922458993677,0.18729600310325623,0.26822400093078613,0.20815680101513861,0.2078079953789711,0.01700718593658771,0.04499199986457825,0.06537599861621857,0.0507551996037364,0.04787199944257736,0.005727123232692158,,,,,,32,4,2048,768,151936,True,True,False,256,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11257600039243698,0.23452800512313843,0.13866880126297473,0.13964799791574478,0.026590047697062115,0.1828799992799759,0.24751999974250793,0.20735519900918006,0.20670399814844131,0.01500438131586336,0.03654399886727333,0.05593600124120712,0.0408239996060729,0.03892800025641918,0.004864409450710354,,,,,,32,4,2048,768,151936,True,True,False,128,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11734399944543839,0.18726399540901184,0.13890240006148816,0.13308800011873245,0.019086167340006257,0.16991999745368958,0.2443840056657791,0.19185120090842248,0.19257599860429764,0.018017536159219673,0.03033600002527237,0.04956800118088722,0.038387199863791466,0.03750400058925152,0.00500897018702887,,,,,,32,4,2048,768,151936,True,True,False,64,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11420799791812897,0.18115200102329254,0.13938880078494548,0.1393439993262291,0.018141313962922536,0.1693439930677414,0.221343994140625,0.19187839925289155,0.19438399374485016,0.01430752121272052,0.03017600066959858,0.06019200012087822,0.03866560012102127,0.0364960003644228,0.0074199790031205266,,,,,,32,4,2048,768,151936,True,True,False,32,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11276800185441971,0.16223999857902527,0.1331360016018152,0.13305599987506866,0.01432493740801146,0.17187200486660004,0.23625600337982178,0.19287680014967917,0.1913280040025711,0.01754628831589704,0.029823999851942062,0.07574400305747986,0.03900959976017475,0.036927999928593636,0.009277465083962879,,,,,,32,4,2048,768,151936,True,True,False,16,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1130559965968132,0.19814400374889374,0.13379519879817964,0.12531199678778648,0.020074427302248836,0.16841599345207214,0.21139200031757355,0.1893615983426571,0.19092799723148346,0.012418720676762711,0.029503999277949333,0.07558400183916092,0.040144000016152856,0.03728000074625015,0.010223239196498205,,,,,,32,4,2048,768,151936,True,True,False,8,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.115167997777462,0.2640640139579773,0.13805920109152794,0.13118399679660797,0.03132849683515479,0.17103999853134155,0.2977280020713806,0.19899839907884598,0.1976960003376007,0.028928046763067948,0.0297279991209507,0.05990400165319443,0.03834720011800528,0.0363520011305809,0.0070885330713495905,,,,,,32,4,2048,768,151936,True,True,False,1,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.3940800130367279,0.46483200788497925,0.39923040121793746,0.3957759886980057,0.015108903906233569,0.16022400557994843,0.1634880006313324,0.16203359961509706,0.16228799521923065,0.0010220720912414007,0.26073598861694336,0.2627840042114258,0.26138080209493636,0.2613760083913803,0.00041640363494172775,,,,,,32,4,2048,768,151936,True,True,False,8192,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.2536959946155548,0.27161601185798645,0.25960480123758317,0.2577280104160309,0.005142017404245015,0.09849599748849869,0.10281600058078766,0.10057279989123344,0.10063999891281128,0.0008836232237268523,0.13913600146770477,0.17606399953365326,0.15875840038061143,0.15988799929618835,0.010058952112389172,,,,,,32,4,2048,768,151936,True,True,False,4096,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.15142400562763214,0.1780479997396469,0.16139679849147798,0.1602879986166954,0.0070656055731385115,0.14601600170135498,0.23343999683856964,0.17913119941949845,0.179967999458313,0.023065274309176566,0.09388799965381622,0.12108799815177917,0.10317599996924401,0.10073599964380264,0.007364345618470178,,,,,,32,4,2048,768,151936,True,True,False,2048,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12198399752378464,0.18406400084495544,0.13770400024950505,0.13232000172138214,0.01623164885687898,0.1773120015859604,0.20688000321388245,0.1870912007987499,0.18535999953746796,0.00825628058448234,0.05766399949789047,0.06739199906587601,0.06187200043350458,0.061216000467538834,0.003004312467037863,,,,,,32,4,2048,768,151936,True,True,False,1024,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11737599968910217,0.18614399433135986,0.13109439946711063,0.12771200388669968,0.01372168725934724,0.17587199807167053,0.2699519991874695,0.19926720038056372,0.19075199961662292,0.02327478982490538,0.041728001087903976,0.06224000081419945,0.05000480003654957,0.049375999718904495,0.006185850944273961,,,,,,32,4,2048,768,151936,True,True,False,512,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1159679964184761,0.1610880047082901,0.12988320142030715,0.12494400516152382,0.011865375783184065,0.1767680048942566,0.27379199862480164,0.21035519987344742,0.21275199949741364,0.023206964017550125,0.037087999284267426,0.062144000083208084,0.04439679980278015,0.04283200018107891,0.006155226392511492,,,,,,32,4,2048,768,151936,True,True,False,256,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12015999853610992,0.158720001578331,0.13573280088603495,0.1343199983239174,0.010666830836014414,0.1737920045852661,0.22127999365329742,0.20261440128087999,0.20321600139141083,0.011153965849067301,0.03587200120091438,0.04944000020623207,0.038265600241720675,0.037328001111745834,0.0030431580113575636,,,,,,32,4,2048,768,151936,True,True,False,128,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1212799996137619,0.15139199793338776,0.13183839991688728,0.13014400005340576,0.00851207547022104,0.17257599532604218,0.2250880002975464,0.1872655987739563,0.18193599581718445,0.013638284975248818,0.02969600073993206,0.0525440014898777,0.03840640028938651,0.03444799967110157,0.007598511754254174,,,,,,32,4,2048,768,151936,True,True,False,64,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11270400136709213,0.1624639928340912,0.13508000001311302,0.13180799782276154,0.014243564451606775,0.17052799463272095,0.23715199530124664,0.1953311987221241,0.1966560035943985,0.01500670718978398,0.030239999294281006,0.05270399898290634,0.03807039987295866,0.03742399998009205,0.004906165602021684,,,,,,32,4,2048,768,151936,True,True,False,32,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12319999933242798,0.17919999361038208,0.14059039913117885,0.14156799763441086,0.016217662982107223,0.1701119989156723,0.21987199783325195,0.18903039917349815,0.1870879977941513,0.014117854507841239,0.030368000268936157,0.06406400352716446,0.04045119984075427,0.03710399940609932,0.00878942205983628,,,,,,32,4,2048,768,151936,True,True,False,16,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11296000331640244,0.16761599481105804,0.13843199908733367,0.13814399391412735,0.014925286935582404,0.1711679995059967,0.21561600267887115,0.1906527981162071,0.1876479983329773,0.011803992622137974,0.0306560005992651,0.09216000139713287,0.041129599791020155,0.036847999319434166,0.013739721468154687,,,,,,32,4,2048,768,151936,True,True,False,8,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11929599940776825,0.2008959949016571,0.14535359852015972,0.13971199840307236,0.024769473061576282,0.16803200542926788,0.25123199820518494,0.19573760256171227,0.19366399943828583,0.023196011081705884,0.03049599938094616,0.08089599758386612,0.04739360017701984,0.0453919991850853,0.01286389846889463,,,,,,32,4,2048,768,151936,True,True,False,1,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/manifest.json b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/manifest.json new file mode 100644 index 0000000..6873602 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/manifest.json @@ -0,0 +1,53 @@ +{ + "attention_tp_coverage": [ + 1, + 2, + 4 + ], + "environment_contract": { + "dtype": "bfloat16", + "frontier_commit": "d9cfeb6d8791fbf2f295dd9744c56a666171776e", + "hardware": "NVIDIA H20", + "model": "Qwen3-30B-A3B", + "tensor_parallel_sizes": [ + 1, + 2, + 4 + ], + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + }, + "inputs": { + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp2-20260716-v1-dispatch-aware-20260716T140743025781Z/artifacts/artifacts/allreduce-full-tp2-v1/raw/allreduce-tp2.json": "97c3c76b5a04e95bd9192423c2b891667c668f39cc0dfecbd097d749939f2d0a", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp4-20260716-v1-dispatch-aware-20260716T141106009788Z/artifacts/artifacts/allreduce-full-tp4-v1/raw/allreduce-tp4.json": "809df9baa6f468cf12bf0c99827475acc67894dd9f3f948976590b665fac0e76", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp1-20260716-v2-20260716T135132587012Z/artifacts/artifacts/flashattn-kv-full-v2-tp1/raw/flashattn-tp1.json": "dcb4c1bf7e76b9c765f78ddd2b8a734f2d7ba2adac13ce017689a8a77fe69a27", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp2-20260716-v2-20260716T135134194295Z/artifacts/artifacts/flashattn-kv-full-v2-tp2/raw/flashattn-tp2.json": "43ce042556ba887c8860614b43ccf0f564e5cebc1a0cffbce299d0acb9fa8d07", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp4-20260716-v2-20260716T135135197200Z/artifacts/artifacts/flashattn-kv-full-v2-tp4/raw/flashattn-tp4.json": "84eef31bcad0f556907a093318a420959d14fdc94474823d11f659704bdfec73", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-frontier-linear-full-20260716-v2-max-tokens-20260716T144444676943Z/artifacts/artifacts/frontier-linear-full-v2/profiles/compute/h20/qwen3-a3b-30b-moe/linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-moe-full-20260716-v1-local-shard-20260716T141334565164Z/artifacts/artifacts/moe-full-v1/raw/moe-full.json": "588f6ad0d69c9636d1b852e3df0a12d13cfe731f050ea7ec7aea457cceefbde8", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-router-full-20260716-v3-tp-context-20260716T145446098505Z/artifacts/artifacts/router-full-v3/raw/router.json": "1962972e983bff3e06a721ef4ae4ec65728ff669681497a4a7e7f769b88b4931" + }, + "outputs": { + "allreduce.json": "b38d14f990578d668523d25b107aceed433da5020d8ada3b6e44d3562261a3b3", + "attention.csv": "674e010598eea4c06bdee04ccba413f4c34194fbe2d70b143c6ec2169b638cc5", + "attention_true_mixed_fused.csv": "92cd22f8b669abc7af488cf3d067ed880a6cced2dba1a3213a93a4f02a0001a8", + "linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c", + "moe.csv": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0" + }, + "profile_id": "qwen3-30b-a3b-bf16-vllm020-h20-tp1-2-4", + "projection_contract": { + "allreduce": "Frozen exact runtime measurements; base profile-only comparison keeps the historical Frontier CC backend fixed to isolate compute profile fidelity", + "attention": "Pure prefill/extend/decode FA3 core plus separately measured KV update; input/output reshape assumed zero; exported mean is used as median target", + "attention_true_mixed": "Preserved as fused-total diagnostics and excluded from attention.csv because Frontier requires an unobservable prefill/decode split", + "linear": "Frontier profiler using vLLM 0.20 CUDA operators", + "moe": "Replicated gate and fused top-k plus TP-local modular expert kernel; expert measurement already includes prepare/finalize so shuffling is zero" + }, + "row_counts": { + "allreduce": 24, + "attention_frontier_compatible": 102, + "attention_true_mixed_fused_diagnostic": 30, + "linear": 36, + "moe": 72 + }, + "schema_version": "frontier_qwen30_vllm020_frozen_profile.v1" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/moe.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/moe.csv new file mode 100644 index 0000000..e5bf507 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v1/moe.csv @@ -0,0 +1,73 @@ +time_stats.moe_gating_linear.min,time_stats.moe_gating_linear.max,time_stats.moe_gating_linear.mean,time_stats.moe_gating_linear.median,time_stats.moe_gating_linear.std,time_stats.moe_gating_routing_topk.min,time_stats.moe_gating_routing_topk.max,time_stats.moe_gating_routing_topk.mean,time_stats.moe_gating_routing_topk.median,time_stats.moe_gating_routing_topk.std,time_stats.moe_shuffling.min,time_stats.moe_shuffling.max,time_stats.moe_shuffling.mean,time_stats.moe_shuffling.median,time_stats.moe_shuffling.std,time_stats.moe_grouped_gemm.min,time_stats.moe_grouped_gemm.max,time_stats.moe_grouped_gemm.mean,time_stats.moe_grouped_gemm.median,time_stats.moe_grouped_gemm.std,num_tokens,num_experts,num_experts_per_device,expert_parallel_size,routing_runtime_path,routing_assignment_policy,routing_weight_policy,routing_uses_router_logits,gating_runtime_context,gating_runtime_context_impl,router_topk,hidden_dim,expert_hidden_dim,use_gated,num_tensor_parallel_workers,total_routed_tokens,model_expansion_ratio,tokens_per_expert_avg,tokens_to_experts_ratio,expert_utilization,min_load_ratio,load_imbalance_cv,max_load_ratio,load_entropy,load_gini_coefficient,load_distribution,seed,moe_grouped_gemm_backend,measurement_type,profiling_precision,model_arch,quant_signature,router_median_nonadditivity_ratio,projection_policy +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.33926400542259216,0.405023992061615,0.36780479848384856,0.36507199704647064,0.01690507644474779,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,1.1943039894104004,1.286784052848816,1.228384006023407,1.2273280024528503,0.02832547242381263,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,64,0.375,0.5,0.5,0.3984375,0.0,1.346291201783626,4.0,5.59375,0.661865234375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,1.679744005203247,1.766144037246704,1.7095808148384095,1.7015680074691772,0.02438921262998535,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,128,0.375,1.0,1.0,0.625,0.0,1.015504800579495,5.0,6.15516433212955,0.529052734375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,2.1576640605926514,2.2921600341796875,2.2097824096679686,2.188944101333618,0.045572321842012986,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,256,0.375,2.0,2.0,0.875,0.0,0.6343057228182637,2.5,6.64370748444639,0.35369873046875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,2.422368049621582,2.5130879878997803,2.4516672134399413,2.434159994125366,0.03278900287381846,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,512,0.375,4.0,4.0,0.984375,0.0,0.4921254921257382,2.25,6.817190042344769,0.272369384765625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,2.2217600345611572,2.289599895477295,2.2571327924728393,2.263375997543335,0.021660416089449488,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,1024,0.375,8.0,8.0,1.0,0.125,0.3486861500690843,1.875,6.908192310183997,0.197662353515625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,2.18668794631958,2.318079948425293,2.2218016147613526,2.211087942123413,0.035380897213135316,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,2048,0.375,16.0,16.0,1.0,0.4375,0.2525504668006971,1.875,6.953347743053017,0.1410369873046875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,2.2291839122772217,2.3929600715637207,2.2908096313476562,2.2804640531539917,0.04479348924786221,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,4096,0.375,32.0,32.0,1.0,0.65625,0.15765965680164504,1.5625,6.98229848728205,0.08779525756835938,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,2.0678720474243164,2.1297600269317627,2.0837119817733765,2.0779199600219727,0.017880044357986735,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8192,0.375,64.0,64.0,1.0,0.625,0.12169081635504074,1.3125,6.9892029662356325,0.06879425048828125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,2.916032075881958,3.0819520950317383,2.9805248022079467,2.9656319618225098,0.05482195799019572,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,16384,0.375,128.0,128.0,1.0,0.796875,0.07935434147688751,1.1796875,6.9954297964750305,0.044734954833984375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,4.421599864959717,4.535359859466553,4.486294317245483,4.497056007385254,0.036990243787549344,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,32768,0.375,256.0,256.0,1.0,0.8203125,0.060849326483103046,1.17578125,6.9973188375859685,0.033740997314453125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,7.302591800689697,7.402751922607422,7.354758310317993,7.3464319705963135,0.032142662400335566,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,65536,0.375,512.0,512.0,1.0,0.890625,0.0412323087266341,1.08984375,6.998772433185578,0.02334284782409668,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.35280001163482666,0.39692801237106323,0.37662720382213594,0.37196800112724304,0.013401318050665304,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.4692479968070984,0.5523840188980103,0.5134752035140991,0.5100640058517456,0.02291433464135784,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.34652799367904663,0.4119040071964264,0.3789471983909607,0.38550400733947754,0.02073945105803335,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.31462401151657104,0.7456960082054138,0.38617280423641204,0.34545600414276123,0.12230201266253077,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.32521599531173706,0.419871985912323,0.36325119733810424,0.34968000650405884,0.03161798848223672,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.289792001247406,0.4663360118865967,0.4091839998960495,0.41655999422073364,0.0446001986506615,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.3761279881000519,0.4416320025920868,0.40686399936676027,0.40540799498558044,0.02257778769899645,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.7172480225563049,0.8663039803504944,0.7723807990550995,0.7591840028762817,0.04164772379451242,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,1.0195519924163818,1.2216639518737793,1.1253888130187988,1.1453600525856018,0.06548005322243594,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.7490559816360474,1.9644800424575806,1.8529024004936219,1.814303994178772,0.08042565617327288,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,3.2479360103607178,3.385279893875122,3.296070408821106,3.2800960540771484,0.04525529026442046,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,6.344799995422363,6.517856121063232,6.464438438415527,6.478623867034912,0.05116674443145098,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.2648000121116638,0.325439989566803,0.28852800130844114,0.28390398621559143,0.01933778377635077,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.7347840070724487,0.862496018409729,0.7769344031810761,0.769216001033783,0.03290485328796285,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,64,0.375,0.5,0.5,0.421875,0.0,1.346291201783626,6.0,5.652114648336087,0.636962890625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.9198399782180786,0.9646080136299133,0.9412063956260681,0.9411839842796326,0.014939365085478117,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,128,0.375,1.0,1.0,0.5703125,0.0,1.118033988749895,5.0,6.008641773518898,0.580810546875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,1.2796800136566162,1.3484159708023071,1.3006976008415223,1.2929120063781738,0.020807998177176254,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,256,0.375,2.0,2.0,0.8828125,0.0,0.6959705453537527,3.0,6.60872850615583,0.38055419921875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,1.3630399703979492,1.4430400133132935,1.3909215927124023,1.3892319798469543,0.022335744492366926,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,512,0.375,4.0,4.0,0.984375,0.0,0.5201036555341637,3.0,6.798826509158851,0.28302001953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,1.27948796749115,1.3904000520706177,1.3176063895225525,1.309440016746521,0.038060887827312775,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,1024,0.375,8.0,8.0,1.0,0.25,0.3511282039725661,1.875,6.91002266305238,0.1970977783203125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,1.264415979385376,1.3145920038223267,1.2791999936103822,1.2753440141677856,0.014130605249568332,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,2048,0.375,16.0,16.0,1.0,0.375,0.24692938483248605,1.6875,6.955481130775285,0.13909912109375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,1.3081920146942139,1.347648024559021,1.3292255997657776,1.329967975616455,0.014558863679016933,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,4096,0.375,32.0,32.0,1.0,0.625,0.17143053326165383,1.5625,6.9786675275754035,0.09520339965820312,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,1.242751955986023,1.3112000226974487,1.2747935891151427,1.266207993030548,0.021093073517695057,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8192,0.375,64.0,64.0,1.0,0.78125,0.11000099875256815,1.296875,6.991308871213679,0.062183380126953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.7388160228729248,1.8077759742736816,1.772764801979065,1.772704005241394,0.021056644077284283,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,16384,0.375,128.0,128.0,1.0,0.78125,0.0864630150197678,1.1796875,6.994552526394139,0.048796653747558594,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,2.6563520431518555,2.7063679695129395,2.6785055875778196,2.6791679859161377,0.01639963463052944,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,32768,0.375,256.0,256.0,1.0,0.8671875,0.06127686514721937,1.16015625,6.997291583027146,0.03497934341430664,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,4.386879920959473,4.452256202697754,4.4108480453491214,4.406303882598877,0.019768161791937636,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,65536,0.375,512.0,512.0,1.0,0.884765625,0.041723768525324195,1.1171875,6.998746434318934,0.02298593521118164,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.24208000302314758,0.4028480052947998,0.3041536003351212,0.277103990316391,0.05660721484881584,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.2447039932012558,0.30502399802207947,0.26446720361709597,0.26265600323677063,0.016744548364435372,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.2337920069694519,0.2881599962711334,0.26074880361557007,0.264384001493454,0.016469850143940968,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.23369599878787994,0.28591999411582947,0.25465920120477675,0.25385600328445435,0.01593204652619194,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.2295999974012375,0.26556798815727234,0.24674240052700042,0.2497600018978119,0.010345732066199003,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.21721599996089935,0.29020801186561584,0.2394208014011383,0.2346400022506714,0.018747330357768585,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.2717759907245636,0.305184006690979,0.28813759982585907,0.28809599578380585,0.01183422600545854,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.3917759954929352,0.43772798776626587,0.41130879521369934,0.4131519943475723,0.012992473640805227,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.6176639795303345,0.7009919881820679,0.642767995595932,0.6330719888210297,0.024074084919938756,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.0820800065994263,1.1674879789352417,1.1034304022789,1.0977439880371094,0.0233067292981566,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.9809919595718384,2.0415360927581787,2.003715181350708,1.992751955986023,0.022066076434645737,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,3.790112018585205,3.8651199340820312,3.829139161109924,3.8230879306793213,0.025177464160110564,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.212351992726326,0.24383999407291412,0.22760000079870224,0.22723200172185898,0.01050568575837594,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.47494399547576904,0.5184000134468079,0.4920704007148743,0.49169600009918213,0.011991064701471855,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,64,0.375,0.5,0.5,0.3984375,0.0,1.3919410907075054,6.0,5.570159765557392,0.667236328125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.6360960006713867,0.7004479765892029,0.6608384013175964,0.6572319865226746,0.020416877242438597,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,128,0.375,1.0,1.0,0.625,0.0,1.0307764064044151,4.0,6.138251855282827,0.5382080078125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.780896008014679,0.8301439881324768,0.80346559882164,0.8030399978160858,0.016801230312128875,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,256,0.375,2.0,2.0,0.859375,0.0,0.6903350635742038,3.0,6.5943747091218174,0.38067626953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.8607040047645569,0.9195200204849243,0.8783008038997651,0.8751039803028107,0.01719059253115595,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,512,0.375,4.0,4.0,0.9765625,0.0,0.49410588440130926,2.75,6.814452474347134,0.271270751953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.833952009677887,0.894752025604248,0.8619967997074127,0.863215982913971,0.018716378851797198,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,1024,0.375,8.0,8.0,1.0,0.25,0.33693529145074724,2.125,6.9186075263155535,0.1867218017578125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.834879994392395,0.8871039748191833,0.8651552021503448,0.8638879954814911,0.015262430894400969,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,2048,0.375,16.0,16.0,1.0,0.375,0.25567294018677456,1.8125,6.952441049154937,0.14349365234375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.8518080115318298,0.9097599983215332,0.8810272097587586,0.8751040101051331,0.017005819633271906,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,4096,0.375,32.0,32.0,1.0,0.625,0.1747801353218523,1.53125,6.978069554482723,0.09820938110351562,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.8470079898834229,0.9010239839553833,0.8694015920162201,0.8716959953308105,0.016138881171190216,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8192,0.375,64.0,64.0,1.0,0.65625,0.1158122428154187,1.3125,6.9901908183358845,0.06445503234863281,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.1698240041732788,1.2311359643936157,1.1888479948043824,1.1890720129013062,0.017978797794492758,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,16384,0.375,128.0,128.0,1.0,0.78125,0.08347181893108634,1.1796875,6.994921772573154,0.046871185302734375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.7702720165252686,1.8097599744796753,1.7919103980064393,1.7956640124320984,0.012641295676021557,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,32768,0.375,256.0,256.0,1.0,0.78125,0.06866734477822484,1.20703125,6.996602562938728,0.03801727294921875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,2.968672037124634,3.0278079509735107,2.9899007797241213,2.9824799299240112,0.01816414122631667,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,65536,0.375,512.0,512.0,1.0,0.8984375,0.04399546833977376,1.126953125,6.998607314922362,0.024699926376342773,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.19574399292469025,0.2512960135936737,0.21939200013875962,0.2199999988079071,0.017532156418212565,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.20483200252056122,0.24006399512290955,0.22215040028095245,0.22433599829673767,0.00969639786132892,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.20559999346733093,0.24726399779319763,0.22126719802618028,0.22207999974489212,0.01328093478485499,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.20003199577331543,0.2301120012998581,0.21453119963407516,0.21598400175571442,0.010402239855151332,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.19551999866962433,0.22972799837589264,0.21238719969987868,0.21488000452518463,0.010706095835489097,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.19420799612998962,0.2903999984264374,0.2211231991648674,0.21476799994707108,0.025955008886196004,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.2290560007095337,0.289247989654541,0.2543327987194061,0.24939200282096863,0.01663236753503115,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.30831998586654663,0.36953601241111755,0.3324000000953674,0.3288639932870865,0.018617999572156707,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.462911993265152,0.5497919917106628,0.4893856018781662,0.4816960096359253,0.023348152887178286,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,0.7662079930305481,0.8717759847640991,0.788454395532608,0.7744799852371216,0.03174746482604812,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.363935947418213,1.4143040180206299,1.3812703967094422,1.3798720240592957,0.014770450075530007,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,2.5507519245147705,2.680704116821289,2.579859209060669,2.566223978996277,0.03673283558365955,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/allreduce.json b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/allreduce.json new file mode 100644 index 0000000..aae1f0a --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/allreduce.json @@ -0,0 +1,824 @@ +{ + "environment": [ + { + "backend_env": { + "VLLM_ALLREDUCE_USE_FLASHINFER": "1", + "VLLM_FLASHINFER_ALLREDUCE_BACKEND": "trtllm" + }, + "gpu": "NVIDIA H20", + "model": "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B", + "torch_cuda": "12.9", + "torch_version": "2.11.0+cu129", + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + }, + { + "backend_env": { + "VLLM_ALLREDUCE_USE_FLASHINFER": "1", + "VLLM_FLASHINFER_ALLREDUCE_BACKEND": "trtllm" + }, + "gpu": "NVIDIA H20", + "model": "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B", + "torch_cuda": "12.9", + "torch_version": "2.11.0+cu129", + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + } + ], + "frontier_consumption": "diagnostic_only_in_base_profile_only_run; measured lookup requires a separate CC-backend injection ablation", + "rows": [ + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08288000151515007, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1, + "payload_bytes": 4096, + "per_rank_time_ms": [ + { + "max": 0.4872959852218628, + "mean": 0.1310015980154276, + "median": 0.07679999992251396, + "min": 0.06217600032687187, + "std": 0.12790721677293843 + }, + { + "max": 0.4402880072593689, + "mean": 0.12842560112476348, + "median": 0.08288000151515007, + "min": 0.0655680000782013, + "std": 0.11220176524616535 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0793600007891655, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8, + "payload_bytes": 32768, + "per_rank_time_ms": [ + { + "max": 0.12716799974441528, + "mean": 0.07871360033750534, + "median": 0.0759200006723404, + "min": 0.06032000109553337, + "std": 0.019331314939874535 + }, + { + "max": 0.12380799651145935, + "mean": 0.08059840016067028, + "median": 0.0793600007891655, + "min": 0.06217600032687187, + "std": 0.01687088356254092 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0713919997215271, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 16, + "payload_bytes": 65536, + "per_rank_time_ms": [ + { + "max": 0.12697599828243256, + "mean": 0.0767391998320818, + "median": 0.07078400254249573, + "min": 0.05910399928689003, + "std": 0.018775178979463278 + }, + { + "max": 0.11430399864912033, + "mean": 0.07594559974968433, + "median": 0.0713919997215271, + "min": 0.06124800071120262, + "std": 0.015719922150631036 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08056000247597694, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 32, + "payload_bytes": 131072, + "per_rank_time_ms": [ + { + "max": 0.1037760004401207, + "mean": 0.07954559996724128, + "median": 0.08056000247597694, + "min": 0.05955199897289276, + "std": 0.0135697420393132 + }, + { + "max": 0.10608000308275223, + "mean": 0.07971520014107228, + "median": 0.07593599706888199, + "min": 0.06028800085186958, + "std": 0.015319849772775456 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.0865279994904995, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 64, + "payload_bytes": 262144, + "per_rank_time_ms": [ + { + "max": 0.14470399916172028, + "mean": 0.09121599942445754, + "median": 0.0865279994904995, + "min": 0.06441599875688553, + "std": 0.024893837894277456 + }, + { + "max": 0.12438400089740753, + "mean": 0.08531199917197227, + "median": 0.08031999692320824, + "min": 0.06364800035953522, + "std": 0.01878029830059533 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.07135999947786331, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 128, + "payload_bytes": 524288, + "per_rank_time_ms": [ + { + "max": 0.11753600090742111, + "mean": 0.07606079950928687, + "median": 0.07135999947786331, + "min": 0.05843200162053108, + "std": 0.01755519771639284 + }, + { + "max": 0.1103999987244606, + "mean": 0.07607359997928143, + "median": 0.07073600217700005, + "min": 0.05721599981188774, + "std": 0.016904445220949783 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.07321599870920181, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 256, + "payload_bytes": 1048576, + "per_rank_time_ms": [ + { + "max": 0.11740799993276596, + "mean": 0.07749119997024537, + "median": 0.07203200086951256, + "min": 0.05862399935722351, + "std": 0.017701381594822835 + }, + { + "max": 0.11382400244474411, + "mean": 0.07733759954571724, + "median": 0.07321599870920181, + "min": 0.059039998799562454, + "std": 0.017188890882557036 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09025600180029869, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 512, + "payload_bytes": 2097152, + "per_rank_time_ms": [ + { + "max": 0.13980799913406372, + "mean": 0.0950367994606495, + "median": 0.09025600180029869, + "min": 0.06815999746322632, + "std": 0.022829835127539378 + }, + { + "max": 0.14764800667762756, + "mean": 0.09710080176591873, + "median": 0.08720000088214874, + "min": 0.07152000069618225, + "std": 0.02500574954063789 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08083200082182884, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1024, + "payload_bytes": 4194304, + "per_rank_time_ms": [ + { + "max": 0.15574400126934052, + "mean": 0.08760640025138855, + "median": 0.07846399769186974, + "min": 0.07097599655389786, + "std": 0.024487311423551025 + }, + { + "max": 0.16284799575805664, + "mean": 0.08963519930839539, + "median": 0.08083200082182884, + "min": 0.07100799679756165, + "std": 0.026047320562445356 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.10891199856996536, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 2048, + "payload_bytes": 8388608, + "per_rank_time_ms": [ + { + "max": 0.1582079976797104, + "mean": 0.11541439890861512, + "median": 0.10836799815297127, + "min": 0.09062399715185165, + "std": 0.018285136316576037 + }, + { + "max": 0.1578879952430725, + "mean": 0.11537599861621857, + "median": 0.10891199856996536, + "min": 0.0960640013217926, + "std": 0.018246538626977286 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1703840047121048, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 4096, + "payload_bytes": 16777216, + "per_rank_time_ms": [ + { + "max": 0.19327999651432037, + "mean": 0.1707327976822853, + "median": 0.1703840047121048, + "min": 0.14815999567508698, + "std": 0.014211056022719618 + }, + { + "max": 0.19276799261569977, + "mean": 0.1658592015504837, + "median": 0.16379200667142868, + "min": 0.14560000598430634, + "std": 0.013840249648693638 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.25539200007915497, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8192, + "payload_bytes": 33554432, + "per_rank_time_ms": [ + { + "max": 0.2807359993457794, + "mean": 0.25750079900026324, + "median": 0.25539200007915497, + "min": 0.24624000489711761, + "std": 0.008925204570802302 + }, + { + "max": 0.2863999903202057, + "mean": 0.2585055992007256, + "median": 0.255280002951622, + "min": 0.24371199309825897, + "std": 0.012059738582656496 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 2 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1021759994328022, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1, + "payload_bytes": 4096, + "per_rank_time_ms": [ + { + "max": 0.9770879745483398, + "mean": 0.1974783968180418, + "median": 0.10099200159311295, + "min": 0.05913599953055382, + "std": 0.2660581738745569 + }, + { + "max": 0.892799973487854, + "mean": 0.18164799660444259, + "median": 0.1021759994328022, + "min": 0.06435199826955795, + "std": 0.23947520188197013 + }, + { + "max": 0.6467199921607971, + "mean": 0.15839359983801843, + "median": 0.10100800171494484, + "min": 0.06800000369548798, + "std": 0.16617013141866102 + }, + { + "max": 0.6725760102272034, + "mean": 0.15686400160193442, + "median": 0.10044800117611885, + "min": 0.06063999980688095, + "std": 0.17523222161300497 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.12694399803876877, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8, + "payload_bytes": 32768, + "per_rank_time_ms": [ + { + "max": 0.6659520268440247, + "mean": 0.1927648030221462, + "median": 0.12694399803876877, + "min": 0.07609599828720093, + "std": 0.16697784531907736 + }, + { + "max": 0.695360004901886, + "mean": 0.19356480240821838, + "median": 0.11726400256156921, + "min": 0.0796160027384758, + "std": 0.17588096678867862 + }, + { + "max": 0.5939840078353882, + "mean": 0.1868800014257431, + "median": 0.12379200011491776, + "min": 0.07427199929952621, + "std": 0.1463231714943902 + }, + { + "max": 0.6635839939117432, + "mean": 0.1874335989356041, + "median": 0.12014400213956833, + "min": 0.07526399940252304, + "std": 0.16680959677760304 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09161599725484848, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 16, + "payload_bytes": 65536, + "per_rank_time_ms": [ + { + "max": 0.12665599584579468, + "mean": 0.09443839862942696, + "median": 0.09124799817800522, + "min": 0.06431999802589417, + "std": 0.0205690155775906 + }, + { + "max": 0.1303039938211441, + "mean": 0.09712959825992584, + "median": 0.09161599725484848, + "min": 0.07648000121116638, + "std": 0.019072048129173236 + }, + { + "max": 0.13836799561977386, + "mean": 0.09821119979023933, + "median": 0.09148800000548363, + "min": 0.0727040022611618, + "std": 0.021314066545189116 + }, + { + "max": 0.12992000579833984, + "mean": 0.09272959977388381, + "median": 0.08931199833750725, + "min": 0.06406400352716446, + "std": 0.021360803830354765 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08580800145864487, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 32, + "payload_bytes": 131072, + "per_rank_time_ms": [ + { + "max": 0.13449600338935852, + "mean": 0.08960640132427215, + "median": 0.08299200236797333, + "min": 0.06796800345182419, + "std": 0.020633597898445998 + }, + { + "max": 0.14735999703407288, + "mean": 0.09248319901525974, + "median": 0.08580800145864487, + "min": 0.05913599953055382, + "std": 0.025960234928829564 + }, + { + "max": 0.13705599308013916, + "mean": 0.08947199806571007, + "median": 0.08460799977183342, + "min": 0.0634239986538887, + "std": 0.02122838946992339 + }, + { + "max": 0.13846400380134583, + "mean": 0.0859104000031948, + "median": 0.08308799937367439, + "min": 0.05974400043487549, + "std": 0.022373631424433445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09867199882864952, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 64, + "payload_bytes": 262144, + "per_rank_time_ms": [ + { + "max": 0.1279039978981018, + "mean": 0.09748799875378608, + "median": 0.09678399935364723, + "min": 0.0655359998345375, + "std": 0.02315719144614622 + }, + { + "max": 0.1356479972600937, + "mean": 0.10018239840865135, + "median": 0.09532799944281578, + "min": 0.06185600161552429, + "std": 0.02330700253650042 + }, + { + "max": 0.13142399489879608, + "mean": 0.09778879955410957, + "median": 0.09492799639701843, + "min": 0.06560000032186508, + "std": 0.02307579212430045 + }, + { + "max": 0.1276479959487915, + "mean": 0.09611519873142242, + "median": 0.09867199882864952, + "min": 0.0642239972949028, + "std": 0.02273612181973431 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.09646400064229965, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 128, + "payload_bytes": 524288, + "per_rank_time_ms": [ + { + "max": 0.14060799777507782, + "mean": 0.09770880043506622, + "median": 0.09115200117230415, + "min": 0.06950400024652481, + "std": 0.024752645089849798 + }, + { + "max": 0.14377599954605103, + "mean": 0.09824960008263588, + "median": 0.08999999985098839, + "min": 0.07103999704122543, + "std": 0.025403407389046027 + }, + { + "max": 0.13680000603199005, + "mean": 0.09993600100278854, + "median": 0.09646400064229965, + "min": 0.06790400296449661, + "std": 0.022297424273985882 + }, + { + "max": 0.1391039937734604, + "mean": 0.09769919961690902, + "median": 0.09601600095629692, + "min": 0.06835199892520905, + "std": 0.023899922100804445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08377600088715553, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 256, + "payload_bytes": 1048576, + "per_rank_time_ms": [ + { + "max": 0.1464959979057312, + "mean": 0.09276160076260567, + "median": 0.08377600088715553, + "min": 0.06777600198984146, + "std": 0.024751086465295658 + }, + { + "max": 0.14319999516010284, + "mean": 0.09080640003085136, + "median": 0.080400001257658, + "min": 0.06796800345182419, + "std": 0.023365718881708488 + }, + { + "max": 0.1382399946451187, + "mean": 0.09063360020518303, + "median": 0.08193599805235863, + "min": 0.06627199798822403, + "std": 0.02372618650854302 + }, + { + "max": 0.14313599467277527, + "mean": 0.09044799953699112, + "median": 0.08128000050783157, + "min": 0.06652799993753433, + "std": 0.02462486862033686 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.1128000020980835, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 512, + "payload_bytes": 2097152, + "per_rank_time_ms": [ + { + "max": 0.1600320041179657, + "mean": 0.11426239982247352, + "median": 0.1128000020980835, + "min": 0.07657600194215775, + "std": 0.030240087702350687 + }, + { + "max": 0.15881599485874176, + "mean": 0.11206399947404862, + "median": 0.10628800094127655, + "min": 0.0772159993648529, + "std": 0.029933135345483627 + }, + { + "max": 0.15612800419330597, + "mean": 0.10761600062251091, + "median": 0.09860799834132195, + "min": 0.07689599692821503, + "std": 0.02634237020678647 + }, + { + "max": 0.15865600109100342, + "mean": 0.11094079986214637, + "median": 0.10979199782013893, + "min": 0.07583999633789062, + "std": 0.028619217028542445 + } + ], + "selected_backend": "flashinfer_trtllm", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.08755199983716011, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 1024, + "payload_bytes": 4194304, + "per_rank_time_ms": [ + { + "max": 0.11999999731779099, + "mean": 0.0843871995806694, + "median": 0.08755199983716011, + "min": 0.06332799792289734, + "std": 0.016638543890716024 + }, + { + "max": 0.1218239963054657, + "mean": 0.08518079966306687, + "median": 0.08032000064849854, + "min": 0.06393600255250931, + "std": 0.019900899429956945 + }, + { + "max": 0.11849600076675415, + "mean": 0.0843968003988266, + "median": 0.08702399954199791, + "min": 0.06297600269317627, + "std": 0.017031908773433545 + }, + { + "max": 0.12300799787044525, + "mean": 0.0846304003149271, + "median": 0.08139199763536453, + "min": 0.06195199862122536, + "std": 0.020106523698622265 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.12361599877476692, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 2048, + "payload_bytes": 8388608, + "per_rank_time_ms": [ + { + "max": 0.17155200242996216, + "mean": 0.12168959975242614, + "median": 0.12055999785661697, + "min": 0.09609600156545639, + "std": 0.022565485532483928 + }, + { + "max": 0.9246399998664856, + "mean": 0.19978560134768486, + "median": 0.12361599877476692, + "min": 0.09715200215578079, + "std": 0.24230694305662265 + }, + { + "max": 0.9317439794540405, + "mean": 0.20037759989500045, + "median": 0.12327999994158745, + "min": 0.09603200107812881, + "std": 0.24450903278000383 + }, + { + "max": 0.9321280121803284, + "mean": 0.19875840097665787, + "median": 0.12230399996042252, + "min": 0.0950080007314682, + "std": 0.24519252220785093 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.20030399411916733, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 4096, + "payload_bytes": 16777216, + "per_rank_time_ms": [ + { + "max": 0.3261440098285675, + "mean": 0.20826880186796187, + "median": 0.19974400103092194, + "min": 0.1409280002117157, + "std": 0.051397264855718945 + }, + { + "max": 0.3248000144958496, + "mean": 0.20548800230026246, + "median": 0.1979840025305748, + "min": 0.141184002161026, + "std": 0.04980002399656717 + }, + { + "max": 0.32547199726104736, + "mean": 0.21280319690704347, + "median": 0.20030399411916733, + "min": 0.14127999544143677, + "std": 0.05304243085685509 + }, + { + "max": 0.26047998666763306, + "mean": 0.1969312012195587, + "median": 0.18079999834299088, + "min": 0.14057600498199463, + "std": 0.042174123638424224 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + }, + { + "communicator": "vllm.tensor_model_parallel_all_reduce", + "critical_path_median_ms": 0.2924960106611252, + "dtype": "bfloat16", + "hidden_dim": 2048, + "num_tokens": 8192, + "payload_bytes": 33554432, + "per_rank_time_ms": [ + { + "max": 0.45052799582481384, + "mean": 0.3013375997543335, + "median": 0.28273600339889526, + "min": 0.21334399282932281, + "std": 0.07214223764527236 + }, + { + "max": 0.4466240108013153, + "mean": 0.2968191936612129, + "median": 0.27796798944473267, + "min": 0.21241599321365356, + "std": 0.07400678240849741 + }, + { + "max": 0.3830080032348633, + "mean": 0.2946112036705017, + "median": 0.2924960106611252, + "min": 0.21084800362586975, + "std": 0.05323627615746332 + }, + { + "max": 0.4609600007534027, + "mean": 0.3054272010922432, + "median": 0.289792001247406, + "min": 0.21062399446964264, + "std": 0.07608482904865672 + } + ], + "selected_backend": "nccl_fallback", + "tensor_parallel_size": 4 + } + ], + "schema_version": "qwen30_vllm020_allreduce_frozen.v1" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention.csv new file mode 100644 index 0000000..3220b8b --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention.csv @@ -0,0 +1,133 @@ +time_stats.attn_input_reshape.min,time_stats.attn_input_reshape.max,time_stats.attn_input_reshape.mean,time_stats.attn_input_reshape.median,time_stats.attn_input_reshape.std,time_stats.attn_kv_cache_save.min,time_stats.attn_kv_cache_save.max,time_stats.attn_kv_cache_save.mean,time_stats.attn_kv_cache_save.median,time_stats.attn_kv_cache_save.std,time_stats.attn_prefill.min,time_stats.attn_prefill.max,time_stats.attn_prefill.mean,time_stats.attn_prefill.median,time_stats.attn_prefill.std,time_stats.attn_decode.min,time_stats.attn_decode.max,time_stats.attn_decode.mean,time_stats.attn_decode.median,time_stats.attn_decode.std,time_stats.attn_output_reshape.min,time_stats.attn_output_reshape.max,time_stats.attn_output_reshape.mean,time_stats.attn_output_reshape.median,time_stats.attn_output_reshape.std,n_embd,n_q_head,n_kv_head,block_size,num_tensor_parallel_workers,max_model_len,batch_size,prefill_chunk_size,kv_cache_size,is_prefill,attention_backend,is_mixed_batch,mode,seq_lens,total_tokens,max_seq_len,min_seq_len,avg_seq_len,equal_seq_len,seq_len_variance,seq_len_std,seq_len_cv,is_chunked_prefill_sample,chunk_start_token,chunk_end_token,total_prefill_tokens,profiling_precision,model_arch,quant_signature,measurement_type,is_true_mixed_batch,prefill_seq_lens,prefill_kv_cache_sizes,decode_kv_cache_sizes,num_prefill_seqs,num_decode_seqs,decode_batch_size,total_batch_size,total_decode_tokens,decode_avg_kv_cache_size,batch_composition_ratio,batch_spec,projection_policy +0.0,0.0,0.0,0.0,0.0,0.01414399966597557,0.028863999992609024,0.019705599918961526,0.01771199982613325,0.005157200849836681,0.047968000173568726,0.07046400010585785,0.05810240097343922,0.05810240097343922,0.007477463486041561,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.04947200044989586,0.020412799902260303,0.01635199971497059,0.010107497379722417,0.046560000628232956,0.08323200047016144,0.05587520003318787,0.05587520003318787,0.011126758739503428,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.022207999601960182,0.017033600155264138,0.015312000177800655,0.002819235991970241,0.05104000121355057,0.07692799717187881,0.056396800279617305,0.056396800279617305,0.007481982178637539,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015072000212967396,0.022272000089287758,0.01706880023702979,0.01616000011563301,0.002460889579319197,0.06931199878454208,0.0838719978928566,0.07432000041007995,0.07432000041007995,0.004777766433175866,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.018592000007629395,0.028543999418616295,0.02095999978482723,0.019183999858796597,0.003198175496053494,0.12179200351238251,0.15408000349998474,0.1307712011039257,0.1307712011039257,0.00858807797538298,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.027775999158620834,0.03385600075125694,0.030131200328469276,0.029680000618100166,0.0021152558103575215,0.32678401470184326,0.3450239896774292,0.33396480381488797,0.33396480381488797,0.0045872424917606375,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.04438399896025658,0.05084799975156784,0.046540799736976626,0.04531199857592583,0.002277905811237223,1.0959680080413818,1.1151360273361206,1.0999775886535645,1.0999775886535645,0.005694403246120485,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.078015998005867,0.08691199868917465,0.08114239946007729,0.08019199967384338,0.00292795706334475,4.070400238037109,4.113152027130127,4.087088012695312,4.087088012695312,0.013660567012509554,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016063999384641647,0.05167999863624573,0.022115200012922286,0.017583999782800674,0.010340094822340818,0.05196800082921982,0.09011200070381165,0.06328320093452933,0.06328320093452933,0.012557341255467452,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01583999954164028,0.026623999699950218,0.018927999772131443,0.017376000061631203,0.003514650316260619,0.06681600213050842,0.07993599772453308,0.0725280001759529,0.0725280001759529,0.004343502558613716,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01648000068962574,0.030880000442266464,0.01945280022919178,0.017967999912798405,0.004096211183007485,0.1311360001564026,0.1546880006790161,0.13908160030841826,0.13908160030841826,0.007511906874366178,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017855999991297722,0.03558399900794029,0.020851199887692927,0.018559999763965607,0.005235911594130716,0.32950401306152344,0.350271999835968,0.33912960588932034,0.33912960588932034,0.006027400986663648,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.019328000023961067,0.040608000010252,0.022790400311350822,0.020704000256955624,0.006113051965778337,1.1415679454803467,1.1518720388412476,1.144483208656311,1.144483208656311,0.0032332311374389127,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015807999297976494,0.030688000842928886,0.019596799835562707,0.01774400006979704,0.004343384771033462,0.0,0.0,0.0,0.0,0.0,0.049056001007556915,0.07580800354480743,0.05948160067200661,0.05948160067200661,0.009031541471446955,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,1,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01603199914097786,0.02486399933695793,0.01923839971423149,0.018079999834299088,0.0032282528537266424,0.0,0.0,0.0,0.0,0.0,0.05142400041222572,0.07353600114583969,0.059328000620007516,0.059328000620007516,0.0073307807735143084,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016543999314308167,0.03977600112557411,0.021379199624061585,0.018511999398469925,0.006593576176246171,0.0,0.0,0.0,0.0,0.0,0.0488319993019104,0.06435199826955795,0.05479039996862411,0.05479039996862411,0.005672522998491864,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01635199971497059,0.02844800055027008,0.019267200119793416,0.017952000722289085,0.0035068687666949577,0.0,0.0,0.0,0.0,0.0,0.049855999648571014,0.07798399776220322,0.05986879989504815,0.05986879989504815,0.01043914754878828,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016383999958634377,0.026079999282956123,0.01923519968986511,0.017791999503970146,0.0032161974331284568,0.0,0.0,0.0,0.0,0.0,0.058111999183893204,0.1045759990811348,0.06708480007946492,0.06708480007946492,0.013479022462646494,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.04057599976658821,0.019100800156593323,0.015455999877303839,0.007512281243011577,0.0,0.0,0.0,0.0,0.0,0.05363199859857559,0.07782399654388428,0.06090559959411622,0.06090559959411622,0.007544620176348091,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.02191999927163124,0.016684799920767546,0.01563199982047081,0.0024293118621811216,0.0,0.0,0.0,0.0,0.0,0.0629120022058487,0.07891199737787247,0.06891520097851753,0.06891520097851753,0.005472695665695425,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014560000039637089,0.038943998515605927,0.018313600029796363,0.01561600062996149,0.007127270260115769,0.0,0.0,0.0,0.0,0.0,0.08675199747085571,0.10662399977445602,0.09391999915242194,0.09391999915242194,0.006988099589086635,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014527999795973301,0.054687999188899994,0.021439999900758268,0.01539199985563755,0.012052764849597775,0.0,0.0,0.0,0.0,0.0,0.13488000631332397,0.1528639942407608,0.1431359991431236,0.1431359991431236,0.005436271464033599,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.041919998824596405,0.01899839974939823,0.015343999955803156,0.007989843526623287,0.0,0.0,0.0,0.0,0.0,0.06176000088453293,0.08374399691820145,0.06747519969940186,0.06747519969940186,0.0066067747128778,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016256000846624374,0.11353600025177002,0.042761600017547606,0.028960000723600388,0.029104301538020762,0.0,0.0,0.0,0.0,0.0,0.09734400361776352,0.14422400295734406,0.11392960175871848,0.11392960175871848,0.013198594600417867,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.034143999218940735,0.018918400071561335,0.01643200032413006,0.005500943993080684,0.0,0.0,0.0,0.0,0.0,0.12918399274349213,0.15087999403476715,0.13807999789714814,0.13807999789714814,0.007658330538677587,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.016063999384641647,0.03641600161790848,0.0198208000510931,0.01780799962580204,0.0057264128169845765,0.0,0.0,0.0,0.0,0.0,0.22099199891090393,0.23904000222682953,0.2293503984808922,0.2293503984808922,0.004861342907006028,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014751999638974667,0.035840000957250595,0.018908800091594458,0.015792000107467175,0.0064374817924757475,0.0,0.0,0.0,0.0,0.0,0.10134399682283401,0.12201599776744843,0.10896319895982742,0.10896319895982742,0.006336330809165179,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013856000266969204,0.03417599946260452,0.017846399918198586,0.014800000004470348,0.006495007539635255,0.0,0.0,0.0,0.0,0.0,0.13126400113105774,0.15561600029468536,0.1389280006289482,0.1389280006289482,0.008381472811075022,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.03519999980926514,0.019168000388890504,0.01600000075995922,0.005995522477654695,0.0,0.0,0.0,0.0,0.0,0.21728000044822693,0.2343679964542389,0.2231455981731415,0.2231455981731415,0.004720730646739123,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.03670400008559227,0.018441599886864425,0.015023999847471714,0.006596535162793127,0.0,0.0,0.0,0.0,0.0,0.39321601390838623,0.4524799883365631,0.4058080047369003,0.4058080047369003,0.01578349755088941,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.022143999114632607,0.016912000067532063,0.015168000012636185,0.0028156089295136347,0.0,0.0,0.0,0.0,0.0,0.15587200224399567,0.3079040050506592,0.17838079929351805,0.17838079929351805,0.04355865575265927,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,8,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.02112000063061714,0.015516800060868263,0.01488000014796853,0.001940870731593904,0.0,0.0,0.0,0.0,0.0,0.21587200462818146,0.23561599850654602,0.22250880002975468,0.22250880002975468,0.006181951170646666,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,16,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015552000142633915,0.039264000952243805,0.023609600123018028,0.02131200022995472,0.007236979625711548,0.0,0.0,0.0,0.0,0.0,0.408735990524292,0.470335990190506,0.4336863994598388,0.4336863994598388,0.01844662383160074,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,32,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.025407999753952026,0.016227199975401164,0.014960000291466713,0.0031617375441736185,0.0,0.0,0.0,0.0,0.0,0.7412800192832947,0.7627840042114258,0.7464000046253203,0.7464000046253203,0.006112167448837547,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,64,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01462399959564209,0.02812799997627735,0.020652799773961304,0.021359999664127827,0.004308706957613102,0.028383498565450627,0.039859687970646644,0.032492258074592426,0.032492258074592426,0.00453597266208597,0.029312501176103633,0.04116431058787463,0.03355574193327539,0.03355574193327539,0.004684436757701648,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,72,,,,,,,,False,,,64,BF16,generic,none,CUDA_EVENT,True,[64],[0],"[512, 512, 512, 512, 512, 512, 512, 512]",1,8,8,9,8,512.0,0.1111111111111111,q64_8q1s512,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.015552000142633915,0.034143999218940735,0.023171199765056372,0.024255999363958836,0.005908614918096971,0.03333159243114438,0.038935341782478095,0.03580428402241854,0.03580428402241854,0.002082270297044095,0.03633240903369937,0.04244065945634484,0.03902771507087562,0.03902771507087562,0.0022697354261490147,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,136,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,8,8,9,8,1024.0,0.1111111111111111,q128_8q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014655999839305878,0.02611199952661991,0.019635199941694735,0.018112000077962875,0.0038298050749257795,0.04189529417991216,0.057484239920526384,0.04744885718421094,0.04744885718421094,0.004779830748455743,0.051672703037266184,0.07089975418195164,0.05852234134479412,0.05852234134479412,0.005895334539786378,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,144,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,16,16,17,16,1024.0,0.058823529411764705,q128_16q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.029311999678611755,0.018662399891763926,0.01673599984496832,0.0044017112162725355,0.04322973959325901,0.05049827064705393,0.04535414343408448,0.04535414343408448,0.0022944156000240697,0.08733025617719538,0.10201372836398578,0.09162185574241775,0.09162185574241775,0.004635047631846023,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,272,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,16,16,17,16,2048.0,0.058823529411764705,q256_16q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014592000283300877,0.026367999613285065,0.016336000058799982,0.01515199989080429,0.003415353455946402,0.06031842775160765,0.06618323188375198,0.06274415549817247,0.06274415549817247,0.001985647289644255,0.14768157653992678,0.16204076249052324,0.15362064543185072,0.15362064543185072,0.004861590945216247,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,288,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,32,32,33,32,2048.0,0.030303030303030304,q256_32q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014751999638974667,0.02454400062561035,0.017167999967932702,0.016191999427974224,0.0028685016454498436,0.09128700688359712,0.09689150775996329,0.09360396051475776,0.09360396051475776,0.0013477542744916764,0.2740889887523892,0.2909164873209846,0.2810456356995366,0.2810456356995366,0.004046628526808561,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,544,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q512_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.01881599985063076,0.03097599931061268,0.024598400108516216,0.024848000146448612,0.0037539437391565975,0.1035249255866932,0.10603132147437412,0.10399797220840973,0.10399797220840973,0.0007025109429056814,0.5652750707893444,0.5789606938874117,0.5678580377517648,0.5678580377517648,0.003835906384194897,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,576,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,64,64,65,64,4096.0,0.015384615384615385,q512_64q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.018624000251293182,0.043487999588251114,0.024460799992084503,0.019600000232458115,0.008922081629781394,0.196169204945307,0.2076140047945799,0.2008444429250931,0.2008444429250931,0.00394350953292805,1.1196708009293268,1.1849940417370974,1.1463555573610091,1.1463555573610091,0.022508285530529783,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,1088,,,,,,,,False,,,1024,BF16,generic,none,CUDA_EVENT,True,[1024],[0],"[8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192]",1,64,64,65,64,8192.0,0.015384615384615385,q1k_64q1s8k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.027135999873280525,0.03667199984192848,0.02945920005440712,0.028256000019609928,0.0029446678408169553,0.37757279619664613,0.3898113624476372,0.38075520430942184,0.38075520430942184,0.0036600203831042254,0.2522831942132049,0.2604606493092597,0.25440958703617433,0.25440958703617433,0.0024455194930253126,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,2080,,,,,,,,False,,,2048,BF16,generic,none,CUDA_EVENT,True,[2048],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q2k_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.0435199998319149,0.049695998430252075,0.04502719938755036,0.04395199939608574,0.002035785660169308,1.1048984388245497,1.1189053886476108,1.1112371236754128,1.1112371236754128,0.0050220696724624985,0.1395495077239122,0.14131859607071193,0.14035008841031085,0.14035008841031085,0.0006342911944856293,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,1,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,4112,,,,,,,,False,,,4096,BF16,generic,none,CUDA_EVENT,True,[4096],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,16,16,17,16,4096.0,0.058823529411764705,q4k_16q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.02364799939095974,0.01809599995613098,0.016352000646293163,0.0035481127058959038,0.04822399839758873,0.08566399663686752,0.05961279980838299,0.05961279980838299,0.011445665413968877,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014175999909639359,0.020864000543951988,0.01668160008266568,0.015664000064134598,0.0025769063833097584,0.049695998430252075,0.08057600259780884,0.05882879942655563,0.05882879942655563,0.009515126108519331,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.028704000636935234,0.017430400010198355,0.015056000091135502,0.004349294613335555,0.049855999648571014,0.07366400212049484,0.05459520071744919,0.05459520071744919,0.0069610920757925574,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.03161599859595299,0.017788799852132796,0.015711999963968992,0.005005385723318659,0.06102399900555611,0.08179199695587158,0.06650560013949873,0.06650560013949873,0.006947995595801105,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014655999839305878,0.04416000097990036,0.019200000166893005,0.015488000120967627,0.008561241323364038,0.08054400235414505,0.09196799993515015,0.08607039973139763,0.08607039973139763,0.004145329035483754,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017855999991297722,0.023391999304294586,0.019667199812829494,0.018463999964296818,0.0022577669687832585,0.18729600310325623,0.20585599541664124,0.19546559900045393,0.19546559900045393,0.006339068824303663,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.026240000501275063,0.03446400165557861,0.028297600522637367,0.027088000439107418,0.0025148441522922374,0.5754240155220032,0.5889919996261597,0.5800191938877105,0.5800191938877105,0.003858869273829596,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.04182400181889534,0.047200001776218414,0.043036799877882004,0.0423360001295805,0.0017073405772076728,2.063199996948242,2.0787200927734375,2.067151999473572,2.067151999473572,0.004959651271127835,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.05648000165820122,0.02270399993285537,0.017935999669134617,0.012377915150727689,0.049536000937223434,0.07196799665689468,0.056015999615192415,0.056015999615192415,0.0070476637552742884,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01408000010997057,0.021344000473618507,0.01611520005390048,0.014928000047802925,0.0025499884993961702,0.07072000205516815,0.2642880082130432,0.1588256008923054,0.1588256008923054,0.053220347086102376,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01360000018030405,0.03014400042593479,0.016975999902933837,0.015056000091135502,0.004715159697364111,0.08393599838018417,0.11036799848079681,0.09160000011324881,0.09160000011324881,0.007911669434472792,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014495999552309513,0.020767999812960625,0.016233599931001663,0.015392000321298838,0.002202615907995427,0.1998399943113327,0.22070400416851044,0.20855360180139543,0.20855360180139543,0.00689307200230667,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.033440001308918,0.018684800155460833,0.016048000194132328,0.00553991005639174,0.6043199896812439,0.635807991027832,0.6126143991947173,0.6126143991947173,0.008745933953408096,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013824000023305416,0.03359999880194664,0.017811199743300678,0.014944000169634819,0.005926140483565472,0.0,0.0,0.0,0.0,0.0,0.045471999794244766,0.07539200037717819,0.054758400097489356,0.054758400097489356,0.010253548506101549,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,1,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.02409599907696247,0.01641279999166727,0.01473599998280406,0.003347158638713987,0.0,0.0,0.0,0.0,0.0,0.0461760014295578,0.07529599964618683,0.05460800044238568,0.05460800044238568,0.009748937798340135,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.028416000306606293,0.018611199874430894,0.01598400017246604,0.005209875093863647,0.0,0.0,0.0,0.0,0.0,0.048128001391887665,0.07897599786520004,0.061353600397706036,0.061353600397706036,0.010488153655157845,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014112000353634357,0.025728000327944756,0.016092800162732603,0.01512000011280179,0.003300888123052605,0.0,0.0,0.0,0.0,0.0,0.04864000156521797,0.07648000121116638,0.05810560062527656,0.05810560062527656,0.009473544218404408,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014655999839305878,0.03551999852061272,0.018588799890130757,0.016064000315964222,0.006071057437992447,0.0,0.0,0.0,0.0,0.0,0.04822399839758873,0.07862400263547897,0.05660480037331582,0.05660480037331582,0.009565394213730401,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014303999952971935,0.028831999748945236,0.01699519995599985,0.015024000313133001,0.004285000744868188,0.0,0.0,0.0,0.0,0.0,0.04854400083422661,0.06719999760389328,0.05778240002691746,0.05778240002691746,0.006852125554679805,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.0144640002399683,0.024927999824285507,0.0161183999851346,0.01521599991247058,0.0029774808524673907,0.0,0.0,0.0,0.0,0.0,0.05379199981689453,0.08966399729251862,0.06270079985260964,0.06270079985260964,0.009983591277092696,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014431999996304512,0.03001599945127964,0.017648000083863736,0.01547200046479702,0.004585126309484848,0.0,0.0,0.0,0.0,0.0,0.061664000153541565,0.07692799717187881,0.06704320013523103,0.06704320013523103,0.005500191798490629,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014175999909639359,0.026367999613285065,0.016947199776768684,0.015039999969303608,0.0037951566103550205,0.0,0.0,0.0,0.0,0.0,0.08799999952316284,0.111455999314785,0.0964031994342804,0.0964031994342804,0.007397541615558088,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01369599997997284,0.021247999742627144,0.015359999984502793,0.014640000183135271,0.0020942770950814317,0.0,0.0,0.0,0.0,0.0,0.051711998879909515,0.07065600156784058,0.058054400235414506,0.058054400235414506,0.006633034815910025,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014208000153303146,0.0307839997112751,0.017148799914866685,0.015039999969303608,0.004882374686312284,0.0,0.0,0.0,0.0,0.0,0.061919998377561576,0.07843200117349625,0.06628479920327664,0.06628479920327664,0.004962852689801192,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013887999579310417,0.02969600073993206,0.017500799987465142,0.015232000034302473,0.00467273319705314,0.0,0.0,0.0,0.0,0.0,0.08819200098514557,0.11097600311040878,0.09493440166115762,0.09493440166115762,0.007509235042985577,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.022112000733613968,0.01751680001616478,0.016047999262809753,0.0030306621792915785,0.0,0.0,0.0,0.0,0.0,0.13065600395202637,0.15110400319099426,0.13857279866933822,0.13857279866933822,0.00750137841249771,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.04012800008058548,0.01892479993402958,0.01550400024279952,0.007459545267816961,0.0,0.0,0.0,0.0,0.0,0.06278400123119354,0.08259200304746628,0.0704512007534504,0.0704512007534504,0.005979055984382744,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.02236800082027912,0.016332800220698118,0.014928000047802925,0.002784044363186731,0.0,0.0,0.0,0.0,0.0,0.1003199964761734,0.1279360055923462,0.10921279862523078,0.10921279862523078,0.00862769617046716,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.0225600004196167,0.016128000058233737,0.014800000004470348,0.002958953332547708,0.0,0.0,0.0,0.0,0.0,0.13116799294948578,0.14812800288200378,0.13783999979496003,0.13783999979496003,0.005696384361148053,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014208000153303146,0.029983999207615852,0.017468800116330386,0.01508800033479929,0.0047379550962483065,0.0,0.0,0.0,0.0,0.0,0.217631995677948,0.2447360008955002,0.22715839892625808,0.22715839892625808,0.008831828221847138,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014047999866306782,0.02304000034928322,0.016512000095099212,0.014512000139802694,0.0035026774828624254,0.0,0.0,0.0,0.0,0.0,0.11020799726247787,0.12307199835777283,0.11600959971547126,0.11600959971547126,0.004667637266950902,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,8,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014112000353634357,0.042080000042915344,0.017510399967432023,0.014607999939471483,0.00823117883530167,0.0,0.0,0.0,0.0,0.0,0.15702399611473083,0.17587199807167053,0.16399359852075576,0.16399359852075576,0.006588299074676393,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,16,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.013919999822974205,0.0208320003002882,0.015299199987202883,0.01462399959564209,0.001916768086505386,0.0,0.0,0.0,0.0,0.0,0.21779200434684753,0.2415360063314438,0.2260768011212349,0.2260768011212349,0.007251352080685236,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,32,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014015999622642994,0.021088000386953354,0.015619200188666582,0.01473599998280406,0.002013227452302141,0.0,0.0,0.0,0.0,0.0,0.3959999978542328,0.4152640104293823,0.40332479774951924,0.40332479774951924,0.006942401431914052,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,64,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014175999909639359,0.03379200026392937,0.020595200080424547,0.019600000232458115,0.006548754248881344,0.026192623739694512,0.040006882507168426,0.029155180178492036,0.029155180178492036,0.00408828748438241,0.024591375524545756,0.037561119537986146,0.027372820355088746,0.027372820355088746,0.0038383559348575944,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,72,,,,,,,,False,,,64,BF16,generic,none,CUDA_EVENT,True,[64],[0],"[512, 512, 512, 512, 512, 512, 512, 512]",1,8,8,9,8,512.0,0.1111111111111111,q64_8q1s512,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.013856000266969204,0.020896000787615776,0.015318400040268899,0.014431999996304512,0.0019640312960926966,0.029349018208693862,0.06236262941356679,0.03714313592014963,0.03714313592014963,0.009618313791872569,0.028826981462526914,0.06125337308649041,0.036482463672774496,0.036482463672774496,0.009447230957011863,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,136,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,8,8,9,8,1024.0,0.1111111111111111,q128_8q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.013856000266969204,0.032127998769283295,0.017286399938166143,0.014479999896138906,0.005536495446636193,0.03273085874558354,0.04394578491937082,0.03563837490653034,0.03563837490653034,0.003429601730256567,0.03488514202593899,0.04683821345079978,0.037984025407085474,0.037984025407085474,0.0036553316361902684,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,144,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,16,16,17,16,1024.0,0.058823529411764705,q128_16q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.013856000266969204,0.021503999829292297,0.015078400075435639,0.01425600005313754,0.002238435975478849,0.042100813549974185,0.051784144690147756,0.045378692890289625,0.045378692890289625,0.003184109940650555,0.05111518843748309,0.06287185663927425,0.05509490773570219,0.05509490773570219,0.0038658725544299132,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,272,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,16,16,17,16,2048.0,0.058823529411764705,q256_16q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.02687999978661537,0.017667199857532977,0.01566399959847331,0.003864811846387173,0.048475323773821306,0.05599956978723733,0.05123499252968345,0.05123499252968345,0.002427379820423941,0.08429268135885387,0.09737642835214408,0.0890914090616175,0.0890914090616175,0.0042209177332077005,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,288,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,32,32,33,32,2048.0,0.030303030303030304,q256_32q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.01462399959564209,0.03359999880194664,0.019804799742996693,0.016032000072300434,0.006750519908145474,0.07121508474579985,0.07292308367136396,0.07194410845270183,0.07194410845270183,0.0005500065915943844,0.14760091249712767,0.15114092373010238,0.14911189243564577,0.14911189243564577,0.0011399477384397005,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,544,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q512_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.021856000646948814,0.016835200227797033,0.015263999812304974,0.00283854448975065,0.08146338272142935,0.08560865714384096,0.0834932625520734,0.0834932625520734,0.0012259635905347874,0.2782486219401307,0.29240733788179385,0.2851819365989658,0.2851819365989658,0.004187435731481665,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,576,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,64,64,65,64,4096.0,0.015384615384615385,q512_64q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014399999752640724,0.04495999962091446,0.02143679987639189,0.015856000129133463,0.009709987872683342,0.1194459208702178,0.12302524755181463,0.12053885718696096,0.12053885718696096,0.001005118119341339,0.5597220650459199,0.5764947443228802,0.5648435507167102,0.5648435507167102,0.004709970715400788,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,1088,,,,,,,,False,,,1024,BF16,generic,none,CUDA_EVENT,True,[1024],[0],"[8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192]",1,64,64,65,64,8192.0,0.015384615384615385,q1k_64q1s8k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.018112000077962875,0.026496000587940216,0.019318400137126445,0.018432000651955605,0.0024249605112359905,0.19770253574610402,0.222811797868348,0.2054811520619412,0.2054811520619412,0.008000944254868043,0.13941746080159492,0.157124211777114,0.14490284788179197,0.14490284788179197,0.005642170080515992,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,2080,,,,,,,,False,,,2048,BF16,generic,none,CUDA_EVENT,True,[2048],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q2k_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.02595200017094612,0.03155200183391571,0.02727359998971224,0.026575999334454536,0.0016260948764843166,0.6014684881116659,0.6095472988212,0.6046757700946376,0.6046757700946376,0.0023537435563177303,0.11325152264578045,0.11477269562841545,0.11385542721485654,0.11385542721485654,0.0004431903698023628,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,2,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,4112,,,,,,,,False,,,4096,BF16,generic,none,CUDA_EVENT,True,[4096],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,16,16,17,16,4096.0,0.058823529411764705,q4k_16q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014560000039637089,0.022784000262618065,0.016435200069099664,0.015519999898970127,0.0023688301421469523,0.04879999905824661,0.09139200299978256,0.06054079942405224,0.06054079942405224,0.012152608702448775,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,64,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,False,0.0,64.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014816000126302242,0.02844800055027008,0.017008000146597625,0.015696000307798386,0.003941466294662679,0.047807998955249786,0.07356800138950348,0.05626560002565384,0.05626560002565384,0.00842179125412236,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,128,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,False,0.0,128.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.053408000618219376,0.019353600218892097,0.01532800029963255,0.01138302400841626,0.048448000103235245,0.0785600021481514,0.0556256003677845,0.0556256003677845,0.009348274502616908,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,256,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,False,0.0,256.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015039999969303608,0.03139200061559677,0.01823679991066456,0.016159999649971724,0.004860071238302512,0.055424001067876816,0.08505599945783615,0.0640383992344141,0.0640383992344141,0.00921448636178623,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,512,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,False,0.0,512.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014751999638974667,0.026528000831604004,0.017324799951165915,0.01536000007763505,0.0036004822686428305,0.07660800218582153,0.0942080020904541,0.08209280073642732,0.08209280073642732,0.00515895587669752,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,1024,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,False,0.0,1024.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014879999682307243,0.021247999742627144,0.016403199825435876,0.01532800029963255,0.001995897022647934,0.11395200341939926,0.15113599598407745,0.12431039959192276,0.12431039959192276,0.011164431123683732,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,2048,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[2048],2048,2048,2048,2048.0,True,0.0,0.0,0.0,False,0.0,2048.0,2048,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.017184000462293625,0.028672000393271446,0.019865600019693376,0.017823999747633934,0.0035798491315929977,0.3171840012073517,0.3341119885444641,0.3261695951223373,0.3261695951223373,0.005111046452878918,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,4096,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[4096],4096,4096,4096,4096.0,True,0.0,0.0,0.0,False,0.0,4096.0,4096,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.024639999493956566,0.030400000512599945,0.02656640000641346,0.02556800004094839,0.0020189846603237303,1.0648640394210815,1.0828479528427124,1.0715327858924866,1.0715327858924866,0.005558639263049851,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,8192,0.0,True,FLASH_ATTN,False,vllm020_batch_spec,[8192],8192,8192,8192,8192.0,True,0.0,0.0,0.0,False,0.0,8192.0,8192,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014976000413298607,0.021695999428629875,0.017305599898099898,0.01593599934130907,0.0025718046517268054,0.04956800118088722,0.07932800054550171,0.06228480041027069,0.06228480041027069,0.01027160349757827,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,64,448.0,True,FLASH_ATTN,False,vllm020_batch_spec,[64],64,64,64,64.0,True,0.0,0.0,0.0,True,448.0,512.0,64,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q64s512,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01539199985563755,0.03580800071358681,0.019686400331556796,0.017136000096797943,0.005918387811304003,0.05158400163054466,0.10713600367307663,0.06364160068333148,0.06364160068333148,0.015832957809696766,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,128,896.0,True,FLASH_ATTN,False,vllm020_batch_spec,[128],128,128,128,128.0,True,0.0,0.0,0.0,True,896.0,1024.0,128,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q128s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015168000012636185,0.02223999984562397,0.016672000009566545,0.015887999907135963,0.0020934945946034563,0.06521599739789963,0.08902399986982346,0.07520959973335266,0.07520959973335266,0.007913840684102929,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,256,1792.0,True,FLASH_ATTN,False,vllm020_batch_spec,[256],256,256,256,256.0,True,0.0,0.0,0.0,True,1792.0,2048.0,256,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q256s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015231999568641186,0.04028800129890442,0.019971200078725816,0.01646399963647127,0.007351305886577286,0.14467200636863708,0.16844800114631653,0.15363519936800005,0.15363519936800005,0.008174435899956223,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,512,3584.0,True,FLASH_ATTN,False,vllm020_batch_spec,[512],512,512,512,512.0,True,0.0,0.0,0.0,True,3584.0,4096.0,512,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q512s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015519999898970127,0.02304000034928322,0.01775679988786578,0.016784000210464,0.0025077243712082584,0.33740800619125366,0.35343998670578003,0.3445120006799698,0.3445120006799698,0.00445648463590358,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,1024,7168.0,True,FLASH_ATTN,False,vllm020_batch_spec,[1024],1024,1024,1024,1024.0,True,0.0,0.0,0.0,True,7168.0,8192.0,1024,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1ks8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015647999942302704,0.02393599972128868,0.01809599995613098,0.01654400024563074,0.002998393102466254,0.0,0.0,0.0,0.0,0.0,0.0504320003092289,0.0843840017914772,0.060083200410008426,0.060083200410008426,0.00986959318572296,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,1,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,[1],1,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01603199914097786,0.030047999694943428,0.019510399922728537,0.017680000513792038,0.004065185265963332,0.0,0.0,0.0,0.0,0.0,0.05004800111055374,0.07036799937486649,0.059315200522542,0.059315200522542,0.006537768821329647,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01484800036996603,0.02393599972128868,0.018035199772566558,0.016512000001966953,0.0030667689116777724,0.0,0.0,0.0,0.0,0.0,0.05100800096988678,0.06735999882221222,0.058387200161814694,0.058387200161814694,0.005832787739241381,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01500799972563982,0.026208000257611275,0.017500799987465142,0.01646399963647127,0.0030666103306165714,0.0,0.0,0.0,0.0,0.0,0.05023999884724617,0.07254400104284286,0.057254400476813315,0.057254400476813315,0.006890853653068151,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.027327999472618103,0.0179776000790298,0.01648000068962574,0.003783417447531392,0.0,0.0,0.0,0.0,0.0,0.04819199815392494,0.07100799679756165,0.05621119923889638,0.05621119923889638,0.007824391484124725,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,128.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s128,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015647999942302704,0.036448001861572266,0.019136000238358975,0.016704000532627106,0.006076530095624803,0.0,0.0,0.0,0.0,0.0,0.047488000243902206,0.08441600203514099,0.0588383998721838,0.0588383998721838,0.011275940726332522,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015135999768972397,0.033952001482248306,0.02119360016658902,0.018000000156462193,0.007136646614305304,0.0,0.0,0.0,0.0,0.0,0.04931199923157692,0.06992000341415405,0.05755840018391609,0.05755840018391609,0.007297587694315226,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014879999682307243,0.034272000193595886,0.0204415999352932,0.017311999574303627,0.00695404701803013,0.0,0.0,0.0,0.0,0.0,0.05215999856591225,0.0735040009021759,0.06117440015077591,0.06117440015077591,0.007381118436894922,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.03743999823927879,0.02012479966506362,0.01775999926030636,0.006181045509079057,0.0,0.0,0.0,0.0,0.0,0.06355199962854385,0.08508799970149994,0.07019200026988984,0.07019200026988984,0.0062246580442117845,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,1024.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s1k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015552000142633915,0.032607998698949814,0.01959999995306134,0.017487999983131886,0.004882475068460749,0.0,0.0,0.0,0.0,0.0,0.04918399825692177,0.0865280032157898,0.05973760038614274,0.05973760038614274,0.011546847942113974,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015168000012636185,0.02675200067460537,0.017430400010198355,0.016560000367462635,0.003243135094239819,0.0,0.0,0.0,0.0,0.0,0.052671998739242554,0.08367999643087387,0.06238719932734965,0.06238719932734965,0.011207824780630104,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.01500799972563982,0.03612799942493439,0.019327999837696553,0.01688000001013279,0.006058251425153085,0.0,0.0,0.0,0.0,0.0,0.06364800035953522,0.07878399640321732,0.06935679838061332,0.06935679838061332,0.004515588328677643,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015104000456631184,0.03711999952793121,0.019670399930328132,0.017152000218629837,0.006165994646522264,0.0,0.0,0.0,0.0,0.0,0.09071999788284302,0.11507199704647064,0.10252480059862136,0.10252480059862136,0.008782544051535657,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,2048.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s2k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015039999969303608,0.026528000831604004,0.018396800104528665,0.01601599995046854,0.004279788048986283,0.0,0.0,0.0,0.0,0.0,0.05331199988722801,0.07977599650621414,0.06076480001211167,0.06076480001211167,0.008761579122069606,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.02643200010061264,0.01726400004699826,0.015855999663472176,0.003210008417242029,0.0,0.0,0.0,0.0,0.0,0.062431998550891876,0.08246400207281113,0.06970879957079888,0.06970879957079888,0.007016341676068233,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014911999925971031,0.02223999984562397,0.0166015999391675,0.015887999907135963,0.00204913969129354,0.0,0.0,0.0,0.0,0.0,0.10127999633550644,0.1141119971871376,0.10621120035648347,0.10621120035648347,0.004029318311754605,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.03363199904561043,0.019305599946528675,0.016671999357640743,0.0055445582307981234,0.0,0.0,0.0,0.0,0.0,0.1319040060043335,0.15839999914169312,0.14040640145540234,0.14040640145540234,0.007998041073596942,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,4096.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s4k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014368000440299511,0.04447999969124794,0.018908800091594458,0.0157279996201396,0.0086814937461721,0.0,0.0,0.0,0.0,0.0,0.06428799778223038,0.08982399851083755,0.07349760085344315,0.07349760085344315,0.008605284512197258,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,8,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1]",8,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,8q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.015104000456631184,0.028672000393271446,0.01890560006722808,0.016080000437796116,0.004797584627815021,0.0,0.0,0.0,0.0,0.0,0.11123199760913849,0.14115199446678162,0.11942399889230729,0.11942399889230729,0.008513394706791027,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,16,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",16,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,16q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014271999709308147,0.024927999824285507,0.016915200091898442,0.015216000378131866,0.003374147499442635,0.0,0.0,0.0,0.0,0.0,0.15887999534606934,0.18111999332904816,0.16934399753808976,0.16934399753808976,0.007415181260761123,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,32,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",32,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,32q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014336000196635723,0.026944000273942947,0.017737600207328796,0.015199999790638685,0.00415598714375255,0.0,0.0,0.0,0.0,0.0,0.2192319929599762,0.23472000658512115,0.22809920012950893,0.22809920012950893,0.004730841376327335,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,64,0,8192.0,False,FLASH_ATTN,False,vllm020_batch_spec,"[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]",64,1,1,1.0,True,0.0,0.0,0.0,False,0,0,0,BF16,generic,none,CUDA_EVENT,False,,,,,,,,,,,64q1s8k,measured_FA3_core_plus_measured_KV;reshape_assumed_zero;mean_as_median +0.0,0.0,0.0,0.0,0.0,0.014688000082969666,0.05052800104022026,0.020320000313222408,0.015520000364631414,0.010604522177924678,0.024270629882498958,0.03340247625954076,0.028446344104128624,0.028446344104128624,0.0032330369099793834,0.023697370291069768,0.03261352722995356,0.027774456325453972,0.027774456325453972,0.0031566742680923386,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,72,,,,,,,,False,,,64,BF16,generic,none,CUDA_EVENT,True,[64],[0],"[512, 512, 512, 512, 512, 512, 512, 512]",1,8,8,9,8,512.0,0.1111111111111111,q64_8q1s512,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.015359999611973763,0.033663999289274216,0.019987199828028678,0.018240000121295452,0.005522929139253732,0.0259194055660947,0.03719755183990719,0.029916029687899703,0.029916029687899703,0.003966666590554318,0.027104595853449518,0.03889844644729374,0.03128396954022015,0.03128396954022015,0.004148046317967881,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,9,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,136,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,8,8,9,8,1024.0,0.1111111111111111,q128_8q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014592000283300877,0.03299200162291527,0.019840000104159115,0.016207999549806118,0.006546343008726814,0.02587869595769926,0.03763167265431482,0.030174939058162802,0.030174939058162802,0.0037303581782277364,0.026473304070195713,0.03849632587654989,0.03086826083864964,0.03086826083864964,0.003816069654529222,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,144,,,,,,,,False,,,128,BF16,generic,none,CUDA_EVENT,True,[128],[0],"[1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024]",1,16,16,17,16,1024.0,0.058823529411764705,q128_16q1s1k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.013824000023305416,0.021023999899625778,0.016304000187665223,0.015584000386297703,0.0023236165806545476,0.031810621525966996,0.04156949936878106,0.0346749350032807,0.0346749350032807,0.003130209181143985,0.035677378270900374,0.04662250161636451,0.038889864871740294,0.038889864871740294,0.0035107033960828727,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,272,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,16,16,17,16,2048.0,0.058823529411764705,q256_16q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014527999795973301,0.02175999991595745,0.01569600012153387,0.015008000191301107,0.0020882666168036863,0.038211712107062853,0.07212229256520057,0.04364509673334097,0.04364509673334097,0.009671953074025085,0.0476442859917874,0.08992570455184198,0.05441890342616107,0.05441890342616107,0.01205947791784038,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,288,,,,,,,,False,,,256,BF16,generic,none,CUDA_EVENT,True,[256],[0],"[2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048]",1,32,32,33,32,2048.0,0.030303030303030304,q256_32q1s2k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014368000440299511,0.033824000507593155,0.017628800217062236,0.014864000026136637,0.005791495403857738,0.05214261250030033,0.06266261508706669,0.05677791295527661,0.05677791295527661,0.0030298223079651514,0.08648138506878382,0.10392938682791132,0.09416928531647478,0.09416928531647478,0.005025126612204489,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,544,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q512_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014527999795973301,0.031199999153614044,0.017900799959897996,0.015343999955803156,0.004974475661316249,0.06411958891421111,0.07405276123263956,0.06793047918211377,0.06793047918211377,0.0033918658556700006,0.14058441263169497,0.16236323591492058,0.1489399211274489,0.1489399211274489,0.00743678300375353,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,576,,,,,,,,False,,,512,BF16,generic,none,CUDA_EVENT,True,[512],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,64,64,65,64,4096.0,0.015384615384615385,q512_64q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014720000326633453,0.03855999931693077,0.018495999928563833,0.015647999942302704,0.006918530056761627,0.09872985549401277,0.10683454583043753,0.10185316839884552,0.10185316839884552,0.0020802254037042074,0.2743261390166379,0.2968454508984596,0.2830044295482752,0.2830044295482752,0.005780016596065092,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,65,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,1088,,,,,,,,False,,,1024,BF16,generic,none,CUDA_EVENT,True,[1024],[0],"[8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192, 8192]",1,64,64,65,64,8192.0,0.015384615384615385,q1k_64q1s8k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.014911999925971031,0.030400000512599945,0.01977920001372695,0.01726400014013052,0.005350883464206169,0.13918872472233365,0.16279522855335207,0.1501912864839173,0.1501912864839173,0.008992185529011513,0.11892328861766266,0.13909276049083735,0.1283239123428725,0.1283239123428725,0.007682951884956939,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,33,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,2080,,,,,,,,False,,,2048,BF16,generic,none,CUDA_EVENT,True,[2048],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,32,32,33,32,4096.0,0.030303030303030304,q2k_32q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio +0.0,0.0,0.0,0.0,0.0,0.01727999933063984,0.02223999984562397,0.01819519978016615,0.017680000513792038,0.0014397298270620873,0.3728044181625443,0.38295504353701676,0.3761264483787333,0.3761264483787333,0.0033660272332490977,0.07967557017401883,0.08184495665371805,0.08038555277807365,0.08038555277807365,0.0007193856241088455,0.0,0.0,0.0,0.0,0.0,2048,32,4,16,4,40960,17,0,0,True,FLASH_ATTN,False,true_mixed_fused_projected,,4112,,,,,,,,False,,,4096,BF16,generic,none,CUDA_EVENT,True,[4096],[0],"[4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096]",1,16,16,17,16,4096.0,0.058823529411764705,q4k_16q1s4k,fused_total_conserving_projection_by_same_tp_pure_prefill_decode_reference_ratio diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention_true_mixed_fused.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention_true_mixed_fused.csv new file mode 100644 index 0000000..153bb52 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/attention_true_mixed_fused.csv @@ -0,0 +1,31 @@ +num_tensor_parallel_workers,batch_spec,num_prefill_seqs,num_decode_seqs,total_prefill_tokens,total_decode_tokens,decode_avg_kv_cache_size,attention_core_mean_ms,attention_core_mean_as_median_ms,kv_cache_update_median_ms,pure_prefill_reference_mean_ms,pure_decode_reference_mean_ms,projected_prefill_mean_ms,projected_decode_mean_ms,projection_sum_error_ms,representation +1,q64_8q1s512,1,8,64,8,512.0,0.06604800000786781,0.06604800000786781,0.021359999664127827,0.05810240097343922,0.0600041144660541,0.032492258074592426,0.03355574193327539,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q128_8q1s1k,1,8,128,8,1024.0,0.07483199909329416,0.07483199909329416,0.024255999363958836,0.05587520003318787,0.06090559959411622,0.03580428402241854,0.03902771507087562,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q128_16q1s1k,1,16,128,16,1024.0,0.10597119852900506,0.10597119852900506,0.018112000077962875,0.05587520003318787,0.06891520097851753,0.04744885718421094,0.05852234134479412,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q256_16q1s2k,1,16,256,16,2048.0,0.13697599917650224,0.13697599917650224,0.01673599984496832,0.056396800279617305,0.11392960175871848,0.04535414343408448,0.09162185574241775,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q256_32q1s2k,1,32,256,32,2048.0,0.2163648009300232,0.2163648009300232,0.01515199989080429,0.056396800279617305,0.13807999789714814,0.06274415549817247,0.15362064543185072,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q512_32q1s4k,1,32,512,32,4096.0,0.3746495962142944,0.3746495962142944,0.016191999427974224,0.07432000041007995,0.2231455981731415,0.09360396051475776,0.2810456356995366,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q512_64q1s4k,1,64,512,64,4096.0,0.6718560099601746,0.6718560099601746,0.024848000146448612,0.07432000041007995,0.4058080047369003,0.10399797220840973,0.5678580377517648,-1.1102230246251565e-16,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q1k_64q1s8k,1,64,1024,64,8192.0,1.3472000002861022,1.3472000002861022,0.019600000232458115,0.1307712011039257,0.7464000046253203,0.2008444429250931,1.1463555573610091,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q2k_32q1s4k,1,32,2048,32,4096.0,0.6351647913455962,0.6351647913455962,0.028256000019609928,0.33396480381488797,0.2231455981731415,0.38075520430942184,0.25440958703617433,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +1,q4k_16q1s4k,1,16,4096,16,4096.0,1.2515872120857237,1.2515872120857237,0.04395199939608574,1.0999775886535645,0.1389280006289482,1.1112371236754128,0.14035008841031085,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q64_8q1s512,1,8,64,8,512.0,0.05652800053358078,0.05652800053358078,0.019600000232458115,0.05961279980838299,0.055968457407185014,0.029155180178492036,0.027372820355088746,6.938893903907228e-18,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q128_8q1s1k,1,8,128,8,1024.0,0.07362559959292413,0.07362559959292413,0.014431999996304512,0.05882879942655563,0.05778240002691746,0.03714313592014963,0.036482463672774496,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q128_16q1s1k,1,16,128,16,1024.0,0.0736224003136158,0.0736224003136158,0.014479999896138906,0.05882879942655563,0.06270079985260964,0.03563837490653034,0.037984025407085474,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q256_16q1s2k,1,16,256,16,2048.0,0.10047360062599181,0.10047360062599181,0.01425600005313754,0.05459520071744919,0.06628479920327664,0.045378692890289625,0.05509490773570219,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q256_32q1s2k,1,32,256,32,2048.0,0.14032640159130094,0.14032640159130094,0.01566399959847331,0.05459520071744919,0.09493440166115762,0.05123499252968345,0.0890914090616175,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q512_32q1s4k,1,32,512,32,4096.0,0.22105600088834762,0.22105600088834762,0.016032000072300434,0.06650560013949873,0.13783999979496003,0.07194410845270183,0.14911189243564577,-2.7755575615628914e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q512_64q1s4k,1,64,512,64,4096.0,0.36867519915103913,0.36867519915103913,0.015263999812304974,0.06650560013949873,0.22715839892625808,0.0834932625520734,0.2851819365989658,5.551115123125783e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q1k_64q1s8k,1,64,1024,64,8192.0,0.6853824079036711,0.6853824079036711,0.015856000129133463,0.08607039973139763,0.40332479774951924,0.12053885718696096,0.5648435507167102,1.1102230246251565e-16,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q2k_32q1s4k,1,32,2048,32,4096.0,0.3503839999437332,0.3503839999437332,0.018432000651955605,0.19546559900045393,0.13783999979496003,0.2054811520619412,0.14490284788179197,-5.551115123125783e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +2,q4k_16q1s4k,1,16,4096,16,4096.0,0.7185311973094941,0.7185311973094941,0.026575999334454536,0.5800191938877105,0.10921279862523078,0.6046757700946376,0.11385542721485654,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q64_8q1s512,1,8,64,8,512.0,0.0562208004295826,0.0562208004295826,0.015520000364631414,0.06054079942405224,0.0591108573866742,0.028446344104128624,0.027774456325453972,-6.938893903907228e-18,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q128_8q1s1k,1,8,128,8,1024.0,0.061199999228119854,0.061199999228119854,0.018240000121295452,0.05626560002565384,0.0588383998721838,0.029916029687899703,0.03128396954022015,-6.938893903907228e-18,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q128_16q1s1k,1,16,128,16,1024.0,0.06104319989681244,0.06104319989681244,0.016207999549806118,0.05626560002565384,0.05755840018391609,0.030174939058162802,0.03086826083864964,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q256_16q1s2k,1,16,256,16,2048.0,0.07356479987502099,0.07356479987502099,0.015584000386297703,0.0556256003677845,0.06238719932734965,0.0346749350032807,0.038889864871740294,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q256_32q1s2k,1,32,256,32,2048.0,0.09806400015950203,0.09806400015950203,0.015008000191301107,0.0556256003677845,0.06935679838061332,0.04364509673334097,0.05441890342616107,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q512_32q1s4k,1,32,512,32,4096.0,0.1509471982717514,0.1509471982717514,0.014864000026136637,0.0640383992344141,0.10621120035648347,0.05677791295527661,0.09416928531647478,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q512_64q1s4k,1,64,512,64,4096.0,0.21687040030956264,0.21687040030956264,0.015343999955803156,0.0640383992344141,0.14040640145540234,0.06793047918211377,0.1489399211274489,2.7755575615628914e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q1k_64q1s8k,1,64,1024,64,8192.0,0.3848575979471207,0.3848575979471207,0.015647999942302704,0.08209280073642732,0.22809920012950893,0.10185316839884552,0.2830044295482752,0.0,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q2k_32q1s4k,1,32,2048,32,4096.0,0.2785151988267898,0.2785151988267898,0.01726400014013052,0.12431039959192276,0.10621120035648347,0.1501912864839173,0.1283239123428725,-5.551115123125783e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation +4,q4k_16q1s4k,1,16,4096,16,4096.0,0.456512001156807,0.456512001156807,0.017680000513792038,0.3261695951223373,0.06970879957079888,0.3761264483787333,0.08038555277807365,-5.551115123125783e-17,one_fused_FA3_call_projected_for_Frontier_with_total_conservation diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/linear_op.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/linear_op.csv new file mode 100644 index 0000000..2803f02 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/linear_op.csv @@ -0,0 +1,37 @@ +time_stats.emb.min,time_stats.emb.max,time_stats.emb.mean,time_stats.emb.median,time_stats.emb.std,time_stats.input_layernorm.min,time_stats.input_layernorm.max,time_stats.input_layernorm.mean,time_stats.input_layernorm.median,time_stats.input_layernorm.std,time_stats.attn_pre_proj.min,time_stats.attn_pre_proj.max,time_stats.attn_pre_proj.mean,time_stats.attn_pre_proj.median,time_stats.attn_pre_proj.std,time_stats.attn_rope.min,time_stats.attn_rope.max,time_stats.attn_rope.mean,time_stats.attn_rope.median,time_stats.attn_rope.std,time_stats.attn_post_proj.min,time_stats.attn_post_proj.max,time_stats.attn_post_proj.mean,time_stats.attn_post_proj.median,time_stats.attn_post_proj.std,time_stats.post_attention_layernorm.min,time_stats.post_attention_layernorm.max,time_stats.post_attention_layernorm.mean,time_stats.post_attention_layernorm.median,time_stats.post_attention_layernorm.std,n_head,n_kv_head,n_embd,n_expanded_embd,vocab_size,use_gated_mlp,use_qk_norm,attn_output_gate,num_tokens,num_tensor_parallel_workers,padded_n_embd,padded_n_expanded_embd,model_arch,is_step2_mini,share_expert_dim,share_q_dim,measurement_type,profiling_precision,quant_signature +0.029184000566601753,0.06780800223350525,0.03157280012965202,0.030736000277101994,0.005874173435341216,0.033215999603271484,0.04825599864125252,0.03443359974771738,0.0337119996547699,0.0031825678429048183,1.438431978225708,1.505568027496338,1.446228802204132,1.4429279565811157,0.014128607642643025,0.538752019405365,0.5440319776535034,0.5416463971138,0.5420799851417542,0.0016099306164432847,1.0073280334472656,1.0163840055465698,1.0098415970802308,1.0081279873847961,0.0032980457197329728,0.04022400081157684,0.041728001087903976,0.04091359991580248,0.04081599973142147,0.0004728505416767937,32,4,2048,768,151936,True,True,False,8192,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.01360000018030405,0.06784000247716904,0.017755200061947106,0.0179840000346303,0.00837681421401443,0.01836800016462803,0.03651199862360954,0.019606399815529585,0.018719999119639397,0.0038821958848767424,0.7512000203132629,0.8208960294723511,0.7566704005002975,0.75382399559021,0.014793092586577971,0.28995200991630554,0.29337599873542786,0.29135999977588656,0.29150401055812836,0.000998381071258815,0.5149760246276855,0.5169600248336792,0.5160208016633987,0.5158880054950714,0.0005038652783291977,0.02051199972629547,0.021503999829292297,0.021067200042307378,0.021104000508785248,0.00023542855306902367,32,4,2048,768,151936,True,True,False,4096,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.0080960001796484,0.04281599819660187,0.011092799971811474,0.011039999779313803,0.005489135752949302,0.012223999947309494,0.026335999369621277,0.013187199970707298,0.01247999956831336,0.0030236510562153375,0.3928639888763428,0.45372799038887024,0.3976895987987518,0.39528000354766846,0.012905176716136006,0.1547199934720993,0.15884800255298615,0.15712319910526276,0.1573439985513687,0.001165121945135037,0.26633599400520325,0.268095999956131,0.26719200164079665,0.2671840041875839,0.0004242740199415328,0.013024000450968742,0.013887999579310417,0.013489600038155913,0.013520000036805868,0.0002382817554057738,32,4,2048,768,151936,True,True,False,2048,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.00825599953532219,0.04755200073122978,0.02398160002194345,0.01961600035429001,0.00874683840888523,0.018880000337958336,0.03868800029158592,0.021590400114655496,0.0208320003002882,0.004057015751746236,0.24316799640655518,0.2710399925708771,0.2521967992186546,0.25065599381923676,0.007998418528894075,0.09644799679517746,0.19120000302791595,0.10407840013504029,0.09963199868798256,0.020043722414992166,0.13600000739097595,0.18892799317836761,0.15760480016469955,0.15760000050067902,0.0112223677907762,0.009664000011980534,0.010015999898314476,0.009836799977347255,0.009824000298976898,9.016971952948177e-05,32,4,2048,768,151936,True,True,False,1024,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017376000061631203,0.044704001396894455,0.026318399980664254,0.027312000282108784,0.007565344034680866,0.01836800016462803,0.03014400042593479,0.021276800055056812,0.020655999891459942,0.002632977855097951,0.1438719928264618,0.17132799327373505,0.152497598528862,0.15012799948453903,0.007947150319625347,0.1430719941854477,0.19305600225925446,0.16630879789590836,0.1685439944267273,0.014628024163894684,0.08899199962615967,0.10467199981212616,0.0943599995225668,0.09374399855732918,0.003472669494074113,0.007615999784320593,0.007935999892652035,0.007769599952735007,0.0077760000713169575,7.680004540222077e-05,32,4,2048,768,151936,True,True,False,512,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.016992000862956047,0.0544000007212162,0.02573199989274144,0.026016000658273697,0.00803323401720434,0.018432000651955605,0.02348800003528595,0.020648000109940768,0.02062400057911873,0.0013939985047930988,0.10220800340175629,0.1361600011587143,0.11850560046732425,0.11684799939393997,0.010637754898360304,0.16710400581359863,0.21110400557518005,0.19078560024499894,0.19409599900245667,0.013714352646558832,0.06265600025653839,0.0740479975938797,0.06842879951000214,0.0690080001950264,0.0031292240446560557,0.00979200005531311,0.033440001308918,0.01864320016466081,0.017280000261962414,0.006957998188876383,32,4,2048,768,151936,True,True,False,256,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017152000218629837,0.04396799951791763,0.025907999789342284,0.02598400041460991,0.007714554737915267,0.018400000408291817,0.03667199984192848,0.024132800102233887,0.02112000063061714,0.006120348733354326,0.10678400099277496,0.1363839954137802,0.1193264003843069,0.11583999916911125,0.009838647443214228,0.17017599940299988,0.22748799622058868,0.18853759989142418,0.18433599919080734,0.015728078443174653,0.04569600149989128,0.06652799993753433,0.05192639995366335,0.05151999928057194,0.004516605694976449,0.021856000646948814,0.026335999369621277,0.02384479995816946,0.023599999956786633,0.0011301153013314744,32,4,2048,768,151936,True,True,False,128,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.017343999817967415,1.0683200359344482,0.05748240072280168,0.029504000209271908,0.16366824814254827,0.018688000738620758,0.3317759931087494,0.03685439983382821,0.021151999942958355,0.06767422466731164,0.10255999863147736,0.9434880018234253,0.16412640027701855,0.11956800147891045,0.17964606281728834,0.1714559942483902,2.1306240558624268,0.3011296011507511,0.1926399990916252,0.42310127734378766,0.03574400022625923,0.6859520077705383,0.08389280084520578,0.04279999993741512,0.14321647071615612,0.020479999482631683,0.1831360012292862,0.033024000097066165,0.023856000043451786,0.03470987082429836,32,4,2048,768,151936,True,True,False,64,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.016095999628305435,0.05142400041222572,0.026363200135529043,0.02676799986511469,0.008637725852473854,0.01849599927663803,0.03577600046992302,0.022193600237369538,0.020848000422120094,0.004615266181181815,0.10540799796581268,0.15014399588108063,0.12211520001292228,0.11896000057458878,0.012772013396624768,0.17315199971199036,0.21478399634361267,0.1881632000207901,0.1873439997434616,0.011761164657572015,0.03481600061058998,0.058079998940229416,0.042200000025331974,0.03969600051641464,0.006461281521769989,0.02143999934196472,0.038816001266241074,0.02466559996828437,0.023856000043451786,0.0035418033748569927,32,4,2048,768,151936,True,True,False,32,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.015904000028967857,0.03753599897027016,0.023127999808639287,0.02527999971061945,0.0054230027890305385,0.018400000408291817,0.03001599945127964,0.020488000102341176,0.020096000283956528,0.002585688394137697,0.10355199873447418,0.1438400000333786,0.11536479964852334,0.11124800145626068,0.011136028294919255,0.16502399742603302,0.2072959989309311,0.18646399974822997,0.19075199961662292,0.013296437761247597,0.03142400085926056,0.05215999856591225,0.03888959977775812,0.03750399872660637,0.0057399302067536314,0.020128000527620316,0.04064000025391579,0.023937600292265417,0.023648000322282314,0.004144197400898248,32,4,2048,768,151936,True,True,False,16,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.015200000256299973,0.037151999771595,0.02144480012357235,0.02195199951529503,0.005576364091933697,0.017952000722289085,0.0226879995316267,0.019934400077909233,0.019952000118792057,0.0011812499470458758,0.10063999891281128,0.13468800485134125,0.11595199964940547,0.1207519993185997,0.011974301621092394,0.16332800686359406,0.20748800039291382,0.18162400051951408,0.1767839938402176,0.01474120743720334,0.03222399950027466,0.043455999344587326,0.03829439990222454,0.03859200142323971,0.0031378131240041122,0.020959999412298203,0.03587200120091438,0.023795200139284135,0.023423999547958374,0.0031339489695198443,32,4,2048,768,151936,True,True,False,8,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +0.014944000169634819,0.04022400081157684,0.02162720002233982,0.022463999688625336,0.006017219317026815,0.018464000895619392,0.026528000831604004,0.021264000236988066,0.020896000787615776,0.001934095017586082,0.10156799852848053,0.1703999936580658,0.12565439902245998,0.1244799979031086,0.01641776722785409,0.1653759926557541,0.23865599930286407,0.1969360001385212,0.19223999977111816,0.02058903050274278,0.03254399821162224,0.06752000004053116,0.0443536002188921,0.041519999504089355,0.00984829071098989,0.020096000283956528,0.040031999349594116,0.026934400014579297,0.02478400059044361,0.00562071702648593,32,4,2048,768,151936,True,True,False,1,1,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.7531200051307678,0.8461440205574036,0.7618160009384155,0.7576479911804199,0.019464233617982506,0.2922559976577759,0.2985599935054779,0.2953856036067009,0.29576000571250916,0.001575901077689139,0.510047972202301,0.5140479803085327,0.5121696025133133,0.5123839974403381,0.0012263137313476844,,,,,,32,4,2048,768,151936,True,True,False,8192,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.39529600739479065,0.47279998660087585,0.40216960161924364,0.39825600385665894,0.0162749796240819,0.15625600516796112,0.16211199760437012,0.15959519892930984,0.15988799929618835,0.0011493418942396922,0.2635200023651123,0.2642880082130432,0.2639120012521744,0.26392000913619995,0.0001903593401384135,,,,,,32,4,2048,768,151936,True,True,False,4096,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.2531839907169342,0.32419198751449585,0.26924319565296173,0.26049599051475525,0.01657194262368116,0.10051199793815613,0.2375359982252121,0.12411200068891048,0.10311999917030334,0.039466165428540506,0.15881599485874176,0.19289599359035492,0.16896959990262986,0.1640480011701584,0.009162416086418127,,,,,,32,4,2048,768,151936,True,True,False,2048,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.15302400290966034,0.1780800074338913,0.16284480094909667,0.16113600134849548,0.00740355661356144,0.14521600306034088,0.20233599841594696,0.17807039842009545,0.1796799972653389,0.013908448560094403,0.0907519981265068,0.09750399738550186,0.09460479989647866,0.09478399902582169,0.0017965487667361475,,,,,,32,4,2048,768,151936,True,True,False,1024,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11740799993276596,0.17958399653434753,0.13262080028653145,0.12878400087356567,0.014146060532423056,0.17468799650669098,0.21161599457263947,0.1910431995987892,0.18966399878263474,0.01270903647700971,0.05926400050520897,0.07577600330114365,0.06530559975653887,0.06404799968004227,0.00479458462514625,,,,,,32,4,2048,768,151936,True,True,False,512,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11260800063610077,0.17209599912166595,0.13610880002379416,0.13809599727392197,0.017675922458993677,0.18729600310325623,0.26822400093078613,0.20815680101513861,0.2078079953789711,0.01700718593658771,0.04499199986457825,0.06537599861621857,0.0507551996037364,0.04787199944257736,0.005727123232692158,,,,,,32,4,2048,768,151936,True,True,False,256,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11257600039243698,0.23452800512313843,0.13866880126297473,0.13964799791574478,0.026590047697062115,0.1828799992799759,0.24751999974250793,0.20735519900918006,0.20670399814844131,0.01500438131586336,0.03654399886727333,0.05593600124120712,0.0408239996060729,0.03892800025641918,0.004864409450710354,,,,,,32,4,2048,768,151936,True,True,False,128,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11734399944543839,0.18726399540901184,0.13890240006148816,0.13308800011873245,0.019086167340006257,0.16991999745368958,0.2443840056657791,0.19185120090842248,0.19257599860429764,0.018017536159219673,0.03033600002527237,0.04956800118088722,0.038387199863791466,0.03750400058925152,0.00500897018702887,,,,,,32,4,2048,768,151936,True,True,False,64,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11420799791812897,0.18115200102329254,0.13938880078494548,0.1393439993262291,0.018141313962922536,0.1693439930677414,0.221343994140625,0.19187839925289155,0.19438399374485016,0.01430752121272052,0.03017600066959858,0.06019200012087822,0.03866560012102127,0.0364960003644228,0.0074199790031205266,,,,,,32,4,2048,768,151936,True,True,False,32,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11276800185441971,0.16223999857902527,0.1331360016018152,0.13305599987506866,0.01432493740801146,0.17187200486660004,0.23625600337982178,0.19287680014967917,0.1913280040025711,0.01754628831589704,0.029823999851942062,0.07574400305747986,0.03900959976017475,0.036927999928593636,0.009277465083962879,,,,,,32,4,2048,768,151936,True,True,False,16,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1130559965968132,0.19814400374889374,0.13379519879817964,0.12531199678778648,0.020074427302248836,0.16841599345207214,0.21139200031757355,0.1893615983426571,0.19092799723148346,0.012418720676762711,0.029503999277949333,0.07558400183916092,0.040144000016152856,0.03728000074625015,0.010223239196498205,,,,,,32,4,2048,768,151936,True,True,False,8,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.115167997777462,0.2640640139579773,0.13805920109152794,0.13118399679660797,0.03132849683515479,0.17103999853134155,0.2977280020713806,0.19899839907884598,0.1976960003376007,0.028928046763067948,0.0297279991209507,0.05990400165319443,0.03834720011800528,0.0363520011305809,0.0070885330713495905,,,,,,32,4,2048,768,151936,True,True,False,1,2,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.3940800130367279,0.46483200788497925,0.39923040121793746,0.3957759886980057,0.015108903906233569,0.16022400557994843,0.1634880006313324,0.16203359961509706,0.16228799521923065,0.0010220720912414007,0.26073598861694336,0.2627840042114258,0.26138080209493636,0.2613760083913803,0.00041640363494172775,,,,,,32,4,2048,768,151936,True,True,False,8192,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.2536959946155548,0.27161601185798645,0.25960480123758317,0.2577280104160309,0.005142017404245015,0.09849599748849869,0.10281600058078766,0.10057279989123344,0.10063999891281128,0.0008836232237268523,0.13913600146770477,0.17606399953365326,0.15875840038061143,0.15988799929618835,0.010058952112389172,,,,,,32,4,2048,768,151936,True,True,False,4096,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.15142400562763214,0.1780479997396469,0.16139679849147798,0.1602879986166954,0.0070656055731385115,0.14601600170135498,0.23343999683856964,0.17913119941949845,0.179967999458313,0.023065274309176566,0.09388799965381622,0.12108799815177917,0.10317599996924401,0.10073599964380264,0.007364345618470178,,,,,,32,4,2048,768,151936,True,True,False,2048,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12198399752378464,0.18406400084495544,0.13770400024950505,0.13232000172138214,0.01623164885687898,0.1773120015859604,0.20688000321388245,0.1870912007987499,0.18535999953746796,0.00825628058448234,0.05766399949789047,0.06739199906587601,0.06187200043350458,0.061216000467538834,0.003004312467037863,,,,,,32,4,2048,768,151936,True,True,False,1024,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11737599968910217,0.18614399433135986,0.13109439946711063,0.12771200388669968,0.01372168725934724,0.17587199807167053,0.2699519991874695,0.19926720038056372,0.19075199961662292,0.02327478982490538,0.041728001087903976,0.06224000081419945,0.05000480003654957,0.049375999718904495,0.006185850944273961,,,,,,32,4,2048,768,151936,True,True,False,512,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1159679964184761,0.1610880047082901,0.12988320142030715,0.12494400516152382,0.011865375783184065,0.1767680048942566,0.27379199862480164,0.21035519987344742,0.21275199949741364,0.023206964017550125,0.037087999284267426,0.062144000083208084,0.04439679980278015,0.04283200018107891,0.006155226392511492,,,,,,32,4,2048,768,151936,True,True,False,256,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12015999853610992,0.158720001578331,0.13573280088603495,0.1343199983239174,0.010666830836014414,0.1737920045852661,0.22127999365329742,0.20261440128087999,0.20321600139141083,0.011153965849067301,0.03587200120091438,0.04944000020623207,0.038265600241720675,0.037328001111745834,0.0030431580113575636,,,,,,32,4,2048,768,151936,True,True,False,128,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.1212799996137619,0.15139199793338776,0.13183839991688728,0.13014400005340576,0.00851207547022104,0.17257599532604218,0.2250880002975464,0.1872655987739563,0.18193599581718445,0.013638284975248818,0.02969600073993206,0.0525440014898777,0.03840640028938651,0.03444799967110157,0.007598511754254174,,,,,,32,4,2048,768,151936,True,True,False,64,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11270400136709213,0.1624639928340912,0.13508000001311302,0.13180799782276154,0.014243564451606775,0.17052799463272095,0.23715199530124664,0.1953311987221241,0.1966560035943985,0.01500670718978398,0.030239999294281006,0.05270399898290634,0.03807039987295866,0.03742399998009205,0.004906165602021684,,,,,,32,4,2048,768,151936,True,True,False,32,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.12319999933242798,0.17919999361038208,0.14059039913117885,0.14156799763441086,0.016217662982107223,0.1701119989156723,0.21987199783325195,0.18903039917349815,0.1870879977941513,0.014117854507841239,0.030368000268936157,0.06406400352716446,0.04045119984075427,0.03710399940609932,0.00878942205983628,,,,,,32,4,2048,768,151936,True,True,False,16,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11296000331640244,0.16761599481105804,0.13843199908733367,0.13814399391412735,0.014925286935582404,0.1711679995059967,0.21561600267887115,0.1906527981162071,0.1876479983329773,0.011803992622137974,0.0306560005992651,0.09216000139713287,0.041129599791020155,0.036847999319434166,0.013739721468154687,,,,,,32,4,2048,768,151936,True,True,False,8,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none +,,,,,,,,,,0.11929599940776825,0.2008959949016571,0.14535359852015972,0.13971199840307236,0.024769473061576282,0.16803200542926788,0.25123199820518494,0.19573760256171227,0.19366399943828583,0.023196011081705884,0.03049599938094616,0.08089599758386612,0.04739360017701984,0.0453919991850853,0.01286389846889463,,,,,,32,4,2048,768,151936,True,True,False,1,4,2048,768,generic,False,,,CUDA_EVENT,BF16,none diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/manifest.json b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/manifest.json new file mode 100644 index 0000000..3abcf44 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/manifest.json @@ -0,0 +1,53 @@ +{ + "attention_tp_coverage": [ + 1, + 2, + 4 + ], + "environment_contract": { + "dtype": "bfloat16", + "frontier_commit": "d9cfeb6d8791fbf2f295dd9744c56a666171776e", + "hardware": "NVIDIA H20", + "model": "Qwen3-30B-A3B", + "tensor_parallel_sizes": [ + 1, + 2, + 4 + ], + "vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1", + "vllm_version": "0.20.0" + }, + "inputs": { + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp2-20260716-v1-dispatch-aware-20260716T140743025781Z/artifacts/artifacts/allreduce-full-tp2-v1/raw/allreduce-tp2.json": "97c3c76b5a04e95bd9192423c2b891667c668f39cc0dfecbd097d749939f2d0a", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp4-20260716-v1-dispatch-aware-20260716T141106009788Z/artifacts/artifacts/allreduce-full-tp4-v1/raw/allreduce-tp4.json": "809df9baa6f468cf12bf0c99827475acc67894dd9f3f948976590b665fac0e76", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp1-20260716-v2-20260716T135132587012Z/artifacts/artifacts/flashattn-kv-full-v2-tp1/raw/flashattn-tp1.json": "dcb4c1bf7e76b9c765f78ddd2b8a734f2d7ba2adac13ce017689a8a77fe69a27", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp2-20260716-v2-20260716T135134194295Z/artifacts/artifacts/flashattn-kv-full-v2-tp2/raw/flashattn-tp2.json": "43ce042556ba887c8860614b43ccf0f564e5cebc1a0cffbce299d0acb9fa8d07", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp4-20260716-v2-20260716T135135197200Z/artifacts/artifacts/flashattn-kv-full-v2-tp4/raw/flashattn-tp4.json": "84eef31bcad0f556907a093318a420959d14fdc94474823d11f659704bdfec73", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-frontier-linear-full-20260716-v2-max-tokens-20260716T144444676943Z/artifacts/artifacts/frontier-linear-full-v2/profiles/compute/h20/qwen3-a3b-30b-moe/linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-moe-full-20260716-v1-local-shard-20260716T141334565164Z/artifacts/artifacts/moe-full-v1/raw/moe-full.json": "588f6ad0d69c9636d1b852e3df0a12d13cfe731f050ea7ec7aea457cceefbde8", + "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-router-full-20260716-v3-tp-context-20260716T145446098505Z/artifacts/artifacts/router-full-v3/raw/router.json": "1962972e983bff3e06a721ef4ae4ec65728ff669681497a4a7e7f769b88b4931" + }, + "outputs": { + "allreduce.json": "b38d14f990578d668523d25b107aceed433da5020d8ada3b6e44d3562261a3b3", + "attention.csv": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d", + "attention_true_mixed_fused.csv": "43ef4be90bddc9aeac6dbbe339feec24162cd1f2129a08fbd959e6ee4eaf5f60", + "linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c", + "moe.csv": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0" + }, + "profile_id": "qwen3-30b-a3b-bf16-vllm020-h20-tp1-2-4-fused-mixed-total-conserving", + "projection_contract": { + "allreduce": "Frozen exact runtime measurements; base profile-only comparison keeps the historical Frontier CC backend fixed to isolate compute profile fidelity", + "attention": "Pure prefill/extend/decode FA3 core plus separately measured KV update; input/output reshape assumed zero; exported mean is used as median target; true mixed rows use a total-conserving compatibility projection", + "attention_true_mixed": "The directly measured fused total is preserved in diagnostics. Frontier's two targets are projected by the same-TP pure prefill/decode reference ratio, with projected prefill + decode exactly equal to the fused total; the split is a schema compatibility attribution, not an observation", + "linear": "Frontier profiler using vLLM 0.20 CUDA operators", + "moe": "Replicated gate and fused top-k plus TP-local modular expert kernel; expert measurement already includes prepare/finalize so shuffling is zero" + }, + "row_counts": { + "allreduce": 24, + "attention_frontier_compatible": 132, + "attention_true_mixed_fused_diagnostic": 30, + "linear": 36, + "moe": 72 + }, + "schema_version": "frontier_qwen30_vllm020_frozen_profile.v2" +} diff --git a/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/moe.csv b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/moe.csv new file mode 100644 index 0000000..e5bf507 --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2/moe.csv @@ -0,0 +1,73 @@ +time_stats.moe_gating_linear.min,time_stats.moe_gating_linear.max,time_stats.moe_gating_linear.mean,time_stats.moe_gating_linear.median,time_stats.moe_gating_linear.std,time_stats.moe_gating_routing_topk.min,time_stats.moe_gating_routing_topk.max,time_stats.moe_gating_routing_topk.mean,time_stats.moe_gating_routing_topk.median,time_stats.moe_gating_routing_topk.std,time_stats.moe_shuffling.min,time_stats.moe_shuffling.max,time_stats.moe_shuffling.mean,time_stats.moe_shuffling.median,time_stats.moe_shuffling.std,time_stats.moe_grouped_gemm.min,time_stats.moe_grouped_gemm.max,time_stats.moe_grouped_gemm.mean,time_stats.moe_grouped_gemm.median,time_stats.moe_grouped_gemm.std,num_tokens,num_experts,num_experts_per_device,expert_parallel_size,routing_runtime_path,routing_assignment_policy,routing_weight_policy,routing_uses_router_logits,gating_runtime_context,gating_runtime_context_impl,router_topk,hidden_dim,expert_hidden_dim,use_gated,num_tensor_parallel_workers,total_routed_tokens,model_expansion_ratio,tokens_per_expert_avg,tokens_to_experts_ratio,expert_utilization,min_load_ratio,load_imbalance_cv,max_load_ratio,load_entropy,load_gini_coefficient,load_distribution,seed,moe_grouped_gemm_backend,measurement_type,profiling_precision,model_arch,quant_signature,router_median_nonadditivity_ratio,projection_policy +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.33926400542259216,0.405023992061615,0.36780479848384856,0.36507199704647064,0.01690507644474779,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,1.1943039894104004,1.286784052848816,1.228384006023407,1.2273280024528503,0.02832547242381263,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,64,0.375,0.5,0.5,0.3984375,0.0,1.346291201783626,4.0,5.59375,0.661865234375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,1.679744005203247,1.766144037246704,1.7095808148384095,1.7015680074691772,0.02438921262998535,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,128,0.375,1.0,1.0,0.625,0.0,1.015504800579495,5.0,6.15516433212955,0.529052734375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,2.1576640605926514,2.2921600341796875,2.2097824096679686,2.188944101333618,0.045572321842012986,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,256,0.375,2.0,2.0,0.875,0.0,0.6343057228182637,2.5,6.64370748444639,0.35369873046875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,2.422368049621582,2.5130879878997803,2.4516672134399413,2.434159994125366,0.03278900287381846,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,512,0.375,4.0,4.0,0.984375,0.0,0.4921254921257382,2.25,6.817190042344769,0.272369384765625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,2.2217600345611572,2.289599895477295,2.2571327924728393,2.263375997543335,0.021660416089449488,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,1024,0.375,8.0,8.0,1.0,0.125,0.3486861500690843,1.875,6.908192310183997,0.197662353515625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,2.18668794631958,2.318079948425293,2.2218016147613526,2.211087942123413,0.035380897213135316,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,2048,0.375,16.0,16.0,1.0,0.4375,0.2525504668006971,1.875,6.953347743053017,0.1410369873046875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,2.2291839122772217,2.3929600715637207,2.2908096313476562,2.2804640531539917,0.04479348924786221,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,4096,0.375,32.0,32.0,1.0,0.65625,0.15765965680164504,1.5625,6.98229848728205,0.08779525756835938,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,2.0678720474243164,2.1297600269317627,2.0837119817733765,2.0779199600219727,0.017880044357986735,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8192,0.375,64.0,64.0,1.0,0.625,0.12169081635504074,1.3125,6.9892029662356325,0.06879425048828125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,2.916032075881958,3.0819520950317383,2.9805248022079467,2.9656319618225098,0.05482195799019572,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,16384,0.375,128.0,128.0,1.0,0.796875,0.07935434147688751,1.1796875,6.9954297964750305,0.044734954833984375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,4.421599864959717,4.535359859466553,4.486294317245483,4.497056007385254,0.036990243787549344,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,32768,0.375,256.0,256.0,1.0,0.8203125,0.060849326483103046,1.17578125,6.9973188375859685,0.033740997314453125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,7.302591800689697,7.402751922607422,7.354758310317993,7.3464319705963135,0.032142662400335566,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,65536,0.375,512.0,512.0,1.0,0.890625,0.0412323087266341,1.08984375,6.998772433185578,0.02334284782409668,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.35280001163482666,0.39692801237106323,0.37662720382213594,0.37196800112724304,0.013401318050665304,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.4692479968070984,0.5523840188980103,0.5134752035140991,0.5100640058517456,0.02291433464135784,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.34652799367904663,0.4119040071964264,0.3789471983909607,0.38550400733947754,0.02073945105803335,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.31462401151657104,0.7456960082054138,0.38617280423641204,0.34545600414276123,0.12230201266253077,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.32521599531173706,0.419871985912323,0.36325119733810424,0.34968000650405884,0.03161798848223672,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.289792001247406,0.4663360118865967,0.4091839998960495,0.41655999422073364,0.0446001986506615,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.3761279881000519,0.4416320025920868,0.40686399936676027,0.40540799498558044,0.02257778769899645,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.7172480225563049,0.8663039803504944,0.7723807990550995,0.7591840028762817,0.04164772379451242,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,1.0195519924163818,1.2216639518737793,1.1253888130187988,1.1453600525856018,0.06548005322243594,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.7490559816360474,1.9644800424575806,1.8529024004936219,1.814303994178772,0.08042565617327288,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,3.2479360103607178,3.385279893875122,3.296070408821106,3.2800960540771484,0.04525529026442046,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,6.344799995422363,6.517856121063232,6.464438438415527,6.478623867034912,0.05116674443145098,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,1,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.2648000121116638,0.325439989566803,0.28852800130844114,0.28390398621559143,0.01933778377635077,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.7347840070724487,0.862496018409729,0.7769344031810761,0.769216001033783,0.03290485328796285,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,64,0.375,0.5,0.5,0.421875,0.0,1.346291201783626,6.0,5.652114648336087,0.636962890625,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.9198399782180786,0.9646080136299133,0.9412063956260681,0.9411839842796326,0.014939365085478117,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,128,0.375,1.0,1.0,0.5703125,0.0,1.118033988749895,5.0,6.008641773518898,0.580810546875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,1.2796800136566162,1.3484159708023071,1.3006976008415223,1.2929120063781738,0.020807998177176254,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,256,0.375,2.0,2.0,0.8828125,0.0,0.6959705453537527,3.0,6.60872850615583,0.38055419921875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,1.3630399703979492,1.4430400133132935,1.3909215927124023,1.3892319798469543,0.022335744492366926,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,512,0.375,4.0,4.0,0.984375,0.0,0.5201036555341637,3.0,6.798826509158851,0.28302001953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,1.27948796749115,1.3904000520706177,1.3176063895225525,1.309440016746521,0.038060887827312775,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,1024,0.375,8.0,8.0,1.0,0.25,0.3511282039725661,1.875,6.91002266305238,0.1970977783203125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,1.264415979385376,1.3145920038223267,1.2791999936103822,1.2753440141677856,0.014130605249568332,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,2048,0.375,16.0,16.0,1.0,0.375,0.24692938483248605,1.6875,6.955481130775285,0.13909912109375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,1.3081920146942139,1.347648024559021,1.3292255997657776,1.329967975616455,0.014558863679016933,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,4096,0.375,32.0,32.0,1.0,0.625,0.17143053326165383,1.5625,6.9786675275754035,0.09520339965820312,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,1.242751955986023,1.3112000226974487,1.2747935891151427,1.266207993030548,0.021093073517695057,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8192,0.375,64.0,64.0,1.0,0.78125,0.11000099875256815,1.296875,6.991308871213679,0.062183380126953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.7388160228729248,1.8077759742736816,1.772764801979065,1.772704005241394,0.021056644077284283,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,16384,0.375,128.0,128.0,1.0,0.78125,0.0864630150197678,1.1796875,6.994552526394139,0.048796653747558594,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,2.6563520431518555,2.7063679695129395,2.6785055875778196,2.6791679859161377,0.01639963463052944,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,32768,0.375,256.0,256.0,1.0,0.8671875,0.06127686514721937,1.16015625,6.997291583027146,0.03497934341430664,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,4.386879920959473,4.452256202697754,4.4108480453491214,4.406303882598877,0.019768161791937636,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,65536,0.375,512.0,512.0,1.0,0.884765625,0.041723768525324195,1.1171875,6.998746434318934,0.02298593521118164,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.24208000302314758,0.4028480052947998,0.3041536003351212,0.277103990316391,0.05660721484881584,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.2447039932012558,0.30502399802207947,0.26446720361709597,0.26265600323677063,0.016744548364435372,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.2337920069694519,0.2881599962711334,0.26074880361557007,0.264384001493454,0.016469850143940968,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.23369599878787994,0.28591999411582947,0.25465920120477675,0.25385600328445435,0.01593204652619194,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.2295999974012375,0.26556798815727234,0.24674240052700042,0.2497600018978119,0.010345732066199003,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.21721599996089935,0.29020801186561584,0.2394208014011383,0.2346400022506714,0.018747330357768585,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.2717759907245636,0.305184006690979,0.28813759982585907,0.28809599578380585,0.01183422600545854,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.3917759954929352,0.43772798776626587,0.41130879521369934,0.4131519943475723,0.012992473640805227,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.6176639795303345,0.7009919881820679,0.642767995595932,0.6330719888210297,0.024074084919938756,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.0820800065994263,1.1674879789352417,1.1034304022789,1.0977439880371094,0.0233067292981566,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.9809919595718384,2.0415360927581787,2.003715181350708,1.992751955986023,0.022066076434645737,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,3.790112018585205,3.8651199340820312,3.829139161109924,3.8230879306793213,0.025177464160110564,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,2,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.212351992726326,0.24383999407291412,0.22760000079870224,0.22723200172185898,0.01050568575837594,1,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.47494399547576904,0.5184000134468079,0.4920704007148743,0.49169600009918213,0.011991064701471855,8,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,64,0.375,0.5,0.5,0.3984375,0.0,1.3919410907075054,6.0,5.570159765557392,0.667236328125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.6360960006713867,0.7004479765892029,0.6608384013175964,0.6572319865226746,0.020416877242438597,16,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,128,0.375,1.0,1.0,0.625,0.0,1.0307764064044151,4.0,6.138251855282827,0.5382080078125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.780896008014679,0.8301439881324768,0.80346559882164,0.8030399978160858,0.016801230312128875,32,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,256,0.375,2.0,2.0,0.859375,0.0,0.6903350635742038,3.0,6.5943747091218174,0.38067626953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.8607040047645569,0.9195200204849243,0.8783008038997651,0.8751039803028107,0.01719059253115595,64,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,512,0.375,4.0,4.0,0.9765625,0.0,0.49410588440130926,2.75,6.814452474347134,0.271270751953125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.833952009677887,0.894752025604248,0.8619967997074127,0.863215982913971,0.018716378851797198,128,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,1024,0.375,8.0,8.0,1.0,0.25,0.33693529145074724,2.125,6.9186075263155535,0.1867218017578125,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.834879994392395,0.8871039748191833,0.8651552021503448,0.8638879954814911,0.015262430894400969,256,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,2048,0.375,16.0,16.0,1.0,0.375,0.25567294018677456,1.8125,6.952441049154937,0.14349365234375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.8518080115318298,0.9097599983215332,0.8810272097587586,0.8751040101051331,0.017005819633271906,512,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,4096,0.375,32.0,32.0,1.0,0.625,0.1747801353218523,1.53125,6.978069554482723,0.09820938110351562,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.8470079898834229,0.9010239839553833,0.8694015920162201,0.8716959953308105,0.016138881171190216,1024,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8192,0.375,64.0,64.0,1.0,0.65625,0.1158122428154187,1.3125,6.9901908183358845,0.06445503234863281,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,1.1698240041732788,1.2311359643936157,1.1888479948043824,1.1890720129013062,0.017978797794492758,2048,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,16384,0.375,128.0,128.0,1.0,0.78125,0.08347181893108634,1.1796875,6.994921772573154,0.046871185302734375,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.7702720165252686,1.8097599744796753,1.7919103980064393,1.7956640124320984,0.012641295676021557,4096,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,32768,0.375,256.0,256.0,1.0,0.78125,0.06866734477822484,1.20703125,6.996602562938728,0.03801727294921875,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,2.968672037124634,3.0278079509735107,2.9899007797241213,2.9824799299240112,0.01816414122631667,8192,128,128,1,standard_fused_topk,logit_topk,softmax_renorm,True,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,65536,0.375,512.0,512.0,1.0,0.8984375,0.04399546833977376,1.126953125,6.998607314922362,0.024699926376342773,uniform_random_logits,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02502400055527687,0.06092799827456474,0.033839999698102474,0.028672000393271446,0.010315255343709818,0.019360000267624855,0.0352960005402565,0.023424000293016434,0.022064000368118286,0.0038898102289194572,0.0,0.0,0.0,0.0,0.0,0.19574399292469025,0.2512960135936737,0.21939200013875962,0.2199999988079071,0.017532156418212565,1,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8,0.375,0.0625,0.0625,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0233364439829928,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025280000641942024,0.05132799968123436,0.030641599837690593,0.027343999594449997,0.007562409232763304,0.020160000771284103,0.052960000932216644,0.024145600199699403,0.021424000151455402,0.007450198645599985,0.0,0.0,0.0,0.0,0.0,0.20483200252056122,0.24006399512290955,0.22215040028095245,0.22433599829673767,0.00969639786132892,8,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,64,0.375,0.5,0.5,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9806430689981738,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024831999093294144,0.046560000628232956,0.030371200107038022,0.02763199992477894,0.005878487205028602,0.020320000126957893,0.04560000076889992,0.02601920012384653,0.02270400058478117,0.00751129965906799,0.0,0.0,0.0,0.0,0.0,0.20559999346733093,0.24726399779319763,0.22126719802618028,0.22207999974489212,0.01328093478485499,16,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,128,0.375,1.0,1.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9103623678483975,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024288000538945198,0.049375999718904495,0.03086080001667142,0.0267359996214509,0.0070864531384997225,0.020479999482631683,0.030912000685930252,0.02274719988927245,0.021359999664127827,0.0029966813650672505,0.0,0.0,0.0,0.0,0.0,0.20003199577331543,0.2301120012998581,0.21453119963407516,0.21598400175571442,0.010402239855151332,32,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,256,0.375,2.0,2.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9610778571819444,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02393599972128868,0.04342399910092354,0.029380799923092126,0.026688000187277794,0.0057374782000526574,0.020031999796628952,0.036607999354600906,0.022487999964505435,0.020911999978125095,0.0038135203062103235,0.0,0.0,0.0,0.0,0.0,0.19551999866962433,0.22972799837589264,0.21238719969987868,0.21488000452518463,0.010706095835489097,64,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,512,0.375,4.0,4.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9952941013961014,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.025407999753952026,0.05510399863123894,0.031430399790406224,0.02798399981111288,0.007335050273982725,0.020479999482631683,0.03561599925160408,0.02275839988142252,0.021551999263465405,0.003545718365165811,0.0,0.0,0.0,0.0,0.0,0.19420799612998962,0.2903999984264374,0.2211231991648674,0.21476799994707108,0.025955008886196004,128,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,1024,0.375,8.0,8.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9273256282883522,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.0244159996509552,0.05395200103521347,0.03188959984108806,0.026031999848783016,0.00943995927387483,0.02051199972629547,0.036607999354600906,0.023247999791055917,0.02147199958562851,0.003910623837069648,0.0,0.0,0.0,0.0,0.0,0.2290560007095337,0.289247989654541,0.2543327987194061,0.24939200282096863,0.01663236753503115,256,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,2048,0.375,16.0,16.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,1.0380599882396606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.024512000381946564,0.04620800167322159,0.02884640023112297,0.026320000179111958,0.005516557583355925,0.02054399996995926,0.03846399858593941,0.023401600029319524,0.021263999864459038,0.0044742944198265374,0.0,0.0,0.0,0.0,0.0,0.30831998586654663,0.36953601241111755,0.3324000000953674,0.3288639932870865,0.018617999572156707,512,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,4096,0.375,32.0,32.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9569603278386984,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02412799932062626,0.06940799951553345,0.030817600432783365,0.026800000108778477,0.010047085187652939,0.020128000527620316,0.044096000492572784,0.024606400076299904,0.022304000332951546,0.00622857166823714,0.0,0.0,0.0,0.0,0.0,0.462911993265152,0.5497919917106628,0.4893856018781662,0.4816960096359253,0.023348152887178286,1024,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,8192,0.375,64.0,64.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.9524274993623046,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.02831999957561493,0.043487999588251114,0.031744000129401685,0.02991999965161085,0.003973415836428909,0.02070399932563305,0.029343999922275543,0.022886400017887353,0.021743999794125557,0.0026873065045088873,0.0,0.0,0.0,0.0,0.0,0.7662079930305481,0.8717759847640991,0.788454395532608,0.7744799852371216,0.03174746482604812,2048,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,16384,0.375,128.0,128.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8971818172100244,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.03830400109291077,0.06268800050020218,0.043337599746882914,0.040511999279260635,0.005823016247946116,0.023135999217629433,0.03747199848294258,0.025206399988383053,0.02393599972128868,0.003271381256231161,0.0,0.0,0.0,0.0,0.0,1.363935947418213,1.4143040180206299,1.3812703967094422,1.3798720240592957,0.014770450075530007,4096,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,32768,0.375,256.0,256.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.8113207890716184,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize +0.05660799890756607,0.07932800054550171,0.06249920018017292,0.06039999984204769,0.005636461691480845,0.02956799976527691,0.03747199848294258,0.031126399897038935,0.030287999659776688,0.002157571006631541,0.0,0.0,0.0,0.0,0.0,2.5507519245147705,2.680704116821289,2.579859209060669,2.566223978996277,0.03673283558365955,8192,128,128,1,standard_fused_topk,fixed_hotset8,softmax_renorm,False,standalone_legacy,vllm020_replicated_linear,8,2048,768,True,4,65536,0.375,512.0,512.0,0.0625,0.0,3.872983346207417,16.0,3.0,0.9375,hotset8,20260716,FlashInfer CUTLASS,CUDA_EVENT,BF16,generic,none,0.883909666885606,measured_gate+topk+modular_expert;shuffling_zero_because_expert_measurement_includes_prepare_finalize diff --git a/runs/frontier-qwen30-vllm020-profile-v1/plot_profile_ablation.py b/runs/frontier-qwen30-vllm020-profile-v1/plot_profile_ablation.py new file mode 100644 index 0000000..f2a831a --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/plot_profile_ablation.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +"""Render the profile ablation and execution-context diagnostics.""" + +from __future__ import annotations + +import argparse +import json +from collections import Counter +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--s2", type=Path, required=True) + parser.add_argument("--routing", type=Path, required=True) + parser.add_argument("--opprof", type=Path, required=True) + parser.add_argument("--p1", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + s2 = json.loads(args.s2.read_text()) + routing = json.loads(args.routing.read_text()) + opprof = json.loads(args.opprof.read_text()) + p1 = json.loads(args.p1.read_text()) + + plt.rcParams.update({"font.size": 9, "axes.titlesize": 10, "axes.labelsize": 9}) + fig, axes = plt.subplots(2, 2, figsize=(13.2, 8.2), constrained_layout=True) + + real = s2["real_scores"] + cells = sorted(real, key=lambda cell: (-real[cell], cell)) + x = np.arange(len(cells)) + series = ( + ("Real", real, "#111111", "o"), + ( + "Old profile-only", + s2["historical_modes"]["historical-profile-only"]["simulated_scores"], + "#d95f02", + "s", + ), + ( + "vLLM 0.20 profile-only", + s2["vllm020_profile_only"]["SLO-gated"]["simulated_scores"], + "#7570b3", + "^", + ), + ( + "Frozen per-TP calibration", + s2["historical_modes"]["historical-per-tp-calibration"]["simulated_scores"], + "#1b9e77", + "D", + ), + ) + ax = axes[0, 0] + for label, values, color, marker in series: + ax.plot(x, [values[cell] for cell in cells], label=label, color=color, marker=marker, lw=1.7) + ax.set_xticks(x, [cell.replace("_", "\n") for cell in cells]) + ax.set_ylabel("SLO-feasible req/s/GPU") + ax.set_title("(a) Full 92-probe config ranking") + ax.grid(axis="y", alpha=0.25) + ax.legend(fontsize=8, ncol=2, loc="upper right") + + ax = axes[0, 1] + categories = ("Actual prefill", "Actual decode", "Frontier prior") + cv = [ + routing["phase_summary"]["prefill"]["actual"]["load_cv"]["median"], + routing["phase_summary"]["decode"]["actual"]["load_cv"]["median"], + routing["phase_summary"]["prefill"]["frontier_simulation"]["load_cv"]["median"], + ] + max_ratio = [ + routing["phase_summary"]["prefill"]["actual"]["max_load_ratio"]["median"], + routing["phase_summary"]["decode"]["actual"]["max_load_ratio"]["median"], + routing["phase_summary"]["prefill"]["frontier_simulation"]["max_load_ratio"]["median"], + ] + bx = np.arange(len(categories)) + width = 0.34 + bars1 = ax.bar(bx - width / 2, cv, width, label="Load CV", color="#66c2a5") + bars2 = ax.bar(bx + width / 2, max_ratio, width, label="Max/mean load", color="#fc8d62") + ax.bar_label(bars1, fmt="%.2f", fontsize=8) + ax.bar_label(bars2, fmt="%.2f", fontsize=8) + ax.set_xticks(bx, categories) + ax.set_ylim(0, max(max_ratio) * 1.2) + ax.set_title("(b) Per-layer MoE routing skew") + ax.legend(fontsize=8) + ax.grid(axis="y", alpha=0.25) + + graph_counts = {phase: Counter() for phase in ("pure_decode", "pure_prefill", "true_mixed")} + for cell in opprof["cells"]: + for group in cell["groups"]: + graph_counts[group["phase"]][group["cudagraph_runtime_mode"]] += int(group["steps"]) + ax = axes[1, 0] + phases = tuple(graph_counts) + bottoms = np.zeros(len(phases)) + for mode, color in (("FULL", "#1b9e77"), ("PIECEWISE", "#e6ab02"), ("NONE", "#d95f02")): + values = np.asarray( + [100 * graph_counts[phase][mode] / sum(graph_counts[phase].values()) for phase in phases] + ) + ax.bar(np.arange(len(phases)), values, bottom=bottoms, label=mode, color=color) + bottoms += values + ax.set_xticks(np.arange(len(phases)), [phase.replace("_", " ") for phase in phases]) + ax.set_ylabel("Observed scheduler steps (%)") + ax.set_ylim(0, 100) + ax.set_title("(c) Real vLLM execution mode is phase-dependent") + ax.legend(fontsize=8, ncol=3, loc="lower left") + + ax = axes[1, 1] + mode_order = ("historical-calibrated", "historical-profile-only", "vllm020-profile-only") + labels = ("Per-TP\ncalibration", "Old\nprofile-only", "vLLM 0.20\nprofile-only") + accuracy = [100 * p1["summaries"][mode]["probe_classification"]["accuracy"] for mode in mode_order] + mae = [100 * p1["summaries"][mode]["pass_rate_mae"] for mode in mode_order] + px = np.arange(len(labels)) + bars1 = ax.bar(px - width / 2, accuracy, width, label="Label accuracy (higher better)", color="#1b9e77") + bars2 = ax.bar(px + width / 2, mae, width, label="Pass-rate MAE (lower better)", color="#d95f02") + ax.bar_label(bars1, fmt="%.1f", fontsize=8) + ax.bar_label(bars2, fmt="%.1f", fontsize=8) + ax.set_xticks(px, labels) + ax.set_ylabel("Percent") + ax.set_ylim(0, 105) + ax.set_title("(d) Held-out P1 boundary probes (12 labels)") + ax.legend(fontsize=8, loc="upper right") + ax.grid(axis="y", alpha=0.25) + + fig.suptitle( + "Qwen3-30B-A3B / vLLM 0.20 / BF16 / dash0 H20: operator provenance is not execution-context fidelity", + fontsize=12, + ) + args.output.parent.mkdir(parents=True, exist_ok=True) + fig.savefig(args.output, dpi=180) + fig.savefig(args.output.with_suffix(".svg")) + print(args.output) + + +if __name__ == "__main__": + main() diff --git a/runs/frontier-qwen30-vllm020-profile-v1/prepare_s2_profile_comparison.py b/runs/frontier-qwen30-vllm020-profile-v1/prepare_s2_profile_comparison.py new file mode 100644 index 0000000..962952a --- /dev/null +++ b/runs/frontier-qwen30-vllm020-profile-v1/prepare_s2_profile_comparison.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python3 +"""Prepare the 92 frozen S2-R-b probes with a replacement profile bundle.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path +from typing import Any + + +PROFILE_KEYS = { + "linear_op_input_file": "linear_op.csv", + "atten_input_file": "attention.csv", + "moe_input_file": "moe.csv", +} + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1 << 20), b""): + digest.update(chunk) + return digest.hexdigest() + + +def write_json(path: Path, payload: Any) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--resolved-plan", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--profile-root", type=Path, required=True) + parser.add_argument("--cache-root", type=Path) + parser.add_argument("--shards", type=int, default=1) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + if args.shards < 1: + raise SystemExit("--shards must be positive") + source = json.loads(args.resolved_plan.read_text()) + source_rows = [row for row in source["runs"] if row["mode"] == "uncalibrated"] + if len(source_rows) != 92: + raise SystemExit(f"expected 92 uncalibrated probes, found {len(source_rows)}") + + output = args.output.resolve() + profile_root = args.profile_root.resolve() + cache_root = (args.cache_root or (output / "prediction-cache")).resolve() + profile_hashes: dict[str, str] = {} + for filename in PROFILE_KEYS.values(): + path = profile_root / filename + if not path.is_file(): + raise SystemExit(f"missing frozen profile: {path}") + profile_hashes[str(path)] = sha256(path) + + entries: list[dict[str, Any]] = [] + for row in source_rows: + fixture_dir = Path(row["fixture_dir"]).resolve() + fixture_manifest_path = fixture_dir / "fixture_manifest.json" + fixture = json.loads(fixture_manifest_path.read_text()) + config = json.loads(Path(row["config_path"]).read_text()) + config["mode"] = "new-profile-only" + config["config_id"] = f"{row['cell_id']}__new-profile-only" + config["calibration"]["a_tp"] = 1.0 + knobs = config["frontier"]["knobs"] + knobs["cache_dir"] = str(cache_root) + knobs["no_cache"] = False + for key, filename in PROFILE_KEYS.items(): + knobs[key] = str(profile_root / filename) + + target_config = output / "configs" / f"{row['fixture_id']}.json" + write_json(target_config, config) + entries.append( + { + "fixture_id": row["fixture_id"], + "cell": row["cell_id"], + "role": f"probe-{int(row['probe_index']):02d}", + "anchor": float(row["sampling_u"]), + "selected_count": int(row["request_count"]), + "probe_index": int(row["probe_index"]), + "sampling_u": float(row["sampling_u"]), + "tensor_parallel_size": int(row["tensor_parallel_size"]), + "config": str(target_config), + "fixture_manifest": str(fixture_manifest_path), + "frontier_csv": str(fixture_dir / "frontier.csv"), + "sidecar": str(fixture_dir / "sidecar.jsonl"), + "calibration_scale": 1.0, + "request_count": int(fixture["request_count"]), + } + ) + + base = { + "schema": "frontier-qwen30-s2-profile-comparison-prepared.v1", + "status": "PASS", + "mode": "new-profile-only", + "source": { + "resolved_plan": str(args.resolved_plan.resolve()), + "sha256": sha256(args.resolved_plan), + }, + "profile_hashes": profile_hashes, + "isolation": { + "calibration_a_tp": 1.0, + "prediction_cache": str(cache_root), + "all_non_profile_knobs_inherited": True, + }, + "suite_total_runs": len(entries), + } + write_json( + output / "prepared-manifest.json", + {**base, "expected_runs": len(entries), "entries": entries}, + ) + for shard in range(args.shards): + shard_entries = entries[shard :: args.shards] + write_json( + output / f"prepared-manifest-shard-{shard:02d}-of-{args.shards:02d}.json", + { + **base, + "shard": {"index": shard, "count": args.shards}, + "expected_runs": len(shard_entries), + "entries": shard_entries, + }, + ) + print(output / "prepared-manifest.json") + + +if __name__ == "__main__": + main() diff --git a/simulator-fidelity.md b/simulator-fidelity.md new file mode 100644 index 0000000..728ce14 --- /dev/null +++ b/simulator-fidelity.md @@ -0,0 +1,360 @@ +# Frontier simulator fidelity:以 config ranking 为目标的阶段性评测 + +更新日期:2026-07-16。 + +统一实验平台:所有新增与重跑实验只使用 `dash0` 的 8×NVIDIA H20。Qwen30B 的真实 P1 artifacts 也来自 `dash0`;早期文档中的主机 provenance 标注错误,本版已按实验主机和远端 artifact 路径更正。 + +## 结论摘要 + +本文统一使用同一个优化目标:**在给定 workload 和 SLO 下,最大被测试可行 offered request throughput/GPU**。我们关心 simulator 是否保持 config 的相对排序、是否覆盖真机最优集合,以及部署 simulator 所选 config 后的真实 regret;绝对 latency/throughput 误差不是首要判据。 + +当前证据不支持“Frontier 普遍找不到最优 config”这一判断: + +- 在 Qwen3-30B mixed serving artifact 上,未经端到端校准的 Frontier 排序失败,选择 regret 为 `25.63%`;但使用独立 workload 上冻结的 per-TP calibration 后,Frontier 的候选 top set 包含真机最优 config,Kendall τ-b 为 `0.9668`,最坏 tie-break regret 为 `0.76%`。真实 serving 与本轮补测 profiles 均运行在 `dash0`。 +- 将 operator profile 更新为与真实 serving 一致的 community vLLM `0.20.0`、BF16、H20、TP1/2/4 栈后,新的 profile-only Frontier **没有恢复排序**:92 个真实 anchors 在 simulator 中全部 SLO-infeasible,12 个 config 因而全部并列,最坏 tie-break regret 为 `60.91%`。这否证了“旧 profile 版本不一致是主要原因”这一简单解释,并把问题收敛到 execution context、operator composition 与 mixed-state schema。 +- 在 Qwen3-235B-A22B-FP8 prefill-only 上,补齐 FP8/MoE profile 与 serving semantics、但不做端到端 action calibration 后,Frontier 的最优集合与真机完全一致,Spearman ρ 为 `0.9487`,20/20 个可比较非 tie config pair 同序,选择 regret 为 `0`。 +- 在 Qwen3-235B-A22B-FP8 fixed-shape mixed 上,Frontier 同样给出了与真机完全相同的 TP4 top set,Kendall τ-b=`0.8944`、worst tie-break regret=`0`。但这次成功掩盖了一个明确的机制错误:Frontier 认为同一 TP family 内四个 MNS/MBT config 完全等价,真机 TP8 capacity 却形成对角为 0.30、非对角为 0.20 req/s/GPU 的 checkerboard interaction。34 个 config-load labels 中有 10 个 false-infeasible;20 个 real non-tie pairs 中只保持 16 个方向。 +- 现有结果表明:**在已对齐的受控 case 中,绝对 capacity 有 gap、甚至 action differential 错误,都不必然妨碍 Frontier 找到当前 surface 的最优 config。** 统一 dash0 campaign 已完整覆盖 Qwen235 FP8 prefill-only 与 fixed-shape mixed,但仍不能外推到 trace-faithful mixed 或 decode-only,也不能忽略达到这种 fidelity 所需的真机 profile、KV capacity、runtime-semantic patch 或 calibration 成本。 + +因此,现阶段最准确的 research statement 不是“simulator 排序一定错误”,而是: + +> Simulator 的 usefulness 取决于 compatibility envelope。问题是需要多少、什么类型的真机信息,才能使其 config ranking 可被信任;以及当 workload、runtime 或 execution topology 变化时,如何低成本判断该 envelope 是否仍成立。 + +## 评测口径 + +对系统 `s ∈ {real, sim}` 和 config `c`,定义: + +```text +capacity_s(c) = max { tested offered rate r | empirical SLO pass rate(c, r) >= 0.95 } +``` + +所有结果使用 `capacity/实际占用 GPU 数` 作为 primary score。我们只报告实际测试到的最大可行点,不对未测试区间做连续插值,也不因观察到局部非单调就强制单调化。 + +核心指标如下: + +- **Top set**:达到各自最大 capacity 的全部 config,保留并列。 +- **Top-set hit/match**:simulator top set 是否与 real top set 有交集/完全相同。 +- **Worst tie-break regret**:若 simulator 给出多个并列最优,任取其中最差一个在真机上的损失: + + ```text + max[c in SimTop] (RealBest - capacity_real(c)) / RealBest + ``` + +- **Rank correlation**:有并列时优先使用 Kendall τ-b;Qwen235B 已有冻结分析使用 Spearman ρ,同时报告非 tie pair direction。 +- **Pairwise direction**:两两 config 的 `> / = / <` 是否一致。只报告 non-tied accuracy 时,会同时给出可比较 pair 数量。 + +这个定义也修正了之前的口径混用:内部 `throughput proxy` 不是“满足 SLO 的最大 throughput”,不能用来决定部署 config。本文的 Qwen30B 主结论因此取代 [旧 simulator fidelity 总结](docs/simulator-fidelity-frontier-20260711.md) 中基于 throughput-proxy 的 config-selection 结论;该旧读法仍可作为 simulator 内部机制误差的诊断证据。 + +## 实验 setup + +### Case A:Qwen3-30B-A3B mixed serving + +| 项目 | 设置 | +|---|---| +| 真机 | `dash0`,8×NVIDIA H20 | +| model | `Qwen/Qwen3-30B-A3B` | +| serving runtime | community vLLM `0.20.0`,CUDA 12.9 环境 | +| simulator | Frontier commit `d9cfeb6d8791fbf2f295dd9744c56a666171776e` | +| trace | `chat_w20260311_1000`,replay time scale=`0.1`,input 0--8192 tokens,output override=128 tokens,max concurrency=64 | +| SLO | 至少 95% requests 同时满足 TTFT 阶梯阈值(input ≤4096: 2s;≤32768: 4s;其余 6s)和 TPOT ≤50ms | +| config surface | `TP∈{1,2,4} × MNS∈{8,16,32,64}`,MBT=8192,共 12 cells | +| ground truth | 每个 cell 最多 8 个搜索 probes;92 个实测 anchors,共 27,583 个 request observations | +| simulator workload | 对每个 real anchor 重放同一冻结 request cohort 的 token length、arrival、request count 与 prefix block identities;old profile-only、calibrated、vLLM 0.20 profile-only 各 92 runs,合计 276/276 成功 | +| primary objective | SLO-feasible request throughput/GPU | + +我们区分两个 Frontier 条件: + +1. **Profile-only**:直接使用已有 H20 operator profiles,不用 serving E2E 数据修正时间尺度。 +2. **Frozen per-TP calibration**:使用 `TP1=0.723481, TP2=0.468089, TP4=0.352137` 三个 execution-time scales。它们在独立的 `coder_200_ts2` workload 上拟合,并在 `coder_200_ts3` 上冻结验证;本 `chat` surface 不重新拟合。该 scale 由外部 hook 在 Frontier 组成 batch execution time 后注入,并不是 Frontier 原生的 per-TP operator profiling 功能。 + +Frontier 原生 profile schema 可以按 `num_tensor_parallel_workers` 选择 TP-specific kernel rows;这与上面的 calibration 不同。第二个条件不是 zero-measurement prediction:它使用了同 model/hardware/runtime family 的真机 serving 数据,并能同时吸收 CUDA graph、fusion、routing、CPU launch 和 profile provenance 等残差。另一个限制是已有 H20 profiles 的生成栈与 ground-truth vLLM 0.20.0 并非严格同版本;per-TP calibration 吸收了相当一部分 execution-scale mismatch。 + +### Case B:Qwen3-235B-A22B-FP8 prefill-only + +| 项目 | 设置 | +|---|---| +| 真机 | `dash0`,8×NVIDIA H20(97,871 MiB/GPU,全互联 NV18),driver `580.95.05` | +| model | `Qwen/Qwen3-235B-A22B-FP8`,block-wise FP8 weights,BF16 KV cache | +| serving runtime | community vLLM `0.10.2`;Python 3.12.3、torch 2.8.0+cu128、FlashInfer 0.3.1.post1、Transformers 4.55.2;eager execution | +| simulator | Frontier commit `d9cfeb6d8791fbf2f295dd9744c56a666171776e` + 冻结的 FP8/MoE best-effort patches | +| source trace | `thinking_w20260327_1000`;从 15,409 个 eligible requests 中固定选择 64 个 length-stratified prompts | +| fixed cohort | seed=`2026071501`;input p50=1478、p95=18,439、max=29,385、mean=3511.55 tokens;output override=1 token | +| offered rates | 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.75, 1.00, 1.50 req/s;只缩放同一 cohort 的 arrival timeline | +| SLO | 至少 61/64 requests 满足 `TTFT ≤ 1000ms + input_tokens/8000 tokens/s` | +| config surface | `TP∈{4,8} × MNS∈{64,128} × MBT∈{8192,16384}`;实际 TP4 为 EP off,TP8 为 EP on | +| serving controls | prefix cache/speculative decoding off,chunked prefill on;每个 config fresh server,第二轮反转 config/rate 顺序 | +| primary objective | 最大被测试可行 offered rate / TP | + +这里比较的不是 stock Frontier。为建立公平的 FP8 compatibility envelope,我们先用同一 community-vLLM 0.10.2 栈在 H20 上测量 FP8 linear/attention/MoE/collective profiles,修复了 MoE FP8 tuning-key、Qwen MoE serving plan、TP/EP-aware cache key 与 critical-lane prediction,并输入真机测得的 KV block capacity(TP4=26,101;TP8=62,351)。Frontier refined outputs 在真机 v2/v3 ranking 运行前冻结,**没有使用本 case 的 serving capacity 做 end-to-end calibration**。 + +该 case 是有意设计的 prefill mechanism-isolation workload:output 固定为 1,prefix cache 关闭,并使用固定 64-request cohort。它不保持原 trace 的 output-length distribution 和 prefix reuse,因此不能被称为 trace-faithful workload,也不能代表 mixed serving。 + +## Workload fidelity 修正 + +`thinking_w20260327_1000` 的 600 秒原始窗口包含 15,479 requests,字段包括 exact prompt、arrival、`input_length`、`output_length`、session parent/turn 和 block-size=64 的 `hash_ids`。只读审计得到: + +| 属性 | 数值 | +|---|---:| +| natural offered rate | 25.798 req/s | +| input tokens | mean=3,660.0,p50=1,491,p95=19,610.6,p99=29,944.6,max=51,827 | +| output tokens | mean=3,924.6,p50=3,435,p95=8,945.1,p99=17,705.5,max=74,867 | +| total context | mean=7,584.6,p50=5,317,p95=25,102.1,p99=37,110.5,max=74,973 | +| rows with `hash_ids` | 15,479/15,479 | +| `len(hash_ids) == ceil(input_length/64)` | 15,479/15,479 | +| arrival-order repeated block ratio | 40.88% | +| input+output 超过 community model 40,960 context | 72 requests | +| output length=0 | 6 requests | + +因此,input/output/hash filtering 不是 trace fidelity 的默认要求。此前 fixed output length 是为了分别隔离 prefill 或 decode 机制;如果用它回答 production-trace fidelity,就属于错误 benchmark。新的实验矩阵固定为: + +| 层次 | Workload contract | Prefix contract | 回答的问题 | +|---|---|---|---| +| T0 fixed-shape | 固定 ISL、OSL、uniform QPS;所有 config 使用相同 request IDs/order | prefix off,使用等长但不同 token 的 prompts | 最简单条件下 execution/scheduler composition 是否匹配 | +| T1 trace-faithful mixed | 保留 trace 的 arrival、input、output、session;不使用 completion override | real 由 exact prompt tokens 自然计算 cache key;Frontier 消费等价 `block_hash_ids` | 在真实 joint distribution 下能否保持 config rank | +| T2 decode-only | output 保留 trace 或受控固定值;input length 表示 request 到达时已存在的 KV residency | initial-KV state 单独冻结;不得用一次 1-token prefill 冒充 | KV residency、decode batching、TP/DP/EP coupling 下能否保持 rank | + +T1 中只允许两类有记录的排除:模型 context 上限不支持的 72 requests,以及 API 无法形成 completion 的 6 个 zero-output rows;二者不重叠,最终 eligible universe 为 15,401/15,479 requests(99.50%)。排除后 input/output/total 的均值分别为 3,575.0/3,823.3/7,398.2 tokens,p95 分别为 18,887/8,768/23,697,说明没有把 workload 人为变成 short-request case。其余请求不能因为“跑得慢”或“方便形成 cohort”被选择性移除。capacity search 只通过 trace 已有、同 session 共享的 `sampling_u` 做与长度无关的 session-coherent thinning;每个被选 request 的 arrival、input、output、prompt、hash 和相对次序均保持不变。完整 eligible universe 是抽样母体和最终 workload 声明,不用 length-stratified cohort 代替。 + +全量 tokenizer audit 进一步验证了 15,401/15,401 个 eligible prompts、共 55,057,919 tokens 的实际 community-Qwen token 数与 trace `input_length` 完全一致。在 867,538 个 source blocks 上,`hash_id` 与 `(parent_hash_id, 64-token chunk)` 的双向映射也没有发现冲突。因此 exact prompt 和 source hash 足以保留该 trace 的 prefix-equivalence relation,不需要用 synthetic length-only prompt 替代。 + +trace 的 source hash block size 为 64,而 community vLLM 0.10.2 的 CUDA KV block size 不能直接设置为 64。下一轮实验冻结 real 与 Frontier 的 block size 都为 16:从 exact prompt token IDs 重新生成 block-16 parent/content identities,并用 source `hash_ids` 验证每四个完整 block-16 所对应的 64-token equality/reuse relation。tokenized length、request order、cache query/hit/allocated blocks 仍必须在两侧逐请求核对;上面的离线 audit 不能代替 runtime counter parity。 + +## 总体结果 + +| Case / simulator 条件 | configs | real optimum | simulator top set | top-set 结论 | rank / pairwise | worst regret | 判断 | +|---|---:|---|---|---|---|---:|---| +| Qwen30 mixed / old profile-only | 12 | TP2,MNS32 | TP4,MNS32/64 | miss | τ-b=0.000;exact sign=37.88% | 25.63% | 排序错误 | +| Qwen30 mixed / vLLM 0.20 profile-only | 12 | TP2,MNS32 | 全部 12 configs | 不可辨识 | τ-b=0.000;exact sign=7.58% | 60.91% | 同栈 raw profile 仍不足 | +| Qwen30 mixed / frozen per-TP calibration | 12 | TP2,MNS32 | TP2,MNS32/64 | hit,非 exact | τ-b=0.9668;exact sign=93.94% | 0.76% | dash0 | +| Qwen235 FP8 prefill / best-effort | 8 | TP4,MBT16K,MNS64/128 | 与 real 完全相同 | exact match | ρ=0.9487;non-tied 20/20 | 0 | 足以选最优 config | +| Qwen235 FP8 fixed-shape mixed / frozen full profile | 8 | 四个 TP4 configs | 与 real 完全相同 | exact match | τ-b=0.8944;exact sign=24/28;real non-tie=16/20 | 0 | 选对 topology;漏掉 TP8 MNS×MBT interaction | + +最重要的区别是:Qwen30 的 high-fidelity 结果依赖 per-TP E2E calibration;Qwen235 的 high-fidelity 结果不依赖本 case 的 E2E calibration,但依赖同 runtime/hardware 的 operator profile、真实 KV capacity 和多处 compatibility fixes。二者都不能表述为“拿 stock Frontier 零成本预测即可”。 + +## Case A baseline 结果:Qwen30 mixed serving + +![Qwen3-30B mixed serving simulator-vs-real config ranking](docs/assets/simulator-fidelity/qwen30-mixed-config-ranking.png) + +图中 config 按真机 capacity 从高到低排列。上图显示 profile-only Frontier 选错 TP family;下图显示冻结 per-TP calibration 后,simulator 基本恢复了有用排序。 + +| Config | Real | Frontier profile-only | Frontier calibrated | Calibrated − real | +|---|---:|---:|---:|---:| +| TP1, MNS8 | 2.1000 | 1.1000 | 1.7167 | -0.3833 | +| TP1, MNS16 | 2.3500 | 1.1000 | 2.3833 | +0.0333 | +| TP1, MNS32 | 2.2833 | 1.1000 | 2.3833 | +0.1000 | +| TP1, MNS64 | 2.2833 | 1.1000 | 2.3833 | +0.1000 | +| TP2, MNS8 | 2.2750 | 0.0000 | 1.7417 | -0.5333 | +| TP2, MNS16 | 2.2750 | 1.1917 | 2.3000 | +0.0250 | +| **TP2, MNS32** | **3.2833** | 0.0000 | **3.7500** | +0.4667 | +| TP2, MNS64 | 3.2583 | 0.0000 | **3.7500** | +0.4917 | +| TP4, MNS8 | 1.2833 | 0.0000 | 1.3208 | +0.0375 | +| TP4, MNS16 | 2.4417 | 0.0000 | 2.5000 | +0.0583 | +| TP4, MNS32 | 2.4417 | **1.3208** | 2.5000 | +0.0583 | +| TP4, MNS64 | 2.4417 | **1.3208** | 2.5000 | +0.0583 | + +单位均为 SLO-feasible req/s/GPU。`0.0000` 表示该 config 在复用的 tested anchors 中没有被 Frontier 判为 SLO-feasible,不代表硬件在零负载下也无法运行。 + +相对排序方面: + +- Profile-only 的 top set 为 TP4/MNS32、TP4/MNS64;两者真机 capacity 都是 2.4417,而 real optimum TP2/MNS32 是 3.2833,因此 regret 为 `1−2.4417/3.2833=25.63%`。 +- Calibrated Frontier 把 TP2/MNS32 和 TP2/MNS64 判为并列。前者是真机唯一最优,后者低 `0.025 req/s/GPU`;因此 optimistic regret=0,worst tie-break regret=`0.76%`。 +- Calibrated absolute error 并不是一个全局常数:TP2/MNS8 被低估 0.5333,而 TP2/MNS32/64 被高估约 0.47--0.49。**选对 config 不代表 simulator 已正确解释每个 state/action 的性能。** +- 92 个 anchor-level SLO 判定中,calibrated Frontier 仍有 21 个 false-feasible、7 个 false-infeasible;aggregate top set 正确部分来自 cell boundary 上误差抵消。因此该条件足以做本 surface 的 near-optimal selection,但不能替代真机 SLO certification。 + +### 同栈 vLLM 0.20 per-TP profile 消融 + +为了判断上述差异是否只是旧 operator profile 与真实 serving 版本不一致,我们在 `dash0` 上使用 ground-truth 相同的 community vLLM `0.20.0` source commit `88d34c6409e9fb3c7b8ca0c04756f061d2099eb1`、Qwen3-30B-A3B BF16 与 H20,重新测量 TP1/2/4 profiles。Frontier code、92 个 trace fixtures、SLO、KV capacity、config surface、communication backend 与随机种子保持不变;这轮只替换 compute profiles,不使用本 surface 的 serving latency 拟合 scale。 + +| Profile component | 冻结行数 | 测量与使用方式 | +|---|---:|---| +| attention + KV | 132 | 102 个 pure prefill/decode rows;30 个 true-mixed rows由同 TP pure profile 比例做 total-conserving split | +| fused mixed diagnostic | 30 | 保存 vLLM FA3 实测 fused total;不作为 Frontier 的第三个 target | +| linear / norm / RoPE / router | 36 | vLLM 0.20 CUDA operator | +| MoE | 72 | TP1/2/4 local-shard shapes × 12 token sizes × uniform/random/hotset8 routing | +| all-reduce | 24 | TP2/4 实测;本 base comparison 不注入,用来诊断 communication,保持历史 analytical CC backend 不变 | + +attention、linear 和 MoE 的 `TP` 字段改变的是单张 H20 上的 local-shard shape;它们不是一次 distributed full-engine graph replay。只有 all-reduce 使用真实 TP2/4 ranks 测量。该限制是实验设计的一部分:本消融回答“把相同 runtime 的 isolated operator profiles 换进去是否足够”,而不是预先假设 isolated profile 已等价于真实 execution counterfactual。 + +![Qwen3-30B vLLM 0.20 profile-only ablation and execution-context diagnostics](docs/assets/simulator-fidelity/qwen30-vllm020-profile-ablation.png) + +完整 92-probe 结果如下。`0` 表示复用的 anchors 中没有一个被 simulator 判为 SLO-feasible;它既不表示零负载硬件 capacity,也不能被解释成“因为真实最优 config 位于并列集合中所以 top-set hit”。当所有 config 都并列时 simulator 没有选择信息,故 primary 指标是 worst tie-break regret。 + +| Frontier 条件 | Sim top set | τ-b | Exact pair sign | Worst regret | Anchor labels:agree / false feasible / false infeasible | +|---|---|---:|---:|---:|---:| +| old profile-only | TP4,MNS32/64 | 0.0000 | 37.88% | 25.63% | 37 / 0 / 55 | +| vLLM 0.20 profile-only | 全部 12 configs | 0.0000 | 7.58% | 60.91% | 30 / 0 / 62 | +| frozen per-TP calibration | TP2,MNS32/64 | 0.9668 | 93.94% | 0.76% | 64 / 21 / 7 | + +若忽略 SLO,仅按 simulator 完成 throughput proxy 排序,新 profile 的 top-1 是 TP1/MNS64,真机 regret 仍为 `30.46%`,τ-b=`0.3940`,non-tied pair concordance=`70.49%`。这只是 failure diagnosis,不能替代本文定义的 SLO-feasible capacity objective。两路 CPU shard 都是 46/46 PASS,合计 simulator runtime 为 2,394.9 s(0.665 CPU-hour);所以结果不是 crash、missing row 或未完成运行造成的。 + +#### 为什么相同 operator provenance 仍不等于 execution fidelity + +证据把 mismatch 收敛到以下三个相互耦合的层面: + +1. **Execution regime 随 scheduler state 改变。** 6 个真实 P1 cells 共记录 161,161 个 model steps。151,471 个 pure-decode steps 全部使用 FULL CUDA graph;224 个 pure-prefill steps 中 192 个为 NONE、30 个 PIECEWISE、仅 2 个 FULL;9,466 个 true-mixed steps 中 8,623 个为 NONE、842 个 PIECEWISE、仅 1 个 FULL。本轮 isolated profiles 则关闭 CUDA graph,Frontier comparison 也固定 `decode_cuda_graph_mode=none`。同一个 nominal operator 在不同 phase/state 下并不是同一个 launch/fusion regime。 +2. **Mixed attention schema 不保真。** vLLM 0.20 的 FA3 对 true-mixed batch 执行一个 fused varlen call;Frontier 必须分别得到 `attn_prefill` 与 `attn_decode_in_mixed`。不做 split 时 simulator 在第一个 mixed batch 明确报 missing prediction;采用 pure-profile ratio split 虽保持 `prefill + decode = fused total`,但 split 是兼容性归因而非真实观测。scheduler 使用这个虚构分解推进后续状态,误差会累积。 +3. **MoE routing 不是固定先验。** 对 exact trace 的 8 个 requests、48 层 native routing capture,实际 median load CV 在 prefill/decode 分别为 `1.076/1.107`,median max/mean expert load 为 `6.12/5.64`;Frontier 固定的 per-layer Uniform prior 分别只有 `0.485` 与 `1.84`。实际与 Frontier expert allocation 的逐层 Pearson median 接近 0(prefill `-0.017`、decode `-0.024`),而 Frontier 在所有 phase 复用相同 allocation,prefill/decode correlation 被固定为 1.0;真实 median correlation 为 `0.667`。8-request capture 是 mechanism probe,不是 workload population estimate,但足以否证“固定 routing vector 等价于该 trace execution”的假设。 + +更直接地,在同一个 `tp1_mns64` fixture、`batch_id=0/layer_id=0`、两条 trajectory 尚未分叉时,新 profile 的 layer component sum 已是旧 profile 的 `2.70×`(1.148→3.101 ms):MoE grouped GEMM 为 `3.76×`、RoPE `7.39×`、attention prefill `2.67×`。这说明版本更新没有产生一个小而一致的 correction;不同 components 的误差方向和幅度不同,随后又通过 scheduler queue、batch composition、graph mode 与 routing 反馈到下一个 state。 + +因此本实验否证 H1:**Frontier 原生支持按 `num_tensor_parallel_workers` 选择 per-TP profile rows,而且 attention/MoE kernel 也确实可以逐 TP 测量;真正缺失的是 scheduler state 与 execution regime 条件化的 joint counterfactual。** TP 和 MNS 不能拆开:TP 改变 shard、collective、replica capacity、routing placement 与 graph shape,MNS 改变 batching/queue evolution;两者共同决定 phase mixture 和 execution mode。历史 per-TP calibration 是 composition 之后的外部 E2E scale,因此能吸收这些残差,但它不是机制解释,也不是 Frontier 原生 profiling。 + +下一轮不应继续盲目加 isolated rows,而应依次做可证伪的 context ablation:按 FULL pure-decode、NONE/PIECEWISE prefill/mixed 建立 graph-conditioned step profiles;保留 fused mixed layer/step total 而不是要求不可观测的拆分;用 trace-conditioned per-layer/request/phase routing histogram 替换固定先验;再单独注入 measured collective。每次只改变一个条件,最终仍在完整 `TP×MNS` joint surface 上以 SLO ranking 验证,frozen calibration 只作为可达到的上界。 + +本次 accepted profile jobs 使用约 0.118 H20-GPU-hour;包括 smoke 和失败 attempt 的完整 campaign 为 0.410 H20-GPU-hour。冻结 profile、manifest、condensed artifacts 与作图脚本位于 `runs/frontier-qwen30-vllm020-profile-v1/`。 + +## Case B 结果:Qwen235 FP8 prefill-only + +![Qwen3-235B FP8 prefill-only simulator-vs-real config ranking](docs/assets/simulator-fidelity/qwen235-prefill-config-ranking.png) + +| TP | EP | MNS | MBT | Real | Frontier | Frontier − real | +|---:|---:|---:|---:|---:|---:|---:| +| 4 | off | 64 | 8192 | 0.05000 | 0.03750 | -0.01250 | +| 4 | off | 128 | 8192 | 0.05000 | 0.03750 | -0.01250 | +| 4 | off | 64 | 16384 | **0.07500** | **0.06250** | -0.01250 | +| 4 | off | 128 | 16384 | **0.07500** | **0.06250** | -0.01250 | +| 8 | on | 64 | 8192 | 0.05625 | 0.05000 | -0.00625 | +| 8 | on | 128 | 8192 | 0.05625 | 0.05000 | -0.00625 | +| 8 | on | 64 | 16384 | 0.05625 | 0.05625 | 0.00000 | +| 8 | on | 128 | 16384 | 0.05625 | 0.05625 | 0.00000 | + +单位均为 SLO-feasible req/s/GPU。这里 Frontier 对 capacity 有明显、且依赖 topology/action family 的绝对 gap: + +- TP4/MBT8K 与 TP4/MBT16K 都低估 0.0125 req/s/GPU,但正确预测了 MBT8K→16K 的相对增益。 +- TP8/MBT8K 低估 0.00625,而 TP8/MBT16K 恰好匹配;Frontier 因而预测 MBT 在 TP8 上有收益,真机中四个 TP8 config 实际并列。 +- 尽管这个 action differential 是错的,TP4/MBT16K 相对其余 config 有足够 margin,所以 simulator top set 仍与 real top set 完全相同,最终 regret=0。 + +细化边界实验中,Frontier/real 的 33 个 config-load labels 有 6 个 false-infeasible;这些误差在 fresh-server v3 复测中稳定重复。因此这个 case 的结论应严格限定为:**Frontier 是有效的 config ranker / conservative screener,但不是精确的 capacity estimator,也没有完全学对 topology-dependent MBT effect。** + +## Case C 结果:Qwen235 FP8 fixed-shape mixed + +2026-07-16 在 `dash0` GPU 0--3 上完成了 community vLLM 0.10.2、TP4/DP1、MNS64、MBT8192、eager、BF16 KV、prefix/spec/CUDA graph off 的 pilot。所有请求实际 usage 和 streaming token count 都严格为 ISL=2,048、OSL=128: + +| load | requests | TTFT mean/p95 | TPOT mean/p95 | 40 ms joint SLO | +|---|---:|---:|---:|---:| +| single | 1 | 586.2 / 586.2 ms | 136.2 / 136.2 ms | 0/1 | +| concurrency=2 | 2 | 310.2 / 434.3 ms | 124.3 / 124.9 ms | 0/2 | + +Frontier 使用与成功 prefill ranking 相同的 frozen source fingerprint、TP4 KV blocks=26,101 和 block size=16。第一次运行完成 prefill 并提交第一个 decode token后,在纯 decode batch 抛出 `attention decode prediction cache not found for cluster monolithic`。初始化日志给出直接原因:`no standard decode rows`,而 final attention CSV 的 726 rows 全部是 prefill rows。该 crash 没有被记为 SLO fail,也没有使用 dummy prediction。 + +随后在 `dash0` 单张 H20 上用同一 community-vLLM/FlashInfer 栈补测 TP4、batch `{1,2}`、KV `{2048,2176}` 的 4 个 CUDA-event decode points。profile-closed Frontier smoke 精确完成了相同请求: + +| load | Real TTFT | Frontier TTFT | Real TPOT | Frontier TPOT | +|---|---:|---:|---:|---:| +| single | 586.2 ms | 267.7 ms | 136.2 ms | 88.3 ms | +| concurrency=2 | 186.1--434.3 ms | 470.7 ms | 123.8--124.9 ms | 90.5 ms | + +因此 missing-row blocker 已关闭,但 absolute error 明显且不是固定比例;这正是需要 config surface 而不能只看单点 latency 的原因。steady-QPS 下还会出现 prefill+decode true-mixed batches,最小 4-row profile 不足以支持完整 sweep。完整 closure 另外测量了 TP4/TP8 各 81 个 standard-decode points 和 108 个 true-mixed points,覆盖 decode batch 到 128、KV 2,048--2,175;合并 root 共 1,104 rows。Frontier 已确认用 108 个 TP-specific samples 训练 `attn_decode_in_mixed`,没有使用本 case 的 E2E latency calibration。 + +完整 8 configs × 8 rates simulator surface 已在任何真机 surface cell 之前冻结,manifest SHA256 为 `801aa36451c8647f71cc87011144622d2203786e82f189ed1375d964399b106a`。64/64 cells 都有 64 个 finite、非负、shape-exact request records,累计 simulator CPU time 为 11,675.2 s。冻结结果如下,单位为最大被测试可行 req/s/GPU: + +| config family | TPOT 40 ms | TPOT 120 ms | TPOT 150 ms | TPOT 180 ms | +|---|---:|---:|---:|---:| +| TP4,任意 MNS/MBT | none | 0.20 | 0.40 | 0.60 | +| TP8,任意 MNS/MBT | none | 0.05 | 0.15 | 0.20 | + +Frontier 在同一 TP family 内给四个 MNS/MBT config 生成了逐 request 完全相同的结果,即它预测这些 controls 在当前 load range 都不 binding;150 ms sensitivity 下则预测 TP4 family 的 per-GPU capacity 是 TP8 的 2.67×。这两个判断均已用下面的完整真机 surface 检验。 + +第一次真机 surface attempt 还暴露了一个 measurement-contract 问题:一个 fresh server 内连续测多个 rates 会把前一 anchor 的 execution warm state 带入后一 anchor。两个 TP4/MNS64 config 在正向 `0.10→1.60→2.40` 的 1.60 点分别只有 36/64、41/64 requests 通过 150 ms SLO;反向先运行 2.40 后,同一 1.60 点都变成 64/64。逐段看,正向 1.60 的前 24 requests TPOT 从约 234 ms 递减到 169 ms,后半段才稳定到 114--134 ms;反向 1.60 从第一个 request 起就在 113--128 ms。这个 attempt 整体排除,不能用“两个 round 都通过”的保守聚合掩盖 real 与 simulator 的 state contract 不同。 + +修正后的 ground-truth contract 对每个 `(config, rate, round)` 独立启动 server,并在目标 rate 下丢弃 `min(32, max(4, ceil(rate×20)))` 个 exact-shape warmup requests。anchor-isolation smoke 在两个 config、两个 fresh-server repeats 上均为 64/64 completed、0 failure、150 ms SLO 64/64;四次 p95 TPOT 为 127.8--138.0 ms,p95 TTFT 为 295.8--305.5 ms。只有这个通过 gate 的 contract 会进入最终 real capacity/rank。 + +### 完整评测 setup + +| 项目 | 设置 | +|---|---| +| 真机 | `dash0`,8×NVIDIA H20(97,871 MiB/GPU、driver 580.95.05、NV18);TP4 cells 各独占 4 GPU,TP8 cells 独占全部 8 GPU | +| model/runtime | `Qwen/Qwen3-235B-A22B-FP8`;community vLLM 0.10.2、Python 3.12.3、torch 2.8.0+cu128、FlashInfer 0.3.1.post1;eager、FP8 weights、BF16 KV | +| workload | 64 个不同 token 的固定长度 requests;ISL=2,048、OSL=128、uniform QPS、prefix/speculative decoding/CUDA graph off | +| config surface | `TP∈{4,8} × MNS∈{64,128} × MBT∈{8192,16384}`;TP4 为 EP off,TP8 为 EP on | +| simulator | Frontier commit `d9cfeb6d8791fbf2f295dd9744c56a666171776e` + frozen best-effort patches;1,104-row attention profile;无本 case E2E calibration | +| simulator anchors | 每个 config 都运行 `{0.10,0.20,0.40,0.80,1.20,1.60,2.40,3.20}` req/s;64/64 cells 在真机 surface 前冻结 | +| real anchors | 围绕冻结 simulator boundary 运行并自适应补齐相邻点;共 34 config-rate cells × 2 independent rounds | +| 每个 real anchor | fresh vLLM server;先按目标 rate 丢弃 `min(32,max(4,ceil(rate×20)))` 个 warmup requests,再从空 scheduler queue 测 64 requests | +| primary SLO | ≥61/64 requests 同时满足 TTFT≤1,256 ms、TPOT≤150 ms;两个 rounds 均通过才判定 feasible | +| primary objective | 最大被测试可行 offered req/s / 实际占用 GPU 数 | + +150 ms 是看到最低负载真实 TPOT 已达 136.2 ms 后公开记录的 post-pilot amendment;原 40 ms 阈值仍保留,但所有 config 在最低 anchor 都不可行。120 ms sensitivity 的 lower boundary 尚未补齐,180 ms sensitivity 在最高 3.20 anchor 仍有 censored cells,因此本文只对 150 ms primary SLO 报告完整 ranking。 + +### 完整结果 + +![Qwen3-235B fixed-shape mixed simulator-vs-real config ranking](docs/assets/simulator-fidelity/qwen235-t0-fixed-shape-ranking.png) + +| TP | MNS | MBT | Real | Frontier | Real boundary:pass → fail(两个 rounds) | +|---:|---:|---:|---:|---:|---| +| 4 | 64 | 8192 | **0.60** | **0.40** | 2.40: 64/64,64/64 → 3.20: 57/64,59/64 | +| 4 | 64 | 16384 | **0.60** | **0.40** | 2.40: 64/64,64/64 → 3.20: 62/64,57/64 | +| 4 | 128 | 8192 | **0.60** | **0.40** | 2.40: 64/64,64/64 → 3.20: 53/64,55/64 | +| 4 | 128 | 16384 | **0.60** | **0.40** | 2.40: 64/64,64/64 → 3.20: 52/64,54/64 | +| 8 | 64 | 8192 | 0.30 | 0.15 | 2.40: 64/64,64/64 → 3.20: 46/64,48/64 | +| 8 | 64 | 16384 | 0.20 | 0.15 | 1.60: 64/64,64/64 → 2.40: 45/64,53/64 | +| 8 | 128 | 8192 | 0.20 | 0.15 | 1.60: 64/64,64/64 → 2.40: 40/64,56/64 | +| 8 | 128 | 16384 | 0.30 | 0.15 | 2.40: 64/64,64/64 → 3.20: 50/64,46/64 | + +Real 与 Frontier 单位均为 SLO-feasible req/s/GPU;boundary 的 offered rate 单位为 system req/s。所有 8 个 real boundaries 都由相邻 lattice points 闭合。四个 TP4 configs 是 real 与 simulator 的共同、完全相同的 top set,因此 optimistic/worst tie-break regret 都是 0。Kendall τ-b=`0.8944`;28 个 config pairs 中 exact `>/< /=` sign 命中 24 个,20 个 real non-tie pairs 中命中 16 个方向。34 个实际测量的 config-load labels 中,Frontier 命中 24 个,有 10 个 false-infeasible、0 个 false-feasible。 + +这个结果同时给出一个比“absolute error”更重要的反例。TP8 真机在 2.40 system req/s 上的 feasibility matrix 是: + +```text + MBT 8K MBT 16K +MNS 64 pass fail +MNS 128 fail pass +``` + +换成 capacity,`ΔMBT | MNS64 = -0.10`,而 `ΔMBT | MNS128 = +0.10 req/s/GPU`,difference-in-differences 为 `+0.20 req/s/GPU`。也就是说,**MBT 的作用方向取决于 MNS;它们不能被看成两个独立、可加的 controls。** Frontier 对四个 TP8 cells 都预测 0.15,interaction 恰好为 0。相同四个 configs 在 1.60 及以下都通过,差异只在持续高负载下出现,说明问题不只是单个 operator 在空载下的固定时间偏差,而发生在 batching/scheduling state 与 execution topology 的组合上。现有数据还不能区分具体是 batch composition、MoE EP communication、memory/KV pressure,还是 runtime 的其他动态状态;下一步应对此边界做 scheduler batch trace、per-step kernel/NCCL timeline 与 KV/queue counters,而不是先给出未经验证的根因。 + +因此本 case 的严格结论是:**Frontier 足以在这个 8-config surface 上选择全局最优 topology,但不足以解释或优化 TP8 family 内的 MNS/MBT controls。** 成功来自 TP4-vs-TP8 的真实 margin 足够大,能够容忍 TP4 33.3%、TP8 25%--50% 的 capacity 低估和内部 action-ordering error;它不是 simulator 已获得 scheduling/execution 深层认知的证据。 + +接受的 ground-truth 共 18 个 fleet jobs、68 个 fresh-server anchors、4,352 个 measured requests 和 1,664 个 warmup requests,消耗 36.26 H20-GPU-hours;从第一个 accepted job 到最后一个完成的墙钟跨度为 5.74 小时。增量 full-attention closure 在单张 H20 上运行 12 秒(0.0033 H20-GPU-hours),但它复用了此前已有的 726-row prefill profile,因此这个数字不是构建全部 compatibility envelope 的总成本。另有共享 GPU/endpoint 的污染 attempts 和暴露 cross-anchor warm-state leakage 的 diagnostic attempts 被整目录隔离,不进入上述统计。Frontier 64-cell surface 消耗 11,675.2 CPU-seconds。完整 hash、逐 anchor input 与排除 ledger 见本节末的复现链接。 + +完整证据见 [T0 smoke report](runs/frontier-multicase-sufficiency-v1/t0-smoke-report.md) 与 [预注册协议](runs/frontier-multicase-sufficiency-v1/protocol.md)。 + +原预注册的 TPOT 40 ms 因最低负载已不可行而失去 capacity-ranking 可辨识性;本文已把 150 ms 明确记录为 post-pilot protocol amendment,并保留 40 ms 全部失败的 sensitivity 结果,没有把 SLO change 隐藏成预注册结论。 + +## 尚不能纳入 simulator ranking 的 case + +### 原 internal-runtime Qwen235 prefill-only + +原实验有 8/8 valid real cells,但使用不同的 serving/runtime contract,real top set 是四个 TP8 config。它没有与本文 best-effort Frontier 使用同一个 community-vLLM FP8 profile/serving contract,不能和新 simulator 数值直接拼接。本文的 community-vLLM Case B 是目前可辩护的 aligned prefill comparison。 + +### 原 Qwen235 decode-only + +真实 surface 有 7/8 valid cells,且 capacity 搜索区间大量重叠:经验 top set 为 5/8,而考虑 bracket uncertainty 时 8/8 都可能最优。更关键的是,该 case 依赖 initial KV state、DecodeBenchConnector、EAGLE3、FP8 KV、DeepEP/NVSHMEM 与 decode CUDA graphs;Frontier 当前没有等价的 initial-KV/EP8 execution contract。因此现在给出 simulator-vs-real rank 或 regret 都会把 contract mismatch 误写成 fidelity 结果。 + +下一步不再用 decode-dominant mixed workload 回避问题,而是在 community vLLM 0.10.2 与 Frontier 两侧增加显式、相同的 initial-KV contract:request 到达时分配与 input length 对应的 KV blocks、标记 prefill complete,再从第一步 decode 开始调度。首先关闭 speculative decode、prefix cache 和 decode CUDA graph,建立 fixed-shape decode-only baseline;随后按单变量顺序启用 trace lengths/prefix、EP8、EAGLE3 和 FULL_DECODE_ONLY graph。每一层都重新报告 ranking,不能把后一层的 mismatch 归因给前一层。 + +## 当前判断与下一步 gate + +当前证据的结论是: + +1. **绝对 gap 不是否决 simulator 的理由。** Qwen235 中 11%--50% 的 capacity 低估仍可保持 zero-regret config selection。 +2. **但 rank 成功不能证明模型机制正确。** Qwen235 prefill 的 TP8 MBT differential 错误,fixed-shape mixed 又漏掉 TP8 的 MNS×MBT 非加性交互;Qwen30 还有 28/92 anchor SLO labels 错误。只是当前 decision margin 足以容忍这些 residual。 +3. **alignment 是结果的一部分。** Qwen30 需要 per-TP E2E calibration 才能恢复排序;Qwen235 不需要本 case E2E calibration,但需要同栈 FP8 profiles、真机 KV capacity 和 simulator patches。论文必须报告这部分真机成本,不能把它隐藏在“offline profiles”中。 +4. **目前不能建立“simulator 全局选优普遍失败”的 premise。** 受控 prefill、fixed-shape mixed 和历史 mixed surface 上,经过 alignment 的 Frontier 已经能选到最优或 0.76% 内的近最优 config。更有证据的 research premise 是:aggregate selection success 会掩盖 action interaction 与 state-transition model 的错误;若要声称全局选优失败,仍必须在 dash0 的 trace-faithful mixed、decode-only、prefix cache 或跨 topology case 上得到稳定反例。 + +后续每个 case 建议使用同一 gate:worst selected-config regret ≤5%、tie-aware rank correlation ≥0.8、足够数量的 informative pairs、ground-truth bracket 不足以反转最优决策,并单独报告达到该结果所需的 real-GPU profiling/calibration cost。 + +## 数据与复现 + +- 图表输入:[data.json](docs/assets/simulator-fidelity/data.json) +- 画图脚本:[plot_simulator_fidelity.py](scripts/plot_simulator_fidelity.py) +- Qwen30 audit:[report.md](runs/frontier-multicase-sufficiency-v0/results/qwen30-baseline/report.md) +- Qwen30 aligned metrics:[metrics.json](runs/frontier-slo-alignment-v0/results/metrics.json) +- Qwen235 fixed-cohort comparison:[v2_refined_comparison.json](runs/frontier-multicase-sufficiency-v0/best_effort/fixed_cohort_evidence/v2_refined_comparison.json) +- Qwen235 full report:[report.md](runs/frontier-multicase-sufficiency-v0/best_effort/fixed_cohort_evidence/report.md) +- Fixed-shape mixed comparison:[comparison.json](runs/frontier-multicase-sufficiency-v1/results/t0-final/comparison.json) +- Fixed-shape mixed capacity table:[capacity.csv](runs/frontier-multicase-sufficiency-v1/results/t0-final/capacity.csv) +- Frozen Frontier surface:[frontier_surface_frozen.json](runs/frontier-multicase-sufficiency-v1/artifacts/frontier-t0-surface-v1/frontier_surface_frozen.json) +- Executed real plan:[real-plan-executed.json](runs/frontier-multicase-sufficiency-v1/artifacts/t0-real-surface-v1/real-plan-executed.json) +- Real exclusions/acceptance ledger:[exclusions.json](runs/frontier-multicase-sufficiency-v1/artifacts/t0-real-surface-v1/exclusions.json) +- Fixed-shape / trace-faithful / decode-only 分阶段协议:[protocol.md](runs/frontier-multicase-sufficiency-v1/protocol.md) +- Trace tokenizer/hash contract audit:[trace-contract-audit.json](runs/frontier-multicase-sufficiency-v1/trace-contract-audit.json) +- Trace contract audit reproducer:[audit_trace_contract.py](runs/frontier-multicase-sufficiency-v1/audit_trace_contract.py) +- T0 real smoke 与 Frontier decode-profile failure:[t0-smoke-report.md](runs/frontier-multicase-sufficiency-v1/t0-smoke-report.md) +- 尚未对齐 case 的 real-only audit:[report.md](runs/frontier-multicase-sufficiency-v0/results/ground-truth/report.md) + +重新生成 PNG/SVG: + +```bash +python3 scripts/plot_simulator_fidelity.py +```