From 059f0a4ca1c57adae236ccf000e31d69220e1695 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 8 Oct 2024 08:34:55 -0700 Subject: [PATCH 1/4] Initial commit for Crusoe recipes, beginning with vLLM tutorial on benchmarking fp8. --- recipes/3p_integrations/crusoe/README.md | 11 + .../3p_integrations/crusoe/vllm-fp8/README.md | 85 ++ .../vllm-fp8/assets/tpot_vs_qps_chart.png | Bin 0 -> 340076 bytes .../vllm-fp8/assets/ttft_vs_qps_chart.png | Bin 0 -> 295159 bytes .../crusoe/vllm-fp8/benchmarks/README.md | 8 + .../benchmarks/backend_request_func.py | 427 ++++++++++ .../vllm-fp8/benchmarks/benchmark_latency.py | 285 +++++++ .../benchmarks/benchmark_prefix_caching.py | 198 +++++ .../vllm-fp8/benchmarks/benchmark_serving.py | 770 ++++++++++++++++++ .../benchmarks/benchmark_throughput.py | 460 +++++++++++ .../vllm-fp8/benchmarks/launch_tgi_server.sh | 16 + .../crusoe/vllm-fp8/benchmarks/sonnet.txt | 518 ++++++++++++ .../crusoe/vllm-fp8/convert_hf_to_fp8.py | 59 ++ .../3p_integrations/crusoe/vllm-fp8/main.tf | 41 + .../3p_integrations/crusoe/vllm-fp8/plot.py | 72 ++ .../crusoe/vllm-fp8/pyproject.toml | 12 + .../crusoe/vllm-fp8/run_benchmark.sh | 12 + 17 files changed, 2974 insertions(+) create mode 100644 recipes/3p_integrations/crusoe/README.md create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/README.md create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/assets/tpot_vs_qps_chart.png create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/assets/ttft_vs_qps_chart.png create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/README.md create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/backend_request_func.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_serving.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py create mode 100755 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/sonnet.txt create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/convert_hf_to_fp8.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/main.tf create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/plot.py create mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/pyproject.toml create mode 100755 recipes/3p_integrations/crusoe/vllm-fp8/run_benchmark.sh diff --git a/recipes/3p_integrations/crusoe/README.md b/recipes/3p_integrations/crusoe/README.md new file mode 100644 index 000000000..fc13af0c5 --- /dev/null +++ b/recipes/3p_integrations/crusoe/README.md @@ -0,0 +1,11 @@ +Below are recipes for deploying common Llama workflows on [Crusoe's](https://crusoe.ai) high-performance, sustainable cloud. Each workflow corresponds to a subfolder with its own README and supplemental materials. Please reference the table below for hardware requirements. + +| Workflow | Model(s) | VM type | Storage | +|:----: | :----: | :----:| :----: | +| [Serving Llama3.1 in FP8 with vLLM](vllm-fp8/) | [meta-llama/Meta-Llama-3.1-70B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct), [meta-llama/Meta-Llama-3.1-8B-Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) | l40s-48gb.8x | 256 GiB Persistent Disk | + +# Requirements +First, ensure that you have a Crusoe account (you can sign up [here](https://console.crusoecloud.com/)). We will provision resources using Terraform, please ensure that your environment is configured and refer to the Crusoe [docs](https://github.com/crusoecloud/terraform-provider-crusoe?tab=readme-ov-file#getting-started) for guidance. + +# Serving Models +Some recipes in this repo require firewall rules to expose ports in order to reach the inference server. To manage firewall rules, please refer to our [networking documentation](https://docs.crusoecloud.com/networking/firewall-rules/managing-firewall-rules). diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/README.md b/recipes/3p_integrations/crusoe/vllm-fp8/README.md new file mode 100644 index 000000000..1c26f9413 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/README.md @@ -0,0 +1,85 @@ +In this article, we will show how to benchmark FP8 models on L40S using the vLLM inference engine. At the end, you should have an understanding of how to use `llm-compressor` to create quantize existing Llama3 finetunes in higher precision to fp8, benchmark throughput and latency to compare performance, and finally serve models using `vllm`. + +# Provisioning Resources +First, navigate to this repository from your local machine. Update the corresponding variables in `locals` inside `main.tf` to match your environment (e.g. the path to your SSH key), then initialize the terraform project with `terraform init` and provision resources with `terraform apply`. Note that this will create a VM equipped with 8xL40S and a 256GB persistent disk. After the VM has been created, terraform will output the public IP address. + +## Mount Storage +`ssh` into your VM. Then, run the below commands to mount the attached disk to `/scratch`. +```bash +mkfs.ext4 /dev/vdb +mkdir /scratch +mount -t ext4 /dev/vdb /scratch +cd /scratch +``` + +# Install Dependencies +We'll use [uv](https://github.com/astral-sh/uv) to install dependencies. First, install the tool with +```bash +apt-get update && apt-get install -y curl +apt-get install tmux +curl -LsSf https://astral.sh/uv/install.sh | sh +source $HOME/.cargo/env +``` + +Now, clone the recipes and navigate to this tutorial. Initialize the virtual environment and install dependencies: +```bash +git clone https://github.com/meta-llama/llama-recipes.git +cd llama-recipes/recipes/3p_integrations/crusoe/vllm-fp8/ +uv add vllm setuptools +``` + +# Run Benchmarks +Before starting the vLLM server, we'll configure HuggingFace to save to our shared disk, specify the model tag, and set tensor parallelism to 1. +```bash +export HF_HOME=/scratch/ +export MODEL=neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8-dynamic +export TP_SIZE=1 +``` +Now, we'll use tmux to run our server inside of a detachable session. +```bash +tmux new -s server +uv run vllm serve $MODEL --enable-chunked-prefill --disable-log-requests --tensor-parallel-size $TP_SIZE +``` +vLLM will download the model from HF and serve it on port 8000. Now, detach from the tmux session (`ctrl+b` then `d`) and we'll simulate a client. +```bash +tmux new -s client +chmod +x run_benchmark.sh +./run_benchmark.sh +``` +Let's inspect the benchmark script to see what's going on. +```bash +TOTAL_SECONDS=120 +QPS_RATES=("1" "3" "5" "7" "9") + +for QPS in ${QPS_RATES[@]}; do + NUM_PROMPTS=$((TOTAL_SECONDS * QPS)) + echo "===== RUNNING NUM_PROMPTS = $NUM_PROMPTS QPS = $QPS =====" + + uv run benchmarks/benchmark_serving.py \ + --model $MODEL \ + --dataset-name sonnet --sonnet-input-len 550 --sonnet-output-len 150 --dataset-path benchmarks/sonnet.txt \ + --num-prompts $NUM_PROMPTS --request-rate $QPS --save-result +done +``` +This is a convenience wrapper that re-runs the vLLM `benchmarks/benchmark_serving.py` with queries-per-second (QPS) gradually increasing from 1 to 9 and saves the results. After each run completes, a JSON will appear in the same directory containing inference statistics. + +# Results +We repeated the above benchmark across the fp8 and fp16 versions of both Llama3.1 8B and 70B. + +![TPOT vs QPS](assets/tpot_vs_qps_chart.png "TPOT vs QPS") +In the above chart, we compare time-per-output-token (TPOT) across different QPS volumes. For fp16 70B we run across 8 GPUs while in fp8 we only use 4 and we still maintain the same TPOT range. The 8B models are run across 1 GPU though fp8 is noticeably faster. + +![TPOT vs QPS](assets/ttft_vs_qps_chart.png "TTFT vs QPS") +Looking at our time-to-first-token (TTFT), we observe the same trends. Even though the fp8 70B is run across half as many GPUs, its TTFT is roughly the same as the fp16 version on 8. + +# Converting Llama3 models to FP8 +If you wish to convert your existing finetunes to FP8, we can easily achieve this using [llmcompressor](https://github.com/vllm-project/llm-compressor). +```bash +uv add llmcompressor +uv run convert_hf_to_fp8.py NousResearch/Hermes-3-Llama-3.1-70B +``` + +To use the converted model, update `$MODEL` to your absolute path for the converted version, then rerun `uv run vllm serve $MODEL --enable-chunked-prefill --disable-log-requests --tensor-parallel-size $TP_SIZE`. Now, we have a vLLM server up with our converted finetune and can rerun our previous benchmarks to verify performance. + +# Cleaning up +To clean up the resources we've provisioned, we can simply run `terraform destroy` from within this repository on your local machine. diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/assets/tpot_vs_qps_chart.png b/recipes/3p_integrations/crusoe/vllm-fp8/assets/tpot_vs_qps_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..de2af6126fe98ba47c5a81ed137bc94008d07132 GIT binary patch literal 340076 zcmeFacU0Ebwl!>uN$ed(DWViX5CH+{Dx!3h-cfoHklqALOi&>L(u+V4q!;NOqJR_y zq)S&okS<;NJ2&Pe_uPB#7~l8TH^w(!$1q0`p6B=Mz4lsj%{kXT53k8y-L?Jb_AOhs z?2-__ERX+b*|Oz_k3ao@uiPt+X2bvR*@~&!Dp(rYI^482*dlY&_Vz7H+gm2O$L$TQ zZA>gJxX$pM;bc8-Y-@YlhM%3?{O@l#V`*)~PAB_a2VP{`ZE-c5EnCi2vi_KR4Q|;6qw>e*7lknIPx3aY4;5$=yRGI{9{Fl26WDK)9 zSn%tiPYxJiN z96T5>lpig6U;TGxozgoVQ-`+P?Pe4xj{0HiR?7OV__n~2l`T)A&AW0b8b0QlcNxwH zS;vll?)){SeC6A8hQCATf}zdp(OsK=_4TJ`WE_2$p~r7G8gNFtI3Xe76azhd_3PJC zm7a$b@LMTfmil8ult^-(r{>^jYcl_xFVBDZ<(GpL6mcOTNANE?Zfii$RzI%VWfB!Ti5G zuRBcjw!XOcqupo=Gx=UtR%yS%j~^Lybab|U|9!%pr5P5Lv?tx&Uz-2x*}kCsK8bvQ zL8prsFXGLmrx!xGj7&ehjULf9njNY$?J2bL%uClPi?ocs8Wh5978L0`n#ii=GX5@O z`Te~;th!jF)>n^?nID}R9c96rEiEl2>eu+0zIz^hl-o3RvZpBd#*1HMyNvGKDGp*) zd%AT8h4DmZ&h|ZfMIHRGxC+^1-K!erS9{t@jyea?>V_VRL3teV6&w_V406!E;R1vW+nMMd#u zw8wZYT6{#-6GS#v6{4e~O%`}VrIYX?M|mw$DA?2!Y=-OcSKY#eEwPL&ERs7YSl_0o zWo6q8%T`uaKI41U+^jG^+Nv<{>QQT{tBc*Iw-<$lg+rffY}v!2Q(9afB@$&Qa`^CJ zJfPgt%twXjOTQ^*8($A(R=Codq@;j7Y%O-ONgDkpJzdz{@7H>a1WRTSC70oOgUFHQ zcmV^NEgSy6zJF-sSumeECEk^1+1`?vFDBr$)yKsm%ye^E-CXPiZ zDYn#g#dNyA(uA>DLS9qzN$#zVrz+Y`VjpV*n+2wdV?KTQWIM6dsp>=d{nlqvhg*|X zf#kY_7%L!l4 zv*=Nblcsz`$#o^qvM<-A{^V8f1gF^{)2`gqq523j1VimxwFl?c$Kme zbxS}NFm6xN;_(URGV(rp&iIdst~>z)+Tr>Ln_9s?U2#^G7AJeSbt`_t0Xy9@i-y5L>Dxbk#!@DyYUCjS{r#D?Y+=6rSJvTs@g|gO{=nkDZjdv!x{G)JF)6Ax$Y;va4q&kZ@5-Qj}nj3JQpik5AJq zcMp%s?%ium(-M%064v_e$KBFa6Hh*`+@0+yaZy=YS!~BAOYNPU zoJ_Ny=uDLGXJk>!jP*Ro{PgYHYvc)B7RDRHxXlh8J7&hg$it&-Su!8AFx8h%HpjwZ zWQEHYdBU_M;c@@E=%q^s_wU!8U*IyTPf&=L?aa4|8Er}QALYm4Z&r{KGMEopn4MLq z@}?&FmK;YM+d`McG>e|XXLw}OhDf2#EF+(nFJF$Ay5CLRzkh#AvI={uWhbryAGYvR9%`KR=IrnSBu`_#DOXwGi(^Y_27g4fdMY3;VriwH#w5$`x z4_A2#HiU4LKb@GGN)P9?j5G6bszW+DXV#XI(t9PXB~^phZmg{?jf3{i=b!N|M*CbQ z3x?-j{78G=%4j3Y`lDnZyN+;WS9y7Pj$z$Va>_kCl?}7hPG0%_TDiwAC48)N?fkZ% zd~sSV=Z_$!(ir6;Qx+z=UbnV#SMtd|IUj8`@M>f@%02f%)vH&G3=7W!6oU`A(cVt` z^2L!HQ}^|y_zygmmX@xcU;KEK=T^w}Lo5OPR3AQk2orM2?RA+F61#j^wLAC5i*FIm zCLdn@w!6$nLOxOcS+@Jey5fpvvEy~AAl62sC|ART@grC??8!*Q!vnR!>^hzUQ7)5w zqMTZY)N@w-mv>Q}KUG`Z|bBz1T6sZDoQt$&I0W#bnuazEwrpe*_;T9nq9{ zJ?4r@{XV>&$odyi>~Wjtq0>9JWo*fmRiCnJD%oB^0u14tWAK`SY_zH0`0tcl*=Fr$ zQngFeaXcFC_6+StCJ*koRX=L3pNRd_pQreH+wKZhPA4beuXi=ak$;q4{Ib=*b1_+# zuOIcEVw-SUTG}WMzH{DB@4rDc8to~{L#j*4(5pIX;p5}e9&TA0IwVL(M>pD*8cr8l zug^IW<0IUJ(m4OQd{2CsG?N7Or*(B{7O9A3X=O#DJ18V10U7+*{taITq@P+-POYw7 zbGz|(93yhf?(g3hf^v(Rl1Vayzs=2)1da#vtaEe6wCQ{dOnmE zBJS(O>nnX5ap%{29Qu?L6$8XlOk0yWbIgK0_RvNeA}JT-=O-Yc^78UJ zvrS@ndmTlwam@ub!*lflQ`KEvU2hlPMvEf9QnxDnQx%UNquXo+p1(xFl@nfy6=QV@ zA7`$ zzcDH{#kRtx5=lE`p%&!aiLgBd4G4#GcB6`-#iI9js~1>5s|{e*Yrlh3)-qMLk%n~r z?siwKggbhov6m1HHlvXx1JWWCAWl4JykMujw^|4>7e<>J8YsPORc<++g< zgV#ZP=V-(y0W!`i{(K9`I!-$Dgn!N8+b8&m_LZr!bfiWBJ+Cd97eYA==8&dMkwTIb z;=MmC=v8?$C^3^>@vmR{LYpni-GlUU)oP`83NDF?PK2El7SiJsZhG}6LN3Y&7^QDJY7gEasBi~+ z@r?&42U@R#*;Uq8m#D+qvDnxh0#n%fktG@gXMaat!#`*v>9v2E9@sUF4EqV?#pBCR zUHGonkuYA%v>$dI)qh9xjf+|`kmKhyVm{s>-TH3 z4I=yi%V%^-StVFB^Piixr6gW?bhJaO@ibROMa3uJ3x2oN{7a}G`}WcC^70;HQ4|;R zJa`?&Te0-cl5~fZuI|%?$)02c$;k5j7-y(7i+t<@7R7`=umBn|+eJGG=mvB&2F#(D zE^%2j{qp&Paurg^tG&re$w9rYi#@he@iO5&&Pc!9=AGxfzPN9!=#(svCbMW4I~KNI z7(Jtz{|7?z6Dp$Tg9mSWiW~w(+})g&n6i3cIAZ__fC;#18J=`$rI)M(yj@r<)i3RU+dF zgqa?wvIAKB?YG~UvEZnnfaWRyD6O#)2b^47jB2$}_U0QzHa-EY0?G&D)O%8}B_Ti( z)N@Q_b=c3HQzQ`Yj8=yBc7j4eIY?04hmi zJgms9J&j@jSV1WZ{~{N1_Qmrd1Rr&$JD~j%Hu@~!cklRz4>v;=Uqm61h4s0unA;c| zCy1H}eL~_L3f6Y6(abh(JlK9(F~QfVCE@zeSbI9tqj0nf(S1n2O`4X~zH}6N0Jlc7 z+6N9CsME;3#oQgw?T?}lU_XIxr7MYEy!;;i^ot{qXt+E?{nX9 zwL#0F(0vcBrxRfI5SHiug74#3-qdFArcebVI32=y%&DBc=@4c8?Da8>#BO{B_$%q`*mc+J!>r`J@j=#(GO!3Wo_`*|j+R`9pc4cY*DQ z-_k^09}i%GaGjpEUk6YPdDdCLVIND6zrI>0-LI&8;35RhA$u1n{HGD`DNMQ(BDb)SThaYEg z_^AtZOoR?EPIMUo4CHxCgcrieC7o+a7>2OvJ6A9cmA&!L@Z63 z;~v$S8CF%fqUjs*rWOd(($Y$u{P04rH4Mom#AR{P91W_w=VAj*Gg zS{3xtSvM^KyK_2uQx|{B#$hR6U0du6Us;$4A01Bqu}@Sz&%#_g|8_JV9o>r|yA&av z@imE&SutmADH_|cHn!Oi4!t+rqzKSPMn(>ylMg-2u08&i-^4Yo%=)9}QlN@<#`4ne zx*R}OU3%$q5+6N%MYPaA#bo5e3Gx@_qvvn`A@{HXKtNPLb(4}ayWS8<&isAtPx27C@3Ig)^n-1))oFstex074^J^(LeX z`Edt4r0aC$;Uw*nLgiHTkDr}KGOPx!1fEurWz)!QabKUMB}adHdfLRh$Z`5<>FSJ> zQi|&JsglJ=vESn7I*XmM(5gfugK8+Al|F;?nPpffkIo_or7=D=O6AMa5~c3Vn>UqL z>Ywm6?@h)Vq01Y~Ui-4VZ2ITjZ+KE8{135fYa&f$JOEtfY;E_}(vG z&kB#Z>Vsu*cAm&-mlv|v)6>h*ui1~buj|?x*U679!zQLzd}va2D?Lp>=7gcQiMEd8 z-nMO9XNgN*q}#FyStmS^eW%+S!z|J-kU;RFU;~Yz>FEk;EFH;A0`;?Xeyp8ZogH)+ zXm2t^RX4e4Cp+nD@A{{UJ2rnnJrKrUK4HUg% z0vQ+K(0d(qFUPp?L}f)q?7KxY`OfGZTA$w(jSzC-DbZ-i1*LQ|;T4Mn*q|JtjB`njz}m)jE}}_U2BJfqV+SFdCBNp{~>@|CtqNAgu=Nfv~a|X2s@lr~p z#x}S8!NC6i$QiN=nb+*KQkYi$~AixC;nsPIKVs(WEr3qER4_=MKpu_LJRwTKTtMe82&i z4m)r4w9sM7Lg9qA`udlFJ&2R*!DqBGoutthJ1^4L{O>s z+usJLhZxxZK!(SQlBCMK3_Xq_TW>((=3owT|K#*1SpAl<5 zIm06_f7`)jF!6gPBEyzpuMWTnHNWj!&{zSJC7^mi&Ris)Uu!r4$xmUdEp@`J$LHZg z0$I4hd5P+pn(|n5C$yz%;NLXtQy2djpUb~`^(w)a>e zE6%2#{hV)FC>|l#D8*i){{TDDXX3W6))nYo37=?wBtD9N?hc>h=RXJ@M^=jKw8UYv zc5ujh@N8I$7R3s3`Sr${9McW+DdZ?f$v{`-8h~1RR!|xL7)7l zzrP7B!&tMN2>7@qdFtTRZ!a4u$Gf0Sn@6un*}uNN?)>G$eRAq>SfoKrs8{w zrkAw;6l>U7mqVG`-QU>}wbog-mj>Bg@Ar{}_ zq%ibINxRI{FwG+q3OJ@m#9V&3pU}=pD(Pw9#$UI$tB^Odware`DNDn$n;;8&urRr= zPT%i!8m3+w7TK_JoInK`1KN-+yvqZWI{G&H9+o0?KZ9g-U7gI~Gn#J!e^NoDssH{6 zz5IiHC&}?mZjHR5pW1X8eaNm1oL%))Q~%=HFfP)B0hMs2P+~>O#-+oA-oQKZ}ZXH#Eqh(R+^b9)I`l7BmJU zKn9+_|E`EWo2(f&(c4m?VG`coeDCitJN?2!rXygg#+;luu8q z2~Z&4T0H0}c2Xb&tlRPkQ~7V}9TI4+=D{7&=b&^Z*M;*YkeDbTYp51qB6(ICO+R zl?*<^CMPFHs69Z@cEZNgD5sY!gweQtxe1=CH*TJau;XipZi)=lr_qcm8U-LyPJNj@ zd-izsRibfbOUflJ8Y0uKR-Msb0z04#-9V|t+3paVx*}8$Ydbq7ef`+_NTFmD1QXJg zxjgXlYDOp`$(km*tu60P-AO#sQPuOiP| zT_VI|oNR>YtTTdwmrB%6G5_{WLVckjRYHe)5XlfkxG}JBA;3zki^O>_^!A@4)oVwq z)b0^Q0%6&=@B)Ba+#NriS}aioYNSkXAOCo05eJ5Kk< z*4mOIo~~U&$jAGOQ4vraUhMVq_HF}uY)!ZxqgbU~WG_R`u=>_4AQMx7K+=!|#Nu<> znfH}yomNT97Qf%C7ZTU(WO9X)pqFORCiO~_9yFlTrjX;Sfsb7=L9k;f=jygWVS5wba!eZr8HV$ZuH zoc(B~NTWK)?cm@L9$D4f+w0x;;-KK{8?G=8JrBA`bWn&#w8+YY_|?_bJ$Ue7EH-xJ z{fm1Pt|w2NXn{}xMp72}@3t{5;Te(kL+2L16%j#y+aiGoRl)KHfE4@VkK=38RkVZ> zsC@V7ld%wJYXWE>Z0Q95D@ARo{@xIOKJG*GGc~`;1{7_7LdEf-JazUjK!b|qA4Xbc zTXu1F4zuhj476SOb=!fRX2=x1aclLUV$Zhq_4TbHgN5qp>dI3EhlCiThtDX$;(1Jy zgcUZXUFO!K3A&>E9X2$?hloC zkFK{3;NPD3`o0fX@z=x}$h+2AUB0p|Oa%mXsyuRGyhCqM@WqQ4hETM;oPOAO#8-D? zH#Pr}HrKWJ_PTxh_L-!CZ7@cwmbdhXxA*MI%1ZolSQrhIqai4ZlnVv7KfK(jHieSH zk@E55$G{;Q!KEV_Iu5i5ZryT0zc=x+5t*H3U}}|DP$9dDK@yV&Xrfot5NDQa<;xe< zaq`mQHr>#lOdO*MHY`J{K5Lv+o2tN~^Jk$< zPzOW)Ombj1|NQy8A>{sJLyl-DseAoXchd+OPrEpOcHnjVd}9{c8Rwlnqzh7YK~p>u zmX6G^*@X<(g&UPZ1e4LT=+3|CHu5ZZr;ixY$SrN&C7Z_b@{=aQw6wIdi+%2v-abBg z{9uZThIsq#G=FxvZD+>~e9#y-Z&d%pWPb6>l>0{4os|XiWWE0W{x@La&Z6C9dL-dy zVK$cWSc}F1AIxh7B<(?)Teog`4)~YxrfKBWk8*I3XGE~4)<4E-NAj45RgM|XR5dm_y?K8(>n$!=g32dhH;!ZUhNRjLi~Elp2^n2_ zn`!WR=NM_PclS(z0?>G)0Gd*RtwqzN}P4t#%7}N%Q<$X96Bcvwlc>5H=#E7LJ z$8-W{B=uGF7227Z_Y^7tBL&eD{9ovuH9y&-5ib|jRy0+b42AC9xmU=08_Vrw*?LvG zy*$~$gzDUx{;k{v6~UX{1XKm-VkCoDLv{OL12FB#Gyp9~F+JG8rpjyhCL~t!?jGmC z$5(e|3p<3Vj5xD$oFRs#?|+0K2>gXfYZJU03Wq zCbNLWockX#?X=43Na3>?NdL8=lAjOa+Z@bkBRoEu!13<0}I!?SfNkdkGrx*_HyL7Ud7pyG4r zDzqd11cQCYIQ7LnA~dEtbEHU%3)#^;ZBQ#sldmpHr0;2AifuZJjx0aBkEdr7A)p?B z=WkZe)PD$g71;ldKt@0}f_mBdaVC#)8U8N1Lc$V41o+-mz`1j+Wk1hNbhVEfbb+Ry?rb5?K+2OXeK|qk*qSi)e{S+7$xk=s!NU?kRFw`NFEow4CtI%cW}@;4ekSq zIMUzd{c-Sc5Wjy;0lQ|t?@eH4)bwNf3y9>x-N?aR!#;Qh^fA#cbEXiL{`LO7JrRJdjC592g zK7oTIO&<^)F|NQ~lS4QYv=~~jT-1IR>MU>j{-7CA;lKnGYog*cs;4TSx(Q6+!JZ~w1L`{(kh!acm!V_AYGcq}t_9hz=v9hp#w9F#?gQwG zk|>b5CU=M?H*au=PYif!XGTl!JOTIOI(j_v_E!4HA72gogmS+v^LO#m%hyDtpH2(ba&-M+iPsMhKZVg9x#=dh0=iy;0 ziIk~?7R_8699)=knUF})Skp5vu~uJ5+R&`ZqYFSi%|&gjR;6)(IXzb~UXsAg{s4RD z#~?-4uw=2<#iI-KD)^ z^U$Zok-UQno=msxJd>n$jT12c?uOPlnPbF#Foafq-FdF@Dx2=g;*?w#%lmATX4Xy+ zxjali_n;si2?P<7#!)}`rm6%qpfdt!f+l#?Dj*ieuQrYE%I`;R+I(vuYmh1lW5s39 zHKR8nH>YVP`ulYk2b}xBd|5tbwS$POc)%xB>6_eVqXVwcKX~pGNaH~iWG>Z90vr3T zLdXwd?R>OGdbI}~VIgjPAaY{qL_Jh1p2oyXESK~RkByn-@LQSsl?7K-RgIz1uuuPL z)FVB@JFl-cj4L(CZ_x5c!SMRl^40H@6cb<<`JdG`Vkr(DIH0#rO55sB8XuvB5HS}N z2Id7KGqQEU@5QBAVdh12*GUewy2?s1ocrttb>tS&zedWKnxG1wacDW6kP4`8t3(25rwM_{nU6 zL>6e)#1z$6>bjY@Sdt8kP-SzCacb4jV(hN_D6Z5vI4pVn`t?ErCD-oVyJt7|>AIIH zGT?aHr0O3RzDbsd2(1kDSs{j=#o<8cZNRnlC)ywa75NX~%u=N>hASLoQLNr8H6ipR zug@*ZmbWRd-3OA=z^33HO-b6CQd^fEPD0X=`abL&0lJj3+Z== zbU%|1q7d|6V!}s7%ezy#xkWkbd!;2>}y1&zdhmc~z`eSXP?MTz^hTzqw zZ-8*2ty21(fd>u6<&2jq*hnhL^#rx7I3TL0$km-fZJ|W1MT0{6WPZrFCr+F=NJ$ym z|J&1=)B1eQ88i194rvgn0IKi{tkoZ%?_t% zNY&Tv0xuX#Bjilf1c?m7z#$Gz82{)lb=4pTUn~VlJ5l?ZHujk~Q55gG%+~QL0f~FD z#5g_XigW-<;)gp^bnM3;elUfbAW5gJv`&xEkznnKNh(ahAq|{$fUb2YcVlBC43|#` z^FZ?Qm{7Aap;3#SX8k&ul@h!_*Tl($`*lKMCS(Q}6{|grE2yxYrks~%3VM2asGXx~ z&Ja~;@d%nzut(ZJC=#9qLoTuCs5ko1Z8jz?U+3rukaLuWVHtu|FWOZ-(g zRFtBBw_cpoGVjO~`*AnbTR3a%243xgUFj4HORcF`3HW(Y*7N68abR*>%&$h4x0R+G z7ZlX|=9_PnS2R|1e}(MPQ8Kw^1xs3@sGk4p+Nu(4jJ;1so@Er>O+F!?f$GO6sgH&q zP)!aAk^go8t?jPX=NbsOwE6G8`;Lvp4UHOm>pHSXGmfW!C$D913mVl{l;?BplG?3r z(4faz)gMGk#s+Nexbs{BDELGB_C=!)NG|jGG5NLBqT7!MZUu<7oMx|gXDA2GJY$;KoUIcJ}#+E)_6(a-MbIIr^Vw z47P4ssSu%j25W&F`86mXp}9 zh$}Ukp6&*<)zdd_^%8AS4hSL2!Z>=uF_+)pL(-dB0=;1} zXTwz0L z*a?LI%ZUWt45!G)fdL}Vp;xSW+o$HI^6{a!w|&0+HA%$zuETG%z^A=Uht#(_{W@64 z`&Im=DEmjD?_=i%0+y&s{%ipG6>SA8Da8be!u_F|N19q%cv)iMAmxvcn8dPO;^Gi~ zzzDfc{{dgvIg=e`HX2=`7L6HtS5bXG0R>59Kv91ddM&v42M9mAj#0Ir116l3J{!u@sa-s8S;B~ESY!u+8k97(B1@fb=hI)eQ-D*VK!) z{VyZf&YY1&BsC#4%yPbsIB9+9QgBX1HCA0fPzR)PO4?1iOA#m22Np^_{+a!$|Cfi} z+7IbogZ|f^Qdfb*nI@EY6RUm3aN!ezC_d#FtP+!!9eH*UgDDIfsw)&u8qbVUPPV1% zqyud8v4zT7uYN0H#27fpjeYTl_huCwETT<=6k2dSabUeoK@r+3MQ19z_9H4}yGt0% z4tp6bZa*^ep}+s>CfxL<5lVvk5_g^v=6&=r*$+?z8{&4X15u=4+XzLXYzg;1nf53J zYb=B|KS?jCC;ZT{W65|` zk{;AcoO6WNzv$UbbaI#LEF$b%|G4-a@s<(DL8KwLY1Jm+NzjE%a$0l|JRha#r5Y^g zt~EcV7NOP8_{bNO|miZlc4vMyV8WLEmphc+J=wVri}1+xfH_7v=bBG#oD zi~#&$H*%(sO~Vbj1&mw(>ACI4RpS}#B)lU|8?@PwV8H zhP9mudd>Ry@neq=fYkC?Y<&swe`7OA0QDV2YyNs;(hX>vltCTR&u|%EX;>?U`V8isk^m{ zHia|%x*t<+Dl~}xdHNG4UY^KE2NL&4I$JX=9(gyocmnwoa4F8LubK+rk`x(|K;XJN zVu7~P7f!8>0I5qSBgp2L3{|W`Y@% zo77o-?SW- zsD0`P1{l!tDU;?2#he>1buw&KCn*T?zcP3tV)5hub?-aWqvHwE)TFze|yiB~KRHB(oSiKt~gFSeZm z-3u(O&t1U76&VjNyEMdRo{B!_F*f3lgyB5~16j;Dw>spZYA68Ir@Ezi0!vKAC7iuOmJKbe@(P$D z8(0v~b~I};2@&-ilKZ<8h>$q+mzTgtE<eXDY@wo^H z`sDkm6sno-NZ}tU?ul|%9@zB>3Alp!6Fh$*wM@u0w0YW|j*iu#_3-e+gJ3fMI z8OdI1Ru?Gv{Q36%VW|dH7qG8?KBb0Xm1I`HRr@-BH6QNGD@3-015@-4%CoGF8T84` z+|vtK7oQ&3Lodg<8_@{Q?XESRTkme43nMI$26gwj zKy;dewy7aADk1T83y)D!nk0Cd?r~`_w|PAf=`V6pKW;F6si}mX!R+C@pCZIZQPyO) zc0^NPjeh0>EX3=#>=F0VAN%-(5#0)1Y}5y&A;vig&~Df>=Qg#ja_zcdya6j)p)IIHo(?5aqDkdu!j3 zBgP3gEK*;7Mrz#ETK7aPRfqu`1l9n%uAS);nIarSWiYYhBJ7+)pYOn0%w3Vf;P}rd zTfx?^74JJTij{o$v7{fYxj*ct`ZULlWNF$6X)_l(?!cU#U$S~m65TdNp)tc(kqpGh zAr}y~z zQ4)T);g2v1WL4uVUm!C^LMXC?4 z7w2PnCtB<>V*>UkOeCrgBn)n|z^r2{N`vjvjDeR|j~N;4niW{0T0HQhAJZTx#7p3! ztY76m-kKsL$2GvmLfH@qCioV2C==VFzmUy#Go@H+A(0*s^gT-KI2V&|s-^*RJd#`s zUclM9Q^|pWFxJf8CU|L0P1cRPM_dh8CjwW!bkVgC)1sH^Op+bQOyy)tevKKuM3io3 zMwU26aw^~||8s8_luRAecQo7j>9AkVMsY6Gf8|q zbh*G^@#+3gz-)l{xV5hf&K@#r7C8ojfZu5**55ve->g+@b!}}Tau`{}>Xp539o!nq zIISENI?f{u@k*y$&<5|SlKJ`Dt#gpZ1Ps=n9Cym`gXI~m6H_9<_9funuBSd(r`_Tz zy1FzrrNKQkf+2Kc=vT-@g~t~_?TDa?JQxX*m9`LvIrLV3gGb}zkXAfG5Ikgj>w_7S zoJSEl2r?ik?vb_78`(s)Sj89>gOoDTkyPi$V>w6qGLvZ078_yH3xpZ^|89Z(ZZ>lG^w!vc!k9H=*{RacfUvaQ0^N(joDSG%B+=E zSa=WpN+b=9RGJ`4v|eoJ-n`!38>WDO-UwXJW)jFqdmMYpmL|K%}YUvCtgwG<=W-|3NWWT}Q<09pcNMWhaw} zgFolw>}~7%^FgKS%Vzf*3Nn{nIgTH{0Ny+A0a%f)XvxQYcV-{awIwPr-Cz7?80zo6 zO9CAVdL|CeCe>AXIboY16#cJa6fCR6`U4G_GIPk4FiFw1e?k$0May)S3h6V)Ia>P) zGyFz$3ovbTaaZB|aWUN7*CC45rxis)^bR1|Na0%-z=hG?k|MecW=zu)&uRJWkYdg0 z`UpWMd6KG#MGKRIUR~=zJT*N%Ld^??Y<$tijZZ0awc&Y8VN|E#v%U<<&*96rQ^0~S zAZjc79~H*rmguw4ab1F?S$MrYA3bVC|84ppUinaUD55(a*m*P6#-KxI%<1XwZUMSi z9CkXZc7~4bA`BiDNv@poGqo5yhZ)@Pisw#xqcR2i6$G4IZA+$%Tc6t?PM1;XNf zo19yk?aZJA5M77hIyQl*oD*+5)g};mS;iOzxeDxC@owd_`_e2es1^(pLOhZ)X{z6XfVnTZD~HeRGj;o`X9rwlYPGLav>WK(zg&}y`na_ zw1Je+CXl)c;|f4TFkt_Af&x}OxWZq?{pv$3Zy1B~^zyPX_VG>tT@7HyrmF+$Sf2a0 z?B8icw85CXevnFcYz1yX#oSwJULhT~+K7)3BKc`dGNdgLXE{pqD6$iU6TM=W+eE?TrchJ3|SM$WRK0 z&iLYKiNln(SDz8|&7H00eo~RFi;(bCvy&krz+e<>6Q7%iW<*Q?^Eak1#Vv>d6^R8C z3fBuk*_6*x!2?Omj)Dzltw{!sDgIJ!D_BYDPANc!of*X86qf<=)fp~j>ZG3nsdv%{ zzVm&4&Sl}&rn);#%pTAesni8{g(e9ti#rPRH_KixCY8cpk#3HN?>~&Q&cZoPqB@NT zE%P=?;3>@4fB69>Kf?V|aKKdpFlPpr&F-mbpo$h^j9ARSPvcyDt>B*@0VZ5eDwVWN`?Wm40t6r;V1UU{4 zza7Ho;P}MwPq5|6!(+#)3*zaV;&~*=pL=R<88t-0cU?|Gx@4i#3>2eOSlMX_3{Nz| z^N@{m!_< zmHQ-`5NhDj6NuW2)M*PHFZ>l5+D0daS-K2zJ4E>e{EwjEA3Z7QIrvP8uRf^Ox;~^_ z4ZW4c16atVaX|A%&cBv{GnC9V5RC^5*@CLR^I{r5j3%cyJvq5F zbpmD7b$O1^>gGk?ZKR`ydBoPkAz+G%nyBnV<|yXhitb@Z4L;D|4?1?P^03a4e!^1p zf*3g1;59HXFpqEjcuzfoXr;oJ?ae;&T%W2M)?#|t-N_2g6940yulQT>zf zCK8K$S;8mJOQC%L6iFdW8Fp0xVI#c!>11+QIoKFue8qmP9vf)x_y`Uk;{KU`!`1Lk zGjs+tI3X((F~=Z;KkQcdMJDo;!}6R75&kJSkXoQ`yp3L>ZiIMJkgvMVo`xhe1|xzL zzi{djhMzY-m5_%w4Qal)QZ~?akTVmyAjS#nt#UFoI@#C5%TVqRJfgI{}|w zI);)2T+{y!`V000L0@kqxe*06^AlVK9!W?fDj{YN2(rZbj8T3isIq@uE5jrg z*#eCK>4y$eRh>B&z&~W#6>|esCrm6c4nby|$#6arW)d_{tgZ^|>&hvr(b!k|`Nf5W zHbjzz&BwcQBx>fM9II-+bwu$ZQ=VuIl<^`;;4drDZ-I7#rSBf;NUkT|z;qW8W-wY2 z!t8RTEgAP1w54e!pV2D(1ighK5A2g1-b4|E`aCARl3~Usrei@tLEHIJCCpSwV0BbH z57DAU1F)HsE_rue09V??v$7N=T$J*;ylny?*Y-1y!PyA&~QOfE8k zcUTc;+7ABC2oZO9vL~9*d!QfG;~=IoY%g{1J)!RI?riiKq#j;#V&vqMC!WmSJF_z6 zA{k7HUI%m}=5mq{ut$wp&umzx4ko7{GmE-!tmP4OPU%o(f_5_g;Q=Po{)&fW2p4jx z63lx<<-&snVcZvPC-Tv#h3}|>HEM>|o>EU-^2BKvTDXB#NrpMsBerwpmW0P?aLte~ zf&v02tEuXnvP~4=L@Gb=Vj7AyDK|624e6*G3Gl>uSOIo{etgDh9u>-r(}p&u73B&R zNHRi$9als%ejTy#5e6~zCXiDTpVe|V!h*BiA z*Hu+lk+S^o{5QKHNU?RIcWi#&~t4r~Ino4?P z>lei8LHHBFP?bB~@Q3DM@Z#fo{NFuQgy-rn6)oo_jl}0*qlD8i|GafL1>pGU62%s?U zXFPy`{5nb$8GViheTGXGG>EQ@aLLB7q1UiBFgdxI=03|J8hCj;Y;J<20|bQmPmQ9u zOJMs?KatC%=su7lXKVV4I{+ZK7Izckg_#CJC_|ha=#^TMlunbzoODdko5-t|yZmB1 zl~oI&6im->_S)Z4^OlZ7n@q)p-E%ceQKta-H~q*@$HA9~K4UT(!K5oJaT-D}mQqOA zf%)7_)qq9u=i4xHGdtWM$B}XTBtlP&T%r<*dqKP$fiqzuFtM7B;l>ef2QG=ZO5;R- zGVkH7gp2onAdE!hof!!z{FS#?khjjEX(<}o30EV41iA3(yjeJ(G8z^InRB>rBnlq) z_W?Q39f`(=Yd|`OIIw$=kqU^!96$bo0(H0y692Z%Bktf`Q`b15C2#&ykBeTG5J{kB(uU z0`I1Yqrlxw0g9%b2KyC*N@|QZpqPdq4bY6OH3J`r^j9(xcRN}^W6U8Rn&Bu=OvBmf ziqWz}?^GyJCmV6G)MRMBlIzXSgd&9<6oZ7PsAwnUaNBw9{Z8V z7}y_39YdAox<5>4Y6AJO6DAlrp~xc=0+HDvxH{*V`ePlF!1gYqhRTooAKDhVu{PzN z18SmtWf1en+;DR%RuvW%jbY_-!gg8^o39y>8ESupNKWz4Wex9c8ws}axg!0Zus;3d@KI4l=3%ac2}^RA(@v{yFWRIEsB(D)WSHkNVrBx)h9O+ z$gD-VE~o*`%Yl{PNxz>CR5d%pxR8 zvf|62{h^Y*|15~|dsN6d8=_$C)})OFObxXDTCma@Jg$UPUr_LDs^}hmJ|0atpAj34A^rP_>*HaY{U_EBqzcgB&g6{C#wxw33E(bTHB87L3bL7OT%<+ zID1?H%o;)MhfEH1_4JVILE5oH7VY_n7E>g4XL!P!a@>?(Lj`t&;U6LPCd~@#L;6&z zwAIiq8V5*e#8qusx)i51RZiTrNNr>k@b@lFM%*aZVwPSKhYo{8-iTyeQ97(|%K%tp z&uz;Vf=;WP(UP!Cd{m;7%9e%8<4gc*>_ys89Gc)_q7ESL<_{0D}^k;gT%_^R+s3=) zOs)N#?i9|>2r46n-=nzie7TKTFfB%Z<~l0~eZ=`fbU#pLMiMhq_aG$2z^o;OU2ewY zdJ@FNqE`-J`w29|@#HeTPZ@*TEdF(w4{Rr7Jb(=RYHj--QA&mu&e;q}6Afu&eX&fz zwWqE&&hN$jvK{%A{VkreFO zDM%)%@EMZ;fN6ma%wPEMPsqE(UJqNKDcFzQOd6Q`C4)yzV9!z1j}x3nCggymCc>&< z!zQr@&w?U)7{wI|pc~8LX%CY8NE09JYQ&3C&bMH?a&DIYAT(2bGLi9D;-Mx27{P** zmwUPw@{0-!M+s<0PXLlBUD4+u;fr8zC76WN^M^&YPipk#5uHS^!apYB&MUGkXbIRz z5+I^?N0!k%?6--)0kS$PxRBsF{4qpOMOmqjYo|iQ6I=o^r44PLEheJLolLu@VgQiH zl`*YdKkT7lMU37bmh}OUF++|BlU0e|~{dRhHF zj8Na|M`g%SxE%>Hf%u1^gDBzJ5KJTueznVh1|U71JwwAY26#5f&4VcIwjXN`VN&}L zv;1X0(>ayJ^uVaW5$P@tfP zuw47&E-4;>vI%4{leK@H+xB(l(H4vq>^?#xi^LN|ICdP$Brp}wXfvIY6ASMwWfJ!z zzyP_)l7oW-Bq_!OgNaXHeU3X+8ZJYNB&97jVQ=5QjqTF|LPW(nL`%z#3(A(3my>{b z34KTwoyo7zca2=niM-E`D+{4fC4fH^6BDbct797xWCcb6`)-w=q-MBn_wF`W1c=K5 zc(xk%B$3XV2#knKP50knaKRmj=H&Tsm(UhE+({-A&LU-#(_-oPvrx}GMSN!ETOtadU5jnFh~tpB$k zIll7s{w_>g-Y0HOG7E!`s#>wOx|)rPGl#dCVQ^5rc@Dis4ytwKW zxZW!b#U%lmSuLCE-`=KL_+K{wS2GYs7@Uwe&T7^J&~4fvX>s|^vrJ>7fBP9b z?CbSJ*i{|PJ9h=trf4W!hA+JT?R$@}{BJiB=j+e^`_upRbJaWlwO0T3LRh9$`VQPLHq5G3sE8kJ7&ZU;-N*ObuKDYR-v9dg__HtNzar}2{{i}> zTFE!Zi%`Oz8?)o(a4u_~_6%x)Z|sB;DqjQ@9m%==CG|Jrd%R7KJA4TF!FrFk(bqp5 z{%>EYry!f;KWn+1Ni&D7_xtYVJ2HaNw}$(fw@HL-Jw!%;%K;YW|MVCEhXDhYU0 zow=5;-%%f4}$qLLAXlaQ~w%I^~pJ za=ZPOE!FylS$tCdqurVMN}FH!*MBZVk}?U7Zu5FXTy}aKAA?+EjccwT$EszEZhoh) zHWmzeFi| zB==Nc`Mex4ixfBYRdCw;*UkT2h?9uChB>0syu5j=onK$GniV}YZbqQU`0;d`!Cxll ze|{wN1x0Of0BTog zD(JtzPWAr>_wirwZpQEuPFQTz_;GLAfTf7UXx-@&UxQ4zJFiFGael$*|67I z_qy*nuQpe5%Yf?Q@BJAC&Jmvf{e|h-sEf(j>F6y3dWp`opJecsJ`MWc@#9wa zKvx-NlrAFy}lL(Qh zb$nmS$cMho565Rr3f4jTl9>)V!pM!D2zA6|MLvD1hz#N)L;w+dA13Xf4n!OR7}G(` z9!Hekl$U~CQ41P=NcPFzL=sAL#yWZbku^7V>8tlHlRbHixzpg}$-6L8!~?C4kv4@f z8}Th!*Lmcip^8Ko1jJYcL`POVMd3QXIluHH=(A$rM!gb{nI$6#vv1mvKm<_)XupIR!E!E+!80B194S-%0^pcM+yk6zb$O0Bfnevn z2}6`XNj|x|3FpCL&_pMn)m7h)OSD8jAlkNlX=T@V_Ev+=A{v%4^McoP*uUwbU%Yss zJ_03^9!m2XtQ&&b%wT?)JN8)TVcN)c!;c{RIw3!=0xMm$FWR@)?J}u&02FXh4mDn) zpj71%w5*=oa=O%`iUq0WoM3(fdmjgFHz0|FZB`Stn_tQ^?)d2)Zm00O{DNi$Jq#_yEwaKYE*qE}dX0 zQ1V63t$y@?6IU%&3S_7iLmD~^55GWL$LxmuNFT45q7SfW67xR0Dba*nEF?b^uC0Ya zhO#$Mq=H||B_k{DmB#naW$wa0uTXmsJ%bK9DyNVb9(aE*YolMxKrcu9ArAme##p2Wae<*rj|8R1R_6JB1|v%D4GQHo82Lw- zGJZGvF9FgX17Yy0@G`*0R1l-d>O0FY!fwNaA*;vG23z=rOGlBWkPl$*$h$6JCgfHJ zfuRNH4(0wD2BCz6-cv}Y!DL#+b5lDeC5_jRWLcvRl~n|=-8caL78SS7)Bc9qr_R-# zAa{^G>sXf&XhnlAum+K`12P^{HG;v_#UO%XJ*Yd7EY83!9Vl#wjXe4~*e7&;hhm%{ zmzz@zY>9m%y$b~?688?*gRiyAaN`LIE7-NbP>I}p2sF3vk>LX(?+gL1$l)@%;ZVZG z9=dfSHI4Q`5WbXg?L+%7g%Z7e^iLS>_>J?3qH~I`n(i_&&DiRMzkoH|3w|zbS@W0# zVQobZc=@d0eZvuykOCrK3mPro!vyx>M)G6V+w~ooie5J`ZXey$-%qaz>fM2>A-@Vy zRW7|=h2E=(lVtb+lmKiIaClSWSu*6wxeS>B5cKJl>%~S~lxleg`)lDHkrltH62c?y z+rh044xl7VhJE-sxKtz&*Is#XqcM7acydHUM5H5r%^;KnktbIH;UF1|)5(*(kFj;f z5IXx&^S{nZkCh}D=^q?au_z-Gd1-H1_)eXJX;d%NI! zPmjZp76lm?6)!vXZ$mij*jlW|(Y%DeBaR}J6yV0f~WEe(74nd!YB$s5M z`UqbO6 z?5-XN+yxWGE*v7N7Fr3KC0DPQUdB&Evi2e1I+ZA;l1??8mGg1e+l8Cn%^7~rz5nx% zCpz&LZBE&fsc6@DJD`QoMYb@BicsA#asurs)$3wABsS@0F5o5P_V$Yv!IztIFk<^@ z`;==wEk!P+SFc}x_fZP3c^hF*tF2JX)Br&K}dkB8ChA#TtP0$ z+_Ju&9;*s3FRx4&uNEU$S6AVB7)fF z6;M*3%D^jRHQzFTrY3htgQ|}qR0=(u;XV*wtr!XjpjIIR$?L+Zq1U8*+*6OYOkL*D zeb$Kcsexql>6d4lmyiGD{D1u~cP_TnDB?l=UNF9|j}h>C&J@jXi;LF7%6VSL5s=1P zjeyVcTU-kk_#{g(Nv3(Z>&yxa#=&7#m&c9E+Zg7vp4Pjw-zRbQumPf*n z9}d~VZA|JJ@U=l>0Z$`^j~=auICHJ3jZ}Nfx3Iw{l^~(^pxjkvucUcFI3mK*S4mpq z{n5#r#-aL1Y)*^l%Bt_7FAzyy^<(EzzaEu<@ zVqe5EZRg&z(_n4|$|ut4JMvc%TY&i)?^-IQDEn)S!9kI01CE;Zw`iUkleh3n=Ln`SB*Lo(9l@bf)BM zo8O1S2VGB<#ECKBkyJy|SGoQ^@Cj#KlytcL26If?I!ycpZwJIRIZgx75bs#&Qjo=# zz8DaMB*c6?N&>!tlh}E4=|vYtRR!@Ogl$PAohRO-L=5DUCTPDFyaIPia8>vkkGcxYTDdi z_bfp4UzfNTWVRS@^_=CKcpC?{Sk~@?zy*?Pe_l#`pcJGIPE!WSZxnLDm}`!Ju-!w6 z7rX*E)8G#(r!g5-oVX?FapAla9|1c!!vb2YVJdf8af%JVfVz5kBfhPjrp=T9O0tB^ z7{NhisQ2i&R=A}Dg*Hh_K!iVy>l%fEm1I?qbzw2BMq^;Y`i|m$c9a)FCA;I9!^q|C zM4_i*!A{hv>a{JY)h{?@069>q<#PzKAyfB`9Kv~f8{J8a%ZAkbfDaMD98_%$N}H%M zz~+_zdP$x0Po2VI57~Y0;*r569 zG#onC)~;Kz`wWu`6CLt?3k2yYL-dwW&jz>!!{ypGOqGLSkmU{xpHynqq9~t%872;W zV;77@p=RJ`p;b?g+TyyVncx8!dwE%Td3nTnC1?zg;}$h6FAIH29Cp^HPoD7CNDzaM zf3y5;oB=0F4i~s!<>Ta>Kbqm75~y)lSpoFta;KAi@;nZYsP6Y!KaI}1HizC!=m-wd zd=+$U9hd{bMBEtW4V_{Ps~WptU>un1n3J~Mf5N3={_!29k?1pzf_5hHKr4cW-q|Ge zH$oZJ4L_pcwbJ@ful2w{*3^|5qU7ihJ>mIrpuhj^Fh|Q;+Bs;$;9gnA!F*sj_3Gfs z@PA?R9f@xeEq7y`_Df^@*&pqi==3U4k|MWsJ%cu71bv$w>=4N&IRq2}OVZ}^?1?;C z+6eyx(ftt2`0|oh9{-;BIkiOY6PN`y*w@t5JF*#L$5;rm?->1x+~RAHZ6QHDZ_&cv zd?#b*Db@pvE7JuozSS-pO&Mz%Fjd4yGsQ5;!^0!;1t12>b%;qBEEY<6im6X=ZUb#9 zWW=y&0yC=j(ck#fh07VdePyeZ$IrO*Yi=WvQ>RDnx){l`7Yc|-U;e17n5a8Pq9Rrc zNNVStJecFEljE$BbIM@W%xl)K{2n}vda5WOt$XROYrU`h-@c7J_w!#iZ-Jdnyu7v4 zP@@6Xd4w-7C->peLh{8cd__O^1x6=I@B&!N{}{5fSTr`#cQ2rPCpq@zbD1c{JJIu1 zV($=+&n46Vf;}Rrp)lp6xI_H8r70XzuXi-p;ZO7*nz$XccmOnc;Nf-DxhMtqfym6` zrrF6Bf;j_!txHFURn?K9t}neDp{cBu=kzl z#&z$QsxXhD1E91A%2ft*1W20+nq32m|Hm&-Xjy^<>+kPZa`434VGcya85@%CVN{O? zp*gY#4LcJTYxF83iXjwJh3+gOD^ALpY8Slr+7342&V5 zAY&9GRs&zLYL1|4oZbOF1WkqdsPZdy|9GDXh=@sEh$Mh(2TtG+STus~QnU7^C?a#P zm$ICaDF4?HW~c5K0^^stsk)=;yYjx=@UKI^FL-%YOpEPjb7zTfuST4*;@x52gDX`Y z-C^}jZ3-CY81SL14K0X?!ILk?)SPvep4TT_vUR%! z-IppY^)1p4D-AHdH{ExrveW&LYHWI-ru*cx_7HA)^M*h&1}tCY!1PEaM2ty~9twXl zw~{FYL`S#o5jUL;^d=+2=ri5MUtwVp$0 zR;en2x=Ib83uM}-?UV2Y2^5ur6M5^Alc{e*c@dc{{x}~Jsyk*j4Vfiv4w&`?{avYg z`}l(0zC`fQsNtsIx~~O~GDb97d!P6;1;`G)wi*s9`QGJwFp)2(F8In`{~zG!)$^6{ zR|B}|V2I^7;*I8iY^o>FUR0js?1Z=hGli6a#!!zBWkZd955-6l2ufOBq&)A%@*-yo z%~gU$KMoksl5bm&zIgp!7cDYHUJ^0_sKcDJ5GY6Rw6SHcoydB@>!$@Ux%F`K(lyaX z_G9@{!*P~O{V0N$q(Orre zK15V6=;OX3cRlsU{_iaem*qk4+RXgrT)yzTzucsxq%jm4l<}jzw)Mn%>jcD6RxSa3 zN(2s3<9D3%1fk6aB^74g^%I9jB7%|Trc)DZb8bBbFd{FcqgsN>w`(l{D2c|VT8tu} zisHA>gYz>$uT>I;3dk!eyB0W_NIk&J6UW%&Yf%dM|8Y&+Tq4t^D;pXPpXz;iEm{AX ztQ_{7-fvr3HgiSvh71e3*WLC_IGPl^*FUdY&7@3+;i6tQemlm0$`-uz7ypFr5{e>` z!$1`7mPDPkIu8AL9=uaa(jZZZgLXX5YXus03h}NUrC1}{cR&z47Q+!&1>v^OSnq|} zlB+>-><4eRp1%rYJMZ~(FD?0bUnU&D9G1My%g^$P?at3?R8Bq1=i6cUKx0oj%i;#h z_+GcZN#CeZAUmNus&>`nyM{koW}##{%a z=L!3V#dqr{zqk`6*mTxXPTORIXzAx+ey0bGXX$?5E=D`_;~yQ51e;BDq`txXo&fCu zrG5Z|PJueI7`XJUa9GuFR(=Hj*je!XTguK}ccIVUS4dd+VclDezW_+||AH7_YNQDB zgq%qYf|=QFxJy8LP0g|I5SwwghtzIkvY-8^o+*(^{P(|6IskAd6E1~T(P?uj1!3(} z+~D$k52H>3o!}bWHU6Djl(KA;@84(If6N;Slc}spVD5XK=a}ybw=DDY6rHTS#@zAU zb^K0vJA6MJjVnezmW?? zBB}GyV!^hd%OwMxk}Aa#3HTwz-A7$1EMP3ZpM+6pI}m$Pf$vTsAqhq!nBPZ$TieJ0 zuF(SaKMH2`JzVf@CQ{5xXghqR7*s)a|(V{Ic5o zd;bX&+HwH;KaHd?T%~BqDSX$lD6p4yWkoH2pPvcy9khEYto@M5fOJ>|Q~N>36fq1m zgkqo*>BNec(2yV}T1ZmzMR@_Sls^e)Sb zx3~WKd9Ks})#UWy-@EglC#Sb}3TEei?;EmYGgBf1xe~gic>dTB^`8h<M=8hWPT`L&Ywb(X@{IknY4%KqphQ@4XaE#B@BktM&{skO zNuw?)f^q3me&`%%&NUKGXh<)5=^kAkG~v!bE(TGFDEpA27_H5E6iAr+39&^cu7`kS zT8*em9VP!N4aRu~bEabs#z+y8j~a?%zJc?`j|U@}54(-;CQmCCEQl1+>eaZJ8!owU z!CK7oNU_?)P`IQBuJ!p(#?ylin)Kao$(g>e4>kAGr{4#K^gq3Fw`2OtSu!j#dHY(= z3A&Uj(re{mglvU+^;bUiGFF+!+_Fn2PNl0N*A4`pr_c>(5NQU)E;gB`Df|4Ur8Z?r zp}p8zMdShgd8&y+5i-g^ULMB$`NIpkdb8YIdo`k5Qr9l_cv)ub^D^=4U-C{n!@|Rj zQsxb5)+yh3eMDI!e>&Sawb*cvqQLUL`<+hae0@BUuFcxZk*%ePUm&pDThL{=B}34q_RCZb zkM1>}KQpbp=>_<-ZKzj9Hh$Chkxxg~<@x-~T)$vO<tr4u9FFLUq zdhFQ~F{a_+;4l-`(E$>;XR9=$_}S*1O8)@P=7`m|g~C!&o+$n7q4_Y)QeW*j>)8#N z2CW+j*}2^sb9-3+qAqjh^wdPVf8XP>{=QGCO~!4Foe@)f+Na9#s~t#)RaAZ3%(rb@ zS?%<@55gjDBs5(v5t}So#HUPgpyv(=$*#pqSM12?K5C?|Yw>eOfB%&UBkZ4PG#4FlY>3QM_hz&bf>d}Gcx`@sBFkyU}1LY$+gxJ- zv*eskndz@*={?PhcF1h)tkuZcZ!l7OV&bN9nDPGHIew8GCybA*FzC2++4H#Jjroap z9O7oo_B(u-7k8&-28Y?m(KlinQlh2uMK<;-15OMwG?k$n&=Uyfy-23|IqPZe}&Vj5!jwR(j ziP{zKjUr=|vziRQxgByB0e1C%@}_2-oV+NHFR8kouk~&F|GGTjy=tpy;T>JiUk^Nd z==rN6fH;1{rtkB`yXS}3_$O=1T?da%<-UweI2q#|9} z>g_-|zJ8O_;=v0k{m)%tC4f^Hzboa&hFyL5nMaaqs>ZLfT>8gN;*HBtmv&Z{c6`1p z(0_TONqYK~v^rshy~=<5aU=d;f`#oWZ#if=n8yQg+6Ju`o7<(H3e6HMV z@(q05qNZtTANlO*#=<3+E3S!du38pSvS)A3`(s7M{rX}5d<1{vTs*myL-pyq8R!Iw zl@|L{R$e&}#(VyPQbmQ&)(v43Z}#{nt>$P=8~-0(w;VXI8f)eA=fb`Tdgdn75>_-@}37GlA16BKqYd-ktS)C*583bR~b zYhEj_6&GJQ?wIKp;COiDg2VPv10O#8_$9i2dRbe)F3a8fMJds9YA)YZ~C;ZwJ3 zK$ZZt*q!cX7&7+)bNZ;igMN!H?~fnuGV9lI-!`FO#Jw@#` z6VwewO^g+vc&{+>WptMBuxNUvJt<|+Ad9*h7+wECnt%m)#^A3sQ17f0XXlUJJicDQfQ@c~c%Rs$d1;lYh&q>V$)~kl-m>5eSvNYsf?yGhk zV&?{7`|3=8CTbVw6?}t75TO^d=FZgw-bLx2$aq!MGH~!mAVz1U>zp)zqR{@-%eP74 zxGLM^k~4n8IU)`kn<~jTD#pd_IVsA&SNh}ude<(VQAk0Q4GPodB-ysm*A{7rz05=i8q0*;jpheC!*nvdHH+ICnKc zQMj_shO89$Q|mIODUA((KKy6~xjW$bug1L{M03%F3fF#C6>A#myTMnExc$;S8C4$v z#a1ti_Kk$^;TXP2?cdPKdCISv z?NxRJO<2FZR8lP-QfR4(-E`ZZB9bO|EsxrySjGCRvKeLm0ZM#)*aPf8#?r!6l~U-e zd_1`pJl3V2V0|oAG_UBWY}2xQ)%)JNvM?r+{mZh3zLE6L7DtsSof%r7zgxe7g8B$> zReXm6N3b5?e`3kt^U^yKdi(MfVv1>KGKeFp)(t+RbN*X1Dk_ zTak1hRsD|T%a^NmfhD6W0`a5*G)8q;1cG}Edr4B}de8Y5@IpD}?Pb8pW*UU*J!9po z8=?~r_n5L%wqL00Egl1>>O&#PFd2SD3K%@oMF`1&K6*cLZ7Dhb=nTIKM5OV&y(KunqWa`szorBV%H^ka=XQ zJKPpxqdBumiUxX!+qNiW5YrH(j4#Zp!-?uiPwMwb*1!@A1oaTI(%S{OerbGCRJ0bwwP^mLhVi<4VAh)K-7@;#OcZ*DQ7$;P(>Ui~$Gew>rf_AV= z;0PPC|4U?#u5K_XfX`S|!K@&u`r{ysjpV8NxB zAP@+#11{n`JiEY0RAW_xB1*&*OT72Hfm1r4wdjB3WHt+M5&29kEaKe^_UyR;B%}3y zyzaawzoqjcHzL)rNsj~+Ri7@bu#ROTM8TUl1uzI}7)&LlOJrD{gEs5N;@m=LwXxAu z155Aes;sICF;0$7r`)ku_jJt7&HD!i)bOQ=$wwWK?e@IC-WbB z0j3dVTPz?ARGNkX#H7Z@AY-zFvXz)jA10GYKGK0wnf-u-`t8kCX&wgPpD3(vAVHAL zY2Y3sAutKkl+}|et&0!ml*>Yn%J?krgx^_xkDp$Eifm8)jNQ{3ChScbS#?# zdNl^=+^S%x(=Kik1Or@22N5H;8cLb2QQdEC{zF#HB5MtovoV!bpr zI1Oki?iosKdE)fm@7ArgF~@OIADLxtf)k6hLop769jf4uW55f_B;|sG>XL{7#3uRSW;^apqo9xhl7z!FH4Ox7Z1Y5t^z6t3rR6MBHwbS+6=5tBO=LdV4xRf>^ z0*+Em$)hf~e*Llf_T=1N+ga6A6`(NoiNp(pI*a|~#mbtGBf0XRLrGk3fnNn6{E%k@ z#RjxIy_WOl!U}sRiigM!Z?m?8gLa~Ild&08M8R=XLHG*i>eXi zl3CZ&WOJ@#-#P(V{Y#g5er)e`-#+adcs@{dr)2YfOGx5Y6Adq){8AxK+N)tU-bcK@ z_AaB~2jd{{q{`Ow4{1iawlL+%g87I89jmp%)nXPUaD%c-8h+)HQoAuMsgU>sI#;3R ze|1zMa}iXw;q(Fcyt7Mx3*!BT1OS3?34P4S5YK8y-Je3qUl=|gUUQ*?_qGfh5hE#> zz$ck>2(j>`vIG0vFk)HaR37EXkq|x{3nZ`eL$#Bc1(@RFvnqd?KD{a|`37<6ND6u( zpXo3?=^54Ly1Evtz#cb7d0oJYPpEYt@mc=x7?wxIc-@nR8dGm%b0$ zdVXm22-C%a!xnEpi<40)lydJDTBC0mZ)jclMc1dZR0Bql326}YCHOI#Gp`?gdG{c+ zKKYQ}ZVi;tH8D0ON@2*00oX!2EZcZM;==OHrWEm#>J8bIL$N>%d3CV6 z*gMNExvYRn>^8}#A&Rd)`MkPX-4lvr9CUWNP&X#w{ltw?+$8;A-MV#}BO|x6U4ewt zBlz~Y=IE9Lm*HNzLL7W3bKj=bAHCr|>V$pLP1Sv>VqxDG6mS^CqlDjsg9S^i|A0SM z!6cxnd!~}v@pOLCkU*k|36L`WC(B%%7zYnBwXXy19Dk=@JGGiHy{4!5zq%J2)b66f z>3C?MRDf~QfYOJE2+JXkP;7+QZKSi>^r309&KuN> zx!l698XAioS&Lo>wFB*-?Z=|zk)H!Ipq5WXS{w2qYNpPUeQp18bE)J*?oWECiOC&b zU;|x+bn}(X`pKX}l98h6Lq?Z^udN$E;yC0qS+FQ6s2b4?9}8F5yeKP^>AQCu^j+sA zq2yyurL}^XLjau^OEmw}VamosWu2H_0!DKXzO_!AP?^&;DgOohB*n#^Q68ZCh_MA% zpQxSLk<%=Ltq(8$4@p3H{s9U_+>-@>;7TlK}#^N9g8{%Y5egrYk3#UZ2m z{_U_49wq8A8d3ZOj|KyZwOdcp`?G2DWr%7SSGES`?|Dg4h|TLH{V;w*^%ubrYt3Ma}+r0hSpa$Z;twCZzRlk^M+|0 zIX`{^06xZiCbc%Nys=6{JiN(J!n&jNLouOW?!%@?SD3;HSnIXMF#Qp8b`m+I0Q zkfmK`eiglHZ2#3(9Fl1w!J~8!!R_caI zxcF&$${mRFN?ahBm`GyP*QcjbRwJD?NM!Tj&HLOILW95Z&Z@a#l8O+nKh3pnjDyCt>zupziab)6LIs5sB8|+(|+m-I5WGDuk{aHn4YqPBPr(3O>F46~&;? zrcLPzVHYn@5`51e8bvcIqN1YAiM9oO8=5nSXySLM+RG2-yJ3SvA(85hk*5-; zzJ7A<={os}FAho)(Go5$E)hh8`1|`asD*dHtTf=|*@h!D2qiz|HpGTIMi6M*_psQVXs>Eu(Sbqmoqa)%t443)@}*1JukB`XT-CL{ zG9e$Z(lfk~VHsEvlzdNLP}uKnvuCM&Yb#LS>b%@V3wK?g=4E(@U_8 zb>ECE9=UrMJ+%^pk>(wK^6g)o5AD5FWqQN`0lttIMKh1v-K{xiP~z~TKXo74`;*!Z zd&I59ZxK|KffW+HKI!pt7$?KlY}z~F80u+$@L(sI_C(8a;ry_8Xukyl78)oSR*U9N znV4@xL zpC(#{4G@OP4RudIA}6J-Fm%9C^LkMm459n=lW)eMJ}5E&3W=jrtWSUq8f#U9xdw7t z#ImbwZB%b}M8aj-bJO-`t}q!S0`p>L_n8D5w26-bZ#0Ncljn5i4i3gdpx%1}s<1W0 z)b_d_bA0{xX~D2f$RpC}`zCa;>1*T3l$156rL{gnSAzZM4!{**-=b<>JMl~eX{8%B z7}%9as5VpJTaC4rw)Q)5%pf|Rl4`mMAy)tgORG%O4>FmzXvDL5BhE$rxqeePf|pKW z{o?ZyG?exSI(A>hbm>|X6UOv;oZppj_E+D&2v&#Xvo(35)8n`?AEQB_l4*ECDc-_M zF1zXL>c*q;Y?8l$*fhO2UU)kJL>0;3z%;mLH_t-xU7mjr=OpT}yZU?8NFiT!S73^^ z6$4(2?q|t25`>cP-ZBhJJ#+SKSlhKoJkA_LJ5>LFn}_1K>HDHzadn`)8YRm|)V1-b zqjQjC>>m=+)#0N%ZLH_!6pt+)Rfm0v7`QJGg@lRtqJ1r0(v zLX5o%p|{}(bF4QXtj`2$q-rpYg0p%Y5gL5#3n$W_lYxm& zb2Asx>?Xu1eg5y>5X9Pt#&DGlb$zc5E#Kz3s$|2l#~=r>!Vp5o~yRK$_MpTfyy8W zs7u%No~f%2iX_zNLY6Gl*by1e)q!WBpL`nwM{12~+fd1z_>zC@9t!#n(%YsTK2L?! zh&+BMb&G^D1zK9ECd&?g`t)hNu<&#FWC7lGL{b5hD3h1ROeH#}i0{CUux8h*6CS)j z@IX?rJHO=U+$kIx`ubtxHK<3ln&vt#Il;PDyII;-L>)j~zBn4NmZw8;l0`rE49eEU zxLZ(iDs9RU0t$XV|7aDQwrJR2CP@iiY+9N7HoFV;<{bGwRtQmzpb`kXnw_Ql6IB_n zx!kg5+t?0&UB0Xa*`(gU));7-8-WUvxXXm4Yw)Td+D^mw>C>mqHY;#8)aLsSC+xqN z5-mM1C@6^1pYy!tV>~zWb@@R>MRMm7pF+DNl*pdR*=?LAn)mp}EGKYn!N_6T_36eC zL1MXT4fyVjorT$8Ti_Xf@dRs`Ld}$)%$PgZ5u2;F)++y1M_P??aP&VNb)nQXa-CDx z=yIfr5LqOp=d}1J$9IQ>h9**xV|fE|!J1s(P$6&!`t|boAh&%|k4rn+6H1!x`6&mw zH-n`H_ScYt_`ag{x(qW%wU(430)*syd%gb!%dp|8$>g@|S)3^|ZZ8A5PjwWxVhzM;AS z29@Z{bpkb_MyZLB+0#C+`cu=dEEC&llQ$S(o!z=5CcGKF9-ya3+^Uqei3mFT5()OZ zTbD&42k>qfyelLwo>AAH=v}8v2mA1lSxK3Rz>8E)e5L8dm^pSx`j8 z-}qcFsFmKK4+cHkHCJVN>^B-g(TjQkKr3Y?h5{vMCjC$M_;b_9Q_{uF|KkKNPjE~26*KM!ql4J410k3NzE1#`H4 zQ`aD2f@8BT2(>nlS8ZKg0l-?nej9d8lgxQte#TouYHseD9@rI|Ld7D=c62Ai)xm|U z?ORf}0EnG3{b(#H7GeM`rlt!B2k2zM_8gH;(AX3d3D3pa2S4~c&FJqeFnFD>lGA3Jz3QsgOF}>n zb{Kuo0O$Y?+I1fjM^Whj(5I&vLwuz@p-(rTgIxcfW(Kq1)Hluyca`3}VZ)e>jaV&- z5N)G$u5XxITYW8Agyunn=FEe6RgI$ju^%Q%4<~(YdvpCN&nFJkB1~4(I&t-t1_<#3i6GX!FIX z{t_zjhN%ufYZGk`?NaacBGAg<*!^j9q)pXc;5?!{)RDV5qjj@wqo4rndO3`Jdob7t zASuzsxqO-HQAMV17#SJqB3&+Wk2+a4Ze?1Q<<;$fU?bCbAX!4#p=vYwpm`dV8*y1G z&R?}9nijAEw*qm_9 zbb(l`0Mg3CD1Q319B)kofChbvHvsL_-7tzRs}i)71S~-N{q^|Orpmvo`H)t-4s!<0 zLrq6GbUC(PHXX8`&}o=GhNeNzCGyiro_$*S!hF2T!a50HwoAgR zR#a3p`06{BialqzQ(KUA&6`WihUphHC6~)M)<)wE%jt|yp!jthRA%srs19#K)5RU1 zcxt80N@>TGB=3(OKRR2narVW00KH)lJe}k9^2w^{we)2LY1`fCM`0>@7Vjr$#Hu@mJ?@sm_=)rv_EDrpY&I4iQfI z3m0r?6{^kjw(NM4;91x0suLp=md8|63oAtKVe)Xk%IE94w=RSxpcz-6`8q?B|DhAc zkR9XPyLYb(YIjSN{;CC*D3(yAH(FlfgcKWFk93kA{6l#|EZrnhFNf7qOm&j9{x$fW z#l0?Fvgnu6OMv739pXpS5HsV}h-Dz`~`VQcE1u%p}eiS$s^@qQ#%98e4GmU{h9dNV% zhSUuL0&(n9P_)q88iPKk`Y9*M{CR1>si%S0lhE1iZ=iKP#)-YEgF8ObBwaU&22fQ= zpUADM(|7KOQf&quoohHkj%Zbbd1(C|z$a{t4aoV5Lqa3xD%>v#jP|4GG%ec~-4))j zflVKgGZP+7pvg$t-%ZSGsjkobpnmxZypL))vow1W2a3tdW*IKpfKEQf0gl)B%Af=>og__~NTJ$=*m01%O~!Vaa5pbkHF{E> z&GV!^0~K<#aNHg+b+(-Dpc@A3`>yTfjvHPHMa!3lrqQ;H-T*!8gRt)8c^?e9@YRZg zBX;>@8&?ew0&2JVY_;MdF*>?ZMYlD*+sVFpcF|J)Y13VDbSLhX*^-K>kwM$U4P$by zsuq5@HC?>)gX$i@u}5~x$ft}dRo{XFcUFV6d<>BYW7T43GUO4Go-{iS z(K0EuZrpAk4-#f1T4D#qiuAYcZcN2kxNhG8O-;?bp(gBmo(1g?mo4soFaH&<0~8t^ zOg9dX_@2vC zhLkN}8EYlWP|;H*CUEc6;Ozgb=`1%2ATxDCIOrzo1SkuFvFA6U|Hkw* zj~8n_Z5VmPcbg`6VFj4?Rac?=#7qCIx<>~2L{uHCHq$J% z%m!;Uq$In2!~U9KRzJbR1jgOmZ<)M#+OpvKjNkmB3!PaWe|m(Kb9<~r}8Os znLuSi!mGZ7Sm(qQHXl0q<~%mxlPc0N&{ect(2F{8p4GG~Fqb%ffLRuCNukXaH{ zT=4Ml42}%b$^q$V28pO#xWI7G{#C3EF=O8q*s=`iT}GZ#&B-V3%gdz!~z|j{3=&wqij2aX_E2 zf|w9rz}y*DI)LLc76}qrLE8;1rRL#gBG$wo90niFe>w=n8AA?n2>9cRfBJMX=C?3U z!0#b8`EkJhx9GUx1xgwo{*Z3+j0AWVeY6~rY7o08G0_x@>MvWXzHbb2RVgerz^3f= z=bz;W9HEr2k-lfZB@6(aBHTd@@)CgUQ7HCwgqOs)ZOHB3ggf^n$*Hk11&BN$4`54Q z))%mZaQIS2!n^`Rh{XcurH?x~WkYcp-*b2?8ob8iPq-wwF)gXX8Er`Snh%MI!ZZo4 z#=7BZQ@eu`)O6x_O-6?6@r)e6K~i`)UUR_>8??}Nc&*xI-PDeE7jFAJn8dz1muY~}drTs!0Euh8tryt)AixdHTr0a# z?w>qrpX(2=8{ar3&HVzEi;5~s!}eS+C9O96^AH*o@v>|-JbpZXvTo*>o+lb$I=Z^? zON@Anjf4%M5AQE}_Lz=tzn;uOoWUg|Ng~0?StEM`XlvTc2v^5j3e+4*NgU^DNp`ZB z=}uIT-XPI9l)#U8nb2CaK^;In*+B9`5km6j4Lx{}@b79}lXRe`k;nB4a-A(ME+#gH zHVIHT=@*w`5rUZgteY#w+LJUW+tSvC>HQy#t^*}3>ptYSgYz^;@j&DzNggT74M%^1mK#`( zaxm)>wk=ONvpx(Dk4ZbQt%Oz^93|ldgu&!gl{m$PgQU=lD*?Tf0&z&2wO+{T_B$ab zKJ3(|H`C?b|2-AG_??!nF1>bCWb)*nCeW1RB$!HKzgfLL2O;>H9j@3up6>~7r|*e9 z#Q`@{aO1|*!XEl{Ksa{8a-TBXC#{8G8qC9D(!mYXDF&~m2HI7GG+eGm>9j8BPE;<{ zTgaqrbZQUlY$|XM+pz~hSi}V#a{X{#ex!Rde2Hu+n!U*a%uazfbbRF?9Rx8@K_Q>N zwP9AG1%3n0ax>2cG)lWjX-edKN|S^{HfEwZynnre>QVqZNe&GltPN1?Q(D9r^^}!I z!ci2yMCX#)6yrMi5$&)=k7F@MJ*O|rw!r2!FAM8@u+ROiMm$z=0vbu~#CI*IH<~|& zXJDrg^7ER$J>hYgczNdg&2uuizRKRd(`fmc`rLBLrQkd+}@g@*HLQY;_SKM(T=!q#C&&Su7G=Zt98|hymKr%t%rR^q~G(ltfuqC&) zwV~Zogr0~EDY@(`gE%SFGY9Y)tYQkJAP<7|;}IR4x@siv1{;P1LGkso&qg2A){dnd z1BmdMnwkMXJZg}JPKXQ^9E?YhZeo zdUCu7AQlm*ehrsG+A2u;V;K+3@v|%8g!H>{BN-bzo+2$j8uAC-!z<%8Ob)XmT?DU) zv};ThpyC@q4ypLV@8AW$1LQk@dD)M9eUuzrb0)Ro8H-aSjZtyrnJ_<8Sv5d-iBV{fKvaw}3{YDjJGeL(2At*p`dwxrccsU5@)1eT{>R(& zqUjL4O;e`GlDFwU{t=%#2?$te=mgof{Au6);;-Y*Iez{oS4vD#Rn7XFGv04L-r-I2&rCaU~PV2|LUIXgpgs}PeD*vyzta1=DsV7mc7g7{MSYOy=(HOXH0`qXm8Gy*+xgx6gxVYrqNR)15FtQP;oSIan-Wj$;^&a_4dOq#6Bdj6j-rU}y$$998TUz~Er1!(1dcP~xc zN|xaItFVcEbv4o-gS^k5FMPq)!mT`W=D%-c#_Gw(rn}+?qPu)KzNzv5%gw~W`0uz+^_AnPSx4 z%=7pWAzBIZ|MNo}x{{L*T13Yw+t1I~{wCal$M;;Qh(l4cZ(ZE3=>ltaZVHhz_$OnG zen5uVkFOa2eBW&$1M@hs(h`5B+WsqN&qlp7Lm=}H?0@_hZWr1)!P!Ja2?%aFV=pCD zcsKIVjLO#5sSU{3y#|tq5o`>37f+F7^6WGN3&$|{XJ{0J8 zGUuGLR1KS5HBOwA3;tM$)>2Y%?No%pzA@nWdsxp}&%d|BjcJrW)06YvlU%uHUsk zuJDmM_KF`|6MFw)y2KaA_+#>k2V-T?i@JDu^O-4l^vBc0=FYeZz`))8hY4={)^hOA zoLpWiH(`Rbee`ZOKf}a?sT=GUX7w+h=fnr-kH3q4>?1~SD}1!anV7D9<+y2dTJpV@ zFV@NG!{gT97BvaGjepckRi8Eff|qNfynD2p?2k*AD8Z$7@S51ra3EZI9vuJk1;r-6 z;2aH*x>9RVkR1-aA!=f>+~|%D1m+JO@cI_1X-r5^$A8t|4DZPmlbfh1z_SZ@7rvl_ zjt*0|{;%V?j_3$N0{IaVZghFI&18)d};Dn_@!)zPOaXx0luYxkRYP!~LxH zAF2at7dd;MDZW>8`r~2ypPdJ*UmH#Q_N0=y{Ctqi9!2WSZjG+4)pbu|?%UxW3-a^t zMP!a9N@tW4{^8*p7}SNKTO?H~gr4)X>ZJYr{X0m-2opyfQg4N}Z97DLEMh22C7WlH zd;ziCH$)f0Ra-H+n2#yw1o`>#M#Zc!y8KwX^tpJU=^c1B&tFt#>2Eyk+hEE5X!%~O zUO@2#`&d)%iI2?89Ep=&*&$itpO#I0>GI#`wEq9cw5T2inNJ5wX*PmUA@I;^cAP(d zKE(<4X18;b$6-*~5ojPvTf-D9NdGA>1*!!HH6YrZYg@7#A76=<`U>JKvxW`QjTtHe!8)+T>a@=d%t3^^VJ8eE(rBs4+eQf17X)>LJ+K$KUobkjAq?OP~g#D1ga$aA0%38G(SvPVC7yT3ygQ4JwX=nKWaxL!rfTl+`Z=8j`W zEDPbxSvEB=4?v z!P2E&C5ggwhKAXmfBeC@eA$bA8kt;BefrK_Df!xV>1`CfG<8))eX&Q|q9seBp?DV* z7gq-v^XI7V=V9lu&M)q&8?qZIXGUo?3z5})-Ab=x1jFT z$vfj35uX|h`4&b{GfZ{{l;J*w#S!`JBWpp3|a37l0v+)LA^VgQE(#~UhtcBH5C+)O$z|uyTm)COnZBK ze=7jYG+K5qWp)1X_@YrjV4x-X5Ncr2RfL-+)g9gPtgNie@G?IhzsihsbW^!2O$|XzvAUF%lt@ueq5L%5?)22@ z-NOW0!zEUq=aPjNSw9%I&Ir-TBP8DL>s?fp>be$J>}=uUic1{x>*9Du_JGCD!7o01 z;}5X9FYOzccC8C@$<52&GMeqJ9a#@{ z=DkY0?fm)67N&z$6~+=1gu$o;wk3|2F-ZSYc`ivd0ywh517dEesL6QcdrV!O zx2I7ElP}L9t|IE(&mHd$^6YDG<_WXCR2}u}AJQ34wYKdh%5mzNy#7lR`LdY@1JqCI z3n~WoGoxPe3bd#C`L8zN^6~2P-87`wksEa-Z_oA(n+=PV{A|4xvx}I9!RlAnEH+hA zkYX}!sOzrxU##3}vS+j6_?8^OSFfg@7*td=XKqzpq>ga#HNQygOrEy)GAVg@s1-1W zIU3QySHqxdt4F`_%QK#n#g?+vozHiy3z?mJLguB5$np4`W)RXH0l-nF93mlxoJ95AsQ0M22x#8Ihi zLOhsc_T(XSHL~CKHcw+|7*)Zl%A3zPOcJ}tk28;@qHGLS&^+U}*yd}9-J==LTcZ>| zn=|i=fdcpATimY1_nE14dj7dPeoC5`cP%TmxFQn8)VZnte`tH}crM%jfA~#>R9ZBI z7L{3vWF}Y2CK;IxM5JU>87&P`W@d-l<)z{|rY@!#3JC+j?VzOebeT)oBWJe$wM5pRCmEv|V63z0pv z?vnbmXF2;~e1gsm>sTmoeTbv`+$$d?t*UiT?b7x~zbRra&mSA5^!xcR_WJlY<)^H$ zEGrij71q-7V5~KJ@V~3K%-s(!^_Z-zW(g24Yd{cJO}@gR3SwWen>*3;dD$y&! ztEgh=hQh8=Lq7$5rgDZ~ffZgKihq2$?`-7vfuU`a^rnu%cB7!Ki}7#IUP{e;`_lhP zYLm*u-rpau(z1T@W{<{zq?ZB@q?Or3pBw8~?0f4C7*hZSSHvIDD-w9#DcDH81f|EU zBRMAKeQY_g?d~1vIOMM~is%5Kqw0VhfRzxnC0IQdkRgJpt%;8?^CzOjO)+o-%LG6- zVSW<{5A?^_?jGKl-*zMypgo!F5!?c}2KIJFe8`h0n-&VY#sR z0-h)7Hwfc6(f8E^5=(;AVs=F6@_;m$`3>(X;RK>-_3FP zzp3s}jLCCIF-V;%l9H17v%n+Fd{HNA!DH;APb-%woB@K1F%$vjLy%tY4^7Q-AVOo( zasj~+xJFeBsfgZ!K$=A6ypRR}Uu?AzptjL?V91-?qfxV}@=A#HIp=H#^T(yvK51~c^l_A0@0dH!zr~>KW$dSa zjLm1Ve3uIdSM@P|NUa#^UDG-h$Jl+KN&I(3Pto?@ijkR-)7#U|@fCx4VtOnr2~&Z4 z5~^E~#M{9ZQ(jrw2x)8_!Zk44CEpDXUyL>oII6E7N@B%{rV`M1ob48ZTB7zL8$5)b zreefUK>&j))3Nvq`5q0Xi7&|({eNEK87bE+iy`Yd;+TkBV=eVjQTy>QHblfGqOLG9 zQa}9o(kmA#;#&y9+qh#xGfUs=lZ)hHc)5mhzI%(M)F;5l!;=6~MW$d-g(CBYg8>Ta zjSWKIn^;W01wcg8NTPY2e+->&_^ANb`~eL28p%Ne9Luo^!RAi9r(Q_n#8z`+b#}If zS_pVu9W)sU5HXhw6bx3zvy=LDU_$Nu)oX&RLw{UC*k#H6A---Xo?`P+)wzk%^oli_m7bELx z*k^=kNNF+@!+bJTDgbjT5h)?(;QzNcJ*7MW#&gPtgN)RWa!HdEIkllxOA9> z+5%|<$#Sd{7te~9@Hu9fbDO4~V)xB)Vhg5rYPdBX>{sDcnyc!P{O#+(-{)}mk;}$L zg5_erD$91LXx@Zha4gDVGUH&sfHKL3X3&pE>)dHJY#an-=MgIOBT@3uT&WD*p7SEA zG-6`{y)5C-6MOsf%eNBFo=(Qa*rp69<4BS_amOb${5SY)H+)*6>M;O4XPs4*xaQah zpl@Z=uO|t0Q)2$}dg<&ISxcx`NN^D5foAP+M3N@*C!!uhu0(4SW?wje5O7i-;{wwxt?-o_uuh(4o1=VWr)&aB)?Ylynhi@yFZ+4%I^_?h~!LKm-@| zpk291#aOfYPBYRb>ax%&tr{F|WFcFPJYV)v=kF88J=#w3Y#=$&82vX8MjxudMu&DH z1$!QJNfk4?{6QHxxmqHJ!@Q5nH3vYLwhibDgWyqJ$`IBAznO^7NZu6}XYBlSjUeoE zFa_4dxMDXQEycXPbgJ-=^hLI;j6bKgMW4N@9A|tKlWf4EJ=!A36L%5?jgbaVw5*X$ zVO7tGj5C3G?QLD!YvbbgTWIR<&*(V4wldXE)1CX$OF2JFS@pwVnNFUs!~Y2_-EPs> z%$r<1>cIbHubsi@dTE*SW9v(VG_7B!@@lqiuG*gP=NvCi&x|~(bDw$QZGve^c8tt| zoLqffQ>NAzGjrk%f_d<1FOuaIg(`K|uIH`h-rnA1juL&nV+OLo{>#n_K|CA!JSi*w zS8Zx_tZ3Di%X#5AP=3G%JT^sM#UQr*u{?jyhW{;XDwnWu%Y`85Fb2su2t=4KmVF60 zsK`$q|j#@X*h(Uq6*W%W+IxAPgkbc1lB+vOeC~ z6$>JTP?t6HX|OI8MNa<%X2SrXEItIldu#ER{!lrk=PKG}sVEe?!^imXP~rs3)|(?= zn&&Gw*d9=)?{3Ly3E)~bDaT>gMV;8bELm=@as#6^-SSrIYrB}OfB%^qVm_Fvn`-?d z@jB+Lh8q1g!IEpKZ{7sjD9PSOY`EPD=e3sqtK`*^cnmaLg6MUub%_N=$i#1;J|G^O)-jR@ZWR^#s4H5nYKfDSzn&u_Wr0GNt zHT;#(WQYe)Ir^$rbp*xNLKiaaU-&&r&gAX?50Y2j|6`KZFv#=e`EOVfeLA*H?+tcr zfvOlxv0WQKLM)AEZJ^>K5mU7BlX&k7r^_ zpYo-z&kT|~B2-q>p4gs@M68{zfQ`< zukP%-uY;J<9N&6f4TpW|FShiSLgzx_@CpXW5QvplImw)%$jS;m@(0OCGuMc(apmKP z+M#FQ3zjuzCPv<}^sD_vtRLl>^xg7{KBQb0KUZBG!4rF^i@09bTKX77oZ4Wzaq#vXeKv#EjR_MjIIG{iTyytPJ9En!h4L3M1J z=?O*)={?C22DbxM$DE1S3!dV$Pf)~stXJF%HfyIV8R{#QK|2t6}MQx_0H zrU{5~CiDQtyJ$K{UaU}6Ey0da~1b}H7oR?lGR!wl4#9;nN2ySEw9{mH< zM8X)ruXKzoq8~%^;PdZ+HW+J~cTh~A9^0Ug*%7x&DjzwUCdv)^6`K zhYO0=I}Py+z+y9O*Wap~e-aa`<}ou;ZycCeyzdu7L{z3&o-4Q@6WmG&C3c?!F8`h;!k;N_9{f2V$9DL&&wWt|Dj{Xi?E^!hU>EruQu2e$DeIsd!O3yyNRaM zpCe$4WCv#F(>P{{cG|l2JctytDqiMW?Rd1)WS}&eoxpB#!T|nLM2d_mdAuwnH=qSW{aKx1m9(U#{CI+ zr&;@MtW`9@i&kj_woG(DTdOl>UU5E^n5uwKnh|J0vJLgj@tYGKi@(03?C;df69&G=)4@}WjdX_l*2x6VV}P(^YiSnZTv6t8CiIjmB?%liL}*=d~u31 zA!y=qZj!2uF=ynn6umQ%jMe(|bpGF^IJ(yKWOe@Z@=rFLm8kJm5~L>A8uwZJ;AHcHW11iRDeAok<@!0MkC{IW@7qK&zrsF=D`?Z5B7hfV!q-_ zsQ^QGs9|7$m_{-~I5fuBaBAx+@zshXb&9MHfb{=7N%BJ5LFh(=1B+~Nm7xq&c1?tq zj5E4sWM4=;arlRIPc93?tPkm5!3d6T%4pKH@~E3bi0|q2Hef3v9vuVp&B2#)M-E0; z#`6||n>UTdx2*(b-z3vi?9^IH7{^~v&Q^x_hJMLR=qCa$xO=iSOAg2^>6@AG|0{X1({@|N*aJ8&=^$$A-a zUox~vc%?C~f0;b%mny+o?lK?xS`ULS9P+|$9`i35WJ|toIg&Tsp<1kO5bW?ihP&^s zkIo7CBX`zv@s#1uR=-8fYqWIo&!hJSe+FdN76~U*{DvvPbM?`+wW>tlH9LXl);m^A zJ3?&LWMyS%C$MMeG6?D7Y@Y2Uj;By^_KF0mf<_urthn}-sXU;W^QUcRbV&;VE2ucD zT)2!yJFpWRBdLi6(bE>p*cBRcB{T&-iwUH|@`O~bgB`hG2 zqh_vNFP{$@P`mhyFRD7U3d-ML$QN7;1tX;HPmJ$VQPK|mYg!q0;`0|~*8cnV-LD*R zU7N(scd(d>N>yPc>p=AgfttP8yxHu-C|M_cwt47{85GK{_OlKF{(mx5OdPe7h~*wa$>()e>BTB_3h)w(Ir zo2dL3dZBhj?4`yt1mWjw^uc3i0UlN?TNd zw}PkH5oiD)U#W*!+3;%nrE#jB&->WDoJ%m!*w4yO!Vx7UDT*pDL+dBkFsvaTJAj1fc*{#l2cc#5*S|I)y>JLbH-e=A z-K2-Zkuu&)GPfg~RB~S7a6GA{6#x$AO!YsjiS zOqM0|9@E^blbMvKW)PD3w8qH&5kp{Lso~N$pIaBYZ5tk8A%`}k%KZ>Ho;ZL0Ir{}r;>qM4 zT=w3^3Goq>JPA!rC-|NAYBYIFK|x_hUl)R@5)n`n|HCvrNDUyqMuhvv+d06S1VH*m z;jG}5hJYQi4ZzRt@~daUuMPP*F&)MZQtd*u#CobiXlTs&S8jeKwh+YterX67RUo8@ zA1<`&Q;KGYNFRXE2;D{V9vjg(7O!|ksO;*po+rot@nRw-XR|h2uTMWFmY&4wW~07+ zI9WpQSX4tw=qOXC4B!VN)9}mZ*x;~xVOVJ!&;{GS^QuJe1}^aUWM!Fn@3I@6XFi)V zc|SwuFQv~ltT$B~Q@q%OYPv1GQJY-ZQZpGD6{~4TpB3=Anxje@3xX2L`$*Gihqb1# zi)M$SCEaj#D|6Mvezo;ksW#8OV^t|tjTMz@oR2iQd~^3ZyJ~s8T^Pug^-5Ru7rVMU zZ_saEZ*hw->50hCpQ+%Cw!iq3wzhWq>Xj?06++cj%2gzh)!^PG>E!sJ-QQ(deY^+pqJe3WiuC13*at zXQ9t_RmE8t2j*b@vt@cFCf-WNs9{-1pkr4~!N$Nzv5Pn>AP-1v+E4B!Og$<`m{|zx zm;li5DNxs+===yCIv}+`$EG?jUF-_5$ckyo0NPJRu)&RppzRtkZmOzM1`Zpy?s@!0 zbPbFC5Lw;S3ptqi%3=4gN~g-agEOXQ^Yx1{RIu38948Zn+C0p(c!oyhZwo*~p$R6Ns=`pI|^LraMH2#6+vlc^)ANDq^m z3JK%u!grcL^M(wz`?V>B!mBtmfBN^N%tcW@6by+LiIn6QDzHh%A(B#9h+bpaQp{Xl zNjt=N_A!*NV<*P-Gc7VD~8pM3E0*SeH%X`bH5mXX@QlH1pkJD_ge=pFpl zA?f_20%^G2E?EQZ-dlQcMSFnqQaDib1$=0*3+LhXlGBy_5}{V?T&?@9WNjc&wB1^P5`cCsk^T9`}?m>r06oiBZ zLDW~RSyv3w+eR>hBwj8=a6`a&(nbcRuh)_P83+wUtN)TEON5&aWqSGxRqXFh050_Nh3-Yv4JKSkpCW9srZ>gg43IZ(Qh(JAqsWq|otS;44_u%O@^0 z{C~9yVEIRTw>PZvL_A=+*I)aSfF!ho>_qGj3sUb$L@^3`OyQKqCQlqh6b~B93qoTA z#99e2b1fMq{4obWJrVbE1Sk38Lm+Z%V!iEZs^bT(0XEOeZ#FP8#sD=_VWqtKOYSt8 z|3lTAJ}R}1TV76HbpNHMO1e4(D$r{Czu}49)^UpO&@NxbP2o?%_LR0IH|kLd?9e$= z(V_B0+@f#IE31|5zM4y?6Z{56`($^I+JPexFyz2{viFjm5|x-veUjot>vVjWxHX#nfBg8d=qm?I zf2K9Fpf6s~WN>O9QiY=*8C#KqzU~kQN6|mN0ty(x-<&-R1Dv|%hDTR=M-YzI8s<2- zj)_U#r~`FE{L(?9-UEyvbb*&w8s#}*j8(v(%gY*y4dR(cNI!T!24mN>VekY)g&~+E zX}~~8T+7l!VbynwcBIBSnr~dY_U!62mIEImK7zb>GUp_mxcP?pFpzR2GYepVPLg4O!*M zX`RU-pHHiDx)`tM6Xua;8fstpriJaM_~-L0x*axmj4SBBv`bFCJ#EN;=q>2JJE(6hwi>=`Jc)_(GvP&=b67z8nhno+E7rWv+Rl?u+Giq9oWzOON9+OE zO+(ldgz5t_AgS*dfP+e$-CbxkUdSDa zO&8f*brXIn(emSW%k=i->wSMzTh>=`E~Wm3QO_RU#BV#MN}FX<50XjDg9mkR?}|j* zI)q-A0A?Jr;LVV(a~imheOB4v{KA5$2lrvSCJu4&eEl}US_8Y`g{Kg-P*4hI32dZ< zjr>gs(0=}spD=0jH(g5ERIa6U?A)u1e!y^d?8v&omZ*Bc)#v2I$B?3I)$oarcj@mw zx^`1cb0ekd#j=S!Zgi+C9#fZ@bv3ai#q(M8?c+=C_cKmcv##RyuTiYp@SfYBhsi42 zk@Hq*B$unGw=BOf&FDoWc6g!jJipf4^0Y^+ibRC`TVyU51S*_N?vm9QoZQDP1b*D;5z>_dJ2 z`T`3p>qxkqSUd)ppa*7ndV6{4esk0umD#v?bBjs3`tJSvQ_4g{9yBCixa$bnc5qI# z#%QBy-J`yMV%2$v?8&i+R#dn3xduI;5lnae`q?D$6YF4$pi0xaN)F1a>wjzha;xDd zpt`M%^LAgO=lJd36=F}sn>|;0543g-9;2;(hJrV2ZkM>v{2X!LLdkk#IJB+ryq%bt z!-%V>&Q~$Bq946}>(7d7agU}lm-~slaZZ<@Nqt)}^seWnU3u#5E-p`V&o(Y!p%?!= z?YVaTvYS!z`j3T!QddW9cP&aS()2y8`@^9Kc!1($5Ju^_UW;!z`Z-0jrb*42LBp704 zHYBdB(>AD70Dlu42u|!k@Wqfo<@@(Bwz+r2ss#LiB}gAT)+$;-c!hA~Ql~a;&?2PP zzHIbl#K*6>glNcsXC}QkHb~w6`^M|q&@8Sg?T2rqU`vGDtYT?tRk`~q`d+_niSEwo zndI|CfuyZ{2~xm1_igttzo-depaceyYT9Yf2W|beui`NSK9n@NOL*yQdmc^Ae)qmj zuTtGQ6d3ddKg884R?Qwt==BN;ki5DnIp?9hujrSS%qdH{<%NW+m->89>CV<~ z4rD$LlPT6{8-G390JpdaqNDDIrZvN}3uP(^9e_4C)~bt;oyiTf%zN&I&J6!Y=Y8zW6mV8u{(T}{pT_3s~HatL1MVeLg+UMMR{Z&s!5!)GKe%Z&5 zRdrcFVl?gD0IH&zK9`nUWFF(rqo3CAS!O$KZA0m1^VXW2^vnCfe%ZNHNM>?HY=6$? zUCT23Z|sQbHUU)1*s5h}cb{RRvTZbT!N@}!-T4AE@ac1v%_N>x#pK{F67St z!Jb-mkHPj}qvbQvkf@_vy!<)NexGHFgjLTzC!ps0M}#qH$SG7xCuGbaqcu@nDC`y$ z{H%EF%Xc--!*BbyX@djUyQzemci)?8Kd<#63&Vn^+^em%ioO?R7Z= ziD>|u$oG8w^l35-A5UP!ZwsO2P*c@~@5FCvVGdoq74u%q2o}DMCEGj&M??=y(}b@q z=F&K;iOO$b4imum)S;UHO?wOo6gxv|b$meVY>Zvd1noL0e^wh78F0`b|A1;5vw+qn z>@+0sSW(p&OnUGgPxlU82V!`z^crsiyc)wa^&N_$9vc7p>inxufDPuN>1{>D#azg} zl+cF-X8sa0tH6C{Z`94X(z3Dvr8@43!m&e2qqZff8W1Aq^k{KQUFzK+o55$VvD1E6TLweNbOMu*7Kgm_0V>U) z&jAXRtdked9*%Z4@0e65Hb91ivB-&BGTzB}c=i0=o+n=dMS9dzhc6jRkxk1b9HrsU zx~K=CVzvtLQY_+dL} zk%{3OkbGipF9 z>N{_9!TXvByvdUw^UTi9-F%y&$cPVx#RQq|ctt`1iO^ZSOQ9imO0gSY)eJQj{H|JH zTRV%{jLE8;xcZm@%PB@Ff=1d@*BtqlY*smXlVKAu=F3ao!I8ig`TL)80 z*iOQ%xGsgzMbM^HM$MZ!=7E_BXA9(HHDT17X4=3Nog8HNJv0aqs{B;CE$K_hO#*TI zDA{NE3cp(}#stCJ*w_5mT+eE8_);sKJ%uR~QhN(p4T37pLtk3lX~YlglrU2!=U>bppB>HCX5g`QAj zM>HGsZeR~Xk=M6nQIU7da?V;TEFBuG;6><3;d9icj|{1vjEv?>nJJW{)MbtBt8O#|JS%o*l3&OyhR?!y1+8O9 z%-i9S7sD?WW5$Dr-{j>@UsUtqV_;}3OnsS_{qWM^hd)1!C2v7$6#u>#%ejvlY(_?t zAD>SB^w0D>`ruz4D;Q8&X}VMHVIkezce z9O%V}1&>Fgd0IL-w$Z?+Lq#O33e*$~03u|9?FlHH0QTd{oCsaSgLRO7;IAFVuYgXN zH-Iqn+BDNVZmbl%60_GgmIWR#et5kDii!lnhQuub+T~5`j*vBj5n5}e1M0yUOzLv$ z(XkO&x zz2LWC(@vmSlsZDRYYd(S|-hlOA=4(-&gZ8yR~;xl|%mCS{1s7;Rn`G?1{+c z^UtwQIn;JaLfD?mRf|OIZd&Zx+%a%*yO0j0s=WV>@uWyfK`Wmlle1}yDNnLv;tBEl zq%RcZxvEb8rR9c;Z|>)i;HKAPgEo0qxngC#gR5(+rfLLJON(RItgEH(%IT>(Kw^q? z3>sB(A@bFe1Vbi(HYnZc(1}Hptts9*BJM+ZxjaIK<7|S+k^xb+0hQj6<#n9Qb;OVb zMm(jQr+i>QN!D!HEV1-}>)=VDFmI6lh@XcQvBu>*b4o+wIe=}omd=X@&9I>ou$#mk zeBnu#O>bQEvubB{suCfVGem0w`}Um8ai%Tk!>5VqI)+z`09uBvPlL&xe){qj_+{f# zbl?YMoqDT{#Ez3Igf~^@hdkqp{t)WJN{@N$DwOt0VQCTLcLsrr%RfhauGPT+N)2#}YgTis%?aUbidC~5!Zi6Rv-|NHg zEby=UuBP7%`v%AQ!k$H*ded-b{+*Fs-jOv&jtJ5WURt$UGcD8ZW}k>}Q?2-UoJg(N zR?(eT$Hentvqaoh;zm9j_J9RLutY+E#&UrcsYKiJkCDg#Y}RTB9|y+yia6NRU?K-x zU?}18Z(uW%IQXz~7^v#QjEUn4U{sjN*4z-s;B-@0f zuVOOCQ#Wun21xt}yvJiPGSdfz*G+D4u44e!$gsvD)bt!&Ex0;O3Jn?8upo)s*Wwz& zB)^u_kY-_U6;Z)C6-5R>KYI5%U+@Z~Ub2K(M-e$0P{c+&{$%3+RIqzusvVfR0Q?_` z$u;4H!;4CHXcinDLK3in2b39z?=yk0`xvbTyO0PS&Efw>#H!G3K%^R!=pEQ{v5~N2 z$(yrdd75WwCDBxYE|K7qg+zv4_!q|MjhgsD>rm{ z^SU=lW>kmd_k_GHoW110z&aUR>`@=yz*dlY`xoZC`GE1c_O?+wHU#|gf4wRxKID^4 zW{&37u0m^>mchnu;V+juYoQK~DGaVvy*^eQdlt7t>bm_y8tsrs_JLaY_`OqjBJ3aFFy&o^AGaobdI;mGA9w~tjCtis3M@kEVG+9uW<~&;*#9F|n_5YTDlra0%c?ZE&yO3+V+JOy%6Nb$F+zmw2@O-i z__zfb4THIQ?1AG$2`y4SU_CX$TiFL)FVcGmbr`)cdFV7NH&qYbe1>zm@Yl~=V*d)f z5)S2qJ|~rGV5b6u*qP+?gSTK$jy8$d_2Iy8EBp$?B*E#&w^-$;5*4)`h%eLN{g_Vm z^Ud$UyJB>nE)tS2WgO)CpGnthy7Md3Sc|fEzp<9qI`%}#i+bl4HrPkKGCU~4R?kQu zFAo-R$rT%+(zDK*Iz7S?G;WXdd|!o>h93ygQqLKX-95-@m%Q}qrYg1L@1f~J7txCP zPzeL=DeKJ*L>82@mO0rU8fB6u5X$$qNBf(@_|z0hP!L2Wr?P+TF2ds?@hJp@8BkSu z076VWPV!K`XR`3eCPA!lgEaM<&qLH1UR{zLr}bqCB~9!v%vJZk@*wibeKz&viS0b4 z31R2W8}3QgiQl~^T?TzN$Os?z=>4So>?GjRH2>ewBIV$0_meGSj9Q85ZX?6nGnsSx zT5@`X?@Z}dpmE}-wq*c-xJy>Ql6B%k#tVY2TNP#S{}pJEU-b7^n$q8k=;7k?W7v8S zw!&+}H} z%sMh7RzzHHsc-lEYcz~Hf%)HSLKrs#EDV@5C3T_wsv!ixc8^;z{g<5}d^7ppqmAT+byDO2dp=F7!uhiA_Ws}Uj{hAIf?blXA9Qo(V ze97OV)#87cPUy+r`)?Zufs{#pPSKjV%!E^A@`8MgUzht(w_VMF0cHb>o|+HihA%1WT)&**^?&IpmzMy>!+>gU&?xA z2Nou3J62bDR9?MgH?p(;--}R**7&KheesTr)4>Eo9sn>DqyN(cLqN(#ati`}gpWtP zl2s-@Byjuchps*tou}c~(7Yfkl`t zn!{$?ivF8=(+MTt8yDhEC9zD$vwS-6bS|^zhEt=T%_w_zy+iVe8%{IL{$c+bz|$pU*TK-yWyVVQ;(zr;hOLB9^bQJKyywRaZ$QJy#NDN#c0n_J+%? zl*{c``>JokY)xlRFSI{Aa0SoM(WO5UDi<2lJnB+R zSA1)ESVQNTn^G^@-#0gtO!qUuw7Gb~UTM3a+x3wtQQO?qk*2a6PPfm?y6)Bh&d#IS zW4*WtBp+DCB_~JA|9&GB@0L3*ekVDC38A>2oSYXAlcvD=-z1FLwP(*F&gpZ7{Hj9^ zjBNh&{O-Ls3@|OZa>C3a?ej=qODlf3HPDZF+M7jWEY@$$(|`K%xwcEj&aQdN-9gnR zRjq8v5Uaj%+KTS8;IZoDvJ`ITXIk;0b(5;G3A&-`Ral#}KiZo!Tf^9YUl8a3D>bth zPYsvA-ab-ZAZMJ9#|KtE5%(W5|NKe(64rFXFJbkbGSJAl{SHKV=^6;{Q=Odss!NPr zO`K*c&+@vb2kz4k>G;NS!}(?73lGsFhhtk+wB=WQlT{a;XIhXQyz=Si4eOn1ng-R% z3{(Oo3*5J9L*BSN?4VRMu;d1YJvFqRGCR?i9D1a1P-IN-OTp3~f3HyRFXb_gi<|ha z^YbgY*VRQKp!4EEj5UuL=WuCGQ<>|?7Wf1i@@(vtxvf=fd4{%B=sgB^_z)%Nh(Gtf zcoSc&7^H5qUBd2$lhT5QM3QI+m04WsIbHpM@8Hlz74eBrA3M9+uT)s&%cd+VdVlp% z4b7B%@iQ6~1?Cd{O{er0m^s4)uap@-?jV668uq%;mSrvLD zur0zX^3Mgwz4g7k`0Xndm2E(0=9#t@>HX_ARi#XfyOxM+?(9C|rwYvc%10w8)E`|+ z___iH)MDBIXecf;aqFhz-{q=?RqlQ@ciHk}JYRpbDfLyQvngdA-`ZDxYw=7R^iMoG6}jo;H6@%WFn&bnIgNFv)zz+6^5!po zRm=RLIas{p-Yay&dVpzQ8}WQ8<4^kXC#@jD$Vp7NdSzL8rb zA*RPlE-@o6DeP&qfLyh5oWwiLSkW_zZS{=I2}!>*yb>`j#^2-(UNoFt|8}sYMc4k zVv);-Irn%4bCN6YRwl0mL&#S(`MXu&Q=upOliJS)A55%2dX$Qm{=NUpWsDoc6k6zR42z4nj*8cQ=-TRkr*qc@?}HaaI+Obb z{;ACF>$LJZcyqR3%q=G3u?)9Kb(PGr!cTECz9Rja`#RePU8Eahx->F!&D8TAt%C04 z_m|d|B{oNYe>L1Yw&Y#Og9TO9TV>WFAr^O3D*`1wn8kGN(MirOkqqDsc7GB=F;R1= zr?Oa0iR8bU3`ss{;=fB!%D>-)e> zF*|oGe#P;ro^;L1I#6G+xOE51B29~%8vZ+O~=%Z z^hQxTaK0I7H|*17l=XNspXSPY!{!g)95zRI5UBl$~H50(GG-~L>Q+&x#3zZbQK zch%hoSJgb=5JcA)tLCD{#io;{sOG_G<&r@A#$5W&_%aHgAmzAb-NK(MeQZA8c+zKn zQ?{_2ciXialqwCQ&>MH-?uuUNYPq`n`~@a~l1}+;zdt|D=RZ$EZgR>Mx9z}5+%~C4 ze4;ugq9W9SW)i0BABW0O85UDjFMpkrrxxB-L~AkmVyO1t$NBf0_j3RFF#0s@Z4&x( zwF9@3eHgb1Yi031rW6!NJyCjw=M+PizV5yIGHY$g5ZceXmj6%+bxFFejG9zi0}~w`3XoeF#|)m@tW#If7JRgM=lA$Z z+L!BZv&22)?*3#p*6{DM{QJ#g!Tl=8P$XY!TAbuJ71uL~SCf>Ye&oxM#>(QNola3! z&gFd^6H#};)%}#@vvmcQ>uyQV8o#PIy=PSB_mBS9U)5>Gw}ER{rmSgE}FqV z|G?$_K_Q$gL~47QmF2B7A*!5ddb${kziMf5GGmWpe>u7&jwO7Do-K9Qi6yGEuf!>j z_#epq*TpSdwC~STAouWu5v(_;?j4Qz1-$mfS1(*>OyH-!bzI+n ztX{Dq^{ZtJoyNa!_j_xRZTr_|Id82ty=|+_{K$trjSBZ;d}_Uv%~7?8cE)XcXFiUw zOZw8vuuB<<&}Lt6`p+tuZOZB_HLPB6ntvzJ< znGRMbMvYVOCb{!O;KDk6#Cgtr`_}68c=ZJVX5E5oo1>LN-e8Dy<=gZH-E7Nctv4P- zQ9n6g%z#`fol9o?UoiBW13M+>0xtbVZ_`}_u#^Gmc=-)g(RQt~lpyKOAhp`6ysdjGl4>3e*Z%P1Yb zWO-Hh69aoBn~PMysfY1#j_|)dJ$St-QOCH*_f!)Y726-nOrKsExR&bcSXT*nq4z-| z4rF!oxPSi*W=CsSSlj`lH`}^Wz;Sa2bp58TZawC#Z}E^)pwrjQv6f|g9#02{?K@B; zbmRH$J(xyK0nO-Cjx{GD!1bOt>75i{UR7IHcjfD-9*H2Cg9M@`Qg*!<_!xH|JV^a^ zZ7IpOnU*jZvoJO){(4a|zF`M1?<)AX7lA6g57~5>Ez$#iD#F!$kWi9#)Y}m;c$4Yh zZGb+6K}K%f8!KjyYJWc(_FdG=oDC;tX}*7_(EjufeZP)t*`u|zlDolXQN8W7aqFwn zw@LDUj@TVLBDi*Nf8FI(=ebjJ?aAS+yzi$z_m=Ds{;^3nWJ}m{yVdqt2YI8_HCVyR zdJ9s9Gqr%O`Se&Fvi>rNULf`=^yrV080czkWRt5JKEaLztW` z+VJ0Y2b-XIc&_m!+#9Z8Oic5`GMfdOk=wbsqU820%$l3f|2)5H+kpe?@k6&%W8Z;E zYcgds+MKckBIwtyOK7W~D{cv@I)1d#2DlnvECvv<*TYHU)NpgzWX{o}>Z_{?{uU2( zmX_qC7t%E8>!q5QaKSbi65@*Ov8ae_kCF9q+ji2pFsSrVXO~J9dhhNYHm~yidl0NW zp&r)wd56Tjvf*dl4Eru!>6Pa`3B4^BUrHqy>T>f#0}XeAcBE=-L2Dg08p5x9Fbh9v zaa2UFQ|`umGK0@EuInz=%nkto#&pvL{!Oqrx`)~EIT(SwFE3xRO-%*qRa`mN12;DC zYWoZYMyYZJ2M14^r9^{&vysRJV&Ki;h+wz<*db_k@7{gg`TY4^cw60|L|g;sF$yI_ z$qgVoD}eV6ZUJ9M+Kkgq$ExiR6lB`CSN|RGYKy)~)*l(bLszmKTGNz#+RcqN`H`#| z;w1dSK%CkzQWtjQCO_-xXEob6IF{@=Q54fscSIf&|T6m;3Bg1 zy%OX7BO*CeNrJ=qf65oU>v6-3^ULo(>{^<>D_)_b^nJmt;JiIc8`)MEXP=e4#kPF) z>JmJ33IzncSLAI?>At)NsWnYqxX6+eIMl=^Kfap~51=>8W@rQK`&2(QL%4VL=lA(d z2QO}7bN+rMGAfE{%?%w)gJ0vunddZO_lK9wa?IJJOicDbwQ-l+K!oq54&;4#f^>@h zcRz8vKY>88pIHH8t$H^#VpP65c@HB!EIBuU&YEU2igA?Rp)Z&j6d6Cgeuqejy6k@a zyv~D+yiel-Cv3>v`PS{*ExmJai++u%@_xuzd0QGxZbv<-9)=UJ2)o2Sn z39sQ=^W)6=`as=ywoIz|IVf-m}pUy?Zue1264fjSYFyT=10|1+}XsLRbh`6 zWo2o(X8n2t?`+Hu=$)ONgIL;_L8BtPsmr1wBA>uq;Wz8TL)WMWjfBe5%KWQ@Akr;Q zEP#8b!sUA~$n$Q385r=0vZauOxYt=_)8zMDUsd*JYvS6=yvkxMR3#uOEX0RhEwXOl z)-BJcTe)l3Y8`15m-JoHFMxW-gZYsNWt7TA?ficgswa##KK&luz*WZ-)o8d~qIYlo z)YkLfJ({);A3of4;QUJP5*R3R7^9D4j*CJtyZHwr{q2}C64}^&CThi&&a5j-HuC98 zs;aKz=jZRnNsq|wFqpH9&&;Hku^6qzCWRHgZPzXuxQ+`_`MlhH~h5NQN78hVzz-XJC}{;{vm?bfa1zK7w4 zQOo(*+c-qJA?A}&R(6Yy-i_IfCnipBOG={aODf9C-@^RJVrEbs8^rd#dso8`YkYe8 zC`RpgbSt1~=(_(k5@E)DHIB)Li!o;`T^@K`-vS%rwfyuf7#mD zNTaqyS+jQCI_dy-=Tm$h5S)c$gFR$78eA|2Dg{jsSKW~62?!z&S@*9Y3o0;>9(H3( zX=$Hf($C?vEAjosnQzM|ph;y}_R{azxfAXTR1`cGX^^XGaB%Q%?Ro;^G8R$Wl^{gG zCFzF0|3*^KqJ))HedC~oA3b#C(^BxJ!fH&`tXboN%h%D}-^7dp1dNoM0v*VQCB#mA}?;jZsB%R1UCgZt?H#?PO+4YS=q{_8}bZhL+f1Da|3AXFqad&V8N7 zcQd=kHn2S7fma{cAE(dYTJE~L3y2`#D;(N;Y{L>5DPEX71rC*zy?s`V`SWip`mIH7 zO5B!mh1~QkSoDYN$G5@JN^x|rcWE_p5D*H!1?Fc(mFi3b)*|FCp^$%zecA%Eu5%?= zQr!?|y$1QJg250Itc?iKsmlcM=Q8%`?O4cA|CK;gyi#fzh1@)>k8>cJ(X^4Zip2}1 z8LP_1@A)b3MKlvmxnkt|B)xdjo@H1%e2wP1nc3NlDyd;Y;i#`HFF$a#E5aa3HCFNM zn_?-dFLy4M-Hh$Cc5;#+g(O%zo3AUC8}hH*D#7yf`s`-BUlpNaAk2_o96CZ*)B)#8 z8e>n=LWB4UO6Y35eKiM9o_&BA*?XhPCzgG!s!su*$OF`0DhhV*+u(k!!_B&(5zjPo z5_Kn}PmGi`OiZ_N9u8ze#7l+Jrl>O$v(+~ipaEWQYrY!J3GLyjEQ{@AM9aQwS0D=_ zkBMp7S#WeBzFL?S8f(Jj=17F39y}snKfykxwhfgj-iTssb{-O2#l^(N(K+;hBYY<) zC`hYBH_c@2`Kr*w%X?3~px_)RC^Ez0y@~t**RjkyXd0fBPtC|DY8c=cAp6t{oZ?51 z9}i;Tek?p?)+FUoQd>dX_%1`)l3kcBn)*|(sixZ|DLE-Kn~rVtlk0P52* z?j50ro!Q`%{RWTPUBVa&tb5S7grPq-GXS@BMJKZq5 zIEEEcAt6Ck>*coQcjb2?wzro`=o00`2`PKN!&~n@q#5nn*lH=PQYfL4%!bxO<5AGc zJ+*9|O4Mo&Qm>DHrAU4;=}P}k+1T(X*eNggi|`4)DYav8c3czkPJ8aC_DOnA*k~QW z+*w}y7ZzU)dZrH{qD_WR7}mteqW-6Yui6{56&^HCFNR|~-XwAD5Q=8qi%*iyc;L=S z+uI*PXP0iNV<0_&qd7t|S$_^h8o8B^siba)ph(*xCYIN{?U?MP&b)hAN(L|hKBlZo z>w?)j0*6=N0Jsz5jC+8j7*?Fi=O-6Hzu>s#=GFsR_dzr9Sx1(OBe<&(>#I9DI^vCN zL?|YW2?2Y2{6a%vvvWBpeGE;c^a!|VK^kXpItIq*Jv+84NR991b6j9JT%hJK!&j7u z7Gz$PajD~e3ENc#Mggu$R8!SCHf9%_UxdHg$4Y50blwWtcoC5V)qE?Li>@QN$t5S1 z#c!ioX9jVW8dWV8dN|B@PGwsf-AmSkIWv-z*JD#vS3=>~xV zF<2ZLNxBy%=b!lc-i8>7oGNIp4h&@x22%e7iI*z+SdM#v%5m#ATgt?UR z3QuVX{4Xfy;*n=m=L}rUnp}p_|1Dd$&gH!fS{IqQxp}H1M_h7q^EKtwI6gcxo z6I!P7g-%&e$obXl(*M!PNrfv&Chd5x`=w0%=s)2JSx1*2wL?f z4H7^lJ%T-<)wd0b(|98Uu2KV2ktNdUAEBkr$su2j3qGg_f2UKG!Uy^}#)mHn0(4?YuUn z$Rh5@NO@sYz9A2BTPm??6pE0L5P=+keF)Im7#kb+z!dBV82UwKJhI1*(ZCM&0YpHR z-TN)BTseZRw;JLA)Ddq(`ht8n|Jxll`UTSKW>W)?5Mg~309=uKddS+vjkY>#ze?)! zN3+`__{*zkUT*z4s{NSi^WpD566F}j z!67005i=-eKTgTK+*OP{nAGU__;4UZGz)NbJ_F(}IuDe-3=mMkSe{Wg*LD>uo4u%y zQot}pIeWVBsZ{tYY?a)fd(Ozy-=>Cd(=K9JJO)+mTUaQKWN|IvePq+s+xp|KC0#lc0U6QcK6I?5$mY_tLxd=9+F1`*he!-_jRfF?g`La zxAXI_1M!*Evl8FO|5^Hf(e)7Q4LFk5o{7NwY%It^3&w|^xWmql3efB_+EoHZ5r7v7hi%G=BfOglcrf z>eUP2k1HnqH9s4-h_Vkp=lvh^)fA4D^F4}-D`{yFhQ)0gdO0*AH;^_%9yq>_7N&!F z!=6xzNR;cS`rA=s`|8JS!&ZHY5onJdKkh_hr0mkO5Rq|D5fq4dhL{U+sXc!qQ0D~z z+ju6Bhar4^W@0H)cu_!eVJB#S&cY-v1;-!bN7kUcgC^6&de>=#E$h-X|6s2+oE)r+ zm$0Zkmy{a+>c_wkAFY;Jp84|+=%`A{?(Jr}=R|SU^cD!39Gh&G%lBClb?QINmKLBF z;ct<8C(6>yEcVDu;IpLjyTojd>>2#$N^5OiYj1`&UR&)GYmHwh7AQV=;9aQZeeT6f^Fiu~z)*C+^0DKAhR&u}2On!x} zowV*4G)isgGBClrt}`8A@eR^JPfl7qtUfbi9R&#q3IvQw@tvk0F-3JAw7x~eh)T;P zx@r_+Oz<*j1M}(_8M*Q8o9i!#`B9*3K))E*R)GGh8FLwA_8m;Ya}^#oO)#FWDaKiL zQFzm-zO0>6yq>Vyx(%h4t%-c1_VID;Jh~Do5Eza$;_#|w3HP;j#NwpL&bJ%Ik3Cv=k8kSb@Uxa7|i>| zW}7glc<9rM7TeNCK=8t*r;cPCs}=*Nu)ARrA-M-o=dKd3hR6Q^M5QFYNG6+g-|sCg z;Z>1aWEn;#yoW=xk~(0pQHp>29fgUo=!xogD_z#^&*ej5QR$fcPfQ{QmH%Hp{<{}h6g zYmi@LXi#;Rd>$z8-7pr0G^bvUU&wihPjSld$a~a74GbD5G~3$Pzg(GDE?@4%afLD= zbk?O9t98BG*Z~|pbo9c+tJ!yPna^S)PyAW!y}i=YW}luOWC3PulMz*bh{OQ7li)GP z*y)fWXA~aD!-;{D#7P8Qqr^ERf|7YXru4C zB?Un%>2-#^EP|;NS0B}-uXpiGN2oC!TbCzy{Xg#U>dBMH6PVWghzgt3Qbb6q*n{I~ z+Q6ttJ@yMM8!M1f*=B{*53@!MSYZ4?WT_!fl|qR%^2d4qY8C%lj&DQn>*-&}!iK3J z(Yl^+Q&<-dr6o-_qULyJ>v`aS1PLAG-ut<`y8~_COW7yS57j!6@NC81raWUNU)_cGFTWggQ!)0DJOVL8el`y}$pqrk?*tHAdIKR%uP~om z9+O`WvG_H8p5IrMceST&m_&8PyxfXyL5ZvriDr-zQGdhxug0oaT zYA7AY#L<*iRb(qXwQo^+cu>_tb~=3vW@HCatzq{n`>-oba95(rES{&y`5QCnSf(JW z*Y-kIx)uT$c8?r>f)#A5DCCI%czQne)ly;JP+cjEi{c`yp5xUWoATSMr$=KzqTovY zg5=GxZ0lOPGsGM8-i5j8{0y}QgR}#i$hksLZIt7Zly)36fGi#SPsmci3^i9j1t0nn zm&jU1iU+Dv@P3ETGP51bEiNu8sf8AP=wseepT#ojEi2rS{%^t9gc>2A6aeY-Smt*q5{{cXGf|DUHHa0dqf%U_7n8P&g>-acnX4XdTcv#zx4c3%J z;K4MZNO?4QTBzhEhH)ys@7&mI-oaQw`6m4=BnCsGuQEi;r}u5Nttm_j`ADW?U!qi^ zdOv0o8;8>Q>Id{R>9*HP=d4NV}9fPp`BU}t4L2*0d}iqgGT8-Dyf z2J}{Fh-aVX%ywZnp!z)l6)v~PAc3-DN3_+JXm2k~xvWV$e})JlE0~^9H6Jpki61o= z-A~yxyXW?Q2T8m+I)@@W?l=dBPtOH~u5WKMNic3sI}(^b1EF~lD!)#5Im>JxToZ#W zNZn0SZmq#`n;8cEvjSP=ou`|P@Q=0aE#^IC+ycTd;9xPmkIaCkhm`JdI(v3$B@2bL z?-jFyn*2@C0l>Jy$_Fc4ToY74tn< zQ7dWTCy=V#HpBe>lTjSd%eI_TL=4;o92R9gUqc%q_kZjCkBqs_MkS@DzHB;8W|RE~ zV@5`3SSR(shrL_*6PQ81T!Ej-OJFZ6pq6ct!B_J|L_~0mUmZ+`@>ml6i775{XFu+}rmX*624-4`tbn%| zbw`eJEQtJU6GPp9MoA)=ve9lntzS)zXi}&<<5(5Cd>O9hTtQ3LeS7oS=YGMMqSSvK z8hs#U%)b)QRx_pqcDR1%Ql*?ISmoQbMyqu z6m1v7ZUzE^bH|PymzHz}nz$v{UMLtRm?f^4!}tm)g)T=$i31E>C?@N#Ey-}R=|4=y zF{PI^#T#yG7{Rtr_+Ih$t)fTO_&JgC0kknS{jSqb;Q4KR?!E-&%1gKyCc1!s!>M!$ zkS$owSj%_&crX}5l#rXa@+tE>{IWis<3!cFRZout3xs#cl2nu!hU-^IOS2QO6WEz{ z(GeH^Su6h8I=hV5uU{A9Bc>uX4(ayW3#xG<)Z*AArD;>nSEWO5JhVEZ=Ti^?vP|?H zdSgS@CTzrZ*e6KCsF$THjE+zf&e9iQ2aRhdM*+FMKfbcN3xKK856cbT;fp+)o{^oC zbFegkA1={#dLk#tiH~!_ydm?myo;lwCc4kH;SOkS=-*N328vp{sO?z1j1bsw0v6)I-rImvn9?st$oJ=QFZi9rZ*m211$##2(Omf+S(+JLe2N;hxy}j zUs%!jddmL6y-j{G@~$n6;n-i)7?GBKVakn&Te5SRnV2+#HI#XSCqTwEdHsL+D&Mf1 z|1OUeHmO-1USmr`TK2bzuzwq6y(Y+V*PRy{A=<(%=e}tg7%T?3&Pmyqbt+PB z#=d+>m2up67qqyVni_dd*KmiE?jNJ7(Gjvy2+M<3!3PWF&cM|7Gl;`a&%fz2mTQ|N z)Qgzxi%;^W_1aF=Jz79ec$^>puP_)b=KSy3zP17lt8@J;7mBIv6W`vNds;Splfw<* znxP$^)Fgv-+xz?daW?t-`X0btO)89uL1Sv@vW<3p1hEDaAvAOzWsxCkZ6`rvaEfP^ z=W@ylDXhK$tUca-z++%&=o)H?4*2+LCNaH8lyty=^9bgK3xcF`f|rx|Sez^c9nme0 zbEWkceM~OY&Fi#30{s2xO)T6eT&9P%R8>{kw&icZIeHmLG69iRjvO9*7n_#Pj*yiB z2XGb7Y-@{?4)f1nu%HOAr``7{?51dxnS`vObh!V9li0u5npHniEkT@}0@GFMluOuJ zs{)QZ^x#C3B%FomeYP*qwL!gL_i1#~-!&UA z6da|&78WrmQQ(x)?6m0EO&0tw${S_pg6ETBg^3rI&~$GsinKL9pZl@r=C0NY&wn*L z->)uBP#^fgEt~a&Ls`}Bj#~W1AYCap5=t%&%KGOhHoXr@N)q1J6^RSLsQO?a!{mYY}jCoyW|hDS5Cu6}Y`g0Z>cr+qbV znttB-mVTh33|#_eAB<&YWqlv>HlboS9@xkSrIN-FxOnUYACp8@3FG9}EQhG~g9*B@ zng?Q)r@z|1eLEeJFM2*+dSGN8>A_%s+iDvdkI#4r%^h8n%sL9d)T3ow*`XNMTLKE+ z5irFAWhZ8zv2!ZtXFZcFbLtNK>MRY^>FDoF+Mg#t0>I zGdRFYum+!c{&1#f;$)Eretu1G0~>aR+=RJaqT|XJ0goNs_DcreZ4?Bt$J&R7uaoOKvFzSMHLI}lX)$Bv8pQV;shwe2n0W8rVNg$Qh*YA? zKbQ>IyaRLgM)E zG&9xDAh_y*g<9=vz>r0qhTLht!8Gh0E8IK z4F+;;6aWUm39_@ZLG_!t9{LJ&a__*vdHy{#ZxJvw0SL=L;K#&tKE8%Rn`b3oQE!I%m#<|-r3EClxmanEu$FcreWIHx42O`ZN_XdoGU zpu0SjNNY$(4~q3|Up6k;b^!ZRNSLWX8XeL4S<0r;K9BA+Dbl&M+&J`>UhEmmJ>BpA z2x82J-9kG~uim`b;(VU%5d{~%}!^k~YPHw*i|$HxH6>pO0hwx8cSnVE9- z?Agu9kEZ`SR9@fxKfSCEZZmV-X4w?nW`Ze3+S)x8yV#v?`L^V&_E9i>{Vewf%Od^K zk$?5Fjn~%n2t2>@oXO1G=>4K+?i(EY7LUEN*3`X9Yuc_I8WrYoLMl#JBj%&h*Dn)g zB0w)NUXmRu2oBA7I%aFewS5APp$G!Jp={kb<_Tn-)BvS666dCvXV}pm&+NgtfwS5N zb8)BeqD$CR^85rnx09I=7 z?k{myI3bP!C-gip6q}ZL;Ffb8{Uk~XDBwmzPd@~dmXxp@KVHml;o{;F(`YBiNYtd3 z4BonbUl_Crlcu<1x;C<$OMkk#yC3}gI(T2+nYEO5)MEe{ugS>dxqm%cn<~BgE+xnE z6kg>xeD4107MDSr0l%|F|Lp(Mq^$g;n3x#-OoxQ@dx8I01iu7ht)P*Pb+i~0PTGLj z?8Su&g6*T+ZXPZ6{@RUuyp@7P*R`5FV)?-xbtA>w=V9Q-JD^GCe(?v9ceYgDPf@yF zmHqj7@xG73%AR*)R3(`y$`vPy8grPO`Q??ODjHQ5S2>@*U%i)h4aqO!@v`QnaciI^ zj~Uo;ko4T3jw)PtTV%U`T?Oto&H)P#`Nu=+2j>j}L{9IyizASTX+Nwqk@1tw!)olp z9jS$!5VN1*Kiz0-ncgC33bmJ4k2it%HQbE+4}ICy_v7Q^6^6wH1y|cy2r0;^&f+~B zG5=@huNkhk-^c^zVm^(g8C&;hzd1F42-|Qt-i2n6(hj6f*|D8Mh#m|q7?6#khU($7 zi{UWdjx%B?$0np)=&t;x=Fga1#0|BIsuX~$nfGbz9{F-6eBEDijhiMVFb2^pS`JhO zHME@0xaP+)c;~K?eYm;-`+V8}2m65cR0n(Q6b2lYN|RD?mytIz)EG4t6GHIDip zQ+WJf&m`0B z@2G7&(eQ1=Dz+zqickra?CfP$ewFCO-_p(nL_P(}IjkUBZGy{N-0&ybJjFcoHvq~` zrat13#heJ^kNy7Ak?S{WV_zOy%p9M@=;}JKb1|K|+T5?Ms3)ZGCY~}KtQ#4%UOO7RzinvPDyb?{e*SPNbAwnQ+Oie4mp#~ zFer$9irnu_j=1fo{(4?#s|ZvnSLdfSgmcDUvGVBvKBvD!y7Y~|pM%=O-`AM96cwTs z!~J9j?t@F9RkFY)+n>2R0y@9(dqzIyu1vRJ7iWWe7d74MwfG8vyO{JruPi3^!!(|z~7VK;qtof z?dH_FLzAN{m{D~9@Djt=u8t22txhG|t6mB7n6GAe|BhPFH;A+3ZC)?FGz;_-Qt0&E zWsA7EmuBG1+4s1Me+QL6s_FPnS}3M18@AjENwjy5qSDjUOz3Vlzw#wh7pEGoLz z4hyJ4UpDm#B;{8>_+7f)BV+yp0Xlx5?$4f`oH?iS>OaFrW0>B`dA+AvDdXdm40C1qRjNX- ztCtqL%y}P}by9-1YiGt9VwP^i_W4cSQXGCOx<|B5|0`yt7k}=(S@h$xSc`s|`-Z0{ z!t8q`=z1%ndo-0_tDST{$$pQW*-q_X$YImd$nsd9SZ#!JoL(-3llmo2`U+3W!)V~O zhmkj*KDqXs?ILeLONFGTVZ7TqiXhq2r)>v;Vu@+47F z1$?-3Szzu8*o5T0q+Qge$Ss$nhVO4YakO4VHgDu(X($;lcm0NJ#m{RQC>gF6{{xY* zuSw#@6KzEHzNLD}KUX#Wu?IT<8s+Gy^{s%heI`fAZH*L#1}lU{z5hA#A*15+*BTLs zS})|~<>f=QVh4=&AnL(sb#ZZV+|SP&T$;6xYgj<8g?GsXSyP_|4d*(I`N5QY(@aKQ96T3XT~&<-o?o|tEFKv;Klm@w`HPAV0v4hMHO z1_C-@8Z)j93cS7USDNwjagFdTy13Nj&ZOXpftr|0vuDiBg|NX*JJpFw4$-)4!qMuA zO`n0*+sbQ#Rv}=1EnpmxK6n$yabd?}2tfV}pn^{5cI2EipmYSz9CrK^j2Y-&P1@8? z5Aczoc|#djP~?s&2bRuXH++mR_KSL}qq2$us8R{e%Njr4+sj#$J2Wq*x@dvpR~9K= zk0(KY%VnyN*^vEfhX=AzZ*GV%$yv)qLAv#Ow$ zCEk$YUC{dRqmDJN?93r|Jj{67VC`fNpe~|;Qs9tlvb~Ja;sojjzJ2|TJd$B}Gb&Y% z=V{^|)*i-_5CbtTcP0u)JQ3F)tu~}70@rPy_v02rECQVulmY1zb>*}pZX#F*M3N(c zxdikXqGClEbd}mQkByChW~C!b`T1D^HBBS2oLX5YdmEbRZB#GU4{jjXFqMnTPs?z~ z+uz?GMeto2%^~RJKr^@4M8Kr8OxZEIX!0j$$<#NV{Ec8(zW~cMH~umNqHk#i3IpEJlO@6H5oA$KZ=;0;_gG<>!R!X#{d*{V(#ma$n$fs5a8&8Pwxag zhHx>cqI>!~u>&Ah@zCV^92aRa=iXvnvR23&8)8V&@rv@EPAHme<%9N$bRz=066@TK zMn|j;)w3+{7RA@gK07Lgrx$IMK#&WZ-9*+zAiCYF(#t&|)cKc4zjcclBsV_DL;Pem zhk+xfM?Y5*ZE*n}ZEF6fVp##={QXI4w04PE_QTAC4|J{zt@QoO{hDO~NH;PF0mPrvI zMOz8gt%4LXC%NDwgjBA>ANT?2&y$!J49%J!XnP`|xv(uJaHmzaBNI5|m*@v6a}>JD zmpnxr6c9qr8Vw7hpTSIYqv6fozuY_#$437S#`p`GE8Mqx+r*bHy+YPI=GJY6m=x_H z1lI;DwM;Zi&x-)%#2nbo1pFr_9{Do39aqT6yp~v>XiOyn1w#FzHRkbKi%mzSyWk#Z zwu$(Qht=BSCSRNZA=`=ZWBGV_t7HR1b-+-{qhB;E%}2o!gQqe@LX?P~1dzkDJr2F* zOnYH6Ne9Y4Yu6-j$>NwRDNyM!FgxI?YIE$^3M!QYCt4|LXD-HhoOMfaGiTZ6m&-xq zfvGuV?Bbq8l6e5L7y9aAIguS{zy3R#hkY2iBC}97RPPJsB`n*LX-w52Gk9pL>g($X zu|{-_XdYO}&Dmu?u|Wm?0?2?Z#OZlZ;t-h<4s8Lvvv)W5%J6~I-bAz{L>vP~XLfe> z=#`Tw6$6n^X~CywmhY*8c)5$jTSHV?+0{gDgQFfOKih*X9!)k=DQiaG+x!L)`vT)m znnA**SiRuTbbB${lq`%U%?GBrtDj`CuC5cs0VYsTd~h@0>Gw**qa$uPFr8ePr$<@^ zA&8Gv&rAly+W{J>6jdN){%9A3MK5uvlYTgmI)KiI6Qasez)R@3Iz~siuW!Eu8I8x< zwiG0eU&HXSUDjTParFn0_XV1GDG3jQWZmN1gBrUG6p2FKKZiE~ixT7TqnCTCuU)sW z;e8R5Zoaq&yNC@0G-rd|>C~S-#tJ?Dvyzt`hQw^Bb9b z!j`s=RtLChpScr3kxBOraDBgE4!iU5ph#p?WnBIjX`$EJF@^H-#xmdX^c#C(#KhMs z*C74Ilu|A^17OZ-&8%Lp$+6GcN|KCEA~q@Uy&4OxMv{Xccr)h&*rrdOKD|hL&*;dQ zqrF`T|E&xV%}YQSl|g&;t#L0l!xc=NBf-}3`}34AS`OHXFNWMg`fP4FQC3^aLs&kt zlD*o{g4?HcYS)JR3Il)zS%{ZJH%@xO=eI*N0bE3j8Y&674Y-eKFD$^Pa8J4-lb@bp zUIB<2Qk4SiVhFb&^UX5;S#?*Q1xo0eD+(YOKAr#VrN<n2JlP4>aw23V4tf^euyz@`A^eJk>ZdgRi~(W(c>)3ih> z&oL-=3Z(T!bw30Xoq%*Us5Y5sgb;!h+ZjCOLa#OmylP{%u{R`JEImEYuvK4w5%D?z zArb#dzCMl{0a`NAk)s2iSnf=Lg+e6K>$@4`p17rp-@RLk7Kmtjr|$~wZJIopHad7K zhbRC}z9;W#rk7wxbEG}0&)Rsy71(6Um6QZwn=5e(q!%G!?@QVXn2k!x<(}fb_$Ntt%!wH zzr8^1+sb z?+?a=oF5ssVt;PJ^zI&Jd3jC!8#N{}K)9mY!;FzR8KlYY#vEG|5Jz z_3_%Y+q+k7gZ4B)^ef=>F8rJ3Y^R5%gFvc@8=rv;-}ZtwR@{O_0gK6)@s`E*WSK(SdlLoM5_I1^Uugmu zMF*peLeBnGA%tZqM7(Rj7Jb~1ser*T@P705ZSmdRFiICAW&0_bA;aImV-{9rKz>3z z)$-5*cy-IVs32W#aH4GvAK-OM3Zh6%2Gb%QGu1;*QQq*4BTXE`GqB$tJk(hYSP1T6C156SspTdd?PV-~| z_^7V>`}1sJGN$t5JzZ&T-Uo5~tE4XC9)lz*JOB1cCZMZ?cw4uwx;;Pyu8Sg2txg#E zVYsvM7TJEpouKUn1sed}OQ3OKOVS>E{pL*(sI^qDpJ#}6`)KvHIgrR$^7{68UDL5Z zo9o-NBO+(}w3ljV6ut|SezBNFaqrh0DTzCAiX*z5KQjE(tk0#8|MDP=<&SUlQD}=k zci*fitN1Y2^myrvd5LVn5}#*^5}Sp`#-2{jrwL$;&Z<{f-m9#9tQPUDwdTr`rcUHI_%m4)JS;XW2j`vJ@~q^a^teDj*bi1%S3GD=;D%I z{yZfmWtobz6#O0uqrwQ@Y`ozhi;AWUH{P7m6AN^`>Z_t6Ca8)_ktSM$wd-tkuykcu zMJjeEk>kvju+XistFSH&*(3>al>A=2-EyZ;+9mC>4>8>+?atw5BGBWavB@a(1YgD~9jWep=`1qqouoU{3 zuYI;b!RO`69roPZhz!{_@#59)$9jGRocs4HJU3bErv6Jq($Kx4npr`7_QST|MW44M z86m&owe0uN^TTqJ+j*HaSN_x04xPjM~X4HpydjMi(1 za<#?zGsNm$5i$9T$L4Y%(Y;RP(cEtbr zb2XxwC9ZR{ZbA3&bK*3dnwlbnxGfZNe&=qcq>y@($d%CKpuu`wU411nQ5FQy1)!SC zrKBF!vG0Hb15MEt5Pr+&kn=^@Tswej)Szrhtd6U-b%b075DlK$&grNbXaeZuCx9=> zF+MD{jbL+-sGx=2L>#5iEBtkoqT5pX@%A0oEzBLpZL|2S6&rW&Gr>(<2tqeN_IAvn-^MK#>c( z>!I)WPhvxmUJESwKW(N6gTUNJev4Ob@DPBkVB`-2BtbJ71KZ>FG9vfF|7pw;6%ir! zTSJMeWsrvA3`Uoz*9QHRV$#0U;y$mpsBwv92VJXI8=93=a9D?WQ#a1iGY_@)NK9*1zV5X43+4e+Royn#`W;r z>$f(3xeA@`LXD<6%EwcrOh>BHCwbr2QEhL$2>YXdS8_$!hGnAFb_yOlyx3!9{5)nm zbf!LPmi}0)y|E7I6@hbw4FD-3_RaSlL0#zxwv9+)`_%Pfd7(t~k9PoywW`FGvL2Gq zUkFET&Nj?exMiOF3QGYgEsqbq%Yy05@a|lVlk1xBrZ74zY$*wbKyy7~pf;7l<2} zt0x&}o_*NCv~h#hsr5#~l{RC^WBabZ`ZRf)!67bgl^yuEXFGWcZyNN+MFiz2Eo`9i z!WaNo)WdiNQ6BDQ8z34+ln`Ede-dhp{J-+e>*KiSL9Q<#+U;QfoukCPr?xgAF5`@U ztR7@>{-7=o;mD)-rsWVT4Gu?>PN6>%k8dOvOj$FQ_rtw=T2E7=hdY)V#~z;8NaxUb z$gI#si4ZW5^?4w*{5N%yV(Ix`;6xoN+zdU-3zfQexwca?Le(-2{5H|@UyQD%8L0a6 zsY)*`d?Touv%%F_y6;<7#Kg=E)8Bq;)+YQCXi8nN?$f`lqEaYym4NIATX5JCw}Ggs zws8g`uKiJp?cc8yB1dJHe?IDY()&x%ridoIJgQ7Y z>(2R^f(x?m)jPN*g={d0=T=}(zj)$QOTOQr_=$=RD-Av&b8nZw1d(CJH>eX=B(}H8 zQ1(9FePMI8pJbX4+W?ivPiwiIhlj^~kvyXN%L9OQw7MR`6)(i{qog>lU|{MRiBk{> z0F_DZ2+<&ZeaPCGDPSlr;LIfs&!bO5=hhKJFj)W=CtbI@g|&7UZu52Qid&+el3=)P z>XzQ{3v)@T7L3P02*+QDkzPmKFC%RQ+{q?^Sj=GJ4R80uM_&eDa5xKh z+tmxXdRj2E0y*HHKy6vu*9;;I0SJRF0LlPuL8u8Nbbo{T`Pt`hQgyO$rdAHQLk+rE zNQinaMg!dZU)I~k@|@~oVOiscEU<&(x*q6wbNJLLEt+ah>#1E*lJyAA`YIM(#o{U? zvDs>V<4#egEOVbnoewUN>@s8O_}8-bG#Am&o2vLXSFIdSTYOq9<$RJ~n!Cs6EgPB2 z&ul3_7OdSEfjF|$vX3v`PiVg%qOf%M+3}$6-fefHxJNAui?oky@>gj4vs$#7BSHcX z-rZxJT>0i&`~6^b!-5cl#^mtY1_$ONU%#)+=eE#!Vx>9Qlo@s9?~%Z`j@#id0IXG6 zm?$(K9>wl#Njl@n^o&5pt?9PkvsdPXy#SjuZEfRgQ=u(dl5t=0ICBoG^ldcqMhy_9 zD50Pd5m|WNGN6j)YVFcP6^WNUr}pQ4eD3AknhR}WveAOAxp+pyee)X_tZr`24%ZPK zHspqsJ>y3e`V>W~rX))%3nk(0AL59*Wv7X1>n6`dy&)cJKAC!ViQp-1t({n4qoKi~ z%Iz??E+{^&#*T6%f9r%&`b7u7GNEtXfj=|Cjn>uH2b>L~ibWjmSbsm{O}o&8g^3xV z%9+uO`nWud22=v{$gH~;Jt`DBy% zRi$N|ra|xeeg2a&<>wPA)9u*gtJJgyQkubXYNuW1q7k8GGRb&utB&1FTb_2;V$6J; z&F1*dBdRyPzA0#Tn^~jqX+|h~dQZ|bc(iK!DWOJuM%#i9%wYfttw*0*Gxf=<+{YJN@xL@9>qCsVEnAi7Vm#n;e?E(9hImow(kBEr4 z4lpM%>B`$M3=uzh|0;Ewu;3| z@2%aDESI^*X3vj%ny09g)j?rw@rslOOz*;d>K3%GPLGWXy6Zi>S69);n06y^x#WpA zA@N)-YFYQ=wVbczaJBh8(YzCKB(&>I-L3YF_LWke*~|>Kg^j`Y8tim$bLf5zG`6WQ z)ii&mXR$S^R{qDd-l?0@oV39D{voe_5}50DO8H$pu3r;y(O$piO+?JvI)R%W#ynNF zQTYrD_XkbU?o&FU5r>K`;=N|ph}7Lm_C9Gp{Nc6PQ;KTjjsqJ3-F~-X4&Hfv@Wsi| zm2q8%-uz&63iH0yL#&93u^L+DuYHjS(MjL&A=BPssF_~i=!!PW zZI8~R{P$gNQR&(SJa}f;Z`t#9uMp&81Oh2{y++K2P_a-4W9l}0O+Ob>WgUZCVkRDJi|Q zZ``{#|M#ywiGKYYubtD{zy5Ij_2Q(Uab%>)7NyV)$pQ+oylKBYOV-8mE_yZ1X}|76 z?}0;kx0l{szC`iHjT&W@Ez`FuCbAm+eg>Z0@I6*Ze*0jbjOEm8CFCN1maByvG-sT&X;eJV+OOwv*zS!4Uug!lwy|wMXmdPKQhpEli zc}rY<4$4##Pr?sNOUr;Qj}z2)^(q|ui@DA1b$Y;~%7I45oqICgr0zG`%QIfWJvBO< zW$*mU?w`0z#>q;eM`cg6Cm*{hR=vUR`PHOob>ZNBFx zYM%*de7gLG*Z6|mswjuh$w4)1>j%H44%=)zx$k@F-y0b@i++Wg`&XvIJan=plM7P7 zm!u7a)$ir!edJaKCLh@ALbaS=(%P7Nt7mm3-rgUi1sB92F+;=ng0ls0h9iDY3f6sK zU6EqC&W4rkPFFd(P4mrNYjoT&RMn+t^>vIGVTGjsscjVM%EP#Cr_UhZ3kHeg zG%*Ehz|8tl>d6kU+7+W5xgje_PiuDxkGJb^2~W~bX6x(%$+v?@L#21v?uzw!vaT?M zmL#_$`BndIKCjKswsU2xjG4}}5k-)wJ9o`-%4u~ZfoQTT=d#Fs`fjzqyVrR{S?zc8 z{9fVSK+)c_z0_YLmOANC=P%RUH`}PqsPPTwhE_}Z$L}7OvTJqp`lkL-EsM?4)iY`p zL)Xr}%}nm=v!BPMc`rt-3Cq!Y)Tl)_(xMw{-g@Gro#3OWVcl@&v#bQIN5f8d5N8Ly zd{df(`Xgwg?Lz<5uk1T)yQ^wcRJKZ=yCwU!z$%| zZ8~=k3~l+)ST||gjcq{{PcyI4pIPW1Q`V8=vf{y$s7)TGrzb}Y;0=F1J-LIsCHd(G z80^CT?QpPq8u@;6STm9E0{|rPrccDk*f#=fk?m3yrNK=>;8GcwAt%^`(SHjMjgE}S z*$F2~nckv@b_R&m8^ekIREFu~r5Ob_!zLDZ{pIzeM@*ty-|I_bwdPO)qxbn5PH>PiTURqQXQ^b|5iKV*QO?yA9 zc`uD%vCJUvL4gt9lLtt@?-BM^_PHZJZxgGH;`&KS$uMvlh@IS-uqT8 zv=gfS^UytLj#x_d^(<6ga3PD{p>!$r)wK4EzE9H7`KCK+zo;fozmIizC>nM*DlIg# zF9{O%5Kh})P&hbc^01`g=IJZjet#e6i1Nio=~{$gV(ZX3a9ql)$t<-F3^82`?>OQU?3;t)`~*cZ8Z)rFG%~l z_i4Iklwi;1v$R~X4%sB8j>{J>T?$g^snLX;BvnIoEn*^VZ)-i3liu3r;>g_ki?Y-I zSjw%{|36hj?$na6xaD6zs`G8BDE>NVRx{POme;XjDSO+q@LSy4jkl_5cN)K`G<+-j<^H5yVrt{zF7Q7$b)K219AqEyQ zLT?nk=6WIMGViU0aHI1F>Tv5JdCsXHKbFI9s%VNzvof+5Q0URhKgV3?13lK(JoZPA z=G$kO$Loeg$~}uUiZ)qWc#+d}v0-UUJ=48O%4xCaddmARJ|--$Kl@m$)s$TOW0}o^ z|Iv(=?b>y5^5SaU-v{`&p{ue{iC9!)>$~Y(G8=EQKutX7N4dUt^Bdzf+G!?wH8)Yh zC0kt0br;?+jkiD4^6;=NB{}!5edmwe4)vP!dbOc<9Ayn{-pV5fEyC}aq;ThyT(VVG zyDIli<;{0jqxTOr!-Llg2h3{;;LI1~DtQyZloK*`-u~aSlKfqP9QxzLhCcrJ4SIQs zZ;b_z8l*?*bU`^NXIJ*}wZCp+vgc)KJL|cH38Ai(?(GBWQC65&P3B=R+ z>6}gp4?-s+6lYZ*H33z|R%?5il7_W|*9k+`-zf zvV#t8*`igmPv0TXO+?*uUt9jU35J==-SEIaVkbIPN}3&EgD3$rwU}O(vADZywY(QZ zZnUN4P}X)yYWk42X7KXQ$Nnv(lLaKY93snK!Uzx)yYl_#=Co&0*$(?ICYh?IzWL%G z&+M@*p7#oagK?JsqsiiYBjNYe+SwHk+QVe_J>JMWqM#Jjk-4L2T?wkk`y&S@zTbNMtD@9z1w}ju05*jZV7HoIWFY)Y74!@j$Or4ID&dhsDe$@%y|7m!aQ;5s* zw4JY>^K$oPzs8MKG#}Rru@zjSEvw(6)>9H4UK=FB6CBzvWz_e;l7n`@h4)IsgM}q0 z2?!_d>2j$5@Sj)z=dW|fLoi4_=n?{^!6F=S9RkbZ564Ge3uu-Nn++h_P&f2IQp2h; z*c3wO-(hJY8PJvEDY*x?5E#?&z2~`hmd=n^F1k$O&|IN~#gcQ?d1Y z95=Uc9Pcl&DYf6gyJkbq9`SbSsrz42{VrMQyrXk_@GtQ8&%C#HXR@O~GKb8MtV9?O zR$JyIH?P0%@9lEYAxLHH(CWFD{r4}%31bUi>Diz|#*UxPM1M%+F|I=}t*_;1NQPyH zSmC8s{@VH#h@-OS)YJUozP_ul6y6g-BCXdmhc+>InOP_h;v5DvjfiL?|H-(qX$tWa zuN?VvUh*5ClEc+N;3Yq1V5sBczL}Pb=FOuVwe-Anm8yPZQP64Y?Bv&r^C^X~Z0&t^ z1*d8JY0WJ`ZOW!{E^i!uu>*s#9oV!w?8jT9#mhDb1WS zPXX_^&C*hYA_4gkfe>+#7!0WaYv=d-P6P#D+xYXU;h6mL;lz{v7O)7#@N9Gpot$?5 zM$AsYQzz^}GGqA&Z04T3ooJeKduDaN;pWvl<9El^FQ9QirDknyvPOa-Y0M$9VbL7O z9Lq5yr|uJSWq+8-5#^}Xy(wRFcC5L`&|zO5f5c>LmxWZ)(dXtu&$!D3#E$7_C`M#j zj%x7myuYGPT~cgibkEUZ)ib}@i3|W%ss8hrAhUvUvR4X8^(&WZF{T8BWV5;{=H;3vmv|U868+ z_b}jVx(XnB)6Qw)a3uKwND`!wcD|Ev;Q)27nY@HC_a%V)7-Q;$7xcpNIdXGbm=SGc zS`9pyr{@hnZK{4H5;~`)ms~@&?lqLN$*j8F=nO`oH?yI#qY(s!wP3n}>Ef zW_dpGUR&TUHh#ai;

zurU!cx#908UORE>6PYwm6p7- z>j;HOa^1kqk#>mxYQXp>W!sx)F zP}$<0`@s72feXc4TB3z0EZREtJ?`=2LkKJ(*-Ey*5lBIzAXa{o&au3K;EIEAfKTTW zeIE#T{Fdc&OrQpGE`u&o!`BTUx}Q~tXi7rVP_?p_!avG&>5uQ2G6v}+7z zU}8dI+)R_Mwn-d~<(_>-o9P3C_!2 zSYr9OWPj<&kok?TU0KU&OjmDM$XH;1g*Q|1eoKSW;m`&#`^2{wsh@iy1ml00E5?0C_Q%x~Uk+A(VG==y|jydbpE zZG62U|HFD_K_{Q>E9VXTJJR9iKkg@P$v8_?zIisOaJ4VyBIQnhd)TEf0f%@Kwq{qf zwukAlNvU*in|#`4J-C3~|DjtFhRPQUed8|-XfcubMRT)AZLAA;&z8{esZC5W51=$b zOmS!)`!4IQMj!_lmp{-VpSPYdnlPXt`D7WoKpWTbH ze{kO8Nt4X@@JTk>PFp%y=yLL!`Q8iobFZ;y2AGU0Y-*)hHYYk>O}2fyTcfQ+@6hG4 zFu_kzk}UyZZB`djEfYAxKJtFEch_H=ZTCYkFkbSFhn-f=yn*pZA&0Ljf3f2~e`Bm5 zClz#&W01`p01>F{HI0P6z=F2dz#LP5qB?+MnLRAx3+QlSn3|^OuObx1@sN4C- zuh`@!vqg~lLYkS-uUopMp|8a*SBv@OaERvhWzxS23Z7W@i#k6;@cpV_A&u=Z1Gc4N zZJ19dNiWxbpTf?!pS=(klKYjUHN8E24srSab26d#7ObvWeGK#(35mif4k>{X>;@#o z46pe0+qb@Yu@~WGhc=_;>A`J~BQk-bIuiK~5(1(*26X2*(6HJPxq}DT&Cx)R)ZNC07hVHK_dMP#eNi2StN>(5FRuCu$q&h6tnFGdYr=)z_{DkYOG0Pnta>VA+2eHnh;-p+ry_%T_|EgJN~~HPy0wwM zEoQ8_MB?t}gRD=l&%%W`5;4KA#l_ify8i`KpZjeRcKIX{Wgo;omi+Tc{Z!x--^@5)*9TZP z?r(hue%|!@u-~)^yo=>2jA#iS?tV;hPk=R; zg`u|m{$~sZ8tZr1%)6k0%R{YJYm+9oTRidcXy}531xLNPMp^eJ3HiRu zb(ie=_$21*Smp=$|My3{_OIuH_kY+7{(-bK-^_#LfBk)nd`7KBi$@3L9SP`r~y{UP$=KxQqOl83D5BYz{+8VcQTN zoWBL?Z~TL1hpomVa52uM2Sbkd-f3g#f75LmBTQuH^@^!cTva<{SF)nJ08s@H%^-c1 zMCb>2Mr;n3pOhH9;Aj!N+>^;?7uQ_SBV*iHFMBqJC#4|yg7!V@l)b%Y<(-Vk)fTF| zw_pKjDSuvGiH^fG;pW3XXiZW1pD|DTIS0g?;-8568R89zunNN`R$Cxe5`<~@yOkIZ zZ5zpVg{LO??p?TJ7sAeo)NpoeJCczAc4qj6wq)A!e*?1_>ENNL`)5nWwgX-fUuPW0 zLNPT3tm1fRClysnECoY-`g{-Uw_?zBCc#ov-&ab$Hz#YimHjAwyEkNuh7cP5~B%U3^E4~mhc0~$1mC`49A5^ zwHzsBzVEC&xDd#YY5jSd&~-Mbie8a)Oz2J?z&V37!V4yejW?lZ|2r;**$47WGUvr) zbL7fU2gpR$Be@Ohqp#$q4w2N6cI5Ix!9%sGyI<_!TZy2HkvrI1qu$u@-$Dh8rI zH&?VaBe};oaHf^oT;kKP^dwPon?62F5;);hS~u~9GqU8%(t=C>9+Wy^s`R+Iq z7AGgIZ2eef;EAfIeF`-(Wr?vMgZK4Srf8Oi9L-Z{HKU&wD0{TH9HE6N_N%LfRr*Z! zIyA3D@~`_p*Rv{~__k8tee8@&wr~s{&4=0oWNm@t}J14?cmOiOhpWL(UszzS$gTHb|Exu#OOhy8;-IE z(dl&3(jZn9av9Og{SrQ)R3F0gNMh=N$&!RA2;10@VaMy&&tL{BkX|N+2a1t8FQGm- zp@5Hz-(CtRmiRYhLiJ9p*{dB_zg$+96G`z?&@hth^=R<$WL+b;pCQ-jKre7{`@_|PA0_A<|3)#;2ejjsP;2(*Fh7dp1m3=UUsx!st`rd6#eDPJ z+~4D@FxFSJli0xa2V{?sdakCN%S;A`F}#=LiRlXvH%`lwxp#1kCXk7x552WLs=98-;teEo4dzEEa*(_Rvxk@U;j7 zfKETgvS)?lU@m;+7#3q|!a5gOi-hBsSPMEc(9R-Zax2PS_y^lNJ0(A)G}@(}e6O(k zfpTs5E@?VPVbLefKP#N>d@GdoFD)$Z)}2^+x5;0iEDrlFBvHN4|-$VLDTlmnmzMm zs%P879ez*b5BogHXSN%o9$Oi#7dvhD502eUgYyQ8VG(%3ZO5lBz(eyS!$F`5CSMkv z6dk%Zw!^4vQ_l>WBMWw(ySqEZcl}GGo)a?^80V8LT5eN$N1|m*`@SrGwvab+*DTY@x+-yM_C26~`4_Z1W zvW9PV~#uv-r`7T#GEk+NsQ6r`_#GOWt+mZykUkgR#sA0e_|#lWYQc1HvlShA_>} z`ebE&yrZlA{SRoJfm$GJ$+~$%HqOg;PmYc5vtg}!shsWbi&?+-M)*dn!GQ}8c%EoB zKI3|>;Ux%gHZfUeu*d(}*@DY}XYI=VICQXz8JTic^Vk;63oy=o+T2rF7_+U=`uu{> z!Pk#451njk3Nb#xy<#flLI^;3+gB)Awc9*vJraN%NtL6AIVvJ|jYh^`o-KGpkG7Pq3KB>+{MJ#QmP zGY3_%-w;|I|8j=(;D-G1kZ6+VGcw!5))JOu;+=R1go^}jew!h48{qJ1@9H{Sdk!v3 zgt$IER7OTjk%ZMR$dkjw0AZiSxew$Iv&r7&y@#-<`PiEoEnhTXlO?)l=$d#~KO^?Y zk7vd9Lb%HgL_ufSfmUHU6QgTDERZ#PDRt4JMQ$+V@gTAo@4o|{mT7zZ_+uDb$PxU( zg9#S{e%Y)*=ky@Y(`X)YL?e(B5iK-&#C;=DO80jHd z9u*&mSa0Mxwn_DDSJ!pFA2)8#-S2AToZeKm{95>@@?CejJ1<^jxb;%Cm24Ut+Nha- zCA3RL!G+EL{DlkOe<_SQPEt{ndF?5K63&Ck{Q)Zn48AkpSh%1Uq#?S`coX1VkVG_T z27R^eaDa)*>hq$adVo`(oiaa!n(t_0h4L2SKHh>G=WoMauv2ma&CI?XzNNV4fbyX z)I3J(R+O6lRl^m0weH(W|eN@P55 za^hpX1wg zqSu?=>d0L!+v638!1D89NRPJ5exvwuo+$J<>S?#{&Kb+Sy4qv+!DR0GgdG5l|J11y zg8#XIIGxQpIoenABZoTHezjTkIjj6cSz0#~4aY!k#X_vz6ic?~0L|`XW}2tZLcsz~ zgG>k0@oUl#Rs26$f>TQ<0boEA3oeX(V1h!d{D`eGtNBw=7%dY{JeCc?Z|@ao|705x zq7AMEDo^9#gR1mM-MP1?xsm7ZL9Z6yXaFPA{ix81TMG34jXm&P10HY$@`cTN_H4q_ z0UMzR6i){i9v?b|LKjtaDWZ3klXgaPp{0xpWe{P+l~YH9+49IwFU5;RE<~L+^B!BY=$1 z34I)vc>)E`~0551gfe2wi}3iHPs)Ib|Svq`Y1g0{z-nMMXt)L7gzl z#;J^n~Yha7K;>~0awD7s6U6g3I2&a5-FlF)ac6$07p{L~^T!gb*`# z(x+8dZz6pfjN!Y@Z1d8}{r}@Okw^v7OqzBk^Q~Y$d_0Ct&y8h>@>7^mvi>vN8dp;NLq(4q+^GBk! zN=d?F$!h2$L=Er?dW8ImVFdXVs*T!X75kC0bZ(EVK}Qs~$!YsR>^MROg63oo*gibA z$;2^VK%fl+)%i7#RZJ8iZ-xSxXad0~-w$S1_X0Fa=$2k%IJjlU4%Goo6>oUZ!*hyw z4iB{ER7c#EQGlSq2EJ2dFARlB^l5~+{@Bwlk9L8x;Fp-TBzFlx5 ztsz>hFoB(*r{9a}0;V2hSBNL)u!fp~e{yEV1}dtp*-KU{uqHky`JAc-g)U4fEQ}!c zWWT7_3*+Xaa36I3#b?K(m2PRDuTw6iKtL>m~?zO?g?mejDY!A^BXEIvTg?JCeEcd%G|qqmkV1~$@Y$GB|kCxc_8RT=7PvE_p!YJAiFC* za~Fyj%2````^!kwWEs%eb*J|2TS2<@6GoqPf2*(AtX%-S)fM3Kv+N5>X#qdc$h;?V zbaa%UoHTXwAux{hH*bOw-&WGE1iT8*{vyO6yL`^CV#KOhLi6_Ry3SLWAwF99z02kA z^1jqcE=C33xKCu+N2R9siX+@EtsJ~7#MEX}lEBK}D`dW|c-X_aHBIOlZLHFo?DI2i z>#oQxyc$4B0BY(JCc)b7iMQz+yib2u`LC78M$bR2k2;ZQV>?)|=%1BDxSWla5 zic1Rz|1vDGP&GD8KJwLJQfsWQaYF}`q7V0R3&-C+j@49f^F46vSbD=Kppb1StjYkk zd*J6k=WoWK(HTPX2Q${t6GKz1hq3FS5*;KY>@wqXT$sL|*>pJ#X2hVu@1v^AFDS_5 z4-Evce}q4wID-F%1oGKRKgk%AlUOqLL9R=&j+m7VP+ zP9>r%>Q}mmRO9Imo-Y@vrWP7l{#OKRoVWqk`y)X7r zqU9i-)E7X?lxH`AB$}8qXKADqFM@b4iYrYJAy}$YJiroPU?1ajThjgD3=@e6i&d(o zSi(d>RH!7>!fQ`)k8Wi5yxhJ(<|U^ZsLw!}|OU?N8hhHKSVtXgNN^>9f{>9Xn%LvBj-n?|EoA zAK`A2z6o+IN|hsMq+L2o-7YD!M`k?^eRc^RkXf*#!v!Xj5upFn?{C9T_8IrpN0rTL z-t_j#@MH0SiAno~`|aULc%yQr&r zTd`FN8zDDhFrh2&pa55Qz*I+%@jb=eN0m&!+8UaPu{0U7#|V1rZ`g^LJ*&t-Jeroq z%~W)Jcz9-bDJdz>9rFER=|DkDnEt{0r}V3X;+t%OMAjnyYowzLRlS(KeLgQmAUO|)6RsSq##;Ys5zz56-QBL5o2FWqO#(3_IpR5<|bP(&WF>&1Cbb` zW$LiS$ppuiq}2DmfI!Q=X_Bn?F?+rkjunG}jOSmz>!;J5JN_6W8t}C|Yii`lhz3R5 zNqTc=;UEIbRHmauBSuuGrbBI~9CUzk5a<&EcLrr+obFxN`>=XxK><2)(x_3K%YKc< zl^C;tjT!b@lNj0H<6RqJs3bO5|6q3bp{i=fI6Qn|Ke>)vH5?Lb5HaF*5`87-vK+nr z6wJ7>lXP?9D(8PaJL2Lt$9C;m^|UmbF8_pEkC0Xx?b zNFo@pc9E!B;iy_&)WC<>en4EaCCJT54AKGm(^f_aKLwzMC5x35T*&y2Y<@WlY+Lkf zD9S$KcQe)PD>v2|*Woz35qb1IaMAN+KzvdJf9E*P+o5DWTXGYcI@E`{vD^iX7 z1Zs{=Xa&|l`iR>L*P=B9TLk%)VqHf)z`x6A7-pyrU{4cFJ9v^5wQPlGUPj9wSyD#h z`J53H5)vW`WUMt8!08+L$XW7W22jkEree_~nw=YtZIAmkg;6+`7ALLEBffA{{uHku zXs3QtLt74*hHMq1c(qMV;0{*Q5X;$_Z?34tiQAEyj)Te`Ze$vp!R%%-F!U`81-64W zVQdgc4cYyJBD1NacsurOk-DA;{D32@#}JaTY!)_DFt?(lAg0E}CB)VM-;qv*5m9`! z8wK|9t<2J3N09nWfHL3#krCI=ox7`*bZ8!UK4rKlk%klU2?n!V@lDS#gdvN(fGWL3 z_}b{H_WR2>SSCjr#4N3WqFZ~Uvd6UoR%#-VR>)b8J%hRQRuXE41N{K{4&tYc;_X{! zr=A4?bsl~_2^+)oE9G1JkG9=MuA)Pq*N8dadSbRlZr+WWh&#nXXwt}PPUx*4g0@gd zmLo7a4SY@qA`&YooDB$*>~9?4GU)8Hp!k$3dp)T+Z6(?l;^7fy*T=GC#B-4rYhzy{ zw2wF~PCCt;!alB%Iw{Uhq}=2Ej@yab8~pCqfMi72>&LHs5{5sRqdizl#FnDACvDA! z9lBscki$XN^}<^OcZ+-n&gHdUP+sr=3`ky7Z|t=ot8aewykP(+YW({PJ1{Py$PaUz z(XS1nAe3R^(SQQ)7Cah~Qs0HKPAu9iCnfQtC+P?e((L}rb5K&U<$e!e;(m!bCP~Ui}FU8QXZ0hn&JZ#sJP{Oqoc zRDR57&M@MP*SqybE3yDy@*oSde%a{g=#X)~+?jDw=)g2*H3eBXNroG>65~i3zglxR zDd?3W$Vxr}T50qXFbf3(t-VdiPlL>4FW`zVSiXi-@S>vpZt(Elfl~%lZfQ z5PW9c4{prD&-XXhCSA;G`lGt}!Zh~EJa!ei%DoeYW{+?>BGHe{40j?vnRdQeNx(UGkCsG-gB^|@aG9u!C$KtR&cZUrO9tFF58o>e+E_!O4`_kkRpn?3=1$ zhUK$wb-uY3F@ys#Ja(bpOK|4MZb^gIIL@J>No_x9h{{T4+lTY1>qTdpa*AW%I-n1_ zj}LQrb)3-Rbag&Vm}Zs5j$%bod(t@0Q(}HJu`*Z{B~}a0Cb#lpdYun{r}5y9x!6|WeUWIfj~Wm;hxNKK ziV~UFfSy$UOsb3#wwP{hOXa0)EyGj2U$Crh%I3X8oR8^Fa zc&KgD>GG_E5?N$-Tm|Jc*Y^QfN#Rs}z+!#jQm zVhwQsaY@s%Y*evB0gMgv%34|}FrUx-=zwA*8?H9(w@NoU*qwF#I#nOOz+BH$+O-Fl zDAcugKf$(}f%sVBK$qPPgQqf2Vtt##WILTw#1QH+--5w4->zCp4zS*C47}sGU~n8Z zVb2VoB;Ojo>~$vAVdBf-xpOOFV1T#F-cUwIho)g8Yr zYT2~CLgd@23@%U|ESK~Z?z7oUB5`VWoa{(|}+ z-QBo5h1U~Q*!}tWxzbM;I&J#Vg~3u2oXDb7>_?4iy-b6JpRvEz3QgUCsrhN< zHx@p$cOQt(M%0q%+nfLM=g;``(#~I(^wx75HXRMc5~*^Is8x8r?1%CW8w{Zi9<+?u zu60~SY2(I?cDT)!?Uv2G5%*~75b`3MZV%gc)Z-=c&&ZxVdxyz!O79FZ@)@fdX$gs1 zw0g;Gsk!@y^zvtB?B@G*7OA{2kF%_oIr%PY7$4L=CN}o{?bLfT{Nk{Uyk#?o?_I*w z@0V%Ghs|Np&m8?9^3+u8%qu7=M&dN{2n-EYbIHajk!Rmt)B3ZXo8_;dQ{;W$db9q_ z(5|%b9~Bi9V_r^k2LxVzF`8-ZSlD6y%s6*v;2vIb)2P=}R@UWP*7>t5?%kW6C4MPK zBeZYjit^4U6KzT@mp2*iqS((f_+*Z$oLVEa_wI^v|NU2KrB2vqB<%>Tx?tyI^QDj>Y1(T?61kr1bUmX*X|?1K9VNq3nP&ZwN?{`wH7z z4aY-=Z;M&kS1)EBVq;_L6Y#N^_;S6>!V{@o%mX?yN=c_wk-};CLTcqJV*pxvFhFx_ z;|R5uJM})Px;tx`K6j2LoYqb|Y0wt@L=5rBtHrIDvI6x5i9m)prc2i}>6ekMgX;zf&GBM2_6eUmXz zny4Q@+`5CH?vE z3fh%_4+gV7>e9}^M~|qA0PuE>zzsC&uA#S~eHYj@j~K+P#ve4I2a9|UG;UCdy(k;- z*ZiM=k_Hk#P}b@L-ZbOe&1kG_vPXBP(Vdd>#DNUth(z#ipur)PS9||y$&H5won#-}reW|j&h2#ND5>JNFMtnSm#VuS zef~hk$1(WvO-^Z&-QT@0N@?n`<7CU%$>hwcI4u+Gw6121h@72{66}%hV)J#`#aoZ#wG|}p}is_!zIMtT? zPr2;zk4!r&jjsxtmvC#_DPMS-WM=t}$H+i%Xt!uPITscNVRcLxpb*@__9S04p|-0vsCojg>tiERxJ`5X zHifAoT3VrSCXagN3BS+gq~L}FSFc}Z1Lqdc6#wGf=s50BKlmCdTA|}YRfPNjhY)en z=7)QR8)2)g?5C5n)j_;Ta_xM?LG3111PEX**@z*Pz2)O%D^9Am;>%h`Tbx2rF{#PM z9iJ;C6uUDEQ(gJr?rwM!YUel_-0|y)2u&^a0k`ON;I5}&!%XZboYP;bg$Dnla`EEl zq;dSo-4=sG<~=|pu&p5J&5C@2Y90=?@WH*bsFOI{OF|Oh6rQUUPmAe^>S z((?{U{T9?FpYr#pt{e^juZUX@jJPtt7`5QpvIP034~g}xba*fT=zN$4Z(gvg{_vp& zk!2@ss$VpwoQ!tAp7W2@h>Vx+S&+XTVtOI>cq<^87-WY&7&!Xr(KA+!z{C9Q+_Bx( zZKeucn7oR40C?OnnjY;Ls&D_@f`6$5LrvwA%ry^aXm_JRo(zV%Ot#(Lzilv^Em~0L z)2`OJnV6Jh36RGCd#n}Oo9&{Ci?w0(dMrf-$8&I!G2S@k-t;u<&UFnWPrcIpHm-3t z|D~Gm$aM4{v+}{0?`hnWHKoP)DcTKE1KLtJAN)-4zMUe&9_pefsgYCghR1K>t5f&w z0k4eacN2+b3+1y(`kmQSp5eQDzW+Ut_XpG68iri!@8^G8*&AxT)w5|=4=iAV< zN+x^eg%F1;^scy05y8g!5J`7J9ViQrPB^HVQ8a?&BwlVQ!`w6@LG^hC_ z$FZnA<1E`7V;$V$PrzMzlTLqF8>&&$LCNErfhMGEljVD^v&d95_^L4=Ldj`zu-ANF zSTk7!Uk^lTPyI1Zfj{C!3p4!=sr%~ioit1j&_b$rM${nqk~3PSS*>e^VqMIoJwFqx zZDgKtJ#X%TiGg~YGl#J=gTu5RCZuM5qp=N`BuhplVb+SdH;Za|SN zez6+SyN1ZdnVFfvr;6`XXw@?>I%-PG@`C~A*QCJKIE+Rwe*)v&B$Bj&!)|aZ(8e=% z28d@UWrf{nQOtbvm05W^lW=?c0&O1-1m9Z`vOYuTaAj9n0+mr#cEBHXbbE49?)&)M zLG=~sQJ(ygF)=X?f^H4t)y1JZ9}9haXTT+-b8yuiescT8W97wJ*)sEM0%Lho6Vks* z*Gs;6yz_F=7o+mj9k2E_efQD)(eyG$+d#jv=UTUv=hu05^S9{%#>!29F8Sq8ls;>6 zGkgDmcbF>s_U!h4TZZK$CHy@)THImXdg^BfJjIP7hCUqdogJasg2{D*iR0+5z*v^F z<|L=Nu04P3ivG;b`y>ayXzh5`zN=_Zc!&E-=W1bGwr2Elz&m+RCo)=n)?*NIETr17 z!7nT$(gK1!)Nr?A+_wy53^oWHl9HRXb0^bLMBfBoILSOUP0lx z@ZQZ#twtxH@14x|yr^aRj#l9gim#?#Y$tETNVvh-TkcMcMTEKnZzhA+-tk6ZEO z&mXfhe?A-HAo0W>zhFj>-!-BJNH{JvYhyNfC*DK+qE@2m0tr!HE8kw165j8qi) zW~6aFwy1egSvea1M2d@}LW|qNu(V^AGWwD!bHGPh-l3biDJNHyo`AHg8LvOyvACe- zGlqH!sWDMxZ8mBNPJ_AmVW*Pjo=0?O2b5$_#gtA4`S@&QMBE9&G|H;O!TMCFEUwS_ zd1~|il$<`4<#LfyvixCbkz3+d;RZTiNl44dugjj_SN9_W|6cGqb1D?2R6|3w-#XnJ zzfVee#P~=j#7G#VX8t^WK}!F?tcgxLcaT=aT(d*PRCO2ker=Cbw%E$lpIto_qwP{x zubJsBSJ}>6dJ9LRAM6_5W+pfWKLrVr3yHK&LX|H21C1Ey3{BvK&fcDzILW&>ytt4? z!nfcaIUkrox1`M%{K4%!$|`*ltj2cS>Xs3?&yOV3x_ye)L`zR6E&N&lOl&p+QIv{(zP;8YkDE0MCVW~V;-;UJ7n zNqiHU>)a%fX!9FWA5VsyO=A1Hd;Bv1A4Nm1N9G*|MNrO*f!13>*<-Rxsgb9Qa7^D3HO^?Bbr(c?7&Kr8Kv zjNFf-ERD>l=rt?&`_-zEqc>~%2BulVUXQ=_T&|IsHKg2WqYdp{gg_mYZ=RsyLfW`^ z#Dl@FkYNS&&O192^a_}j{@6$VY+CFH47*(Pd|PZn)?)FIo-QY!qGJA7t=md8PYr9c zsfO~bL)^(J!53G&OgKkn7`tfOMTV1NyZ0ggEsj!e!(&d}@p~4$LTj63p_Yy-{HEXE zt{4pAmM6?)WN~JJFmw(J)74I_ysmV=lT%VWdUv1vY7<59j$(hlc!80(+d2n96f45u zA_#J6>Dl*oMXq;kbleco5=H0_d!u+wi#G+W!-usu9H0N~_!Mq{JA=-x*J~stdgpKc zoE^xNYnX!dS6|}-xkVE;Bk~t7($mJb7CYFx@e(W|oPT1YD1HV(S1b{LC4G>M$AQh> z0F}nBFCi}St{@3hyb#Z>7;fTyVz({CfU`-y9>`?Wdp|!v2f-d;djL_sTIcF+!b;wt zt(8vwMoDpAp1P%_C8ML@K=oukW=ip}CO4Wqmi3VO{Uo75SpM)+OH8e@Yy1fffDo&^ zHS&yD${y+VUglopJ1>SswB01E{L^C1H-EHwSLhiX8T!|ZwKvN-mM;B;$0Tn1HYKOO zv4~|+Q9}i#-+#bY9+%pz{2+b|vpz^QBS-XWz|#+g>EKSLa3sZJZXbezgHN}G2q}BK?f-U* z&qwP`1j*DzK>rlX9X5Jldd%C$VDcqH^y<~C$A%ZHP7j~=01CV)*jT&Eu|&u~VC!is ztHVMXPjSth((kgVJaeiB9A|Mp|I$o%`4?RTR z=2trtFTAmYp}k>4E|wig_)%*k5qjCBp86GWk0-^8Q86WvGbKh@Yg>!Xc!c$ zZTrJ7KCfQ(bc&qi*n0vVy?1eOF%{~O_X`hC6WimUj6z*t679Uz&U23kXabUD{k(-% zH8eJk_t~;>C)bB!4kG5ELom+jE$$0*MilzcSSxgW*lT+fT)8d0C#a)JkInX@A$Z78 zf@ZO(r6i~S0Kp6tx{%N0mh#&L7s;N=;JAT-0m1O=5seKEM>em!Usg1|^BS;G#sw|0 zM-$a*FyJcjRWASbN-KywBb(&}!yE4m1)D_s?_k;dL{chdur;MjQ87CGa?D6qOjZ^F z1|D#Us9w((cBf4?SGj1;qVJRGJfOC{Ub&^U+HfrUI?HHG*_Hctjxl^4#cPv>ti3AE zEV2gfR9}B&>(XOL@#=|rvsTk$*F!h_)YHR{tJB@`KG5uHuN-fB?#7fzW~@`_81R=v z<8YVNA@1nC5=>r)e>${w=njug|I?Bd6C>(0+uHGuVD+tl zL`mq*FpR@4k$B}6w~P|GT|xbZ*7+x(xv*=P0z~vczXb9z_QZZY1qE-K(*rLY8|%=? zOh=2*Wq{RLHXb6Pg_)@GH}36J2`^v1tk3rDsJ9!PH`)vKqhR6SbXkS-iQFznFv^Z>JTsjb8yUq@d*jW!je?%_{bYgY#6P zq`r&y-!|i*34{aH7q`F(86|WE`kMLXqFsR*&a34Qp3&% z^cPBn;pSsF%5=08c94kMQ@?l?n}EKG#b5}9WM567;oiX51XLD+236NGdqJx3Y(3@X z4u~<{RGUs{lc=LyD>ys?Qhfv;q~~2I6I$3(?^rU^nD&pLTWM#_)c~y>ypyDFHO@Kx z^Rh*pkkGDIRGUTZ$aZVg4DYhis(b1gt=nn`M<~yck>+UV@clCFG&KwyM5JdI`qWDL zRGuXtCpAn|716PaS<;0HI@q1ZV|pqZCX>AnXc`c3^vNW~^vL!) z0vyR7dHOcd$L&%wxwEIm zT!Y!v`mCwH(QLG%PdXL>a7N5$(Pnln9m?9Mx+59yq=mZqpvh`-p zyW5_f{{VJvL0@0m1%`yMoWRKWoY`dUA`LptTW1TUq~f37VhjojviNc}AR#L&OKsKx zrt|!$XQIwgVnW$Wa_OKWS`TkMdIghms+9-dU?+6s`?ydm4Y%L2CRjY*hyK>xt5(ebt?a7kl~Dqn01?R4o6=1))dV=ZUaZ)lNHs~Uahukg9&ql z0PO|yIr_soi!%WP5n*!bzto{dPW4#is$cQ}D>D_9j!w0}=wq@ymG{I6t5(x)l=kv4Q^=jICauL~&r=t0 z{|U7GG$@E6djS_`gUK*TuOM)T2_;rSb#w271D-Vi{ti3zobGto_nokmdnZd49debb zu{$aWv(br>zA-t#ek7F(4xWb29FoQaxmga)T=|?fGpPm}Kn*h^UQWrF+q?8gNl97a zMfzU08Y@Xjx!2X#t7vKp7@bqSH_yNN-r05_wIs4H;b+ z)j;4{fY5vUTy0CaESj~fSq>aHz+u@0U^mK3ux~6Kw*T=XAY$dug$SYa$RC*Ctr1}I z0%s>7J`cI!mawM-0DwNwVU=xd^O%#On$Yc9;&k<8)yr;JZ1wZ^@56a$!uf8FpLZHh z(ivy@JXtHY$MVbb4_zbik&)*x=V$^--oEci7ODs_2lmISJv=-#GOj!v%I%^-{4?e6 zPtN4ApD^-!`qW}-rlr`S0JjMZAuD*%i|)m^@Vw>T zf$C9PYcx1Q1S!-gvdd;>leQhJ73;^3XacUuYTv&>FE}=V+~kw(7QWiIM?@v+fCkah zG7XTK8wSC#$E)}b>^@J@KsK6u#N8P`9FUNB-C|}HRaJ1XmPWf-WbaaU|MLjmB1DUSolh?`=#K_|m^XTA*3mEnVM$r5$5XTJ{GSrq<$w z?o?UyIVkm}IuxEUznUkzK>E|Ns1?=7x6pSh!x33KxPj^@&JzKMZRXr{=FX|8sN|zZ z1DH!6mX?~@gw;Lq9SajV1~+az(W4I%ur+gg(JelbV&Wi`({2^)_{TT=eh)FSbb!-O zKA=BK%v`N)Xjs_U8{IjJ=YQ==#ZK$O+}evsuilN za@8{4H@Z-OMMy`ovzd#+pnJh>n)Zn-&Pl+c-}3PiP7}FMZ2Y9!4M052)GL=@JjAS z()MZY_hTOXoGyZ1y$P^lcB^qg!iyL3@E*d4l}B@vcKQR~ZW@9g&5WlxF@_OzYYhFX zWximB{R8H9tJa(R7_hxL8woJH5^_%jSXLGmZw%!0^%GcGS>Md^g~}30i68B~y-L6E z^xSB*B`(yYeg~#BXVE)f4xiA%USlSl$6I21fgX^FJ9)VjbOIlGEdUTLnfm8fS%0;S zBLP@%Tl_B8=GViM{m{-fgUi7wfz?l{06xsj&94TAjO_npC!P1XKTW&zX*586hE+sZL_BXZ~UIZdh=e*k<(=R)K?iTpl zHJlSPvqT(x5fE;I;B)bk^s3KRG<>X1V=knrEqYPxZw_|V;xpLu0qY|Ii4S{7EmIu&!g{yMh^)qwxvajv&9ZLk3LwR`51_z9M_KvjXgb- zD}sz_IW?V8Sg1+(9TrH9H<0X*ujIMtNkx&yze*c443asga-q&@u69}&m2E!s$M#D6 zMYv3nNKLS+&OAhMatQLlWaLE{_Fy`r!Q>?d`jvm{;LxqdDA)TD@*W$8qT(;W{NjKE z5GtSK@KG|!ng?7$urZWi^vK|bFy`!Zz{MC3D4B~9Ir;wU%=P05VZW-LQZC3PJRmjX&Zl)YIPWycTmmQ20l%mN#I%Pu@Sm{w?l zs8_dV;kVoGHn1BkJ6-51jB|)`l;QZb#~KNdcy(QyapEMnnL~n21{q>5b$H3ZfXsTn*)6mJSyTqBDb)xvw(I>k{Y`0YIE4_7+ z)$q&K9}9MR(t7;$Vf(8S=n}2Ueg808?ZzKl{#pgVuh-*bG-vS>j)LTV%Z`PYV;^-i z`oG%T<7(f09R3$%A>>k6DI;V8q(ObS&uPGxJWh|lpgk3;D=T|X@=!Pot>!lWDGdzQ z0aICpQH(#y$`3Lxis#bO)(#{3bH-b*Rygo?$e(~?K+47RNRhG#;k^;CIJ|+M+5&Ok z)O$0~U2s04T8*VeYUPV)FmG*np?43s!72wRpYdyvIK6y8uO!@J6Rhdh#NBO(`#X3s zRvV4tSD$F!BDVWEMjKYYc+_;3kg;fyS7&`d@kxWxMx=;!mW_mzR6XG=!3Iu|MEP@7 zr?&I(^6I1QC22 zm*U!KS2ET2<*(ls{dh~5)ruNUN3Vw5(iUTVpP);N9ro{Uurvl1=KFALSDfjuzA?tz zq4GZQ@YQF}nXE@-gfuO41WUVBj?tU(9pm%Y09^o9~z!<@bvqUOlwdng*r>R`GcTu`RleV z9&ef{ThCKJ=^el;nW^=1Z0K~I7hk*kmU9@$%Ovp}6KWn;MP&h|0uO9Y$XI>mqs~Gk zh@ZdEC#e8p(5yQ3xiav$7;!92&HYY=JD*avH>%yZnY>LzAz4DaL+xiLP(}_uvbhE# zWw>RFew;p>Adr0gEB!yymml+>|bV;D4Jq`=8J=rb3?kCS8EzTe-b%WWH1c1 zNr6_s1wSbk`mx`)7Bjm7ty$mjx$}U08!?PDBs3R>(^kn~#ckUm%-CmiA{gWZN|4yD z=Yza}jf3&V&8>r03VfQ5J zE=~gh%$|*%!gf;=4jAbNp*6@uJyf7+jS$d}C$|nUx2jqC{zr}iX~MFgRnx5Pd`H^? zGoVI{72?2$*9V#WAq!U(b*6*d1>O4^Sg{=|I_KSoINX4y)c0cThXznT#-&5|r~x`h3nwz|mJ%bZZGotWIlTUG8&wV_ws?QBx*aI@i-Gyyvc1@8+Z ztk>@Obg=On`F(lNpPNesgYJ_pLJ1ekich{hqM%;wRhcFiT2L%EJj|hZ?ZI&UEBVq%ecdTIYjX)$ zOrFUfNvUMuH9Ysv28PaDxy#*Dt5=dx*q|vPQSNN@wl{~@aK;I<{^)IT19RyC+CEkt zMTLM|$mkHz+B}}3dZQNTMo0|H_^8?K;KtkrY`UKdh833-57*2gEjt&Mb`7ewF>TthM zW1~_zB%%5nW(;Zwu3oWn;a}6ZsJ}-6z6VvwiAW3@o157H+~61#0A1r6MEh0Fu_>cC z9HfN{xS`4_Dt_o)K#M|8nS^Lhl)Es+lCcV$e`(pTN}h98PR@Yleic2v=QIMpg&A$W z-7#I?k__{XwjT+I%TQROny4Y462F<#c%PyL=XNTBs?VUz0}UhzG@qEbI5xaZLj0sb zig|V}Y9y5`H*dlWNJU*8SOX8bFbNFMR2>}`oWqBkOBS+8AK+RBmUt2+oEA9Rhk|7*cUvfC+V9$j$NZJIdfcv4F($l{f z5ta}RK-hp{{*}xxq$gsImeS;+Z@`ds@;3qRAXIoXYr9raRn=csFmIGj@mw`^DZQ!C z<-cRou+=M@k{+n4UFy=6PfYab>q}0rJVd))+}5@IUyKFhOK{VX{?`Z1jAmG4$6wF2cjte*{)f?~`$NIS|9V}DqAZKv zx_AHtb6w0TE17AmZxd`q___d-e(MQBLD5cA*5=?nd8w;G8GxP{zpvT>XT36>nD?QI z5$fFce3IJwRIi(hSM4u^gNH2~#jTfS;Ze`e+(+_D^JUol_R`}Y#<{lZr(B;20waivlyM9oMTBM>n z;Qiz0xZEpxSOad$sEYBcxirR9y^vCW=TjLr(6^O&yYh_Tq7PQ@eE4bnSUwjDxO*}9+U3$^K{}53E_yp3)0g1%q00rU8R+n*z$)iBtATg%qhHr7 zQ9j{XF0dYJf^MmL&GPwi8J6vsm!`;C#_GqY{~3*`jXD_2{-tpxeXK?hhF;l&DZaN; zzI^?(lI3dd^>^pa#-!P4RK*Q>SJrQ@=U`vUw6A$uNGbl-Bp==Xyr=+RTOd*T;IcxZ z8HRbd;;G%9R|3{BQ!jH?4k&4bHu_cJip$6-ioQ!VRrSX~$3-9)JgnmY@6d~vMIMUg zMcJXpE=XD)N=d#iuD%$U;m_%Pxqk-D{)WjXhOhsbo(QMysrY-jAKU0S1`be>|I&S> zg;JVm1AMh8xsGgJ;zV#|*c7QgNd#>BqM`%hQ%gvZh#gKhaOn4Vuc z)UQ5lrjodNRn?}7C&g68WBgi>kDmDD_ZLl0T*^pV!}V#+ykeJCIkm)!wC>c5ut$oS zF^>zcsL>sM?aZxhD;c<0sCL4OEmli|hF>yuG)*;L*XZAI{qpN@DgOOLbB)cHw7>{8 z959pk@x!OX#3NKTAzoZE3J=fJ1`?~9W`*6m4JxPkxnn>TPUR5X-7lzsW9ygUAR^tr zO4Pn0`!~b%Wbn>^FXQq{Jmy(GD%3jc?6_#pUo*_ktGeaml!o~Hv!?fghorU##f9z1 znR%Z|o(-psH&)Odb zeX9Z#cblgERX@Da)uX@QcB-DoSAL1)N+IrAwLnwzrDMZ){by|%B>(EZ<(5fWrKKLY zol3o{MI#}xqQxI*T0(?y#-^wp@)WL*e`+M;y>FRl5O?&tLa#_-N>E!1<@vo4j~4|} zKRL~Z8)?f)7uak%tvxiY#>$g_(r)cR6FJB@e3COOrDoxO?gfCwvx|KBTI*?J_8RU@aLS;w&c6NxSK0=%b+ zXXMpC2C!Z&i^b#pUiPVBC+{D*Gdxv(|3T}MsY~T0B_FN4BWzPOXvGFV`k~6w|8qV+ zViT#8)oPqm|9t5x*>#hVf$Cv?398l66_N=!z5g{bc-7+{WTnyi^+H14*OsbJ0g9m# zY=*+04cLC%9@`}8wD<#OR)43NQ_rk{;D`W=i(25{fPMi?^rI*y-O7LyU|1ukeRlbl z>uGYRHSj?n(8>Gv!L)c5tE_Txu#IKSy{6pMs-O)n$-K6pqnd9>Yf7>>)&^?#S271}sj+W1ks zBC|YAiM%_@r-IqDx~IS9`Cq1x1^5gvZ~6vZTD7~f5+m8}agDAq3#9dm58`-g_p*HR zWyq1bCQij86~<~Pc=PGgu;7NenRn^evJqfaDyrDgMhpl_q>46IlnlQfVgFmgyn5mr z7|4PiN|%d1j18bJ>r3(7cfxemds!AL^ zQBKM;eQN(`?2)tv1#LKKddk*f!`}k4hNYD2DW)_nEiJ!8^n(cWkDkphG?YEA9&eE& zxYGZvSQs-4g;5M=@fQ$viNxir$&3xyK|qajqCP-*B7-e5Jp)%2!yp zB~Qt~{#~tZO-pK0=KB-D%JO@E{Mh(fRgS{-xLRPhxjJL7Car1!|D{JyRgQk~89f;; zn647Q*6-cwH_>T`V{?`7$EkidLYgnH3J+Yq5)@;ym*P1N9u&p6mWuLTImdF~dK*~Z zs|?1&ZW^&VgKx5j$#1?VVws(F*^M^QH+se{A)}6}QKBwh0ks&On`0D|bZRl(H(%s8 z8BnfTe9A08AFJ;UMQqr5* zP?}X%Hu3SQAdZDpbvLe~(7KW87i5UBM0WS&#f?0fk7AxSbT{otYN-C|J^H-$sbcz> z*zr52zKvPGG}as%-qZ2s@7sBN#8nS?e#MuW#rx9r%15^Q=m$xpE}x4rzshUAdi31X z2foCd-?x-Z_MWyiRp4p z@gOaqKOsx`&vde>lCQD?0!|Yjn-nXnkD?Na3W~RTw?ARXk+>#Lg+SNz_yywJZr_2v z{BNVIqtk2srswW)&lQsk_lG*KN1MZ3S^NJ}@;Sd4nE+*z6%A{W@v7tU4H!Y(LSp)uR0ykyMsk^HMR?lk%vITrx zH)XGB%-~um7RoYtO2|Jjbl2j{zqf|`LU;3WJr=R3p^>~-OXME!#B2;m1PSE~anTpg z<|{<`;O>mwNjhhspM|)>784=IZRC@AW3x-Iv{J&JqSR!up(jQ8M`N|-e2Wi~OP`0l>QbuO zA3r2iRGKbb$8hyk-)iSO-xIup3@_y*F*{|BXZfofjfp;#^YX+*MoNX8i!e_VHdhuyxeEF`)xb@xBZl#xZCH=GnV-i`u99&9uT=63XJj?HiD`UA7bIsJR zryP)1_wn5MA}V{d(`|&Gn_}!?&g(w$!xELeKGio}dY9&@W`@4Zw!uF%M^0WX{Qcsw zb4l5cSiKMSW7a=#3j@_ptv|APL^bn_mQImILLc*t(i4)>q zFBqP_{J8srw6>NHbG>q(TN-P>_vtHX2@mw?7PafUH7r6`ZkzNlHx<9n9`0FpxSB4> zNXx2Ux{L$H7OG!%BpA7mjhGkc=dj4||86kz=qNen9fJ^FJ5NdB{CaOwM@)_r^UXzZ zyV)K3ZASV{)iFLwTQB`>+nnDn9})_Rnu?C2XlS@obhXUU2OiUq{5WLQoSPYNQ-O#j zW`4|)6xUNh#1fzQRhI6=_sZ5Q&6hTL)Vo@XO%~>cW>|jF$m6(l@VEhw{cEe3>ubB@ z_fb&X5IOw+=z0sVDA)CSctAlV6axtbR2n1%=~R?%32Bg$mKeGfL`7m~lu|kdC1zkq zN$F;2B&0i~zh@ZSXP@)?e{=2Y+UVZ;zVpPL>t0I>L_=?n57{f0+2*^DxwcToQBXa4 zC*gOtF0eps83^K=>Z=5_fcVq7v(HIJvqSFiJt9>VI3iUYJ&}oA`+JkmZQq0&@>@G$r|=4y<4N| z9*D^zD-idmgd|;?oeX0F&)!;EWz4A;;q+;6M5ispjVpA;RcT9s@X#0M z@#%Mu@jKQ-S!5I~Nzd2tUF_x4nR1+1o(rzn0XF4ru#e32u0MS74|uPNr;yf z6WVxhKLVHFt7OaBoJy0~2S=#%4Z8?ER=Z)3YFmhP&!l44CNg?%WZbJ>;Q#{Jx}IQy z10mO)+%79ZD!Nb8&A&}zT(8G=I>AzquY5aAUmCP24HRI9D<7Ds-=C}2xjs%CyB zZm?4l!4_KGnTUjNR=!KT29oOBImd=L$k} zRZ?890f^O5ydX{bw8~Ze7&G= zX&q6jG~(5ekVOH^hJ#;`q8&j=SGT?_A{WUVE*6Xn;S{EubeZR%j_S`3USvKyYjoAs z#|EO9U%YMsh-$l&A?^9ij{`&LA&cFrry#Taee&pl}npVoAs9jIx;%QtZI%wUJ@XKKx$>~2{uvt z3`UpSrh)iQu&7kYow#IyYSm-Kvq1iiBG!S{4)$hwjq{Ng;kr#VKr75f_$`(ODwEDZ zV0F*f+!nQgb*w@+r-P|*XQ>yKoM)3NuJiU3DTzYealB>mO8lCMtH| zV%@oHjm79!-%;0Kz{6FQlPh4w@x|%Wu#iPDhMb;`NZz+?rC06zlAgD_1gRGW<|^ZpvmFvr7wuM4}kH zL%vF23M0ND<@zA%9fD`c*s?)5eYJH#;dN-IUyd!0Sd43fUdrsS!*2ZeV*#~pb}y8s zu}C!b6UVNbX0~a=JB@`aw2yx?m_P17&h&Yz+q4HCgYrx*XP!bWWzKSfk#;C+pqm6t zdzLn2oRhSe1)y`7qOv-v6caW{Mw-gZ6WeUIW!8_%YQ(P<<)>cyZ(OYT#+!JSmZnx+TgUX!h)^rd<%CwK zi=M~+ZA%|wp;G*=#zlVgGSub-Y9c$9UN?4J;0S%Jbar?QeX*XmQ^g_+O6K1}?PN~j_on(Uw*41ZHf<3mHo0n#rHWTFLr1@$< z4WXDGXTJR+8~a;?Pk2P9Bks$-yG)j&SFI5N_{8&s%q+jqHcXschv+^}lVpy`@`_7% z2r=)N&4f31YB8J1<~hiId(fz|Y|XT6FNEfGsa09VUXZex(vM$yG!joZOGejeXFW)p zm#iyCc@{_bgZzL}1wboPm&y)CCh)BvCef+5`{e&ufc7dcnD4TVXCM#m^ z^4(ZxoZ$AEGD1@)%HVnS^F4jVE0ZYao2djz@FSk38I)w8-o1`Nn~MxA->$6-kf__4 z(?~F)QOi>w18ucCQS?Q>QnZh2+p@PyV~a=2>Q-j2b!bJHz2B9y)>uNU%@-k1y_=`5Fk5Q(#gnhBAzL>@Ok<7!n7T~sL3Yhz5{*o}*ko{w8+CXfgesh4-gX6SeDcff?j=~DqJBOhz1 zzny>G9YWRb3@yGv02+lLB_w)eCT)4Y7}X8xvN<*JaxxL01MFYok`XX3FV9A8|IsVp z>8mgLV7HLsz*esD;dxhAN@N0GV#K`!lC6=@2ZIQanV1E1- z8KaXhudNLV0#@)$Y0H<=mRgWbGQc0R9C^kU@^_S=miODN+~7trFpn&ad`ZAO@}s0d z2_3c?W;_+PRI6-8uKMGAs4O~Ic0izTQ>SRx2+BnpKczJsXp%iuZt)~HyjZfod{A(O zlV;GhV+48_(ijrUSKE?zQY7SUzS-5t?VPu4F&5d{AIhieg1J%>Ws9AIo@#lLbv*On zo-K~A>@Nvw)@{GrCkF;k*x-*J^$hK?9ypPlt>o!MGF(I6>O8avofs!BJMylBX5~fa zMP2jF2KXMrSdu2+Mv7Z_40;$OC=@rWo?$|6*5MdvQgrm|7PPg0@28bv(MtYY>6-o5 z5Q{!ix7N#!qq?h^i`^^QZxQKy1K z`Ow8>9jwJdn#hUlpB#(SqR1hi%K;zhedI`|ChB`4QfEDK9DTU&Q(>z3DirT}^X!nHs6&f(rFdM`6@Pc_( zQ<0J~n6gj>K!o?A#v&oe^Ay~^u8)pFq_4}Q@DyBDOoXaAU zl6ngu$sCv<4kWoCi2K;@Z00xpbM9pQW4gOQ(*B2TgM%2N!r4#pZ8zS6nV7KItyLL| z`6CVpZL>F{2HiA6^*Keh&;tSRGKwHlf>i&4R%iXbw5PW}jIKYrab_teu~(QA*4Hmf z9eRUERy~g`fq)=anF>O57Xal3;;&$Ua*Mgk!Ck7^g-I8#;6)wp7dnW#A+6zopz1Ve zmp(#xll8eUJc+SUdU|(gtG?x_y_ix{FeN6FUYWQkoJBG=dGH%GTHss61oDk`L- zd=f|0=WEE?vxSf*In5!frAdio0ibEPuMbl%ZEjP*SZp2agmMo-KM(r(=Da|^j!&xf zp(+3_MHz2ug1mYrG-}Zw0GHOJn>hDf9D=3Us6T0pX?)or*0L7~mWHX>nPG?C!1XR@>j;pN zUWMRrrk+32h;1j*`XT6&W)iPz8Qqrv&kqKha)U#w?F)tlu-VPeRI-oJV zdsIi>RnA_PsH6QQyY0v(XQ1Mtxp;$wFv-o;Q9H~giI1n6UjPUC)>i9k zdS<=ID`Z{jtjuf`lPRddNMLhLi1fX)r2#4zY0URuNQ8OCJ9 zUC_})Hg3;L?B#wAKs;mt#6!q3{tQ4oVDJVvScblaGUBDqG~CF0uKFe3CJwt&&+-S8 zA9%P=xr6L8u*}uD>U8stxXqOE+YkE$MSQH9d_D8qsjUL$-=|*@|BIQx$2)r|P=b#V zv@Zkw_#9R}Bcp;GT;JHZyE)u?$@K*Nr7YMsNGHKF^m35 zO)kH#R)|rM{LoAKLV6;k1r_2#=|+SvYfk9f+8jMZcFZ!zseA>S*%OB;4v^%p@HxTo zAclsRo9O7X8#U(sQpv^@xoYzpRE`u;5$$Kbs``}#w$5gu%btbkAA)Co8=IYxwXl$3 zy##Tu{RgZ95@}`e0s%VnaFYRd7vZld8tpzKX~BF+AC?a>NQpA#L;=Fo-Yrqj^VRHd z?YD^)rUjJEWyiV>Av^QI2DzHH_8$lH23Uy9R_p!#FU*1&*eh1G5|8os7w$dONVBYGi|Bja z2h9`_s(NaE_@Y9Rbe~S<`i@;M=5~T2ot0*K%XT}%a_^%JODESPr#=?D7t&=4yE)Tq z+P2LX0N?>X`+yiz9|=l&?i0f<%r7ye__K3sGquJ-<~}*ru85Cd6B$X^kap8@G{A%x zbjPzYg{l7OgH(6^f=8Ec=M7`~*D>mJgC6T@(FMocrfdfH8vD1weZIMJ7wuoau`HIe z`}ABwCWlf_AyPiN46$g-D^RbWaJ;$QOg*)_HV`XPA-FcTOnK7Y#6`asnU>sbqWMAf zcQ<0wKzSz8pWhp_E0Ps_P~)94HzB@t^YbqA>0;LXnOfIjdJJa{?ffq|D6c^bQ!fTM zLo;%+zCVU$WvS}xJ1pY*lJlTt&Rl{B0Ac`_khX|#pb{KNX)59!(>?Aj3VQ99@xmDZ zLBkBr1-TOLRf!n{$+ z>+v*f#^D=|9WLioRa2ApuA1J|N?4%F%KRz&6;gc%4WRSQc{X+xz1>6Aw1wghCUviT z4aF()h0|IyR>SiKsfGovh-zaHA51<-(LN%lba$)3L><*HGwJYJC*uY;r+w(H$OqZ8 zoFHH(_r#c*zaJvo(@e)Vym~gGSto)iDhg&HtC$fP6*Yo_+`<0~mM#$NlTmFTXYL!^ zJPv^-0pM7g>|o{H^i90?jZMYBFgTE|#`k{h>bA|jj&gFnlPmj54tUo`1(%12WjhEM zz5%EM35QeFS$+kcj!$!Ty1zMQfOLR5w71u!jr1l1k^vIrhrz1Gn8@%iYFiFfJ6Z@!>+c>z$gAVl8dAgE4|4C#v*Y zWp)uWxN1f|Jc!lSYos=MPMRj7Vc0P|KM|h)D zLLPGa{RKQ=A5D85>%{nTaw2ruF>o!A;2nB02N>W%i1b0?#T4Z)%BnmIFPc&9rZWeH zORC-Ped`D{|ixXxSuIxH(idWj51pG(vpN`gs8uskugeL`f(wRF}Xt8?y)-wDJQOq%@cYjIIhWg3vdE$T~^Sa3Qt{bZ_i z7iet$>qAF?{l+EPxsjft0F{Reg{i6ax>+$o$mw){!#Yf{7PIQiVutE3KHv1iA{W{o zPziB5e*xXCaG!+~`^?(|rbj-TMGN`YO#@NKi8@?gB^&ioX|=PbtdxHr>ig$xW2L;S z04@%b1+gV@ai=XUP50wLMqg>l0Dc?h7Cm}A?c5M2t*0=NNe*(v5P<;A(bw*AAA$6# zz;5o}0-FFZVxJf}8Kkr>o>OcW(q*+98q*5y?!j%9yszwIEIJ1vzB04xlXOg&2Gjl`Jg{+Np59i_N$l1p!}~9YNaJ=pzsd@zz`k@c z@+7!$&$E=pz>fXa_;P$!qsBr|z_2Mv`hQ&dZpOI;Ym^l?c#?0muSs;WfN-34fOA zA6IPtOdN&p`7o-#oH1{9@j6t0!|G^PpvO)b>xB$ekbAu_0uqpbwhNy+4j=H;$M5>i)cZ`hCpDVb>OY z+toepvXBR((O(SS>5ATIDk;RY(8)og4FoR#+?2=k5PXo#U}|sLKTtE2R-&{@vU0o3 z#`Uxgq6fZ2Nqp&3ZdG0dBb(mY%C_Ez@A2=&rf>ZabLn~85xnd?nqt1(`NKS#G4pR> z0=s{s6L9SP;B3E933kG4}aYfe&q=|=fcl~ZQsT&1EaFv^~xb9p|^V!n2Zftth?AU*$ z&vQfomLO(-$6o%K`@w|BR=v-Alpdee58h>$$LjvsXR!+QVI+hryqH}Kd<~#Gtc3_x zR-FiD3IM}s$|HmfJ&*v6`5RkWeu6FmfR*ES)k)Zf{z(~;ft-BfdV4%Ax>PJY?i0

)_E9pTF?|y)WzHGz6D#zz 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

k?j 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 literal 0 HcmV?d00001 diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/assets/ttft_vs_qps_chart.png b/recipes/3p_integrations/crusoe/vllm-fp8/assets/ttft_vs_qps_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..b95e181881401ab3c3da3878b2aee62032d492d2 GIT binary patch literal 295159 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Ð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 RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("generate_stream") + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + assert not request_func_input.use_beam_search + params = { + "best_of": request_func_input.best_of, + "max_new_tokens": request_func_input.output_len, + "do_sample": True, + "temperature": 0.01, # TGI does not accept 0.0 temperature. + "top_p": 0.99, # TGI does not accept 1.0 top_p. + } + payload = { + "inputs": request_func_input.prompt, + "parameters": params, + } + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + chunk_bytes = chunk_bytes.decode("utf-8") + + #NOTE: Sometimes TGI returns a ping response without + # any data, we should skip it. + if chunk_bytes.startswith(":"): + continue + chunk = remove_prefix(chunk_bytes, "data:") + + data = json.loads(chunk) + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - + most_recent_timestamp) + + most_recent_timestamp = timestamp + + output.latency = most_recent_timestamp - st + output.success = True + output.generated_text = data["generated_text"] + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_trt_llm( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("generate_stream") + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + assert not request_func_input.use_beam_search + assert request_func_input.best_of == 1 + payload = { + "accumulate_tokens": True, + "text_input": request_func_input.prompt, + "temperature": 0.0, + "top_p": 1.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix(chunk_bytes.decode("utf-8"), + "data:") + + data = json.loads(chunk) + output.generated_text += data["text_output"] + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - + most_recent_timestamp) + + most_recent_timestamp = timestamp + + output.latency = most_recent_timestamp - st + output.success = True + + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_deepspeed_mii( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + assert request_func_input.best_of == 1 + assert not request_func_input.use_beam_search + + payload = { + "prompt": request_func_input.prompt, + "max_tokens": request_func_input.output_len, + "temperature": 0.01, # deepspeed-mii does not accept 0.0 temp. + "top_p": 1.0, + } + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + # NOTE: DeepSpeed-MII doesn't support streaming as of Jan 28 2024, + # will use 0 as placeholder. + # See https://github.com/microsoft/DeepSpeed-MII/pull/311 + output.ttft = 0 + + st = time.perf_counter() + try: + async with session.post(url=request_func_input.api_url, + json=payload) as response: + if response.status == 200: + parsed_resp = await response.json() + output.latency = time.perf_counter() - st + output.generated_text = parsed_resp["text"][0] + output.success = True + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith( + ("completions", "profile") + ), "OpenAI Completions API URL must end with 'completions' or 'profile'." + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + assert not request_func_input.use_beam_search + payload = { + "model": request_func_input.model, + "prompt": request_func_input.prompt, + "temperature": 0.0, + "best_of": request_func_input.best_of, + "max_tokens": request_func_input.output_len, + "stream": True, + } + headers = { + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}" + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload, + headers=headers) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix(chunk_bytes.decode("utf-8"), + "data: ") + if chunk == "[DONE]": + latency = time.perf_counter() - st + else: + data = json.loads(chunk) + + # NOTE: Some completion API might have a last + # usage summary response without a token so we + # want to check a token was generated + if data["choices"][0]["text"]: + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - + most_recent_timestamp) + + most_recent_timestamp = timestamp + generated_text += data["choices"][0]["text"] + + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_chat_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith( + "chat/completions" + ), "OpenAI Chat Completions API URL must end with 'chat/completions'." + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + assert not request_func_input.use_beam_search + payload = { + "model": request_func_input.model, + "messages": [ + { + "role": "user", + "content": request_func_input.prompt, + }, + ], + "temperature": 0.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}", + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload, + headers=headers) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix(chunk_bytes.decode("utf-8"), + "data: ") + if chunk == "[DONE]": + latency = time.perf_counter() - st + else: + timestamp = time.perf_counter() + data = json.loads(chunk) + + delta = data["choices"][0]["delta"] + if delta.get("content", None): + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - + most_recent_timestamp) + + generated_text += delta["content"] + + most_recent_timestamp = timestamp + + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +# Since vllm must support Python 3.8, we can't use str.removeprefix(prefix) +# introduced in Python 3.9 +def remove_prefix(text: str, prefix: str) -> str: + if text.startswith(prefix): + return text[len(prefix):] + return text + + +def get_model(pretrained_model_name_or_path: str) -> str: + if os.getenv('VLLM_USE_MODELSCOPE', 'False').lower() == 'true': + from modelscope import snapshot_download + + model_path = snapshot_download( + model_id=pretrained_model_name_or_path, + local_files_only=huggingface_hub.constants.HF_HUB_OFFLINE, + ignore_file_pattern=[".*.pt", ".*.safetensors", ".*.bin"]) + + return model_path + return pretrained_model_name_or_path + + +def get_tokenizer( + pretrained_model_name_or_path: str, trust_remote_code: bool +) -> Union[PreTrainedTokenizer, PreTrainedTokenizerFast]: + if pretrained_model_name_or_path is not None and not os.path.exists( + pretrained_model_name_or_path): + pretrained_model_name_or_path = get_model( + pretrained_model_name_or_path) + return AutoTokenizer.from_pretrained(pretrained_model_name_or_path, + trust_remote_code=trust_remote_code) + + +ASYNC_REQUEST_FUNCS = { + "tgi": async_request_tgi, + "vllm": async_request_openai_completions, + "lmdeploy": async_request_openai_completions, + "deepspeed-mii": async_request_deepspeed_mii, + "openai": async_request_openai_completions, + "openai-chat": async_request_openai_chat_completions, + "tensorrt-llm": async_request_trt_llm, + "scalellm": async_request_openai_completions, +} diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py new file mode 100644 index 000000000..97afd301c --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py @@ -0,0 +1,285 @@ +"""Benchmark the latency of processing a single batch of requests.""" +import argparse +import json +import time +from pathlib import Path +from typing import List, Optional + +import numpy as np +import torch +from tqdm import tqdm + +from vllm import LLM, SamplingParams +from vllm.engine.arg_utils import EngineArgs +from vllm.inputs import PromptInputs +from vllm.model_executor.layers.quantization import QUANTIZATION_METHODS +from vllm.utils import FlexibleArgumentParser + + +def main(args: argparse.Namespace): + print(args) + + # NOTE(woosuk): If the request cannot be processed in a single batch, + # the engine will automatically process the request in multiple batches. + llm = LLM( + model=args.model, + speculative_model=args.speculative_model, + num_speculative_tokens=args.num_speculative_tokens, + speculative_draft_tensor_parallel_size=\ + args.speculative_draft_tensor_parallel_size, + tokenizer=args.tokenizer, + quantization=args.quantization, + tensor_parallel_size=args.tensor_parallel_size, + trust_remote_code=args.trust_remote_code, + dtype=args.dtype, + max_model_len=args.max_model_len, + enforce_eager=args.enforce_eager, + kv_cache_dtype=args.kv_cache_dtype, + quantization_param_path=args.quantization_param_path, + device=args.device, + ray_workers_use_nsight=args.ray_workers_use_nsight, + use_v2_block_manager=args.use_v2_block_manager, + enable_chunked_prefill=args.enable_chunked_prefill, + download_dir=args.download_dir, + block_size=args.block_size, + gpu_memory_utilization=args.gpu_memory_utilization, + load_format=args.load_format, + distributed_executor_backend=args.distributed_executor_backend, + otlp_traces_endpoint=args.otlp_traces_endpoint, + enable_prefix_caching=args.enable_prefix_caching, + ) + + sampling_params = SamplingParams( + n=args.n, + temperature=0.0 if args.use_beam_search else 1.0, + top_p=1.0, + use_beam_search=args.use_beam_search, + ignore_eos=True, + max_tokens=args.output_len, + ) + print(sampling_params) + dummy_prompt_token_ids = np.random.randint(10000, + size=(args.batch_size, + args.input_len)) + dummy_inputs: List[PromptInputs] = [{ + "prompt_token_ids": batch + } for batch in dummy_prompt_token_ids.tolist()] + + def run_to_completion(profile_dir: Optional[str] = None): + if profile_dir: + with torch.profiler.profile( + activities=[ + torch.profiler.ProfilerActivity.CPU, + torch.profiler.ProfilerActivity.CUDA, + ], + on_trace_ready=torch.profiler.tensorboard_trace_handler( + str(profile_dir))) as p: + llm.generate(dummy_inputs, + sampling_params=sampling_params, + use_tqdm=False) + print(p.key_averages()) + else: + start_time = time.perf_counter() + llm.generate(dummy_inputs, + sampling_params=sampling_params, + use_tqdm=False) + end_time = time.perf_counter() + latency = end_time - start_time + return latency + + print("Warming up...") + for _ in tqdm(range(args.num_iters_warmup), desc="Warmup iterations"): + run_to_completion(profile_dir=None) + + if args.profile: + profile_dir = args.profile_result_dir + if not profile_dir: + profile_dir = Path( + "." + ) / "vllm_benchmark_result" / f"latency_result_{time.time()}" + print(f"Profiling (results will be saved to '{profile_dir}')...") + run_to_completion(profile_dir=profile_dir) + return + + # Benchmark. + latencies = [] + for _ in tqdm(range(args.num_iters), desc="Profiling iterations"): + latencies.append(run_to_completion(profile_dir=None)) + latencies = np.array(latencies) + percentages = [10, 25, 50, 75, 90, 99] + percentiles = np.percentile(latencies, percentages) + print(f'Avg latency: {np.mean(latencies)} seconds') + for percentage, percentile in zip(percentages, percentiles): + print(f'{percentage}% percentile latency: {percentile} seconds') + + # Output JSON results if specified + if args.output_json: + results = { + "avg_latency": np.mean(latencies), + "latencies": latencies.tolist(), + "percentiles": dict(zip(percentages, percentiles.tolist())), + } + with open(args.output_json, "w") as f: + json.dump(results, f, indent=4) + + +if __name__ == '__main__': + parser = FlexibleArgumentParser( + description='Benchmark the latency of processing a single batch of ' + 'requests till completion.') + parser.add_argument('--model', type=str, default='facebook/opt-125m') + parser.add_argument('--speculative-model', type=str, default=None) + parser.add_argument('--num-speculative-tokens', type=int, default=None) + parser.add_argument('--speculative-draft-tensor-parallel-size', + '-spec-draft-tp', + type=int, + default=None) + parser.add_argument('--tokenizer', type=str, default=None) + parser.add_argument('--quantization', + '-q', + choices=[*QUANTIZATION_METHODS, None], + default=None) + parser.add_argument('--tensor-parallel-size', '-tp', type=int, default=1) + parser.add_argument('--input-len', type=int, default=32) + parser.add_argument('--output-len', type=int, default=128) + parser.add_argument('--batch-size', type=int, default=8) + parser.add_argument('--n', + type=int, + default=1, + help='Number of generated sequences per prompt.') + parser.add_argument('--use-beam-search', action='store_true') + parser.add_argument('--num-iters-warmup', + type=int, + default=10, + help='Number of iterations to run for warmup.') + parser.add_argument('--num-iters', + type=int, + default=30, + help='Number of iterations to run.') + parser.add_argument('--trust-remote-code', + action='store_true', + help='trust remote code from huggingface') + parser.add_argument( + '--max-model-len', + type=int, + default=None, + help='Maximum length of a sequence (including prompt and output). ' + 'If None, will be derived from the model.') + parser.add_argument( + '--dtype', + type=str, + default='auto', + choices=['auto', 'half', 'float16', 'bfloat16', 'float', 'float32'], + help='data type for model weights and activations. ' + 'The "auto" option will use FP16 precision ' + 'for FP32 and FP16 models, and BF16 precision ' + 'for BF16 models.') + parser.add_argument('--enforce-eager', + action='store_true', + help='enforce eager mode and disable CUDA graph') + parser.add_argument( + '--kv-cache-dtype', + type=str, + choices=['auto', 'fp8', 'fp8_e5m2', 'fp8_e4m3'], + default="auto", + help='Data type for kv cache storage. If "auto", will use model ' + 'data type. CUDA 11.8+ supports fp8 (=fp8_e4m3) and fp8_e5m2. ' + 'ROCm (AMD GPU) supports fp8 (=fp8_e4m3)') + parser.add_argument( + '--quantization-param-path', + type=str, + default=None, + help='Path to the JSON file containing the KV cache scaling factors. ' + 'This should generally be supplied, when KV cache dtype is FP8. ' + 'Otherwise, KV cache scaling factors default to 1.0, which may cause ' + 'accuracy issues. FP8_E5M2 (without scaling) is only supported on ' + 'cuda version greater than 11.8. On ROCm (AMD GPU), FP8_E4M3 is ' + 'instead supported for common inference criteria.') + parser.add_argument( + '--profile', + action='store_true', + help='profile the generation process of a single batch') + parser.add_argument( + '--profile-result-dir', + type=str, + default=None, + help=('path to save the pytorch profiler output. Can be visualized ' + 'with ui.perfetto.dev or Tensorboard.')) + parser.add_argument( + "--device", + type=str, + default="auto", + choices=["auto", "cuda", "cpu", "openvino", "tpu", "xpu"], + help='device type for vLLM execution, supporting CUDA, OpenVINO and ' + 'CPU.') + parser.add_argument('--block-size', + type=int, + default=16, + help='block size of key/value cache') + parser.add_argument( + '--enable-chunked-prefill', + action='store_true', + help='If True, the prefill requests can be chunked based on the ' + 'max_num_batched_tokens') + parser.add_argument("--enable-prefix-caching", + action='store_true', + help="Enable automatic prefix caching") + parser.add_argument('--use-v2-block-manager', action='store_true') + parser.add_argument( + "--ray-workers-use-nsight", + action='store_true', + help="If specified, use nsight to profile ray workers", + ) + parser.add_argument('--download-dir', + type=str, + default=None, + help='directory to download and load the weights, ' + 'default to the default cache dir of huggingface') + parser.add_argument( + '--output-json', + type=str, + default=None, + help='Path to save the latency results in JSON format.') + parser.add_argument('--gpu-memory-utilization', + type=float, + default=0.9, + help='the fraction of GPU memory to be used for ' + 'the model executor, which can range from 0 to 1.' + 'If unspecified, will use the default value of 0.9.') + parser.add_argument( + '--load-format', + type=str, + default=EngineArgs.load_format, + choices=[ + 'auto', 'pt', 'safetensors', 'npcache', 'dummy', 'tensorizer', + 'bitsandbytes' + ], + help='The format of the model weights to load.\n\n' + '* "auto" will try to load the weights in the safetensors format ' + 'and fall back to the pytorch bin format if safetensors format ' + 'is not available.\n' + '* "pt" will load the weights in the pytorch bin format.\n' + '* "safetensors" will load the weights in the safetensors format.\n' + '* "npcache" will load the weights in pytorch format and store ' + 'a numpy cache to speed up the loading.\n' + '* "dummy" will initialize the weights with random values, ' + 'which is mainly for profiling.\n' + '* "tensorizer" will load the weights using tensorizer from ' + 'CoreWeave. See the Tensorize vLLM Model script in the Examples' + 'section for more information.\n' + '* "bitsandbytes" will load the weights using bitsandbytes ' + 'quantization.\n') + parser.add_argument( + '--distributed-executor-backend', + choices=['ray', 'mp'], + default=None, + help='Backend to use for distributed serving. When more than 1 GPU ' + 'is used, will be automatically set to "ray" if installed ' + 'or "mp" (multiprocessing) otherwise.') + parser.add_argument( + '--otlp-traces-endpoint', + type=str, + default=None, + help='Target URL to which OpenTelemetry traces will be sent.') + args = parser.parse_args() + main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py new file mode 100644 index 000000000..3e90fdfb7 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py @@ -0,0 +1,198 @@ +""" +Benchmark the efficiency of prefix caching. + +This script allows you to benchmark the performance of +a model with and without prefix caching using either fixed prompts +or prompts sampled from the ShareGPT dataset. + +Fixed example usage: + python benchmark_prefix_caching.py \ + --model meta-llama/Llama-2-7b-chat-hf \ + --enable-prefix-caching \ + --num-prompts 1 \ + --repeat-count 100 + +ShareGPT example usage: + # This command samples 20 prompts with input lengths + # between 128 and 256 tokens from the ShareGPT dataset, + # then replicates each prompt 5 times. + python benchmark_prefix_caching.py \ + --model meta-llama/Llama-2-7b-chat-hf \ + --dataset-path /path/to/ShareGPT_V3_unfiltered_cleaned_split.json \ + --enable-prefix-caching \ + --num-prompts 20 \ + --repeat-count 5 \ + --input-length-range 128:256 +""" + +import json +import random +import time +from typing import List, Optional, Tuple + +from transformers import PreTrainedTokenizerBase + +from vllm import LLM, SamplingParams +from vllm.utils import FlexibleArgumentParser + +try: + from vllm.transformers_utils.tokenizer import get_tokenizer +except ImportError: + from backend_request_func import get_tokenizer + +PROMPT = "You are a helpful assistant in recognizes the content of tables in markdown format. Here is a table as fellows. You need to answer my question about the table.\n# Table\n|Opening|Opening|Sl. No.|Film|Cast|Director|Music Director|Notes|\n|----|----|----|----|----|----|----|----|\n|J A N|9|1|Agni Pushpam|Jayabharathi, Kamalahasan|Jeassy|M. K. Arjunan||\n|J A N|16|2|Priyamvada|Mohan Sharma, Lakshmi, KPAC Lalitha|K. S. Sethumadhavan|V. Dakshinamoorthy||\n|J A N|23|3|Yakshagaanam|Madhu, Sheela|Sheela|M. S. Viswanathan||\n|J A N|30|4|Paalkkadal|Sheela, Sharada|T. K. Prasad|A. T. Ummer||\n|F E B|5|5|Amma|Madhu, Srividya|M. Krishnan Nair|M. K. Arjunan||\n|F E B|13|6|Appooppan|Thikkurissi Sukumaran Nair, Kamal Haasan|P. Bhaskaran|M. S. Baburaj||\n|F E B|20|7|Srishti|Chowalloor Krishnankutty, Ravi Alummoodu|K. T. Muhammad|M. S. Baburaj||\n|F E B|20|8|Vanadevatha|Prem Nazir, Madhubala|Yusufali Kechery|G. Devarajan||\n|F E B|27|9|Samasya|Madhu, Kamalahaasan|K. Thankappan|Shyam||\n|F E B|27|10|Yudhabhoomi|K. P. Ummer, Vidhubala|Crossbelt Mani|R. K. Shekhar||\n|M A R|5|11|Seemantha Puthran|Prem Nazir, Jayabharathi|A. B. Raj|M. K. Arjunan||\n|M A R|12|12|Swapnadanam|Rani Chandra, Dr. Mohandas|K. G. George|Bhaskar Chandavarkar||\n|M A R|19|13|Thulavarsham|Prem Nazir, sreedevi, Sudheer|N. Sankaran Nair|V. Dakshinamoorthy||\n|M A R|20|14|Aruthu|Kaviyoor Ponnamma, Kamalahasan|Ravi|G. Devarajan||\n|M A R|26|15|Swimming Pool|Kamal Haasan, M. G. Soman|J. Sasikumar|M. K. Arjunan||\n\n# Question\nWhat' s the content in the (1,1) cells\n" # noqa: E501 + + +def test_prefix(llm=None, sampling_params=None, prompts=None): + start_time = time.time() + + llm.generate(prompts, sampling_params=sampling_params) + + end_time = time.time() + print(f"cost time {end_time - start_time}") + + +def sample_requests( + dataset_path: str, + num_requests: int, + tokenizer: PreTrainedTokenizerBase, + input_length_range: Tuple[int, int], + fixed_output_len: Optional[int], +) -> List[Tuple[str, int, int]]: + if fixed_output_len is not None and fixed_output_len < 4: + raise ValueError("output_len too small") + + # Load the dataset. + with open(dataset_path) as f: + dataset = json.load(f) + # Filter out the conversations with less than 2 turns. + dataset = [data for data in dataset if len(data["conversations"]) >= 2] + # Only keep the first two turns of each conversation. + dataset = [(data["conversations"][0]["value"], + data["conversations"][1]["value"]) for data in dataset] + + # Shuffle the dataset. + random.shuffle(dataset) + + min_len, max_len = input_length_range + + # Filter out sequences that are too long or too short + filtered_dataset: List[Tuple[str, int, int]] = [] + for i in range(len(dataset)): + if len(filtered_dataset) == num_requests: + break + + # Tokenize the prompts and completions. + prompt = dataset[i][0] + prompt_token_ids = tokenizer(prompt).input_ids + completion = dataset[i][1] + completion_token_ids = tokenizer(completion).input_ids + prompt_len = len(prompt_token_ids) + output_len = len(completion_token_ids + ) if fixed_output_len is None else fixed_output_len + if prompt_len < 4 or output_len < 4: + # Prune too short sequences. + continue + if min_len <= prompt_len <= max_len: + filtered_dataset.append((prompt, prompt_len, output_len)) + + return filtered_dataset + + +def repeat_and_sort_requests(requests: List[Tuple[str, int, int]], + repeat_count: int, + sort: bool = False) -> List[str]: + repeated_requests = requests * repeat_count + if sort: + repeated_requests.sort(key=lambda x: x[1]) + else: + random.shuffle(repeated_requests) + return [req[0] for req in repeated_requests] + + +def main(args): + tokenizer = get_tokenizer(args.model, trust_remote_code=True) + input_length_range = tuple(map(int, args.input_length_range.split(':'))) + + if args.dataset_path is not None: + print(f"Start to sample {args.num_prompts} prompts" + "from {args.dataset_path}") + filtered_datasets = sample_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + tokenizer=tokenizer, + input_length_range=input_length_range, + fixed_output_len=args.output_len, + ) + else: + prompt_len = len(tokenizer(PROMPT).input_ids) + filtered_datasets = [(PROMPT, prompt_len, args.output_len) + ] * args.num_prompts + + llm = LLM(model=args.model, + tokenizer_mode='auto', + trust_remote_code=True, + enforce_eager=True, + use_v2_block_manager=args.use_v2_block_manager, + tensor_parallel_size=args.tensor_parallel_size, + enable_prefix_caching=args.enable_prefix_caching) + + sampling_params = SamplingParams(temperature=0, max_tokens=args.output_len) + + print("Testing filtered datasets") + prompts = repeat_and_sort_requests(filtered_datasets, + repeat_count=args.repeat_count, + sort=args.sort) + + print("------warm up------") + test_prefix( + llm=llm, + prompts=prompts, + sampling_params=sampling_params, + ) + + print("------start generating------") + test_prefix( + llm=llm, + prompts=prompts, + sampling_params=sampling_params, + ) + + +if __name__ == "__main__": + parser = FlexibleArgumentParser( + description= + 'Benchmark the performance with or without automatic prefix caching.') + parser.add_argument('--model', + type=str, + default='baichuan-inc/Baichuan2-13B-Chat') + parser.add_argument("--dataset-path", + type=str, + default=None, + help="Path to the dataset.") + parser.add_argument('--tensor-parallel-size', '-tp', type=int, default=1) + parser.add_argument('--output-len', type=int, default=10) + parser.add_argument('--enable-prefix-caching', + action='store_true', + help='enable prefix caching') + parser.add_argument('--use-v2-block-manager', + action='store_true', + help='Use BlockSpaceMangerV2') + parser.add_argument('--num-prompts', + type=int, + default=1, + help="Number of the prompts sampled from dataset") + parser.add_argument('--repeat-count', + type=int, + default=100, + help='Number of times to repeat each prompt') + parser.add_argument('--sort', + action='store_true', + help='Sort prompts by input length') + parser.add_argument('--input-length-range', + type=str, + default='128:256', + help='Range of input lengths for sampling prompts,' + 'specified as "min:max" (e.g., "128:256").') + args = parser.parse_args() + main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_serving.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_serving.py new file mode 100644 index 000000000..fe687da49 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_serving.py @@ -0,0 +1,770 @@ +"""Benchmark online serving throughput. + +On the server side, run one of the following commands: + vLLM OpenAI API server + vllm serve \ + --swap-space 16 \ + --disable-log-requests + + (TGI backend) + ./launch_tgi_server.sh + +On the client side, run: + python benchmarks/benchmark_serving.py \ + --backend \ + --model \ + --dataset-name sharegpt \ + --dataset-path \ + --request-rate \ # By default is inf + --num-prompts # By default is 1000 + + when using tgi backend, add + --endpoint /generate_stream + to the end of the command above. +""" +import argparse +import asyncio +import json +import os +import random +import time +import warnings +from dataclasses import dataclass +from datetime import datetime +from typing import Any, AsyncGenerator, Dict, List, Optional, Tuple + +import numpy as np +from backend_request_func import (ASYNC_REQUEST_FUNCS, RequestFuncInput, + RequestFuncOutput) +from tqdm.asyncio import tqdm +from transformers import PreTrainedTokenizerBase + +try: + from vllm.transformers_utils.tokenizer import get_tokenizer +except ImportError: + from backend_request_func import get_tokenizer + +try: + from vllm.utils import FlexibleArgumentParser +except ImportError: + from argparse import ArgumentParser as FlexibleArgumentParser + + +@dataclass +class BenchmarkMetrics: + completed: int + total_input: int + total_output: int + request_throughput: float + input_throughput: float + output_throughput: float + mean_ttft_ms: float + median_ttft_ms: float + std_ttft_ms: float + p99_ttft_ms: float + mean_tpot_ms: float + median_tpot_ms: float + std_tpot_ms: float + p99_tpot_ms: float + mean_itl_ms: float + median_itl_ms: float + std_itl_ms: float + p99_itl_ms: float + + +def sample_sharegpt_requests( + dataset_path: str, + num_requests: int, + tokenizer: PreTrainedTokenizerBase, + fixed_output_len: Optional[int] = None, +) -> List[Tuple[str, int, int]]: + if fixed_output_len is not None and fixed_output_len < 4: + raise ValueError("output_len too small") + # Load the dataset. + with open(dataset_path) as f: + dataset = json.load(f) + # Filter out the conversations with less than 2 turns. + dataset = [data for data in dataset if len(data["conversations"]) >= 2] + # Only keep the first two turns of each conversation. + dataset = [(data["conversations"][0]["value"], + data["conversations"][1]["value"]) for data in dataset] + + # Shuffle the dataset. + random.shuffle(dataset) + + # Filter out sequences that are too long or too short + filtered_dataset: List[Tuple[str, int, int]] = [] + for i in range(len(dataset)): + if len(filtered_dataset) == num_requests: + break + + # Tokenize the prompts and completions. + prompt = dataset[i][0] + prompt_token_ids = tokenizer(prompt).input_ids + completion = dataset[i][1] + completion_token_ids = tokenizer(completion).input_ids + prompt_len = len(prompt_token_ids) + output_len = len(completion_token_ids + ) if fixed_output_len is None else fixed_output_len + if prompt_len < 4 or output_len < 4: + # Prune too short sequences. + continue + if prompt_len > 1024 or prompt_len + output_len > 2048: + # Prune too long sequences. + continue + filtered_dataset.append((prompt, prompt_len, output_len)) + + return filtered_dataset + + +def sample_sonnet_requests( + dataset_path: str, + num_requests: int, + input_len: int, + output_len: int, + prefix_len: int, + tokenizer: PreTrainedTokenizerBase, +) -> List[Tuple[str, str, int, int]]: + assert ( + input_len > prefix_len + ), "'args.sonnet-input-len' must be greater than 'args.prefix-input-len'." + + # Load the dataset. + with open(dataset_path) as f: + poem_lines = f.readlines() + + # Tokenize the poem lines. + poem_token_ids = tokenizer(poem_lines).input_ids + average_poem_len = sum( + len(token_ids) for token_ids in poem_token_ids) / len(poem_token_ids) + + # Base prefix for all requests. + base_prompt = "Pick as many lines as you can from these poem lines:\n" + base_message = [{ + "role": "user", + "content": base_prompt, + }] + base_prompt_formatted = tokenizer.apply_chat_template( + base_message, add_generation_prompt=True, tokenize=False) + base_prompt_offset = len(tokenizer(base_prompt_formatted).input_ids) + + assert ( + input_len > base_prompt_offset + ), f"Please set 'args.sonnet-input-len' higher than {base_prompt_offset}." + num_input_lines = round( + (input_len - base_prompt_offset) / average_poem_len) + + # First approximately `prefix_len` number of tokens in the + # prompt are fixed poem lines. + assert ( + prefix_len > base_prompt_offset + ), f"Please set 'args.sonnet-prefix-len' higher than {base_prompt_offset}." + + num_prefix_lines = round( + (prefix_len - base_prompt_offset) / average_poem_len) + prefix_lines = poem_lines[:num_prefix_lines] + + # Sample the rest of lines per request. + sampled_requests: List[Tuple[str, int, int]] = [] + for _ in range(num_requests): + sampled_lines = "".join( + prefix_lines + + random.sample(poem_lines, num_input_lines - num_prefix_lines)) + + prompt = f"{base_prompt}{sampled_lines}" + message = [ + { + "role": "user", + "content": prompt, + }, + ] + prompt_formatted = tokenizer.apply_chat_template( + message, add_generation_prompt=True, tokenize=False) + prompt_len = len(tokenizer(prompt_formatted).input_ids) + sampled_requests.append( + (prompt, prompt_formatted, prompt_len, output_len)) + + return sampled_requests + + +def sample_random_requests( + input_len: int, output_len: int, num_prompts: int, range_ratio: float, + tokenizer: PreTrainedTokenizerBase) -> List[Tuple[str, int, int]]: + + input_lens = np.random.randint( + int(input_len * range_ratio), + input_len + 1, + size=num_prompts, + ) + output_lens = np.random.randint( + int(output_len * range_ratio), + output_len + 1, + size=num_prompts, + ) + offsets = np.random.randint(0, tokenizer.vocab_size, size=num_prompts) + input_requests = [] + for i in range(num_prompts): + prompt = tokenizer.decode([(offsets[i] + i + j) % tokenizer.vocab_size + for j in range(input_lens[i])]) + input_requests.append( + (prompt, int(input_lens[i]), int(output_lens[i]))) + + return input_requests + + +async def get_request( + input_requests: List[Tuple[str, int, int]], + request_rate: float, +) -> AsyncGenerator[Tuple[str, int, int], None]: + input_requests = iter(input_requests) + for request in input_requests: + yield request + + if request_rate == float("inf"): + # If the request rate is infinity, then we don't need to wait. + continue + + # Sample the request interval from the exponential distribution. + interval = np.random.exponential(1.0 / request_rate) + # The next request will be sent after the interval. + await asyncio.sleep(interval) + + +def calculate_metrics( + input_requests: List[Tuple[str, int, int]], + outputs: List[RequestFuncOutput], + dur_s: float, + tokenizer: PreTrainedTokenizerBase, +) -> Tuple[BenchmarkMetrics, List[int]]: + actual_output_lens: List[int] = [] + total_input = 0 + completed = 0 + itls: List[float] = [] + tpots: List[float] = [] + ttfts: List[float] = [] + for i in range(len(outputs)): + if outputs[i].success: + # We use the tokenizer to count the number of output tokens for all + # serving backends instead of looking at len(outputs[i].itl) since + # multiple output tokens may be bundled together + # Note : this may inflate the output token count slightly + output_len = len( + tokenizer(outputs[i].generated_text, + add_special_tokens=False).input_ids) + actual_output_lens.append(output_len) + total_input += input_requests[i][1] + if output_len > 1: + tpots.append( + (outputs[i].latency - outputs[i].ttft) / (output_len - 1)) + itls += outputs[i].itl + ttfts.append(outputs[i].ttft) + completed += 1 + else: + actual_output_lens.append(0) + + if completed == 0: + warnings.warn( + "All requests failed. This is likely due to a misconfiguration " + "on the benchmark arguments.", + stacklevel=2) + metrics = BenchmarkMetrics( + completed=completed, + total_input=total_input, + total_output=sum(actual_output_lens), + request_throughput=completed / dur_s, + input_throughput=total_input / dur_s, + output_throughput=sum(actual_output_lens) / dur_s, + mean_ttft_ms=np.mean(ttfts or 0) * + 1000, # ttfts is empty if streaming is not supported by backend + median_ttft_ms=np.median(ttfts or 0) * 1000, + std_ttft_ms=np.std(ttfts or 0) * 1000, + p99_ttft_ms=np.percentile(ttfts or 0, 99) * 1000, + mean_tpot_ms=np.mean(tpots or 0) * 1000, + median_tpot_ms=np.median(tpots or 0) * 1000, + std_tpot_ms=np.std(tpots or 0) * 1000, + p99_tpot_ms=np.percentile(tpots or 0, 99) * 1000, + mean_itl_ms=np.mean(itls or 0) * 1000, + median_itl_ms=np.median(itls or 0) * 1000, + std_itl_ms=np.std(itls or 0) * 1000, + p99_itl_ms=np.percentile(itls or 0, 99) * 1000, + ) + + return metrics, actual_output_lens + + +async def benchmark( + backend: str, + api_url: str, + base_url: str, + model_id: str, + tokenizer: PreTrainedTokenizerBase, + input_requests: List[Tuple[str, int, int]], + best_of: int, + use_beam_search: bool, + request_rate: float, + disable_tqdm: bool, + profile: bool, +): + if backend in ASYNC_REQUEST_FUNCS: + request_func = ASYNC_REQUEST_FUNCS[backend] + else: + raise ValueError(f"Unknown backend: {backend}") + + print("Starting initial single prompt test run...") + test_prompt, test_prompt_len, test_output_len = input_requests[0] + test_input = RequestFuncInput( + model=model_id, + prompt=test_prompt, + api_url=api_url, + prompt_len=test_prompt_len, + output_len=test_output_len, + best_of=best_of, + use_beam_search=use_beam_search, + ) + test_output = await request_func(request_func_input=test_input) + if not test_output.success: + raise ValueError( + "Initial test run failed - Please make sure benchmark arguments " + f"are correctly specified. Error: {test_output.error}") + else: + print("Initial test run completed. Starting main benchmark run...") + + if profile: + print("Starting profiler...") + profile_input = RequestFuncInput( + model=model_id, + prompt=test_prompt, + api_url=base_url + "/start_profile", + prompt_len=test_prompt_len, + output_len=test_output_len, + best_of=best_of, + use_beam_search=use_beam_search, + ) + profile_output = await request_func(request_func_input=profile_input) + if profile_output.success: + print("Profiler started") + + print(f"Traffic request rate: {request_rate}") + + pbar = None if disable_tqdm else tqdm(total=len(input_requests)) + + benchmark_start_time = time.perf_counter() + tasks: List[asyncio.Task] = [] + async for request in get_request(input_requests, request_rate): + prompt, prompt_len, output_len = request + request_func_input = RequestFuncInput( + model=model_id, + prompt=prompt, + api_url=api_url, + prompt_len=prompt_len, + output_len=output_len, + best_of=best_of, + use_beam_search=use_beam_search, + ) + tasks.append( + asyncio.create_task( + request_func(request_func_input=request_func_input, + pbar=pbar))) + outputs: List[RequestFuncOutput] = await asyncio.gather(*tasks) + + if profile: + print("Stopping profiler...") + profile_input = RequestFuncInput( + model=model_id, + prompt=test_prompt, + api_url=base_url + "/stop_profile", + prompt_len=test_prompt_len, + output_len=test_output_len, + best_of=best_of, + use_beam_search=use_beam_search, + ) + profile_output = await request_func(request_func_input=profile_input) + if profile_output.success: + print("Profiler stopped") + + if pbar is not None: + pbar.close() + + benchmark_duration = time.perf_counter() - benchmark_start_time + + metrics, actual_output_lens = calculate_metrics( + input_requests=input_requests, + outputs=outputs, + dur_s=benchmark_duration, + tokenizer=tokenizer, + ) + + print("{s:{c}^{n}}".format(s=' Serving Benchmark Result ', n=50, c='=')) + print("{:<40} {:<10}".format("Successful requests:", metrics.completed)) + print("{:<40} {:<10.2f}".format("Benchmark duration (s):", + benchmark_duration)) + print("{:<40} {:<10}".format("Total input tokens:", metrics.total_input)) + print("{:<40} {:<10}".format("Total generated tokens:", + metrics.total_output)) + print("{:<40} {:<10.2f}".format("Request throughput (req/s):", + metrics.request_throughput)) + print("{:<40} {:<10.2f}".format("Input token throughput (tok/s):", + metrics.input_throughput)) + print("{:<40} {:<10.2f}".format("Output token throughput (tok/s):", + metrics.output_throughput)) + print("{s:{c}^{n}}".format(s='Time to First Token', n=50, c='-')) + print("{:<40} {:<10.2f}".format("Mean TTFT (ms):", metrics.mean_ttft_ms)) + print("{:<40} {:<10.2f}".format("Median TTFT (ms):", + metrics.median_ttft_ms)) + print("{:<40} {:<10.2f}".format("P99 TTFT (ms):", metrics.p99_ttft_ms)) + print("{s:{c}^{n}}".format(s='Time per Output Token (excl. 1st token)', + n=50, + c='-')) + print("{:<40} {:<10.2f}".format("Mean TPOT (ms):", metrics.mean_tpot_ms)) + print("{:<40} {:<10.2f}".format("Median TPOT (ms):", + metrics.median_tpot_ms)) + print("{:<40} {:<10.2f}".format("P99 TPOT (ms):", metrics.p99_tpot_ms)) + print("{s:{c}^{n}}".format(s='Inter-token Latency', n=50, c='-')) + print("{:<40} {:<10.2f}".format("Mean ITL (ms):", metrics.mean_itl_ms)) + print("{:<40} {:<10.2f}".format("Median ITL (ms):", metrics.median_itl_ms)) + print("{:<40} {:<10.2f}".format("P99 ITL (ms):", metrics.p99_itl_ms)) + print("=" * 50) + + result = { + "duration": benchmark_duration, + "completed": metrics.completed, + "total_input_tokens": metrics.total_input, + "total_output_tokens": metrics.total_output, + "request_throughput": metrics.request_throughput, + "input_throughput": metrics.input_throughput, + "output_throughput": metrics.output_throughput, + "mean_ttft_ms": metrics.mean_ttft_ms, + "median_ttft_ms": metrics.median_ttft_ms, + "std_ttft_ms": metrics.std_ttft_ms, + "p99_ttft_ms": metrics.p99_ttft_ms, + "mean_tpot_ms": metrics.mean_tpot_ms, + "median_tpot_ms": metrics.median_tpot_ms, + "std_tpot_ms": metrics.std_tpot_ms, + "p99_tpot_ms": metrics.p99_tpot_ms, + "mean_itl_ms": metrics.mean_itl_ms, + "median_itl_ms": metrics.median_itl_ms, + "std_itl_ms": metrics.std_itl_ms, + "p99_itl_ms": metrics.p99_itl_ms, + "input_lens": [output.prompt_len for output in outputs], + "output_lens": actual_output_lens, + "ttfts": [output.ttft for output in outputs], + "itls": [output.itl for output in outputs], + "generated_texts": [output.generated_text for output in outputs], + "errors": [output.error for output in outputs], + } + return result + + +def main(args: argparse.Namespace): + print(args) + random.seed(args.seed) + np.random.seed(args.seed) + + backend = args.backend + model_id = args.model + tokenizer_id = args.tokenizer if args.tokenizer is not None else args.model + + if args.base_url is not None: + api_url = f"{args.base_url}{args.endpoint}" + base_url = f"{args.base_url}" + else: + api_url = f"http://{args.host}:{args.port}{args.endpoint}" + base_url = f"http://{args.host}:{args.port}" + + tokenizer = get_tokenizer(tokenizer_id, + trust_remote_code=args.trust_remote_code) + + if args.dataset is not None: + warnings.warn( + "The '--dataset' argument will be deprecated in the next " + "release. Please use '--dataset-name' and " + "'--dataset-path' in the future runs.", + stacklevel=2) + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sharegpt": + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sonnet": + # Do not format the prompt, pass to message directly + if args.backend == "openai-chat": + input_requests = sample_sonnet_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + input_len=args.sonnet_input_len, + output_len=args.sonnet_output_len, + prefix_len=args.sonnet_prefix_len, + tokenizer=tokenizer, + ) + input_requests = [(prompt, prompt_len, output_len) + for prompt, prompt_formatted, prompt_len, + output_len in input_requests] + else: + assert ( + tokenizer.chat_template or tokenizer.default_chat_template + ), "Tokenizer/model must have chat template for sonnet dataset." + input_requests = sample_sonnet_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + input_len=args.sonnet_input_len, + output_len=args.sonnet_output_len, + prefix_len=args.sonnet_prefix_len, + tokenizer=tokenizer, + ) + input_requests = [(prompt_formatted, prompt_len, output_len) + for prompt, prompt_formatted, prompt_len, + output_len in input_requests] + + elif args.dataset_name == "random": + input_requests = sample_random_requests( + input_len=args.random_input_len, + output_len=args.random_output_len, + num_prompts=args.num_prompts, + range_ratio=args.random_range_ratio, + tokenizer=tokenizer, + ) + + else: + raise ValueError(f"Unknown dataset: {args.dataset_name}") + + benchmark_result = asyncio.run( + benchmark( + backend=backend, + api_url=api_url, + base_url=base_url, + model_id=model_id, + tokenizer=tokenizer, + input_requests=input_requests, + best_of=args.best_of, + use_beam_search=args.use_beam_search, + request_rate=args.request_rate, + disable_tqdm=args.disable_tqdm, + profile=args.profile, + )) + + # Save config and results to json + if args.save_result: + result_json: Dict[str, Any] = {} + + # Setup + current_dt = datetime.now().strftime("%Y%m%d-%H%M%S") + result_json["date"] = current_dt + result_json["backend"] = backend + result_json["model_id"] = model_id + result_json["tokenizer_id"] = tokenizer_id + result_json["best_of"] = args.best_of + result_json["use_beam_search"] = args.use_beam_search + result_json["num_prompts"] = args.num_prompts + + # Metadata + if args.metadata: + for item in args.metadata: + if "=" in item: + kvstring = item.split("=") + result_json[kvstring[0].strip()] = kvstring[1].strip() + else: + raise ValueError( + "Invalid metadata format. Please use KEY=VALUE format." + ) + + # Traffic + result_json["request_rate"] = ( + args.request_rate if args.request_rate < float("inf") else "inf") + + # Merge with benchmark result + result_json = {**result_json, **benchmark_result} + + # Save to file + base_model_id = model_id.split("/")[-1] + file_name = f"{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" #noqa + if args.result_filename: + file_name = args.result_filename + if args.result_dir: + file_name = os.path.join(args.result_dir, file_name) + with open(file_name, "w") as outfile: + json.dump(result_json, outfile) + + +if __name__ == "__main__": + parser = FlexibleArgumentParser( + description="Benchmark the online serving throughput.") + parser.add_argument( + "--backend", + type=str, + default="vllm", + choices=list(ASYNC_REQUEST_FUNCS.keys()), + ) + parser.add_argument( + "--base-url", + type=str, + default=None, + help="Server or API base url if not using http host and port.", + ) + parser.add_argument("--host", type=str, default="localhost") + parser.add_argument("--port", type=int, default=8000) + parser.add_argument( + "--endpoint", + type=str, + default="/v1/completions", + help="API endpoint.", + ) + parser.add_argument( + "--dataset", + type=str, + default=None, + help="Path to the ShareGPT dataset, will be deprecated in the " + "next release.", + ) + parser.add_argument( + "--dataset-name", + type=str, + default="sharegpt", + choices=["sharegpt", "sonnet", "random"], + help="Name of the dataset to benchmark on.", + ) + parser.add_argument("--dataset-path", + type=str, + default=None, + help="Path to the dataset.") + parser.add_argument( + "--model", + type=str, + required=True, + help="Name of the model.", + ) + parser.add_argument( + "--tokenizer", + type=str, + help= + "Name or path of the tokenizer, if not using the default tokenizer.", # noqa: E501 + ) + parser.add_argument( + "--best-of", + type=int, + default=1, + help="Generates `best_of` sequences per prompt and " + "returns the best one.", + ) + parser.add_argument("--use-beam-search", action="store_true") + parser.add_argument( + "--num-prompts", + type=int, + default=1000, + help="Number of prompts to process.", + ) + parser.add_argument( + "--sharegpt-output-len", + type=int, + default=None, + help="Output length for each request. Overrides the output length " + "from the ShareGPT dataset.") + parser.add_argument( + "--sonnet-input-len", + type=int, + default=550, + help= + "Number of input tokens per request, used only for sonnet dataset.", + ) + parser.add_argument( + "--sonnet-output-len", + type=int, + default=150, + help= + "Number of output tokens per request, used only for sonnet dataset.", + ) + parser.add_argument( + "--sonnet-prefix-len", + type=int, + default=200, + help= + "Number of prefix tokens per request, used only for sonnet dataset.", + ) + parser.add_argument( + "--random-input-len", + type=int, + default=1024, + help= + "Number of input tokens per request, used only for random sampling.", + ) + parser.add_argument( + "--random-output-len", + type=int, + default=128, + help= + "Number of output tokens per request, used only for random sampling.", + ) + parser.add_argument( + "--random-range-ratio", + type=float, + default=1.0, + help="Range of sampled ratio of input/output length, " + "used only for random sampling.", + ) + parser.add_argument( + "--request-rate", + type=float, + default=float("inf"), + help="Number of requests per second. If this is inf, " + "then all the requests are sent at time 0. " + "Otherwise, we use Poisson process to synthesize " + "the request arrival times.", + ) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument( + "--trust-remote-code", + action="store_true", + help="Trust remote code from huggingface", + ) + parser.add_argument( + "--disable-tqdm", + action="store_true", + help="Specify to disable tqdm progress bar.", + ) + parser.add_argument( + "--profile", + action="store_true", + help="Use Torch Profiler. The endpoint must be launched with " + "VLLM_TORCH_PROFILER_DIR to enable profiler.", + ) + parser.add_argument( + "--save-result", + action="store_true", + help="Specify to save benchmark results to a json file", + ) + parser.add_argument( + "--metadata", + metavar="KEY=VALUE", + nargs="*", + help="Key-value pairs (e.g, --metadata version=0.3.3 tp=1) " + "for metadata of this run to be saved in the result JSON file " + "for record keeping purposes.", + ) + parser.add_argument( + "--result-dir", + type=str, + default=None, + help="Specify directory to save benchmark json results." + "If not specified, results are saved in the current directory.", + ) + parser.add_argument( + "--result-filename", + type=str, + default=None, + help="Specify the filename to save benchmark json results." + "If not specified, results will be saved in " + "{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" + " format.", + ) + + args = parser.parse_args() + main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py new file mode 100644 index 000000000..eaf256f7c --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py @@ -0,0 +1,460 @@ +"""Benchmark offline inference throughput.""" +import argparse +import json +import random +import time +from typing import List, Optional, Tuple + +import torch +from tqdm import tqdm +from transformers import (AutoModelForCausalLM, AutoTokenizer, + PreTrainedTokenizerBase) + +from vllm.engine.arg_utils import EngineArgs +from vllm.model_executor.layers.quantization import QUANTIZATION_METHODS +from vllm.utils import FlexibleArgumentParser + + +def sample_requests( + dataset_path: str, + num_requests: int, + tokenizer: PreTrainedTokenizerBase, + fixed_output_len: Optional[int], +) -> List[Tuple[str, int, int]]: + if fixed_output_len is not None and fixed_output_len < 4: + raise ValueError("output_len too small") + + # Load the dataset. + with open(dataset_path) as f: + dataset = json.load(f) + # Filter out the conversations with less than 2 turns. + dataset = [data for data in dataset if len(data["conversations"]) >= 2] + # Only keep the first two turns of each conversation. + dataset = [(data["conversations"][0]["value"], + data["conversations"][1]["value"]) for data in dataset] + + # Shuffle the dataset. + random.shuffle(dataset) + + # Filter out sequences that are too long or too short + filtered_dataset: List[Tuple[str, int, int]] = [] + for i in range(len(dataset)): + if len(filtered_dataset) == num_requests: + break + + # Tokenize the prompts and completions. + prompt = dataset[i][0] + prompt_token_ids = tokenizer(prompt).input_ids + completion = dataset[i][1] + completion_token_ids = tokenizer(completion).input_ids + prompt_len = len(prompt_token_ids) + output_len = len(completion_token_ids + ) if fixed_output_len is None else fixed_output_len + if prompt_len < 4 or output_len < 4: + # Prune too short sequences. + continue + if prompt_len > 1024 or prompt_len + output_len > 2048: + # Prune too long sequences. + continue + filtered_dataset.append((prompt, prompt_len, output_len)) + + return filtered_dataset + + +def run_vllm( + requests: List[Tuple[str, int, int]], + model: str, + tokenizer: str, + quantization: Optional[str], + tensor_parallel_size: int, + seed: int, + n: int, + use_beam_search: bool, + trust_remote_code: bool, + dtype: str, + max_model_len: Optional[int], + enforce_eager: bool, + kv_cache_dtype: str, + quantization_param_path: Optional[str], + device: str, + enable_prefix_caching: bool, + enable_chunked_prefill: bool, + max_num_batched_tokens: int, + distributed_executor_backend: Optional[str], + gpu_memory_utilization: float = 0.9, + num_scheduler_steps: int = 1, + use_v2_block_manager: bool = False, + download_dir: Optional[str] = None, + load_format: str = EngineArgs.load_format, + disable_async_output_proc: bool = False, +) -> float: + from vllm import LLM, SamplingParams + llm = LLM( + model=model, + tokenizer=tokenizer, + quantization=quantization, + tensor_parallel_size=tensor_parallel_size, + seed=seed, + trust_remote_code=trust_remote_code, + dtype=dtype, + max_model_len=max_model_len, + gpu_memory_utilization=gpu_memory_utilization, + enforce_eager=enforce_eager, + kv_cache_dtype=kv_cache_dtype, + quantization_param_path=quantization_param_path, + device=device, + enable_prefix_caching=enable_prefix_caching, + download_dir=download_dir, + enable_chunked_prefill=enable_chunked_prefill, + max_num_batched_tokens=max_num_batched_tokens, + distributed_executor_backend=distributed_executor_backend, + load_format=load_format, + num_scheduler_steps=num_scheduler_steps, + use_v2_block_manager=use_v2_block_manager, + disable_async_output_proc=disable_async_output_proc, + ) + + # Add the requests to the engine. + prompts: List[str] = [] + sampling_params: List[SamplingParams] = [] + for prompt, _, output_len in requests: + prompts.append(prompt) + sampling_params.append( + SamplingParams( + n=n, + temperature=0.0 if use_beam_search else 1.0, + top_p=1.0, + use_beam_search=use_beam_search, + ignore_eos=True, + max_tokens=output_len, + )) + + start = time.perf_counter() + llm.generate(prompts, sampling_params, use_tqdm=True) + end = time.perf_counter() + return end - start + + +def run_hf( + requests: List[Tuple[str, int, int]], + model: str, + tokenizer: PreTrainedTokenizerBase, + n: int, + use_beam_search: bool, + max_batch_size: int, + trust_remote_code: bool, +) -> float: + assert not use_beam_search + llm = AutoModelForCausalLM.from_pretrained( + model, torch_dtype=torch.float16, trust_remote_code=trust_remote_code) + if llm.config.model_type == "llama": + # To enable padding in the HF backend. + tokenizer.pad_token = tokenizer.eos_token + llm = llm.cuda() + + pbar = tqdm(total=len(requests)) + start = time.perf_counter() + batch: List[str] = [] + max_prompt_len = 0 + max_output_len = 0 + for i in range(len(requests)): + prompt, prompt_len, output_len = requests[i] + # Add the prompt to the batch. + batch.append(prompt) + max_prompt_len = max(max_prompt_len, prompt_len) + max_output_len = max(max_output_len, output_len) + if len(batch) < max_batch_size and i != len(requests) - 1: + # Check if we can add more requests to the batch. + _, next_prompt_len, next_output_len = requests[i + 1] + if (max(max_prompt_len, next_prompt_len) + + max(max_output_len, next_output_len)) <= 2048: + # We can add more requests to the batch. + continue + + # Generate the sequences. + input_ids = tokenizer(batch, return_tensors="pt", + padding=True).input_ids + llm_outputs = llm.generate( + input_ids=input_ids.cuda(), + do_sample=not use_beam_search, + num_return_sequences=n, + temperature=1.0, + top_p=1.0, + use_cache=True, + max_new_tokens=max_output_len, + ) + # Include the decoding time. + tokenizer.batch_decode(llm_outputs, skip_special_tokens=True) + pbar.update(len(batch)) + + # Clear the batch. + batch = [] + max_prompt_len = 0 + max_output_len = 0 + end = time.perf_counter() + return end - start + + +def run_mii( + requests: List[Tuple[str, int, int]], + model: str, + tensor_parallel_size: int, + output_len: int, +) -> float: + from mii import client, serve + llm = serve(model, tensor_parallel=tensor_parallel_size) + prompts = [prompt for prompt, _, _ in requests] + + start = time.perf_counter() + llm.generate(prompts, max_new_tokens=output_len) + end = time.perf_counter() + client = client(model) + client.terminate_server() + return end - start + + +def main(args: argparse.Namespace): + print(args) + random.seed(args.seed) + + # Sample the requests. + tokenizer = AutoTokenizer.from_pretrained( + args.tokenizer, trust_remote_code=args.trust_remote_code) + if args.dataset is None: + # Synthesize a prompt with the given input length. + prompt = "hi" * (args.input_len - 1) + requests = [(prompt, args.input_len, args.output_len) + for _ in range(args.num_prompts)] + else: + requests = sample_requests(args.dataset, args.num_prompts, tokenizer, + args.output_len) + + if args.backend == "vllm": + elapsed_time = run_vllm( + requests, args.model, args.tokenizer, args.quantization, + args.tensor_parallel_size, args.seed, args.n, args.use_beam_search, + args.trust_remote_code, args.dtype, args.max_model_len, + args.enforce_eager, args.kv_cache_dtype, + args.quantization_param_path, args.device, + args.enable_prefix_caching, args.enable_chunked_prefill, + args.max_num_batched_tokens, args.distributed_executor_backend, + args.gpu_memory_utilization, args.num_scheduler_steps, + args.use_v2_block_manager, args.download_dir, args.load_format, + args.disable_async_output_proc) + elif args.backend == "hf": + assert args.tensor_parallel_size == 1 + elapsed_time = run_hf(requests, args.model, tokenizer, args.n, + args.use_beam_search, args.hf_max_batch_size, + args.trust_remote_code) + elif args.backend == "mii": + elapsed_time = run_mii(requests, args.model, args.tensor_parallel_size, + args.output_len) + else: + raise ValueError(f"Unknown backend: {args.backend}") + total_num_tokens = sum(prompt_len + output_len + for _, prompt_len, output_len in requests) + print(f"Throughput: {len(requests) / elapsed_time:.2f} requests/s, " + f"{total_num_tokens / elapsed_time:.2f} tokens/s") + + # Output JSON results if specified + if args.output_json: + results = { + "elapsed_time": elapsed_time, + "num_requests": len(requests), + "total_num_tokens": total_num_tokens, + "requests_per_second": len(requests) / elapsed_time, + "tokens_per_second": total_num_tokens / elapsed_time, + } + with open(args.output_json, "w") as f: + json.dump(results, f, indent=4) + + +if __name__ == "__main__": + parser = FlexibleArgumentParser(description="Benchmark the throughput.") + parser.add_argument("--backend", + type=str, + choices=["vllm", "hf", "mii"], + default="vllm") + parser.add_argument("--dataset", + type=str, + default=None, + help="Path to the dataset.") + parser.add_argument("--input-len", + type=int, + default=None, + help="Input prompt length for each request") + parser.add_argument("--output-len", + type=int, + default=None, + help="Output length for each request. Overrides the " + "output length from the dataset.") + parser.add_argument("--model", type=str, default="facebook/opt-125m") + parser.add_argument("--tokenizer", type=str, default=None) + parser.add_argument('--quantization', + '-q', + choices=[*QUANTIZATION_METHODS, None], + default=None) + parser.add_argument("--tensor-parallel-size", "-tp", type=int, default=1) + parser.add_argument("--n", + type=int, + default=1, + help="Number of generated sequences per prompt.") + parser.add_argument("--use-beam-search", action="store_true") + parser.add_argument("--num-prompts", + type=int, + default=1000, + help="Number of prompts to process.") + parser.add_argument("--seed", type=int, default=0) + parser.add_argument("--hf-max-batch-size", + type=int, + default=None, + help="Maximum batch size for HF backend.") + parser.add_argument('--trust-remote-code', + action='store_true', + help='trust remote code from huggingface') + parser.add_argument( + '--max-model-len', + type=int, + default=None, + help='Maximum length of a sequence (including prompt and output). ' + 'If None, will be derived from the model.') + parser.add_argument( + '--dtype', + type=str, + default='auto', + choices=['auto', 'half', 'float16', 'bfloat16', 'float', 'float32'], + help='data type for model weights and activations. ' + 'The "auto" option will use FP16 precision ' + 'for FP32 and FP16 models, and BF16 precision ' + 'for BF16 models.') + parser.add_argument('--gpu-memory-utilization', + type=float, + default=0.9, + help='the fraction of GPU memory to be used for ' + 'the model executor, which can range from 0 to 1.' + 'If unspecified, will use the default value of 0.9.') + parser.add_argument("--enforce-eager", + action="store_true", + help="enforce eager execution") + parser.add_argument( + '--kv-cache-dtype', + type=str, + choices=['auto', 'fp8', 'fp8_e5m2', 'fp8_e4m3'], + default="auto", + help='Data type for kv cache storage. If "auto", will use model ' + 'data type. CUDA 11.8+ supports fp8 (=fp8_e4m3) and fp8_e5m2. ' + 'ROCm (AMD GPU) supports fp8 (=fp8_e4m3)') + parser.add_argument( + '--quantization-param-path', + type=str, + default=None, + help='Path to the JSON file containing the KV cache scaling factors. ' + 'This should generally be supplied, when KV cache dtype is FP8. ' + 'Otherwise, KV cache scaling factors default to 1.0, which may cause ' + 'accuracy issues. FP8_E5M2 (without scaling) is only supported on ' + 'cuda version greater than 11.8. On ROCm (AMD GPU), FP8_E4M3 is ' + 'instead supported for common inference criteria.') + parser.add_argument( + "--device", + type=str, + default="auto", + choices=["auto", "cuda", "cpu", "openvino", "tpu", "xpu"], + help='device type for vLLM execution, supporting CUDA, OpenVINO and ' + 'CPU.') + parser.add_argument( + "--num-scheduler-steps", + type=int, + default=1, + help="Maximum number of forward steps per scheduler call.") + parser.add_argument("--use-v2-block-manager", + action='store_true', + help="Enable block manager v2.") + parser.add_argument( + "--enable-prefix-caching", + action='store_true', + help="Enable automatic prefix caching for vLLM backend.") + parser.add_argument("--enable-chunked-prefill", + action='store_true', + help="enable chunked prefill for vLLM backend.") + parser.add_argument('--max-num-batched-tokens', + type=int, + default=None, + help='maximum number of batched tokens per ' + 'iteration') + parser.add_argument('--download-dir', + type=str, + default=None, + help='directory to download and load the weights, ' + 'default to the default cache dir of huggingface') + parser.add_argument( + '--output-json', + type=str, + default=None, + help='Path to save the throughput results in JSON format.') + parser.add_argument( + '--distributed-executor-backend', + choices=['ray', 'mp'], + default=None, + help='Backend to use for distributed serving. When more than 1 GPU ' + 'is used, will be automatically set to "ray" if installed ' + 'or "mp" (multiprocessing) otherwise.') + parser.add_argument( + '--load-format', + type=str, + default=EngineArgs.load_format, + choices=[ + 'auto', 'pt', 'safetensors', 'npcache', 'dummy', 'tensorizer', + 'bitsandbytes' + ], + help='The format of the model weights to load.\n\n' + '* "auto" will try to load the weights in the safetensors format ' + 'and fall back to the pytorch bin format if safetensors format ' + 'is not available.\n' + '* "pt" will load the weights in the pytorch bin format.\n' + '* "safetensors" will load the weights in the safetensors format.\n' + '* "npcache" will load the weights in pytorch format and store ' + 'a numpy cache to speed up the loading.\n' + '* "dummy" will initialize the weights with random values, ' + 'which is mainly for profiling.\n' + '* "tensorizer" will load the weights using tensorizer from ' + 'CoreWeave. See the Tensorize vLLM Model script in the Examples' + 'section for more information.\n' + '* "bitsandbytes" will load the weights using bitsandbytes ' + 'quantization.\n') + parser.add_argument( + "--disable-async-output-proc", + action='store_true', + default=False, + help="Disable async output processor for vLLM backend.") + args = parser.parse_args() + if args.tokenizer is None: + args.tokenizer = args.model + if args.dataset is None: + assert args.input_len is not None + assert args.output_len is not None + else: + assert args.input_len is None + + if args.backend == "vllm": + if args.hf_max_batch_size is not None: + raise ValueError("HF max batch size is only for HF backend.") + elif args.backend == "hf": + if args.hf_max_batch_size is None: + raise ValueError("HF max batch size is required for HF backend.") + if args.quantization is not None: + raise ValueError("Quantization is only for vLLM backend.") + elif args.backend == "mii": + if args.dtype != "auto": + raise ValueError("dtype must be auto for MII backend.") + if args.n != 1: + raise ValueError("n must be 1 for MII backend.") + if args.use_beam_search: + raise ValueError("Beam search is not supported for MII backend.") + if args.quantization is not None: + raise ValueError("Quantization is only for vLLM backend.") + if args.hf_max_batch_size is not None: + raise ValueError("HF max batch size is only for HF backend.") + if args.tokenizer != args.model: + raise ValueError("Tokenizer must be the same as the model for MII " + "backend.") + main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh new file mode 100755 index 000000000..8c5cd454f --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +PORT=8000 +MODEL=$1 +TOKENS=$2 + +docker run -e HF_TOKEN=$HF_TOKEN --gpus all --shm-size 1g -p $PORT:80 \ + -v $PWD/data:/data \ + ghcr.io/huggingface/text-generation-inference:2.2.0 \ + --model-id $MODEL \ + --sharded false \ + --max-input-length 1024 \ + --max-total-tokens 2048 \ + --max-best-of 5 \ + --max-concurrent-requests 5000 \ + --max-batch-total-tokens $TOKENS diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/sonnet.txt b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/sonnet.txt new file mode 100644 index 000000000..34c444e8c --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/sonnet.txt @@ -0,0 +1,518 @@ +FROM fairest creatures we desire increase, +That thereby beauty's rose might never die, +But as the riper should by time decease, +His tender heir might bear his memory: +But thou, contracted to thine own bright eyes, +Feed'st thy light'st flame with self-substantial fuel, +Making a famine where abundance lies, +Thyself thy foe, to thy sweet self too cruel. +Thou that art now the world's fresh ornament +And only herald to the gaudy spring, +Within thine own bud buriest thy content +And, tender churl, makest waste in niggarding. +Pity the world, or else this glutton be, +To eat the world's due, by the grave and thee. +When forty winters shall beseige thy brow, +And dig deep trenches in thy beauty's field, +Thy youth's proud livery, so gazed on now, +Will be a tatter'd weed, of small worth held: +Then being ask'd where all thy beauty lies, +Where all the treasure of thy lusty days, +To say, within thine own deep-sunken eyes, +Were an all-eating shame and thriftless praise. +How much more praise deserved thy beauty's use, +If thou couldst answer 'This fair child of mine +Shall sum my count and make my old excuse,' +Proving his beauty by succession thine! +This were to be new made when thou art old, +And see thy blood warm when thou feel'st it cold. +Look in thy glass, and tell the face thou viewest +Now is the time that face should form another; +Whose fresh repair if now thou not renewest, +Thou dost beguile the world, unbless some mother. +For where is she so fair whose unear'd womb +Disdains the tillage of thy husbandry? +Or who is he so fond will be the tomb +Of his self-love, to stop posterity? +Thou art thy mother's glass, and she in thee +Calls back the lovely April of her prime: +So thou through windows of thine age shall see +Despite of wrinkles this thy golden time. +But if thou live, remember'd not to be, +Die single, and thine image dies with thee. +Unthrifty loveliness, why dost thou spend +Upon thyself thy beauty's legacy? +Nature's bequest gives nothing but doth lend, +And being frank she lends to those are free. +Then, beauteous niggard, why dost thou abuse +The bounteous largess given thee to give? +Profitless usurer, why dost thou use +So great a sum of sums, yet canst not live? +For having traffic with thyself alone, +Thou of thyself thy sweet self dost deceive. +Then how, when nature calls thee to be gone, +What acceptable audit canst thou leave? +Thy unused beauty must be tomb'd with thee, +Which, used, lives th' executor to be. +Those hours, that with gentle work did frame +The lovely gaze where every eye doth dwell, +Will play the tyrants to the very same +And that unfair which fairly doth excel: +For never-resting time leads summer on +To hideous winter and confounds him there; +Sap cheque'd with frost and lusty leaves quite gone, +Beauty o'ersnow'd and bareness every where: +Then, were not summer's distillation left, +A liquid prisoner pent in walls of glass, +Beauty's effect with beauty were bereft, +Nor it nor no remembrance what it was: +But flowers distill'd though they with winter meet, +Leese but their show; their substance still lives sweet. +Then let not winter's ragged hand deface +In thee thy summer, ere thou be distill'd: +Make sweet some vial; treasure thou some place +With beauty's treasure, ere it be self-kill'd. +That use is not forbidden usury, +Which happies those that pay the willing loan; +That's for thyself to breed another thee, +Or ten times happier, be it ten for one; +Ten times thyself were happier than thou art, +If ten of thine ten times refigured thee: +Then what could death do, if thou shouldst depart, +Leaving thee living in posterity? +Be not self-will'd, for thou art much too fair +To be death's conquest and make worms thine heir. +Lo! in the orient when the gracious light +Lifts up his burning head, each under eye +Doth homage to his new-appearing sight, +Serving with looks his sacred majesty; +And having climb'd the steep-up heavenly hill, +Resembling strong youth in his middle age, +yet mortal looks adore his beauty still, +Attending on his golden pilgrimage; +But when from highmost pitch, with weary car, +Like feeble age, he reeleth from the day, +The eyes, 'fore duteous, now converted are +From his low tract and look another way: +So thou, thyself out-going in thy noon, +Unlook'd on diest, unless thou get a son. +Music to hear, why hear'st thou music sadly? +Sweets with sweets war not, joy delights in joy. +Why lovest thou that which thou receivest not gladly, +Or else receivest with pleasure thine annoy? +If the true concord of well-tuned sounds, +By unions married, do offend thine ear, +They do but sweetly chide thee, who confounds +In singleness the parts that thou shouldst bear. +Mark how one string, sweet husband to another, +Strikes each in each by mutual ordering, +Resembling sire and child and happy mother +Who all in one, one pleasing note do sing: +Whose speechless song, being many, seeming one, +Sings this to thee: 'thou single wilt prove none.' +Is it for fear to wet a widow's eye +That thou consumest thyself in single life? +Ah! if thou issueless shalt hap to die. +The world will wail thee, like a makeless wife; +The world will be thy widow and still weep +That thou no form of thee hast left behind, +When every private widow well may keep +By children's eyes her husband's shape in mind. +Look, what an unthrift in the world doth spend +Shifts but his place, for still the world enjoys it; +But beauty's waste hath in the world an end, +And kept unused, the user so destroys it. +No love toward others in that bosom sits +That on himself such murderous shame commits. +For shame! deny that thou bear'st love to any, +Who for thyself art so unprovident. +Grant, if thou wilt, thou art beloved of many, +But that thou none lovest is most evident; +For thou art so possess'd with murderous hate +That 'gainst thyself thou stick'st not to conspire. +Seeking that beauteous roof to ruinate +Which to repair should be thy chief desire. +O, change thy thought, that I may change my mind! +Shall hate be fairer lodged than gentle love? +Be, as thy presence is, gracious and kind, +Or to thyself at least kind-hearted prove: +Make thee another self, for love of me, +That beauty still may live in thine or thee. +As fast as thou shalt wane, so fast thou growest +In one of thine, from that which thou departest; +And that fresh blood which youngly thou bestowest +Thou mayst call thine when thou from youth convertest. +Herein lives wisdom, beauty and increase: +Without this, folly, age and cold decay: +If all were minded so, the times should cease +And threescore year would make the world away. +Let those whom Nature hath not made for store, +Harsh featureless and rude, barrenly perish: +Look, whom she best endow'd she gave the more; +Which bounteous gift thou shouldst in bounty cherish: +She carved thee for her seal, and meant thereby +Thou shouldst print more, not let that copy die. +When I do count the clock that tells the time, +And see the brave day sunk in hideous night; +When I behold the violet past prime, +And sable curls all silver'd o'er with white; +When lofty trees I see barren of leaves +Which erst from heat did canopy the herd, +And summer's green all girded up in sheaves +Borne on the bier with white and bristly beard, +Then of thy beauty do I question make, +That thou among the wastes of time must go, +Since sweets and beauties do themselves forsake +And die as fast as they see others grow; +And nothing 'gainst Time's scythe can make defence +Save breed, to brave him when he takes thee hence. +O, that you were yourself! but, love, you are +No longer yours than you yourself here live: +Against this coming end you should prepare, +And your sweet semblance to some other give. +So should that beauty which you hold in lease +Find no determination: then you were +Yourself again after yourself's decease, +When your sweet issue your sweet form should bear. +Who lets so fair a house fall to decay, +Which husbandry in honour might uphold +Against the stormy gusts of winter's day +And barren rage of death's eternal cold? +O, none but unthrifts! Dear my love, you know +You had a father: let your son say so. +Not from the stars do I my judgment pluck; +And yet methinks I have astronomy, +But not to tell of good or evil luck, +Of plagues, of dearths, or seasons' quality; +Nor can I fortune to brief minutes tell, +Pointing to each his thunder, rain and wind, +Or say with princes if it shall go well, +By oft predict that I in heaven find: +But from thine eyes my knowledge I derive, +And, constant stars, in them I read such art +As truth and beauty shall together thrive, +If from thyself to store thou wouldst convert; +Or else of thee this I prognosticate: +Thy end is truth's and beauty's doom and date. +When I consider every thing that grows +Holds in perfection but a little moment, +That this huge stage presenteth nought but shows +Whereon the stars in secret influence comment; +When I perceive that men as plants increase, +Cheered and cheque'd even by the self-same sky, +Vaunt in their youthful sap, at height decrease, +And wear their brave state out of memory; +Then the conceit of this inconstant stay +Sets you most rich in youth before my sight, +Where wasteful Time debateth with Decay, +To change your day of youth to sullied night; +And all in war with Time for love of you, +As he takes from you, I engraft you new. +But wherefore do not you a mightier way +Make war upon this bloody tyrant, Time? +And fortify yourself in your decay +With means more blessed than my barren rhyme? +Now stand you on the top of happy hours, +And many maiden gardens yet unset +With virtuous wish would bear your living flowers, +Much liker than your painted counterfeit: +So should the lines of life that life repair, +Which this, Time's pencil, or my pupil pen, +Neither in inward worth nor outward fair, +Can make you live yourself in eyes of men. +To give away yourself keeps yourself still, +And you must live, drawn by your own sweet skill. +Who will believe my verse in time to come, +If it were fill'd with your most high deserts? +Though yet, heaven knows, it is but as a tomb +Which hides your life and shows not half your parts. +If I could write the beauty of your eyes +And in fresh numbers number all your graces, +The age to come would say 'This poet lies: +Such heavenly touches ne'er touch'd earthly faces.' +So should my papers yellow'd with their age +Be scorn'd like old men of less truth than tongue, +And your true rights be term'd a poet's rage +And stretched metre of an antique song: +But were some child of yours alive that time, +You should live twice; in it and in my rhyme. +Shall I compare thee to a summer's day? +Thou art more lovely and more temperate: +Rough winds do shake the darling buds of May, +And summer's lease hath all too short a date: +Sometime too hot the eye of heaven shines, +And often is his gold complexion dimm'd; +And every fair from fair sometime declines, +By chance or nature's changing course untrimm'd; +But thy eternal summer shall not fade +Nor lose possession of that fair thou owest; +Nor shall Death brag thou wander'st in his shade, +When in eternal lines to time thou growest: +So long as men can breathe or eyes can see, +So long lives this and this gives life to thee. +Devouring Time, blunt thou the lion's paws, +And make the earth devour her own sweet brood; +Pluck the keen teeth from the fierce tiger's jaws, +And burn the long-lived phoenix in her blood; +Make glad and sorry seasons as thou fleets, +And do whate'er thou wilt, swift-footed Time, +To the wide world and all her fading sweets; +But I forbid thee one most heinous crime: +O, carve not with thy hours my love's fair brow, +Nor draw no lines there with thine antique pen; +Him in thy course untainted do allow +For beauty's pattern to succeeding men. +Yet, do thy worst, old Time: despite thy wrong, +My love shall in my verse ever live young. +A woman's face with Nature's own hand painted +Hast thou, the master-mistress of my passion; +A woman's gentle heart, but not acquainted +With shifting change, as is false women's fashion; +An eye more bright than theirs, less false in rolling, +Gilding the object whereupon it gazeth; +A man in hue, all 'hues' in his controlling, +Much steals men's eyes and women's souls amazeth. +And for a woman wert thou first created; +Till Nature, as she wrought thee, fell a-doting, +And by addition me of thee defeated, +By adding one thing to my purpose nothing. +But since she prick'd thee out for women's pleasure, +Mine be thy love and thy love's use their treasure. +So is it not with me as with that Muse +Stirr'd by a painted beauty to his verse, +Who heaven itself for ornament doth use +And every fair with his fair doth rehearse +Making a couplement of proud compare, +With sun and moon, with earth and sea's rich gems, +With April's first-born flowers, and all things rare +That heaven's air in this huge rondure hems. +O' let me, true in love, but truly write, +And then believe me, my love is as fair +As any mother's child, though not so bright +As those gold candles fix'd in heaven's air: +Let them say more than like of hearsay well; +I will not praise that purpose not to sell. +My glass shall not persuade me I am old, +So long as youth and thou are of one date; +But when in thee time's furrows I behold, +Then look I death my days should expiate. +For all that beauty that doth cover thee +Is but the seemly raiment of my heart, +Which in thy breast doth live, as thine in me: +How can I then be elder than thou art? +O, therefore, love, be of thyself so wary +As I, not for myself, but for thee will; +Bearing thy heart, which I will keep so chary +As tender nurse her babe from faring ill. +Presume not on thy heart when mine is slain; +Thou gavest me thine, not to give back again. +As an unperfect actor on the stage +Who with his fear is put besides his part, +Or some fierce thing replete with too much rage, +Whose strength's abundance weakens his own heart. +So I, for fear of trust, forget to say +The perfect ceremony of love's rite, +And in mine own love's strength seem to decay, +O'ercharged with burden of mine own love's might. +O, let my books be then the eloquence +And dumb presagers of my speaking breast, +Who plead for love and look for recompense +More than that tongue that more hath more express'd. +O, learn to read what silent love hath writ: +To hear with eyes belongs to love's fine wit. +Mine eye hath play'd the painter and hath stell'd +Thy beauty's form in table of my heart; +My body is the frame wherein 'tis held, +And perspective it is the painter's art. +For through the painter must you see his skill, +To find where your true image pictured lies; +Which in my bosom's shop is hanging still, +That hath his windows glazed with thine eyes. +Now see what good turns eyes for eyes have done: +Mine eyes have drawn thy shape, and thine for me +Are windows to my breast, where-through the sun +Delights to peep, to gaze therein on thee; +Yet eyes this cunning want to grace their art; +They draw but what they see, know not the heart. +Let those who are in favour with their stars +Of public honour and proud titles boast, +Whilst I, whom fortune of such triumph bars, +Unlook'd for joy in that I honour most. +Great princes' favourites their fair leaves spread +But as the marigold at the sun's eye, +And in themselves their pride lies buried, +For at a frown they in their glory die. +The painful warrior famoused for fight, +After a thousand victories once foil'd, +Is from the book of honour razed quite, +And all the rest forgot for which he toil'd: +Then happy I, that love and am beloved +Where I may not remove nor be removed. +Lord of my love, to whom in vassalage +Thy merit hath my duty strongly knit, +To thee I send this written embassage, +To witness duty, not to show my wit: +Duty so great, which wit so poor as mine +May make seem bare, in wanting words to show it, +But that I hope some good conceit of thine +In thy soul's thought, all naked, will bestow it; +Till whatsoever star that guides my moving +Points on me graciously with fair aspect +And puts apparel on my tatter'd loving, +To show me worthy of thy sweet respect: +Then may I dare to boast how I do love thee; +Till then not show my head where thou mayst prove me. +Weary with toil, I haste me to my bed, +The dear repose for limbs with travel tired; +But then begins a journey in my head, +To work my mind, when body's work's expired: +For then my thoughts, from far where I abide, +Intend a zealous pilgrimage to thee, +And keep my drooping eyelids open wide, +Looking on darkness which the blind do see +Save that my soul's imaginary sight +Presents thy shadow to my sightless view, +Which, like a jewel hung in ghastly night, +Makes black night beauteous and her old face new. +Lo! thus, by day my limbs, by night my mind, +For thee and for myself no quiet find. +How can I then return in happy plight, +That am debarr'd the benefit of rest? +When day's oppression is not eased by night, +But day by night, and night by day, oppress'd? +And each, though enemies to either's reign, +Do in consent shake hands to torture me; +The one by toil, the other to complain +How far I toil, still farther off from thee. +I tell the day, to please them thou art bright +And dost him grace when clouds do blot the heaven: +So flatter I the swart-complexion'd night, +When sparkling stars twire not thou gild'st the even. +But day doth daily draw my sorrows longer +And night doth nightly make grief's strength seem stronger. +When, in disgrace with fortune and men's eyes, +I all alone beweep my outcast state +And trouble deal heaven with my bootless cries +And look upon myself and curse my fate, +Wishing me like to one more rich in hope, +Featured like him, like him with friends possess'd, +Desiring this man's art and that man's scope, +With what I most enjoy contented least; +Yet in these thoughts myself almost despising, +Haply I think on thee, and then my state, +Like to the lark at break of day arising +From sullen earth, sings hymns at heaven's gate; +For thy sweet love remember'd such wealth brings +That then I scorn to change my state with kings. +When to the sessions of sweet silent thought +I summon up remembrance of things past, +I sigh the lack of many a thing I sought, +And with old woes new wail my dear time's waste: +Then can I drown an eye, unused to flow, +For precious friends hid in death's dateless night, +And weep afresh love's long since cancell'd woe, +And moan the expense of many a vanish'd sight: +Then can I grieve at grievances foregone, +And heavily from woe to woe tell o'er +The sad account of fore-bemoaned moan, +Which I new pay as if not paid before. +But if the while I think on thee, dear friend, +All losses are restored and sorrows end. +Thy bosom is endeared with all hearts, +Which I by lacking have supposed dead, +And there reigns love and all love's loving parts, +And all those friends which I thought buried. +How many a holy and obsequious tear +Hath dear religious love stol'n from mine eye +As interest of the dead, which now appear +But things removed that hidden in thee lie! +Thou art the grave where buried love doth live, +Hung with the trophies of my lovers gone, +Who all their parts of me to thee did give; +That due of many now is thine alone: +Their images I loved I view in thee, +And thou, all they, hast all the all of me. +If thou survive my well-contented day, +When that churl Death my bones with dust shall cover, +And shalt by fortune once more re-survey +These poor rude lines of thy deceased lover, +Compare them with the bettering of the time, +And though they be outstripp'd by every pen, +Reserve them for my love, not for their rhyme, +Exceeded by the height of happier men. +O, then vouchsafe me but this loving thought: +'Had my friend's Muse grown with this growing age, +A dearer birth than this his love had brought, +To march in ranks of better equipage: +But since he died and poets better prove, +Theirs for their style I'll read, his for his love.' +Full many a glorious morning have I seen +Flatter the mountain-tops with sovereign eye, +Kissing with golden face the meadows green, +Gilding pale streams with heavenly alchemy; +Anon permit the basest clouds to ride +With ugly rack on his celestial face, +And from the forlorn world his visage hide, +Stealing unseen to west with this disgrace: +Even so my sun one early morn did shine +With all triumphant splendor on my brow; +But out, alack! he was but one hour mine; +The region cloud hath mask'd him from me now. +Yet him for this my love no whit disdaineth; +Suns of the world may stain when heaven's sun staineth. +Why didst thou promise such a beauteous day, +And make me travel forth without my cloak, +To let base clouds o'ertake me in my way, +Hiding thy bravery in their rotten smoke? +'Tis not enough that through the cloud thou break, +To dry the rain on my storm-beaten face, +For no man well of such a salve can speak +That heals the wound and cures not the disgrace: +Nor can thy shame give physic to my grief; +Though thou repent, yet I have still the loss: +The offender's sorrow lends but weak relief +To him that bears the strong offence's cross. +Ah! but those tears are pearl which thy love sheds, +And they are rich and ransom all ill deeds. +No more be grieved at that which thou hast done: +Roses have thorns, and silver fountains mud; +Clouds and eclipses stain both moon and sun, +And loathsome canker lives in sweetest bud. +All men make faults, and even I in this, +Authorizing thy trespass with compare, +Myself corrupting, salving thy amiss, +Excusing thy sins more than thy sins are; +For to thy sensual fault I bring in sense-- +Thy adverse party is thy advocate-- +And 'gainst myself a lawful plea commence: +Such civil war is in my love and hate +That I an accessary needs must be +To that sweet thief which sourly robs from me. +Let me confess that we two must be twain, +Although our undivided loves are one: +So shall those blots that do with me remain +Without thy help by me be borne alone. +In our two loves there is but one respect, +Though in our lives a separable spite, +Which though it alter not love's sole effect, +Yet doth it steal sweet hours from love's delight. +I may not evermore acknowledge thee, +Lest my bewailed guilt should do thee shame, +Nor thou with public kindness honour me, +Unless thou take that honour from thy name: +But do not so; I love thee in such sort +As, thou being mine, mine is thy good report. +As a decrepit father takes delight +To see his active child do deeds of youth, +So I, made lame by fortune's dearest spite, +Take all my comfort of thy worth and truth. +For whether beauty, birth, or wealth, or wit, +Or any of these all, or all, or more, +Entitled in thy parts do crowned sit, +I make my love engrafted to this store: +So then I am not lame, poor, nor despised, +Whilst that this shadow doth such substance give +That I in thy abundance am sufficed +And by a part of all thy glory live. +Look, what is best, that best I wish in thee: +This wish I have; then ten times happy me! \ No newline at end of file diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/convert_hf_to_fp8.py b/recipes/3p_integrations/crusoe/vllm-fp8/convert_hf_to_fp8.py new file mode 100644 index 000000000..f4591701c --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/convert_hf_to_fp8.py @@ -0,0 +1,59 @@ +import torch +import argparse +from transformers import AutoTokenizer +from llmcompressor.transformers import SparseAutoModelForCausalLM, oneshot +from llmcompressor.transformers.compression.helpers import ( # noqa + calculate_offload_device_map, + custom_offload_device_map, +) + +def main(): + parser = argparse.ArgumentParser(description="Compress a language model.") + parser.add_argument("model_stub", type=str, help="The model stub (e.g., 'bosonai/Higgs-Llama-3-70B')") + args = parser.parse_args() + + recipe = """ + quant_stage: + quant_modifiers: + QuantizationModifier: + ignore: ["lm_head"] + config_groups: + group_0: + weights: + num_bits: 8 + type: float + strategy: channel + dynamic: false + symmetric: true + input_activations: + num_bits: 8 + type: float + strategy: token + dynamic: true + symmetric: true + targets: ["Linear"] + """ + + model_stub = args.model_stub + model_name = model_stub.split("/")[-1] + + device_map = calculate_offload_device_map( + model_stub, reserve_for_hessians=False, num_gpus=1, torch_dtype=torch.float16 + ) + + model = SparseAutoModelForCausalLM.from_pretrained( + model_stub, torch_dtype=torch.float16, device_map=device_map + ) + + output_dir = f"./{model_name}-FP8-dynamic" + + oneshot( + model=model, + recipe=recipe, + output_dir=output_dir, + save_compressed=True, + tokenizer=AutoTokenizer.from_pretrained(model_stub), + ) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/main.tf b/recipes/3p_integrations/crusoe/vllm-fp8/main.tf new file mode 100644 index 000000000..37149e087 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/main.tf @@ -0,0 +1,41 @@ +terraform { + required_providers { + crusoe = { + source = "registry.terraform.io/crusoecloud/crusoe" + } + } +} + +locals { + my_ssh_key = file("~/.ssh/id_ed25519.pub") +} + +// new VM +resource "crusoe_compute_instance" "vllm_vm" { + name = "vllm-valid" + type = "l40s-48gb.8x" + location = "us-east1-a" + + # specify the base image + image = "ubuntu22.04-nvidia-slurm:12.4" + + disks = [ + { + id = crusoe_storage_disk.vllm_data_disk.id + mode = "read-write" + attachment_type = "data" + } + ] + + ssh_key = local.my_ssh_key +} + +resource "crusoe_storage_disk" "vllm_data_disk" { + name = "vllm-valid-disk" + size = "256GiB" + location = "us-east1-a" +} + +output "instance_public_ip" { + value = crusoe_compute_instance.vllm_vm.network_interfaces[0].public_ipv4.address +} diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/plot.py b/recipes/3p_integrations/crusoe/vllm-fp8/plot.py new file mode 100644 index 000000000..ff0134f19 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/plot.py @@ -0,0 +1,72 @@ +import json +import os +import re +import matplotlib.pyplot as plt +import numpy as np +from collections import defaultdict + +def extract_info_from_filename(filename): + pattern = r'(?P[^-]+)-(?P\d+\.\d+)qps-(?P.+)-(?P\d{8}-\d{6})\.json' + match = re.match(pattern, filename) + if match: + return { + 'qps': float(match.group('qps')), + 'model': match.group('model') + } + return None + +def read_json_files(directory): + data_tpot = defaultdict(list) + data_ttft = defaultdict(list) + for filename in os.listdir(directory): + if filename.endswith('.json'): + filepath = os.path.join(directory, filename) + file_info = extract_info_from_filename(filename) + if file_info: + with open(filepath, 'r') as file: + json_data = json.load(file) + median_tpot = json_data.get('median_tpot_ms') + std_tpot = json_data.get('std_tpot_ms') + median_ttft = json_data.get('median_ttft_ms') + std_ttft = json_data.get('std_ttft_ms') + if all(v is not None for v in [median_tpot, std_tpot, median_ttft, std_ttft]): + data_tpot[file_info['model']].append((file_info['qps'], median_tpot, std_tpot)) + data_ttft[file_info['model']].append((file_info['qps'], median_ttft, std_ttft)) + return { + 'tpot': {model: sorted(points) for model, points in data_tpot.items()}, + 'ttft': {model: sorted(points) for model, points in data_ttft.items()} + } + +def create_chart(data, metric, filename): + plt.figure(figsize=(12, 6)) + + colors = plt.cm.rainbow(np.linspace(0, 1, len(data))) + for (model, points), color in zip(data.items(), colors): + qps_values, median_values, std_values = zip(*points) + plt.errorbar(qps_values, median_values, yerr=std_values, fmt='o-', capsize=5, capthick=2, label=model, color=color) + plt.fill_between(qps_values, + np.array(median_values) - np.array(std_values), + np.array(median_values) + np.array(std_values), + alpha=0.2, color=color) + + plt.xlabel('QPS (Queries Per Second)') + plt.ylabel(f'Median {metric.upper()} (ms)') + plt.title(f'Median {metric.upper()} vs QPS with Standard Deviation') + plt.grid(True) + plt.legend(title='Model', bbox_to_anchor=(1.05, 1), loc='upper left') + plt.tight_layout() + plt.savefig(filename, dpi=300, bbox_inches='tight') + plt.close() + +def main(): + directory = './' + data = read_json_files(directory) + if data['tpot'] and data['ttft']: + create_chart(data['tpot'], 'tpot', 'tpot_vs_qps_chart.png') + create_chart(data['ttft'], 'ttft', 'ttft_vs_qps_chart.png') + print("Charts have been saved as 'tpot_vs_qps_chart.png' and 'ttft_vs_qps_chart.png'") + else: + print("No valid data found in the specified directory.") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/pyproject.toml b/recipes/3p_integrations/crusoe/vllm-fp8/pyproject.toml new file mode 100644 index 000000000..b05d700f1 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/pyproject.toml @@ -0,0 +1,12 @@ +[project] +name = "vllm-l40s" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "setuptools>=74.0.0", + "vllm>=0.5.5", + "matplotlib>=3.9.2", + "llmcompressor>=0.1.0", +] diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/run_benchmark.sh b/recipes/3p_integrations/crusoe/vllm-fp8/run_benchmark.sh new file mode 100755 index 000000000..2ca160600 --- /dev/null +++ b/recipes/3p_integrations/crusoe/vllm-fp8/run_benchmark.sh @@ -0,0 +1,12 @@ +TOTAL_SECONDS=120 +QPS_RATES=("1" "3" "5" "7" "9") + +for QPS in ${QPS_RATES[@]}; do + NUM_PROMPTS=$((TOTAL_SECONDS * QPS)) + echo "===== RUNNING NUM_PROMPTS = $NUM_PROMPTS QPS = $QPS =====" + + uv run benchmarks/benchmark_serving.py \ + --model $MODEL \ + --dataset-name sonnet --sonnet-input-len 550 --sonnet-output-len 150 --dataset-path benchmarks/sonnet.txt \ + --num-prompts $NUM_PROMPTS --request-rate $QPS --save-result +done \ No newline at end of file From 288ac90e4acd3398fd6981f93533fc638c91eb4c Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 8 Oct 2024 08:58:44 -0700 Subject: [PATCH 2/4] Removed unused files and cleaned up terraform. --- .../crusoe/vllm-fp8/benchmarks/README.md | 8 - .../vllm-fp8/benchmarks/benchmark_latency.py | 285 ----------- .../benchmarks/benchmark_prefix_caching.py | 198 -------- .../benchmarks/benchmark_throughput.py | 460 ------------------ .../vllm-fp8/benchmarks/launch_tgi_server.sh | 16 - .../3p_integrations/crusoe/vllm-fp8/main.tf | 8 +- 6 files changed, 4 insertions(+), 971 deletions(-) delete mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/README.md delete mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py delete mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py delete mode 100644 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py delete mode 100755 recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/README.md b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/README.md deleted file mode 100644 index 192d6c402..000000000 --- a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Benchmarking vLLM - -## Downloading the ShareGPT dataset - -You can download the dataset by running: -```bash -wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json -``` diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py deleted file mode 100644 index 97afd301c..000000000 --- a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_latency.py +++ /dev/null @@ -1,285 +0,0 @@ -"""Benchmark the latency of processing a single batch of requests.""" -import argparse -import json -import time -from pathlib import Path -from typing import List, Optional - -import numpy as np -import torch -from tqdm import tqdm - -from vllm import LLM, SamplingParams -from vllm.engine.arg_utils import EngineArgs -from vllm.inputs import PromptInputs -from vllm.model_executor.layers.quantization import QUANTIZATION_METHODS -from vllm.utils import FlexibleArgumentParser - - -def main(args: argparse.Namespace): - print(args) - - # NOTE(woosuk): If the request cannot be processed in a single batch, - # the engine will automatically process the request in multiple batches. - llm = LLM( - model=args.model, - speculative_model=args.speculative_model, - num_speculative_tokens=args.num_speculative_tokens, - speculative_draft_tensor_parallel_size=\ - args.speculative_draft_tensor_parallel_size, - tokenizer=args.tokenizer, - quantization=args.quantization, - tensor_parallel_size=args.tensor_parallel_size, - trust_remote_code=args.trust_remote_code, - dtype=args.dtype, - max_model_len=args.max_model_len, - enforce_eager=args.enforce_eager, - kv_cache_dtype=args.kv_cache_dtype, - quantization_param_path=args.quantization_param_path, - device=args.device, - ray_workers_use_nsight=args.ray_workers_use_nsight, - use_v2_block_manager=args.use_v2_block_manager, - enable_chunked_prefill=args.enable_chunked_prefill, - download_dir=args.download_dir, - block_size=args.block_size, - gpu_memory_utilization=args.gpu_memory_utilization, - load_format=args.load_format, - distributed_executor_backend=args.distributed_executor_backend, - otlp_traces_endpoint=args.otlp_traces_endpoint, - enable_prefix_caching=args.enable_prefix_caching, - ) - - sampling_params = SamplingParams( - n=args.n, - temperature=0.0 if args.use_beam_search else 1.0, - top_p=1.0, - use_beam_search=args.use_beam_search, - ignore_eos=True, - max_tokens=args.output_len, - ) - print(sampling_params) - dummy_prompt_token_ids = np.random.randint(10000, - size=(args.batch_size, - args.input_len)) - dummy_inputs: List[PromptInputs] = [{ - "prompt_token_ids": batch - } for batch in dummy_prompt_token_ids.tolist()] - - def run_to_completion(profile_dir: Optional[str] = None): - if profile_dir: - with torch.profiler.profile( - activities=[ - torch.profiler.ProfilerActivity.CPU, - torch.profiler.ProfilerActivity.CUDA, - ], - on_trace_ready=torch.profiler.tensorboard_trace_handler( - str(profile_dir))) as p: - llm.generate(dummy_inputs, - sampling_params=sampling_params, - use_tqdm=False) - print(p.key_averages()) - else: - start_time = time.perf_counter() - llm.generate(dummy_inputs, - sampling_params=sampling_params, - use_tqdm=False) - end_time = time.perf_counter() - latency = end_time - start_time - return latency - - print("Warming up...") - for _ in tqdm(range(args.num_iters_warmup), desc="Warmup iterations"): - run_to_completion(profile_dir=None) - - if args.profile: - profile_dir = args.profile_result_dir - if not profile_dir: - profile_dir = Path( - "." - ) / "vllm_benchmark_result" / f"latency_result_{time.time()}" - print(f"Profiling (results will be saved to '{profile_dir}')...") - run_to_completion(profile_dir=profile_dir) - return - - # Benchmark. - latencies = [] - for _ in tqdm(range(args.num_iters), desc="Profiling iterations"): - latencies.append(run_to_completion(profile_dir=None)) - latencies = np.array(latencies) - percentages = [10, 25, 50, 75, 90, 99] - percentiles = np.percentile(latencies, percentages) - print(f'Avg latency: {np.mean(latencies)} seconds') - for percentage, percentile in zip(percentages, percentiles): - print(f'{percentage}% percentile latency: {percentile} seconds') - - # Output JSON results if specified - if args.output_json: - results = { - "avg_latency": np.mean(latencies), - "latencies": latencies.tolist(), - "percentiles": dict(zip(percentages, percentiles.tolist())), - } - with open(args.output_json, "w") as f: - json.dump(results, f, indent=4) - - -if __name__ == '__main__': - parser = FlexibleArgumentParser( - description='Benchmark the latency of processing a single batch of ' - 'requests till completion.') - parser.add_argument('--model', type=str, default='facebook/opt-125m') - parser.add_argument('--speculative-model', type=str, default=None) - parser.add_argument('--num-speculative-tokens', type=int, default=None) - parser.add_argument('--speculative-draft-tensor-parallel-size', - '-spec-draft-tp', - type=int, - default=None) - parser.add_argument('--tokenizer', type=str, default=None) - parser.add_argument('--quantization', - '-q', - choices=[*QUANTIZATION_METHODS, None], - default=None) - parser.add_argument('--tensor-parallel-size', '-tp', type=int, default=1) - parser.add_argument('--input-len', type=int, default=32) - parser.add_argument('--output-len', type=int, default=128) - parser.add_argument('--batch-size', type=int, default=8) - parser.add_argument('--n', - type=int, - default=1, - help='Number of generated sequences per prompt.') - parser.add_argument('--use-beam-search', action='store_true') - parser.add_argument('--num-iters-warmup', - type=int, - default=10, - help='Number of iterations to run for warmup.') - parser.add_argument('--num-iters', - type=int, - default=30, - help='Number of iterations to run.') - parser.add_argument('--trust-remote-code', - action='store_true', - help='trust remote code from huggingface') - parser.add_argument( - '--max-model-len', - type=int, - default=None, - help='Maximum length of a sequence (including prompt and output). ' - 'If None, will be derived from the model.') - parser.add_argument( - '--dtype', - type=str, - default='auto', - choices=['auto', 'half', 'float16', 'bfloat16', 'float', 'float32'], - help='data type for model weights and activations. ' - 'The "auto" option will use FP16 precision ' - 'for FP32 and FP16 models, and BF16 precision ' - 'for BF16 models.') - parser.add_argument('--enforce-eager', - action='store_true', - help='enforce eager mode and disable CUDA graph') - parser.add_argument( - '--kv-cache-dtype', - type=str, - choices=['auto', 'fp8', 'fp8_e5m2', 'fp8_e4m3'], - default="auto", - help='Data type for kv cache storage. If "auto", will use model ' - 'data type. CUDA 11.8+ supports fp8 (=fp8_e4m3) and fp8_e5m2. ' - 'ROCm (AMD GPU) supports fp8 (=fp8_e4m3)') - parser.add_argument( - '--quantization-param-path', - type=str, - default=None, - help='Path to the JSON file containing the KV cache scaling factors. ' - 'This should generally be supplied, when KV cache dtype is FP8. ' - 'Otherwise, KV cache scaling factors default to 1.0, which may cause ' - 'accuracy issues. FP8_E5M2 (without scaling) is only supported on ' - 'cuda version greater than 11.8. On ROCm (AMD GPU), FP8_E4M3 is ' - 'instead supported for common inference criteria.') - parser.add_argument( - '--profile', - action='store_true', - help='profile the generation process of a single batch') - parser.add_argument( - '--profile-result-dir', - type=str, - default=None, - help=('path to save the pytorch profiler output. Can be visualized ' - 'with ui.perfetto.dev or Tensorboard.')) - parser.add_argument( - "--device", - type=str, - default="auto", - choices=["auto", "cuda", "cpu", "openvino", "tpu", "xpu"], - help='device type for vLLM execution, supporting CUDA, OpenVINO and ' - 'CPU.') - parser.add_argument('--block-size', - type=int, - default=16, - help='block size of key/value cache') - parser.add_argument( - '--enable-chunked-prefill', - action='store_true', - help='If True, the prefill requests can be chunked based on the ' - 'max_num_batched_tokens') - parser.add_argument("--enable-prefix-caching", - action='store_true', - help="Enable automatic prefix caching") - parser.add_argument('--use-v2-block-manager', action='store_true') - parser.add_argument( - "--ray-workers-use-nsight", - action='store_true', - help="If specified, use nsight to profile ray workers", - ) - parser.add_argument('--download-dir', - type=str, - default=None, - help='directory to download and load the weights, ' - 'default to the default cache dir of huggingface') - parser.add_argument( - '--output-json', - type=str, - default=None, - help='Path to save the latency results in JSON format.') - parser.add_argument('--gpu-memory-utilization', - type=float, - default=0.9, - help='the fraction of GPU memory to be used for ' - 'the model executor, which can range from 0 to 1.' - 'If unspecified, will use the default value of 0.9.') - parser.add_argument( - '--load-format', - type=str, - default=EngineArgs.load_format, - choices=[ - 'auto', 'pt', 'safetensors', 'npcache', 'dummy', 'tensorizer', - 'bitsandbytes' - ], - help='The format of the model weights to load.\n\n' - '* "auto" will try to load the weights in the safetensors format ' - 'and fall back to the pytorch bin format if safetensors format ' - 'is not available.\n' - '* "pt" will load the weights in the pytorch bin format.\n' - '* "safetensors" will load the weights in the safetensors format.\n' - '* "npcache" will load the weights in pytorch format and store ' - 'a numpy cache to speed up the loading.\n' - '* "dummy" will initialize the weights with random values, ' - 'which is mainly for profiling.\n' - '* "tensorizer" will load the weights using tensorizer from ' - 'CoreWeave. See the Tensorize vLLM Model script in the Examples' - 'section for more information.\n' - '* "bitsandbytes" will load the weights using bitsandbytes ' - 'quantization.\n') - parser.add_argument( - '--distributed-executor-backend', - choices=['ray', 'mp'], - default=None, - help='Backend to use for distributed serving. When more than 1 GPU ' - 'is used, will be automatically set to "ray" if installed ' - 'or "mp" (multiprocessing) otherwise.') - parser.add_argument( - '--otlp-traces-endpoint', - type=str, - default=None, - help='Target URL to which OpenTelemetry traces will be sent.') - args = parser.parse_args() - main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py deleted file mode 100644 index 3e90fdfb7..000000000 --- a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_prefix_caching.py +++ /dev/null @@ -1,198 +0,0 @@ -""" -Benchmark the efficiency of prefix caching. - -This script allows you to benchmark the performance of -a model with and without prefix caching using either fixed prompts -or prompts sampled from the ShareGPT dataset. - -Fixed example usage: - python benchmark_prefix_caching.py \ - --model meta-llama/Llama-2-7b-chat-hf \ - --enable-prefix-caching \ - --num-prompts 1 \ - --repeat-count 100 - -ShareGPT example usage: - # This command samples 20 prompts with input lengths - # between 128 and 256 tokens from the ShareGPT dataset, - # then replicates each prompt 5 times. - python benchmark_prefix_caching.py \ - --model meta-llama/Llama-2-7b-chat-hf \ - --dataset-path /path/to/ShareGPT_V3_unfiltered_cleaned_split.json \ - --enable-prefix-caching \ - --num-prompts 20 \ - --repeat-count 5 \ - --input-length-range 128:256 -""" - -import json -import random -import time -from typing import List, Optional, Tuple - -from transformers import PreTrainedTokenizerBase - -from vllm import LLM, SamplingParams -from vllm.utils import FlexibleArgumentParser - -try: - from vllm.transformers_utils.tokenizer import get_tokenizer -except ImportError: - from backend_request_func import get_tokenizer - -PROMPT = "You are a helpful assistant in recognizes the content of tables in markdown format. Here is a table as fellows. You need to answer my question about the table.\n# Table\n|Opening|Opening|Sl. No.|Film|Cast|Director|Music Director|Notes|\n|----|----|----|----|----|----|----|----|\n|J A N|9|1|Agni Pushpam|Jayabharathi, Kamalahasan|Jeassy|M. K. Arjunan||\n|J A N|16|2|Priyamvada|Mohan Sharma, Lakshmi, KPAC Lalitha|K. S. Sethumadhavan|V. Dakshinamoorthy||\n|J A N|23|3|Yakshagaanam|Madhu, Sheela|Sheela|M. S. Viswanathan||\n|J A N|30|4|Paalkkadal|Sheela, Sharada|T. K. Prasad|A. T. Ummer||\n|F E B|5|5|Amma|Madhu, Srividya|M. Krishnan Nair|M. K. Arjunan||\n|F E B|13|6|Appooppan|Thikkurissi Sukumaran Nair, Kamal Haasan|P. Bhaskaran|M. S. Baburaj||\n|F E B|20|7|Srishti|Chowalloor Krishnankutty, Ravi Alummoodu|K. T. Muhammad|M. S. Baburaj||\n|F E B|20|8|Vanadevatha|Prem Nazir, Madhubala|Yusufali Kechery|G. Devarajan||\n|F E B|27|9|Samasya|Madhu, Kamalahaasan|K. Thankappan|Shyam||\n|F E B|27|10|Yudhabhoomi|K. P. Ummer, Vidhubala|Crossbelt Mani|R. K. Shekhar||\n|M A R|5|11|Seemantha Puthran|Prem Nazir, Jayabharathi|A. B. Raj|M. K. Arjunan||\n|M A R|12|12|Swapnadanam|Rani Chandra, Dr. Mohandas|K. G. George|Bhaskar Chandavarkar||\n|M A R|19|13|Thulavarsham|Prem Nazir, sreedevi, Sudheer|N. Sankaran Nair|V. Dakshinamoorthy||\n|M A R|20|14|Aruthu|Kaviyoor Ponnamma, Kamalahasan|Ravi|G. Devarajan||\n|M A R|26|15|Swimming Pool|Kamal Haasan, M. G. Soman|J. Sasikumar|M. K. Arjunan||\n\n# Question\nWhat' s the content in the (1,1) cells\n" # noqa: E501 - - -def test_prefix(llm=None, sampling_params=None, prompts=None): - start_time = time.time() - - llm.generate(prompts, sampling_params=sampling_params) - - end_time = time.time() - print(f"cost time {end_time - start_time}") - - -def sample_requests( - dataset_path: str, - num_requests: int, - tokenizer: PreTrainedTokenizerBase, - input_length_range: Tuple[int, int], - fixed_output_len: Optional[int], -) -> List[Tuple[str, int, int]]: - if fixed_output_len is not None and fixed_output_len < 4: - raise ValueError("output_len too small") - - # Load the dataset. - with open(dataset_path) as f: - dataset = json.load(f) - # Filter out the conversations with less than 2 turns. - dataset = [data for data in dataset if len(data["conversations"]) >= 2] - # Only keep the first two turns of each conversation. - dataset = [(data["conversations"][0]["value"], - data["conversations"][1]["value"]) for data in dataset] - - # Shuffle the dataset. - random.shuffle(dataset) - - min_len, max_len = input_length_range - - # Filter out sequences that are too long or too short - filtered_dataset: List[Tuple[str, int, int]] = [] - for i in range(len(dataset)): - if len(filtered_dataset) == num_requests: - break - - # Tokenize the prompts and completions. - prompt = dataset[i][0] - prompt_token_ids = tokenizer(prompt).input_ids - completion = dataset[i][1] - completion_token_ids = tokenizer(completion).input_ids - prompt_len = len(prompt_token_ids) - output_len = len(completion_token_ids - ) if fixed_output_len is None else fixed_output_len - if prompt_len < 4 or output_len < 4: - # Prune too short sequences. - continue - if min_len <= prompt_len <= max_len: - filtered_dataset.append((prompt, prompt_len, output_len)) - - return filtered_dataset - - -def repeat_and_sort_requests(requests: List[Tuple[str, int, int]], - repeat_count: int, - sort: bool = False) -> List[str]: - repeated_requests = requests * repeat_count - if sort: - repeated_requests.sort(key=lambda x: x[1]) - else: - random.shuffle(repeated_requests) - return [req[0] for req in repeated_requests] - - -def main(args): - tokenizer = get_tokenizer(args.model, trust_remote_code=True) - input_length_range = tuple(map(int, args.input_length_range.split(':'))) - - if args.dataset_path is not None: - print(f"Start to sample {args.num_prompts} prompts" - "from {args.dataset_path}") - filtered_datasets = sample_requests( - dataset_path=args.dataset_path, - num_requests=args.num_prompts, - tokenizer=tokenizer, - input_length_range=input_length_range, - fixed_output_len=args.output_len, - ) - else: - prompt_len = len(tokenizer(PROMPT).input_ids) - filtered_datasets = [(PROMPT, prompt_len, args.output_len) - ] * args.num_prompts - - llm = LLM(model=args.model, - tokenizer_mode='auto', - trust_remote_code=True, - enforce_eager=True, - use_v2_block_manager=args.use_v2_block_manager, - tensor_parallel_size=args.tensor_parallel_size, - enable_prefix_caching=args.enable_prefix_caching) - - sampling_params = SamplingParams(temperature=0, max_tokens=args.output_len) - - print("Testing filtered datasets") - prompts = repeat_and_sort_requests(filtered_datasets, - repeat_count=args.repeat_count, - sort=args.sort) - - print("------warm up------") - test_prefix( - llm=llm, - prompts=prompts, - sampling_params=sampling_params, - ) - - print("------start generating------") - test_prefix( - llm=llm, - prompts=prompts, - sampling_params=sampling_params, - ) - - -if __name__ == "__main__": - parser = FlexibleArgumentParser( - description= - 'Benchmark the performance with or without automatic prefix caching.') - parser.add_argument('--model', - type=str, - default='baichuan-inc/Baichuan2-13B-Chat') - parser.add_argument("--dataset-path", - type=str, - default=None, - help="Path to the dataset.") - parser.add_argument('--tensor-parallel-size', '-tp', type=int, default=1) - parser.add_argument('--output-len', type=int, default=10) - parser.add_argument('--enable-prefix-caching', - action='store_true', - help='enable prefix caching') - parser.add_argument('--use-v2-block-manager', - action='store_true', - help='Use BlockSpaceMangerV2') - parser.add_argument('--num-prompts', - type=int, - default=1, - help="Number of the prompts sampled from dataset") - parser.add_argument('--repeat-count', - type=int, - default=100, - help='Number of times to repeat each prompt') - parser.add_argument('--sort', - action='store_true', - help='Sort prompts by input length') - parser.add_argument('--input-length-range', - type=str, - default='128:256', - help='Range of input lengths for sampling prompts,' - 'specified as "min:max" (e.g., "128:256").') - args = parser.parse_args() - main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py deleted file mode 100644 index eaf256f7c..000000000 --- a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/benchmark_throughput.py +++ /dev/null @@ -1,460 +0,0 @@ -"""Benchmark offline inference throughput.""" -import argparse -import json -import random -import time -from typing import List, Optional, Tuple - -import torch -from tqdm import tqdm -from transformers import (AutoModelForCausalLM, AutoTokenizer, - PreTrainedTokenizerBase) - -from vllm.engine.arg_utils import EngineArgs -from vllm.model_executor.layers.quantization import QUANTIZATION_METHODS -from vllm.utils import FlexibleArgumentParser - - -def sample_requests( - dataset_path: str, - num_requests: int, - tokenizer: PreTrainedTokenizerBase, - fixed_output_len: Optional[int], -) -> List[Tuple[str, int, int]]: - if fixed_output_len is not None and fixed_output_len < 4: - raise ValueError("output_len too small") - - # Load the dataset. - with open(dataset_path) as f: - dataset = json.load(f) - # Filter out the conversations with less than 2 turns. - dataset = [data for data in dataset if len(data["conversations"]) >= 2] - # Only keep the first two turns of each conversation. - dataset = [(data["conversations"][0]["value"], - data["conversations"][1]["value"]) for data in dataset] - - # Shuffle the dataset. - random.shuffle(dataset) - - # Filter out sequences that are too long or too short - filtered_dataset: List[Tuple[str, int, int]] = [] - for i in range(len(dataset)): - if len(filtered_dataset) == num_requests: - break - - # Tokenize the prompts and completions. - prompt = dataset[i][0] - prompt_token_ids = tokenizer(prompt).input_ids - completion = dataset[i][1] - completion_token_ids = tokenizer(completion).input_ids - prompt_len = len(prompt_token_ids) - output_len = len(completion_token_ids - ) if fixed_output_len is None else fixed_output_len - if prompt_len < 4 or output_len < 4: - # Prune too short sequences. - continue - if prompt_len > 1024 or prompt_len + output_len > 2048: - # Prune too long sequences. - continue - filtered_dataset.append((prompt, prompt_len, output_len)) - - return filtered_dataset - - -def run_vllm( - requests: List[Tuple[str, int, int]], - model: str, - tokenizer: str, - quantization: Optional[str], - tensor_parallel_size: int, - seed: int, - n: int, - use_beam_search: bool, - trust_remote_code: bool, - dtype: str, - max_model_len: Optional[int], - enforce_eager: bool, - kv_cache_dtype: str, - quantization_param_path: Optional[str], - device: str, - enable_prefix_caching: bool, - enable_chunked_prefill: bool, - max_num_batched_tokens: int, - distributed_executor_backend: Optional[str], - gpu_memory_utilization: float = 0.9, - num_scheduler_steps: int = 1, - use_v2_block_manager: bool = False, - download_dir: Optional[str] = None, - load_format: str = EngineArgs.load_format, - disable_async_output_proc: bool = False, -) -> float: - from vllm import LLM, SamplingParams - llm = LLM( - model=model, - tokenizer=tokenizer, - quantization=quantization, - tensor_parallel_size=tensor_parallel_size, - seed=seed, - trust_remote_code=trust_remote_code, - dtype=dtype, - max_model_len=max_model_len, - gpu_memory_utilization=gpu_memory_utilization, - enforce_eager=enforce_eager, - kv_cache_dtype=kv_cache_dtype, - quantization_param_path=quantization_param_path, - device=device, - enable_prefix_caching=enable_prefix_caching, - download_dir=download_dir, - enable_chunked_prefill=enable_chunked_prefill, - max_num_batched_tokens=max_num_batched_tokens, - distributed_executor_backend=distributed_executor_backend, - load_format=load_format, - num_scheduler_steps=num_scheduler_steps, - use_v2_block_manager=use_v2_block_manager, - disable_async_output_proc=disable_async_output_proc, - ) - - # Add the requests to the engine. - prompts: List[str] = [] - sampling_params: List[SamplingParams] = [] - for prompt, _, output_len in requests: - prompts.append(prompt) - sampling_params.append( - SamplingParams( - n=n, - temperature=0.0 if use_beam_search else 1.0, - top_p=1.0, - use_beam_search=use_beam_search, - ignore_eos=True, - max_tokens=output_len, - )) - - start = time.perf_counter() - llm.generate(prompts, sampling_params, use_tqdm=True) - end = time.perf_counter() - return end - start - - -def run_hf( - requests: List[Tuple[str, int, int]], - model: str, - tokenizer: PreTrainedTokenizerBase, - n: int, - use_beam_search: bool, - max_batch_size: int, - trust_remote_code: bool, -) -> float: - assert not use_beam_search - llm = AutoModelForCausalLM.from_pretrained( - model, torch_dtype=torch.float16, trust_remote_code=trust_remote_code) - if llm.config.model_type == "llama": - # To enable padding in the HF backend. - tokenizer.pad_token = tokenizer.eos_token - llm = llm.cuda() - - pbar = tqdm(total=len(requests)) - start = time.perf_counter() - batch: List[str] = [] - max_prompt_len = 0 - max_output_len = 0 - for i in range(len(requests)): - prompt, prompt_len, output_len = requests[i] - # Add the prompt to the batch. - batch.append(prompt) - max_prompt_len = max(max_prompt_len, prompt_len) - max_output_len = max(max_output_len, output_len) - if len(batch) < max_batch_size and i != len(requests) - 1: - # Check if we can add more requests to the batch. - _, next_prompt_len, next_output_len = requests[i + 1] - if (max(max_prompt_len, next_prompt_len) + - max(max_output_len, next_output_len)) <= 2048: - # We can add more requests to the batch. - continue - - # Generate the sequences. - input_ids = tokenizer(batch, return_tensors="pt", - padding=True).input_ids - llm_outputs = llm.generate( - input_ids=input_ids.cuda(), - do_sample=not use_beam_search, - num_return_sequences=n, - temperature=1.0, - top_p=1.0, - use_cache=True, - max_new_tokens=max_output_len, - ) - # Include the decoding time. - tokenizer.batch_decode(llm_outputs, skip_special_tokens=True) - pbar.update(len(batch)) - - # Clear the batch. - batch = [] - max_prompt_len = 0 - max_output_len = 0 - end = time.perf_counter() - return end - start - - -def run_mii( - requests: List[Tuple[str, int, int]], - model: str, - tensor_parallel_size: int, - output_len: int, -) -> float: - from mii import client, serve - llm = serve(model, tensor_parallel=tensor_parallel_size) - prompts = [prompt for prompt, _, _ in requests] - - start = time.perf_counter() - llm.generate(prompts, max_new_tokens=output_len) - end = time.perf_counter() - client = client(model) - client.terminate_server() - return end - start - - -def main(args: argparse.Namespace): - print(args) - random.seed(args.seed) - - # Sample the requests. - tokenizer = AutoTokenizer.from_pretrained( - args.tokenizer, trust_remote_code=args.trust_remote_code) - if args.dataset is None: - # Synthesize a prompt with the given input length. - prompt = "hi" * (args.input_len - 1) - requests = [(prompt, args.input_len, args.output_len) - for _ in range(args.num_prompts)] - else: - requests = sample_requests(args.dataset, args.num_prompts, tokenizer, - args.output_len) - - if args.backend == "vllm": - elapsed_time = run_vllm( - requests, args.model, args.tokenizer, args.quantization, - args.tensor_parallel_size, args.seed, args.n, args.use_beam_search, - args.trust_remote_code, args.dtype, args.max_model_len, - args.enforce_eager, args.kv_cache_dtype, - args.quantization_param_path, args.device, - args.enable_prefix_caching, args.enable_chunked_prefill, - args.max_num_batched_tokens, args.distributed_executor_backend, - args.gpu_memory_utilization, args.num_scheduler_steps, - args.use_v2_block_manager, args.download_dir, args.load_format, - args.disable_async_output_proc) - elif args.backend == "hf": - assert args.tensor_parallel_size == 1 - elapsed_time = run_hf(requests, args.model, tokenizer, args.n, - args.use_beam_search, args.hf_max_batch_size, - args.trust_remote_code) - elif args.backend == "mii": - elapsed_time = run_mii(requests, args.model, args.tensor_parallel_size, - args.output_len) - else: - raise ValueError(f"Unknown backend: {args.backend}") - total_num_tokens = sum(prompt_len + output_len - for _, prompt_len, output_len in requests) - print(f"Throughput: {len(requests) / elapsed_time:.2f} requests/s, " - f"{total_num_tokens / elapsed_time:.2f} tokens/s") - - # Output JSON results if specified - if args.output_json: - results = { - "elapsed_time": elapsed_time, - "num_requests": len(requests), - "total_num_tokens": total_num_tokens, - "requests_per_second": len(requests) / elapsed_time, - "tokens_per_second": total_num_tokens / elapsed_time, - } - with open(args.output_json, "w") as f: - json.dump(results, f, indent=4) - - -if __name__ == "__main__": - parser = FlexibleArgumentParser(description="Benchmark the throughput.") - parser.add_argument("--backend", - type=str, - choices=["vllm", "hf", "mii"], - default="vllm") - parser.add_argument("--dataset", - type=str, - default=None, - help="Path to the dataset.") - parser.add_argument("--input-len", - type=int, - default=None, - help="Input prompt length for each request") - parser.add_argument("--output-len", - type=int, - default=None, - help="Output length for each request. Overrides the " - "output length from the dataset.") - parser.add_argument("--model", type=str, default="facebook/opt-125m") - parser.add_argument("--tokenizer", type=str, default=None) - parser.add_argument('--quantization', - '-q', - choices=[*QUANTIZATION_METHODS, None], - default=None) - parser.add_argument("--tensor-parallel-size", "-tp", type=int, default=1) - parser.add_argument("--n", - type=int, - default=1, - help="Number of generated sequences per prompt.") - parser.add_argument("--use-beam-search", action="store_true") - parser.add_argument("--num-prompts", - type=int, - default=1000, - help="Number of prompts to process.") - parser.add_argument("--seed", type=int, default=0) - parser.add_argument("--hf-max-batch-size", - type=int, - default=None, - help="Maximum batch size for HF backend.") - parser.add_argument('--trust-remote-code', - action='store_true', - help='trust remote code from huggingface') - parser.add_argument( - '--max-model-len', - type=int, - default=None, - help='Maximum length of a sequence (including prompt and output). ' - 'If None, will be derived from the model.') - parser.add_argument( - '--dtype', - type=str, - default='auto', - choices=['auto', 'half', 'float16', 'bfloat16', 'float', 'float32'], - help='data type for model weights and activations. ' - 'The "auto" option will use FP16 precision ' - 'for FP32 and FP16 models, and BF16 precision ' - 'for BF16 models.') - parser.add_argument('--gpu-memory-utilization', - type=float, - default=0.9, - help='the fraction of GPU memory to be used for ' - 'the model executor, which can range from 0 to 1.' - 'If unspecified, will use the default value of 0.9.') - parser.add_argument("--enforce-eager", - action="store_true", - help="enforce eager execution") - parser.add_argument( - '--kv-cache-dtype', - type=str, - choices=['auto', 'fp8', 'fp8_e5m2', 'fp8_e4m3'], - default="auto", - help='Data type for kv cache storage. If "auto", will use model ' - 'data type. CUDA 11.8+ supports fp8 (=fp8_e4m3) and fp8_e5m2. ' - 'ROCm (AMD GPU) supports fp8 (=fp8_e4m3)') - parser.add_argument( - '--quantization-param-path', - type=str, - default=None, - help='Path to the JSON file containing the KV cache scaling factors. ' - 'This should generally be supplied, when KV cache dtype is FP8. ' - 'Otherwise, KV cache scaling factors default to 1.0, which may cause ' - 'accuracy issues. FP8_E5M2 (without scaling) is only supported on ' - 'cuda version greater than 11.8. On ROCm (AMD GPU), FP8_E4M3 is ' - 'instead supported for common inference criteria.') - parser.add_argument( - "--device", - type=str, - default="auto", - choices=["auto", "cuda", "cpu", "openvino", "tpu", "xpu"], - help='device type for vLLM execution, supporting CUDA, OpenVINO and ' - 'CPU.') - parser.add_argument( - "--num-scheduler-steps", - type=int, - default=1, - help="Maximum number of forward steps per scheduler call.") - parser.add_argument("--use-v2-block-manager", - action='store_true', - help="Enable block manager v2.") - parser.add_argument( - "--enable-prefix-caching", - action='store_true', - help="Enable automatic prefix caching for vLLM backend.") - parser.add_argument("--enable-chunked-prefill", - action='store_true', - help="enable chunked prefill for vLLM backend.") - parser.add_argument('--max-num-batched-tokens', - type=int, - default=None, - help='maximum number of batched tokens per ' - 'iteration') - parser.add_argument('--download-dir', - type=str, - default=None, - help='directory to download and load the weights, ' - 'default to the default cache dir of huggingface') - parser.add_argument( - '--output-json', - type=str, - default=None, - help='Path to save the throughput results in JSON format.') - parser.add_argument( - '--distributed-executor-backend', - choices=['ray', 'mp'], - default=None, - help='Backend to use for distributed serving. When more than 1 GPU ' - 'is used, will be automatically set to "ray" if installed ' - 'or "mp" (multiprocessing) otherwise.') - parser.add_argument( - '--load-format', - type=str, - default=EngineArgs.load_format, - choices=[ - 'auto', 'pt', 'safetensors', 'npcache', 'dummy', 'tensorizer', - 'bitsandbytes' - ], - help='The format of the model weights to load.\n\n' - '* "auto" will try to load the weights in the safetensors format ' - 'and fall back to the pytorch bin format if safetensors format ' - 'is not available.\n' - '* "pt" will load the weights in the pytorch bin format.\n' - '* "safetensors" will load the weights in the safetensors format.\n' - '* "npcache" will load the weights in pytorch format and store ' - 'a numpy cache to speed up the loading.\n' - '* "dummy" will initialize the weights with random values, ' - 'which is mainly for profiling.\n' - '* "tensorizer" will load the weights using tensorizer from ' - 'CoreWeave. See the Tensorize vLLM Model script in the Examples' - 'section for more information.\n' - '* "bitsandbytes" will load the weights using bitsandbytes ' - 'quantization.\n') - parser.add_argument( - "--disable-async-output-proc", - action='store_true', - default=False, - help="Disable async output processor for vLLM backend.") - args = parser.parse_args() - if args.tokenizer is None: - args.tokenizer = args.model - if args.dataset is None: - assert args.input_len is not None - assert args.output_len is not None - else: - assert args.input_len is None - - if args.backend == "vllm": - if args.hf_max_batch_size is not None: - raise ValueError("HF max batch size is only for HF backend.") - elif args.backend == "hf": - if args.hf_max_batch_size is None: - raise ValueError("HF max batch size is required for HF backend.") - if args.quantization is not None: - raise ValueError("Quantization is only for vLLM backend.") - elif args.backend == "mii": - if args.dtype != "auto": - raise ValueError("dtype must be auto for MII backend.") - if args.n != 1: - raise ValueError("n must be 1 for MII backend.") - if args.use_beam_search: - raise ValueError("Beam search is not supported for MII backend.") - if args.quantization is not None: - raise ValueError("Quantization is only for vLLM backend.") - if args.hf_max_batch_size is not None: - raise ValueError("HF max batch size is only for HF backend.") - if args.tokenizer != args.model: - raise ValueError("Tokenizer must be the same as the model for MII " - "backend.") - main(args) diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh b/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh deleted file mode 100755 index 8c5cd454f..000000000 --- a/recipes/3p_integrations/crusoe/vllm-fp8/benchmarks/launch_tgi_server.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -PORT=8000 -MODEL=$1 -TOKENS=$2 - -docker run -e HF_TOKEN=$HF_TOKEN --gpus all --shm-size 1g -p $PORT:80 \ - -v $PWD/data:/data \ - ghcr.io/huggingface/text-generation-inference:2.2.0 \ - --model-id $MODEL \ - --sharded false \ - --max-input-length 1024 \ - --max-total-tokens 2048 \ - --max-best-of 5 \ - --max-concurrent-requests 5000 \ - --max-batch-total-tokens $TOKENS diff --git a/recipes/3p_integrations/crusoe/vllm-fp8/main.tf b/recipes/3p_integrations/crusoe/vllm-fp8/main.tf index 37149e087..39572144b 100644 --- a/recipes/3p_integrations/crusoe/vllm-fp8/main.tf +++ b/recipes/3p_integrations/crusoe/vllm-fp8/main.tf @@ -12,9 +12,9 @@ locals { // new VM resource "crusoe_compute_instance" "vllm_vm" { - name = "vllm-valid" + name = "vllm-example" type = "l40s-48gb.8x" - location = "us-east1-a" + location = "us-southcentral1-a" # specify the base image image = "ubuntu22.04-nvidia-slurm:12.4" @@ -31,9 +31,9 @@ resource "crusoe_compute_instance" "vllm_vm" { } resource "crusoe_storage_disk" "vllm_data_disk" { - name = "vllm-valid-disk" + name = "vllm-example-disk" size = "256GiB" - location = "us-east1-a" + location = "us-southcentral1-a" } output "instance_public_ip" { From 188509529baff0cae867bfbbe7c646327add5c25 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 8 Oct 2024 14:10:11 -0700 Subject: [PATCH 3/4] Updated spell check word list to include Crusoe terms and referenced libraries. --- .github/scripts/spellcheck_conf/wordlist.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/scripts/spellcheck_conf/wordlist.txt b/.github/scripts/spellcheck_conf/wordlist.txt index 1f976aa5a..53db24ec8 100644 --- a/.github/scripts/spellcheck_conf/wordlist.txt +++ b/.github/scripts/spellcheck_conf/wordlist.txt @@ -1466,3 +1466,19 @@ OCRVQA OCRVQADataCollator ocrvqa langchain +GiB +Terraform +gb +TPOT +ctrl +finetunes +llmcompressor +prefill +qps +terraform +tf +tmux +tpot +ttft +uv +8xL40S From 268e473bdbe05ae99fb2f9f07d7b886581eabda1 Mon Sep 17 00:00:00 2001 From: Ethan Date: Tue, 15 Oct 2024 09:38:28 -0700 Subject: [PATCH 4/4] Updated spellcheck word list. --- .github/scripts/spellcheck_conf/wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/scripts/spellcheck_conf/wordlist.txt b/.github/scripts/spellcheck_conf/wordlist.txt index 53db24ec8..350e83106 100644 --- a/.github/scripts/spellcheck_conf/wordlist.txt +++ b/.github/scripts/spellcheck_conf/wordlist.txt @@ -1482,3 +1482,4 @@ tpot ttft uv 8xL40S +xL