From c0e235defefc5cc1984dfa9643cf608577cb6fb1 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Wed, 28 Oct 2026 22:51:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Update=20=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=BA=94=E7=94=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充 Harness 的组成、停止前校验的实测(新增附录 A29)、模型变强以后的变化和与开发框架的关系;注意力实现、FlashAttention、MLA、PPO 与 GRPO 改进、ZeRO 等细节移到进阶篇,原处保留结论和链接;配图改由脚本生成。 --- notes/pics/hnsw.png | Bin 111152 -> 110917 bytes notes/pics/transformer-block.png | Bin 154728 -> 154818 bytes notes/大模型应用.md | 295 ++++++++++--------------------- 3 files changed, 91 insertions(+), 204 deletions(-) diff --git a/notes/pics/hnsw.png b/notes/pics/hnsw.png index d7996301066bcfd2280fb2e1067347864d103a95..8c41ea1f6cf7d3b6a575d4b31dbe147cb27fa48a 100644 GIT binary patch delta 63830 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 B%=iER delta 64223 zcmZ^KWn2~S^Y+r6(jWo?B8_x+NJt&Jk?u}$LFp9fF6j>Gl9oe*v~-HnAt3N9-{1f3 zv#*Yi6#QyMF_!me+92TJKD#~ z5iD+PEtB>PnLCT~J%{Pcoo5PN+_!HYjJmvI=|sQNf+YyVC3BwP2A1P6tcrm`lix?W z%J$p|oYI!pSvwize=k4p-Nx0s$837SWUFZ8lrB%4zoUTd?)ocI(QM7IuPHw)tx{9Y zpR#gqz`VA{fZo`?ZnXf6Q7f; z%ovi9s?7K@%rUZA9bl@liu;RxHn)8EO&>Td7WRI4rNjd_sbC}8va>UgdYXRq@!d_1 z!4v+w#rAtPT>FKhh|e5@f2t0IVhe23)jA?k=c!twMtJPHat&Y7w%DpKfyza;1DCsh zOjj_%O9o(etc5EYo2af&maQtv^xZvK3g~|*qQ-C&<+(JKe1SLT$sM|k*-$pQ+#Pj) z4Vjr5g|{{A{cP@>?+^`A^{ZX?%PuaVGwMn6)86XuFP#AXE`GKDZlR&|!$;&z{IbE& z1U+HI<)v4rQQemXA4`Tx8c=I|JAQ(te%Zvx=;_17A7@b52@$}oub@+k_i{9I9MEta z;IQEyocAzl;wfy?{*wd$`mwcG`zy~d3qYd6)nkv%+f`CFoc4hRU3ZAN;2**pbG0C% z%4Ht;E(G<53UQAEzOSV)&LqsLgjK!D%bC*lp5kLJmsl*%5L&{MO0eCr1V-rC??BCQ zIr<&!nBfltQX{LmMz2Id6mZ_bc~szpZ{-ENScCw^e6(lpj)Tys|9;=S-st!4y8Y?B z8gRvNH^mVF{5TV-y3@e@b8$M|T&+645N$Nw?pd0bXZHTRF_l}nhLO?Fsi_Z3D1oeI zl}uAstm{>56+d`lD#0Lh%WdYvP@s>3#jB%fR2^ zBo+rA4#Q@AKNmkgeUTw<>lr1`P2g8p?nlpg@n=YkugH`w{JIl@x=di90hO; zn%wVA7F2_G2d-^E8JX*t)wT4(szsqMR3 zjvYk(d*)iyQV6bj)yUYF_3tgmajHncNkB zxZd*~&ldH+{H=F=xGubd!r}8R%J@A0cUD*fE6LLz2k;?qWCRW6A9_d0=3m%BXEeAl5d0sma;d z(QzASRxB=X^lL~`pU^7snkyTwOJ~~Ft0BzdSl}qK3ER0MAT|X`{%#d57`2EUEVXQZ zbBL=NzgYqgPSFFgTGU7@o(!Ihi}3y_y7O4{o|arZG2(Zj8dpJcTD*GoXQ9o<>u@;4 z_oo_;G?%i<9C0tqQ<@9=2j`EEP5h~hD{Z5!mp5WF zpOGmJW{0O|WLzDsc7YG?-yioryXPbjJ?=*00I%WK@#EnAnX1_JR>sOXV?sj5bI{+< zPiBfON%2I$#5rq`P{-N<9K+qolF%wyRD&>uwn%$lTo1D@l=XAPuS|F{W7XE~eJ2u7 zLgO~=z`v7a>O&hBw|o3y6;?Qt8d+rP_Mp&-<*72gC6UsEbCP4gbc7r}#Pg$ZtW3U3 z@Yi;|=E@o3_}OnFf))*2nD3=3*hG8tb0$~Lr_ya*MV&}`E&@?i{psLIp~Vw<7Pa82 zW3^3iu zL#glk1{$u_RX7*)yTr4Ym7BlK*ghvFe%);;DzbufQC(Dgsqq?f5GRt-&iW!!bGl)c z4>Q)58+S2;xp$c$K_`V52*jl05BT@@SI2W3rm-tB26f)zuuh)X#}%_K%0# z8(->$?=?9N{~dzS^QB+GB}bN`pAY{oi%0~jG7j*<6$D_&+FDv?0s8M{Sf>e3neui& zp5`D}9UU*N-d}?M2Epd4CFlUqz+*INY3U8C&o7qQ4V!bBBA301hI7%qKNZ`!{X>CP zU^pl0cU}^1TW!*H&+%}|QC4=p<9uIaSorQF%0xs!z-MP9?F#I?>cA5{$KMEY`_aUj zUBh=ix7@2=b+Mfv7QK|pSGAi~cj%&Dx(;ToGo=Jb*@5)Dh{1K9|Bg2PAO%J$JGGXT zMTToQtvpkm9oEpg7>J>yea)=r>03_n>x1XijJfE8rP1omuZf<2`lnxh@ZKPC{8EN( z1{ACOoEg%WT@C>$6klgt;COc(^-`VI_%p^jJGl~{W#rN!t{u!(i{I=O#EIVvv|T{< zk7a!PfpiF=IG<_tX0{31Add9lS(Sl+avJdR>tF~ z<7(>k_X(Q#U&+<0oU8WTi>oW~yYp$y|DNgTX>O34o65nY&Fc@A$zQ1wkW#I5-@wUB zmj(XR+F5q&XB1`xb@faFwkyhFe)jI~+ep5GbLMmBsr`n3vr&=-YNpY9qyV#Gi|v?J z;c1+!fEAxgeOsHsIcI@tWu^k`VBEjvKo~DhS!GLy(8liTA!yu2{833FL)3fVpsr7E z+!2gkxSB!#W1I-GFaTag-Yzc3Sx4_)w3*AtQ3o7Hv%S5&ot>SH zjnDa{eAijl(eIUxTL|=43j9*ee^P;_&x@0@5rgL~ZC#=!zAlAw8$@o+w@t+}7ZY-c!?X*ef(EDW zRv{P;xUA2qv|SwkH!?mmJA2caqgd!uTTBIrLmTRRxWAP>s31d4#(H@`{)``cb7A~_ zqapwM$tYtUPEIu=BO^`C1O<9KdwWVs$|n&9BvD7pEoX0^-ICF#&*B5qj0XlzL%$Y( zn^ZV@I$m`8hXv=2 z%wNlPV`xgc%UfE!PP~0z^k;B2r`f~H>BoyBVMFiVRg8uWqsPR8@DW1h4Or4gQth*C zAs2;)&+^HCi7h7S443kci}=Q)7aK<-o;dw@f?-8K<}UqjVgkRK-1LrY0n~Y7@AlU! z@{-I!fj!J^FUZh(J8bT$x0jdp8^0yaXx|qCqS+>-d+Q{X1F+`d*6bQ>B3tfcmpPJI zyL78`#)mnn(eLEM5kS)Wad&xnd3MopgKdeZxbKQ^VzpVM@-e4lBl=)^-*h6o8Am}0{{)zT#NR z?~B5J#jdA!@#cH}to`>@yaxuuSkzKk11u`@!`h4~CLBuf+Of_AA|SqBcB#)-FKynq z<{$)16*Rc<)1#uDKFmZE%r)ckvc+Vzu$?=aocrC`zR{mS&7n!%e{GmkidCW)MTH4~ z=>bMG*&i`i95vykWo3CEljH>ouqb#`HicHx3-HuFBXD+Y>;29J8yXx)~XE zp8l)>H$Z95Gw0pu>sZj)y^CS%$Jd1y4g|yib5^!BV8hMtTa&`rdZ4bustY)fg%+xN zS1yXD*w-~bMz2zUp`h{>2@n@og!0N z1gztDU|PH?ntg(Mvn<@R70#sxey`G^Lm#JeJp-5%$3SiXMuO!pHOT%z+}L1>fo?P> zY(I1Ir7N-5Rj*LfIz~|jpP}>%Fu&3*KwiOyy2F9pyLLTl6Nl|zw(pVtB>dmI^GTQu zz)FGY77^sTli=;M#`co(aVn5cr-`Mn-!gR&l7Me(&wTWh{UF3zu?lgnzAIkSjbaHVw0O6A(P_&FM#4-Ra|Ox?JuDtu4z1~>bx5((*2>*WIg_E@eq6( zQT$%O_wKaE4ak%N+WBza@%d5JxR{`-9@kYRx$rL36Z=Y^G}{cXvC+Pt=rWf`9FU0v($gGB;9Q`G{ zq-d=9;C^;z)SN%s*=V^s7d=n!f`r+*3@}27v2n6D zM!`c*2NdnKgFZr8R`J%I;xc>;i8>?;Dv2P*O>$ZdE4;2^U_j2ST>zUzolAb`|JIc3 zm@DvZAq~!CMlmW@|CHo2XRfKaNVw;>(ed2Pjx|f8lV3mLm}Lu*ntogzmc1zsm=4D3 z$k${h{E%t85wudmKqMFUH7g{y+D8N(F_;-W5Y!P5khRl1Tv-q1`I#O>0uMT=l34w$ zUBy<HZBm-E+s2%@POQp;|dW|$N^0x1c?@h>h;`%>3m zvf!3c&oj?ynKvQ1&MkGF3`fsMH_53m;Auo2Do9e}+_{*JxfcN@bDoFpJ6&>v-XXy+ zz4wAC9=85HPZ4vWLjs1oMcm$f<70z2Tf*pq&O#&eYmA7WR@B6x2fEV<9cG*emh=;x zv)LwH5}QQ}0AqDAF%!Hhd%kke*or02;NMOTZK?=0KEKn`=Ma{>l+J9C!cFInCQq0F z0JYZ1>ItzSLi-B(knYpJBB?(OZPcbfp)`TIM4Ffx~p%?ArH{fBD*?hQ6B5%OQ6I4lxOXNjQ21 z4D@|3_}vuHtS?aGAPDgZ1f-k!#}L1 zFu^*|!(KRgo~=if4;!hG06GBJTJ%$b+Lgc(tKe4c`7%7_zF=GdSo9x4U9>{)fh6p|7Lg?PL2^ak^0z13p&2z%c}^aseT?bMT`g$ z4W=qDV>i)*NMcReHM>oj7^=8qW7;;U&5PX&LcU9#%y;HwEG}`EQ-U zFvvw;;UaK?0RKmFu92cLW)3dJ;^|2e6IvsD{iAQ9L8qwjQ>C>ey}1UTjIDsN%-e82 zM?$}BNlUDz;N~XPl=n6EW>9^e^=7GY)FkSw96$r08XT?5J}~Dm+pwiPGuubh(h^jT>^E=z zTsXz+s7LbfXyqjnE;`w3NniIv*6NFFV>g?tDA@wS*=?L~ zw-TxQZc2z+iv(|Q!f&ka@=#3fXJO2#iYRm6k1DkNf5BwcS>YRGWTNAN%)I4E1%m_Q zlb%^xgfhZB*v}!ucYJ>P-Yo~N$OUp9&{PN+p#X@cHF|C+QePsa4fzbDf+ePT%(9!y z1Z)U6LOeL-rOHF-MzkIj^s8)6Y|@_FC`zo~S;0hq?sPpXYKc z(U?)pXb#Xk?HHv(({>+q@;Mj>pFJ8w?nRs(`X7Whi{F2}bLh|SHwJx|b!MYTzT);t zG0gA=Xnu*``yFiWUoIlJudy2JUjfBT9i^oa;S*=rB|YaxGnV;vV1pEjE_VMnK185o z*?)PS4^uW(D`%XT$WSN{AX785>!P|lLgVER4R!5h>NthqedHMY&1O>_srSGW{Bm+ zQjYYFLQ@*RF8S@HV?{oJ(_hSv1PK6}kMTT7wu}`%tda6*6hF?o#+OiZ{L~yzf?=;&@?``CfOb7w7xE#YlkKcj|C-r)?Qu7>b$#JyECTK!tPj zLBO+tj1WjR#5s8x7m#{KOVoYaN5+pn+6 zEkeHlp@!_rQaY3&8D^}wCX>i{D)yeR=!3e88g--kxrk;FCaUxI9Wy>UaD#+w5(P&U z7XX0y847C1Xa?F|490G&J=E{|mckU32ZQQx0!Q0BF71#IIGGY|b7T>0EqO`db-`=( zN4Mc_2mlcHAqXIwNEbG8kIB8# zMUfFD)k-_tV1O)963Fy_uht;FYx4%09QgEh??B)Ua}r_X=el83XamW|ay||%0>0*( z@l^-Qf5YGk#59OAdIj3sMRhv=%K&Zgfo%dLtO9vZkp77vs@$14G*C?t0@ky>?A?$z zx<+#Zz(*0&6OG!H=jb2Q^h3UAJ#)j6ndX7lX%inJSv~=7JFD^k*iUVickH@;yyV}n zYk+q6^v*4o!*8SR^@t5Ow6sKov5|8;@ZduHU*()IH+M6IL1&!WG>_37cWVlS9hLG3 zAj_r^!;Fe-Z@n3rnr~?ZceiVJ$$#`Y#E5zomCK1PmJOa~WHC281rD2QGVG%H&Z+My zcp34(%@5N-fb11ocmqLYc#*AL`hY!YkF2TT^X|@+PxfPkrNgTmcbjyx#4Ie*`9-PR z)w&v`iI#ei`RB8xY_6VAsq42XxPk!-DZ?oo(4a8q_y6*drUsG{cA_TsNDOD}X88HD zu+B-G*A;P}eqJI%GtpElH-u|LWZgk)s2Sup=!;*==uqQ*i5Qd>&Y>C|jv38gfme60 zZuD@lv(`8+abl}XZ=m+$e69COTEYXENz))07NjJzbDZ!r!u8NY0fh!D-2$203RJgB z06V0rj;LMU_Hz=^q-tP8oh2^bxd|?g+3hKR9i2A<26`YE#`Em8E z0KlPOQ^2r%GtUHEz4A1|`>N;Kuptn8(3(FK1~gAOKXuZX^%RAHYdjdM?2`D$dT?X? zk{Dy`cG;yb2>7qo!aXHX2D)3T+!5nbAjh4h->gj&b+@&rGplnZ5?3GDECv8&Yn^11 z&1FoHn*yxjwt6J8i**8!+*0r?N36APDxV++*(ApKfzBdghrZd4OZfvC>ZP)Js5-;| zP>0S0d^+N)EMs=onDERxoBX7V1aympj%mxPH(N5k6-zhJcD_{FJXNMp+Hh9p|L03dYk@K>;VcJ8RE91Zl98U+TnAfd6SC3Mc$MPuilZUA zDghOGsXKk$bK)HxJcD#ANnc9wQ-|pLVCy9p1Oz73k(1Zm~exc4Oynw>WZHXOgRsAskSPeb4=&k=%tlpy$H)jYyQ- zhY82Qw+hPwF$btj_A77B=Qr)35!srwF_xJAal`8r^k=>q2=$$V>8$!`Z;Jc*l-`$8 zF^E9!amcY?f^6dtcUf80mh`Y(9Ng!(S7dXF(jbICma5`sMs(I$g2jYF+Sj=;Vz_}+ zH^Z-N+Z8FyI02xME9;GW%m>Zytk#P0i9D*!-=~UBH(5#8M8vTHBtY@0de9Th@dmdf zftkymKclSSrb{57J*6c^HUyr>UaWdQncs%PH+LZ8XbXFBP<|p}P?888EX?-;CswCl z8?P}rPcsSWtryxhGuMkJvVQS7q04kYpdvWP!Ouw3e>h^ z2235Z#@*C=8XfswyFdvoan(+bm718fv^x9imi_|DWMliYw0g$jw8#K%}iA~nA z^Vj?O%O9TL`V#?Yko<*`>7SsYJF|`iRhM|;i1s%OUZ17$*7{7OAkfB;; zY1y!!j=Ad8qQi4UQ$S*cI{OnXh@(;+;pk9@RlfNzx_--ZjCXt51!} z9%3X}D%%UZ$`EM4bQ+Ir1OPTW-Nkx4BKz|<&d1+ck!%?U4KX!k05GgmnO%t|>|Tek zp@^cC_p?cTb)YO0uuN`u)Q;eSj}P9t;_cMg_Y!T+PH0pftmU zYVax`{#o?!{iGY5_NNeS#lg*u<8u*p0NB>rFvSp4nQq2ncsmd)oMVaAKg%Zc3jzqs zf*_7yNf-zWwH`xN&AcJJI_CE!g=taj$(ARbtI=-U$ONo_ zgqbq&Lz;RI%mVzKAJ<)o1SH0AStu;7QX2hYc}Via?{je`*(Xg^1SIws<=A(tgl<@N z(OO*PMy{YVl)c1)s_i)}5E6+XFODU-{;UT93)6Njj^Nut)wLFrd%Zc&{z%jRmhhe< zTFr5NN`{>dEGu*C&@tX(sf&Ef)=oc3nJ$&sg6W^Gl!~WmP1J2R&qy7RruTW^MW>lr zoEen&{ypS{Jr!Z=B3y2*xedyxoT`QkYhA;o&C!HKzeifC;M&TG0=bAdKyKZHZ}Q+& zADO|xi!eHa^{oiz!Llh12#^+T!}$7;Yo*DuHccatsZVfZ>+={X8cU@1BUySg%%}-K zfD{oI^>1|F4*-T~5GyjiX~sAEe4A3Bp+q{FlX$9VBb(G- z`|AgL2vAsL70_#Rbjz8PPEqf2J-aXD)@v%aIY6krY_xYPmZ3JeYv@COJijW1AJrcY z6{HO@B^W;AChktplbtX*&%kWc8Rz_4&h%0_lco9@PyjXZ3(Ot!Sqtf5uyL~SPxNOU z=&ZC{e9ZM`LsJJ?gBs=&U(Qr&Yap-!F3MPvo}Rn}Y;0_1XxL0_L7Jb_HRek!XWs2# z;CLMgC=68M0!(v&0BLcI7SMtsmSzDvzD=9A_eI^0rmX9qR@)?}fUdg1R801(!BH*UW1QJWIji6xtt zgYa?t{Ago?j^JxU!-QN#J3$dg%8QJmmXLBTv#3(jx80teo-#b5qFI}x2;DohNUx6c(G+Mj$CGA$NS+FvY_6ofarMWk)nf-u7Mj``2e60|{VWOMadw*DV}r zvF}?O6C->j)ds%&+*{8YCHn^gj&_#r_SIMDh}ru%qLR@GHAW$h$bg!e zc@`=SA#sJ-t|16OAOtKlO0Q}u7|Q$qSGHJBlI$P!6t7`qn#b0W)jsnLv#j(JCnWuQbNJy|+KN|!$fr?etqn2)4b5J-yP=DwSGc85Ul)c;m^w0j)M+a)lB_>jJho#E^6Ouk=dLbupR;rkasIZ{mt*fi6 zmlt1>A{#sVDIf%7SYHHR5PXeFBFdAt3dbQgU^1G!{?RNDZI1=yYP^w)LVo7m=Hgr* z9=R}q;XkCB{L$c=*rw&CHY6Qlx7Y?VayB{SNURz57}sl*NT4M}tQ#3KcN19Jvlyy13cO!muwm2(5$po{*pBU*0XxlP$>Vc^V z!UnR236p$Ij=U%c$J*v(askjYd9Dz6dUouvq^$+=ro>tCG}8MhYQZ-6DOzqOlBvG&Vr`l55F4nz zTTPEm4ggyRX{BZ94C$6Q*0SnUg9K*|HZzD2-3L5&C$%T#xMLXh`{B`@il{n>f0kbZ zp>}?q5p>NFZefd!!EJ~GHSEjj(!Ez~zFE+~_EO7Rve| zgdO5hm^^80(SanxUFu4{iHtYJvUu)7Sx~wnZ8-Vk_w9S3EbuZwoFpm_id=FdM~K}B zKk-|HIzXM2ZXDR+X)k0bZ#cv`Hk_vVKYFBBbD|&Gtpwq@n?jfmKDh#y2juxQk&Ya#Dui zwt?NMdGG*==Y?w87w0&!c|?!^d?fepI?3&yxuebB1QX}EP6Cyz-QT_wb$<0Q3d=L3aHI)3(Lf`BHGV{PszJ0PlLo6~T2LTVZ zGsTQ!hin9a^9FK)0I>K^#1kJmy(l6fowCja6G@^3 z5|qu;D3*HhZ=BfdC{ea%kFOE!1SZGXCinDUa{|GboPg=*3ww61$|75^$QG5b+3)ck z$C4?n20SHoqVY3b*~}E%lO7b>C=>wVynvy%0xIf>RH|y!#5)z-xJJ<1rUfoWbFNgi zpVh>CaeCL9=NcVnE4TFM-_xJJQ>%jF+|}!^Cf8%tcahxOAIl*o2aq@@1>mLIhS_oZ z&mRXsT90JE0xepqD22>;RigUML(PsiL(Tfkx!`rW9k29xQ2!@1>Ipej!}w3J+0#&R z0Uc6IdY|1qoSqdi$e=MR%Qa-$Pc%lq|7mY;)(7HHaEIw zY1D)C9tzSa$pzB4JwHw+=&&Z@+M2A(pn`$_ovr~k6*9sR^3HV1Qf>GUC-$|)_Ql8G z(d0lkX8Ue7D5U>QTb|D(Wg@MmwIaONT4hE?E^R3W`l6;vo9pWTXB|u?FIlH~pq97* zlWfLU*wPL9la&VXHGv3f+PtLd-_}Tw{#pY7jlJRbMs+a_E$DgdXazB*E7PAk80mF< zPKYLtvjqS|Q=t1-YSGI$LQ7@lgVtCJ?%axgob~k(eGC`Z$He>Yrqfw3xxH_QGg?ia zm^A3=psP`eW!2VTi;hy}kOBwde+GWQic-C}6kSiEHY=K(y?e5Pt8Hz@&kh@g4x+5) zrOEi2@-!@&08|QKgGXlfrx(= z+gl4GmP6wmR$3POiOL8or$$2Q*HVR_yFwD_fd8bU7SB36Jg*nX0wvFG*cD8eaOGj6 z(L6d%{>d*IFP+i`P>^$xsc0QAq2ZZVV>>|`7nVMymUrJ)DB%scW_W;_;Low;T~>Z?M7IrfP>>-4Zi~$p--L7x z7x2gNK1j@YmY5*`CGW7>^E4{)WoYQeFd{|edaO<>s@wVBXg}GKBy=za0w)kb$e#o@ zzS$r4G>UbW4QHvId8Lvt=Yt<_MwV<@i#3EL0`UldCHY<5&a-KdX_P)xnFR<`LxAA6h5-RWQju*q&Nz8gt5gk< z4mO}h+Za!oZP`{_Ru=Bi@=6*0oOZ)jgpF!y(3~6v$|KMr4+90?^F^JXo(xZni#2$v_gD0z3Tye?a2s}l5G$v5J<)BYSv)FG5tyb<&+j@ zU+`&&WwG)Pk7{&oRMraXY@K>klvSJ!vgvlKPu&J z*l!X5kh@`lW_(=P-#Xrz+dv0f^5KW!qcv5X+;ooDu@k+tIaV-W@*ny+8SQfGLr%!f z0f2#uhG;>Se{>vSxF2YU79uaYpn^i0WeYMCX5s^yvPiKxvVVN(lv_483=_cG>Hh%2)I%_w5jS`v<3SK{FJokC@pIv z%Ho&)UD7gF?PsD^0ix{alF0U>)F8Ed7bIx+0dfKLYUudNW>CfT;$?>#YIaE*FUpvI zb#DyXw&0F9(Luf!NQ!?Y#r_mdcSrhJ>Qf9e^e=ScHN=dX=m`F3Gf0st0{chb%WSne zc`T=)kz6ST9BDhB6MSO62FJXi}=w7|DC6f$c233;qqBP&W~$oZ^O06 z_Dg(AqU`f-c-$#3rHG9L0g`mxyuFk^)=cBj+F|VW>syvPbe;-&@P0$4P)B4)my3E7 zTbip_Dv0@yWJ&9wd{5fm@Kj4H39Dyv7YUH?1qIyOb3T%~)$~8<`AbFYt}w#)$+5sD zli&|X_kI9I3C-JN5(??pwd6^7G(>vd4w7ihU3{{EVk$KR_P~U}(UErWRY7oRs$CSH zhHsx!UbO-ljX0A;pWLnIt`zD9sW|GKWFQq+A!CDo~ ziVxD~SU?`4p^uC%eA5xCK9d@l2;Btb}607XXRFJ-sw3pL|Gu5CV!lv*&6hJcBE-~q+U!P2{^E>&I=t;e2 z#6ykZOG|Q#g3dznrS1bKmi7q@HG}qYDW9E!lGo`U7Rq>C1y%;1lj}E141fs2PJ7xU)v2q?|g1;5fKU< zNC$e~z9fCq1XY0`;=9Wg4;L~wa~IlE&2LlZtAQMh_NA{(J~@$YY%`cX_+kgo&T zN66_ilhR7iy~2LZY}PF|?n;I0B)FY2d0y+;-;WFs2?17ks$?`{y(dr|UgDYR*IMP z3Pn3^#Cy>(v&$i$)z8xWVLlUco!9Z+EVx63%@3TO0kT}dX3POD_0+J=dvI-fI$7D#9&|aoHo(fjE zznx~jq^_0i7omj8z-DvtPr!xBOq(#P!qiVqkZEO50`5b@MK911X*K$_uxK@yIckZF zCh9yBq)oKlU&5V|J%l=%o1u$EdMVE=selqXCJN zgs^twF7mHE-PA)~s%MCCaX}1Ts?{CgQTgqTn2T5dwHmR(%>^YO?mk=zMi+JVHFmSckc3DD0U+LJ zc9*4pE7<3nY2%vu=ZkInUMvC)5g;5}-_Vci^jL2aBs%NMGNAM|b$!z6u9s#B>XA^a#|3O*PjCc^a#S#!5xqe_XYeS#av z3e(Zy=jXRiPgX1p4GUx8w*FGx;;TyJ=4mwks+96{9&CQl3m)yU(vp&2g)RX(Exm1;@%X|9}&C>l(XPO84e&uGMmW!Pg$Tc^k9AXZvLn7B| z-Dr3oDkH%j`8lbA!In(U-TmzE-)6_9&CSiq%1ZRWm!t?U;(a#FjPxC!eg1t`o3QI^ z%$&3VR&^;hUz3nNJ`p9gwFHwK(9|Ca-xbwKB@LCi38p*{rC%;z6QOShp5V3bq{Qem=$4m)r7!8qN=skPomfHfrEtzdk*p}^e@z)1E>Oqc z=J%gmd9%;6FD&czXzL-Qkq{i`nzAdKY*q`@HmG12)61q$;h%&N71?U*=y0&I*6{F{ zp$hl|nQv!?+u+;97&>wCi@G<>gcV7SOZy)B(+yCssO~eMM49361I^GBIG%qXwA1r(X=wP%XfVJ!Cye*tTVW+HBEu{2QsP!;C{|gIj2unNt1Kb5=`lp_=Bg$VvSvlmi zXZ82DLv(3h;~tt`h(O3Jm`U(!BdIjB|7<*IHotsV3%nrSbj;qhJo>Qn4|7%3@TA0I ze{-)<2;vz~x+C+CV}}h9^;M>cWC;vdpa>U`p#0*|f7rw-3O_-ItGb=TX}QK3Y9-Do zzSvE>yDL4H=I=62eSsNnb3e@RR`05~tYf;QvT)kB>Us3w*9Z^=6$r>T&0r6NQ z&t2=mXJ)^kvpPiJblykLYHnDLBG&4c--TQiG?l*lM&wf{3bF~oGhb>9K_?+dE3#ek zI(+%tAoCr6z~RvWNTp1wAG|X+DQpLquL1^L`|zM-Y^gE9;EY^^LZfFx5gN-B z$)L9R66(~N3-YDr_FqYp&YR%M5_Y^2_r_U8GziaDEM%H0A5pTmY>E!+FOW4|YV1#_ zIU_}|PZ&C50ag8~*7-|+)>oGmxZCAjt$@eE)=KaC~B(O)qxOUMN_(Ef~_}V825ok)8%$6DtT9-A~1l|AmyL~dm4sLs7SGJEWHjmg$1-)Gwz2t39$taD5i`z#D9Ev$1aQ$A zZ)bg=>I)UBoPY23iK^`I^p(_PXY2d6MYp+nr+>G*0fX1y#U0bxyv4DcwNGwr$)7<< z{WRF%Av9_r^cQtlfVqP8V>#q&$uEczbk7idA?Py+?C4OO{ssB8NC$l!oO8EC%BNSv z^=bL&BjRJDdPTN%K}HX+DQWSDk-UrJSM4k1_B9*KEfHk8CDRSV4 zKjR4rGr#j`3!zBT5nHc^HGO~ z0(xA`;L;;io6}@h`-+79DMVvC7Sv-?it2eX=_hYWzgR?JJ13F>?LA;V1vW;>J$9W~ z(_IYIz*)e+3U(DKw93}6O5yy7;VvmD8sX0C%<8koVk8{f0hsE7u6eG^$yT*A$@l@# zaWKmhAVZZrcyv4XMb5%VwpNEpCDKyC?fs_$oAEs7=Fin7yK2-JP#w^(F2-*Q$?ANj|1KdnxI{H^C1Dn6eDgdNF8`4&q@_*- zufs>O7Eu))e~TAq|CIc#zSoY$kxFzoEdx{yb2B_sl7YB*(XG!M1_~|naD#URQMUQ% zohY}X;OI^0TkxVu#$tAEGl2CMkSe^{5~RX2EI$tG{F5sV>16j~hr|Dx{3=DFgc{by zzx)eO@l)1Oo?fP3S7E-xu%k1-8uR>Vb4$#RFpTG>5dG2~+F|@u627|?H(6N|hLObm z2S-LqX)}x{$&w)ln?6c?L@uAn$opC-m10bT%b0}xoDcxasoygjYvZ4`G+wEi%?id?_coK8QIeHIXl#$ECtW zQHP2GzshzkH}?d*tU90rZ4o5|zeQa8z92I`c7G^cN9ih6Eaf7O-Da-2g!eiuzv(ag zA|<8lwc}I9W+CVss$#sEcOc{z71*ecAf{jR_9&+p&&i-W1ToQbHbq{fkKXDMwYNm+ zyT6^x?RxTz(Xk%W4?sX^8B4>VdAJQH@wknR(v6@LMAOZv)nV@v(bG~I$gZWZj{>g zEuO2k>vM5kMyW+kz9I?s$f|ZwLmmjtnUv)DN8fJ7thec%H3WJE8F{m`+@KH zSm(8!XSUDj;1kvRzr)4ilXvwTD<{JyFc?k_R6)!Y3D~fy`fqOxFTHWZ31L$Il53?{ z20P4QBd(cy&DBhZ5FKsEFcOCVZ7SD|J-Z*5I`LpwS!LQ{-+wsWmqKue^)0x?769bPAg|3}wb zheg$fU!x!@3Q9>x3n(2b-72Nh-6AO6Lk_hqx}+OkKtQ@X20^++nxSFn?wmOf@B5wa z_nmW{v;R=83!Q6b&$I7X_gd?w{kFcAcRTE#2k3L4d| zwKdDVX&uh?Uk;2BKY>cOWAOF?ja3kxRC6AZw3j*C}Vm~Hd6|1U;%Q2DkQbblXn4+t;$xs7ML0@7Z(9MSm=)@Gc% zd+9fYB_C?SlyZguBxOl^}=BvoG~PDosZlmf54Err##Zl*8A<1 zJWkib^d2+>KZw0&2`gL3Ko5_Jl+VnBL*%lM+^#Mdd;IL|;QeOC#&xodXRi#hIv`X~ z;Nf>>I;P)$a}%Y&YJP(~>s{rqU%w(Ei2FYR8QR&|nV+9uKb4Ev8V~Aex5j_0P>!SH z{5(A%el;{yR9i_3@IM=H77+&xsH7y%h15Q&BV)wVdzs%Co05MnOxnx(%lbgyQ^cOh zFebNg85rHgdWlVE6Gr+)47Z~#Qbp-|VVVQm#FjISTx=UVtcx|w?BF7zRQ2C)nbEg8 zKd>$4mCXzEZ`fGS3cR7FMd^<>l$=FKr6P$DkiZ@y=1YJAZ0kUQoF(CZ?qgOp{t9YW=ImWP_2IzIAetyOp@x8COC0ZN!^9sqA64G!?`QrZD;sO)mbLaLf6~{r zvIv{e@jqRa55j^bMg!f_5FAT{q%t7)q_JJLFQnlPat_IJp-yz67j+MSAi>1e`OrJ9 zhe|AlLAo%5E)Nl6@QaA*sR@|_>j5rG;R}qJ)h;_H$9}5jnW$(_*lQr7*4EY*qhonP z{D?eQbIrLzF}&&!zs_oSTThdr%=V&-C5`XiVrK-Cb^Z{QpQ_RI#S@n;Bi8$%ZOz%k z)ioBf)k_r}hhEfL3RsJU#!hFOCSS~*8jVU5Wq?`@n@)wT_>QsmQ!8rS(;-KiiG<$M zY^OmXzV~Wkz4vG0>l}R0lOw}(q2}lr`rnC(`JNs*N-4b?GI^fWA1Xy}yjS_5r9jH} z&DX^7i^_slEcbV98b@Ls@?VU1{9gz^hz|HFDk0&s*baq$eBKo%4`jmNYX8n3^Vacl zR6nQc_Xs62t^6yTMTIO+Aeu_vG9Xv;yf4mBPY5l7@%#K^{N=bP&u(LCUUw&tL2YE&Rh^S~o zZF(aRF44kAx#O$mLBRXzHJubXP5NAJZ|H52fR_)zhxP1Hsq#R@i6M z@p335IT#j}W@j@S{}NEK)7$pyZ;K5w4>DZU|2cW9Sr*lij%7sBKeg}zGv#}5Krzr~ z*f7UsYBw~pxR*HXX??t%KV2_bT9`DtUUhfuSulL*VLZzwO~<^znn^HDxpadxB%PgG zRiT?=I6N$tyQU~jI{<$_H(z{PxO$B(anuLnB-4at!-cm`bZZV6x=0UCOz2)Btk`2r zM4yOV12kE}i|70ddXMZL^Bu{gz!*h@m${c~r>ZA4!YV9Y61^ax`eSBgaR2^&0CDX` za1x#`KOx{5@Gh17?aH+DB25%>vjgrhnj=>iCxQY3YQM!OXr%zz8Ow{R3f=n=iSy>8aI9pYz7~B^HLde=tN^Rqa@eH?kO#(Nj_;BqTuddMDl|Gx=*C zm^g&{QF&VTUK;WYzj)neP@e6MTHDGnc<;o6|EkO1zaV>B@=KK?JgY0%3nlV&pl~m7 z-vX<*_>mP;epowkH1GAdt;1IYB4c|;$JxQm=qNeWVOH`GW>6K4eRmGn@^rMf z1FMMR&55DWQApNz+OX8DcFkSP?x8G5i~0FI+ZB#-_jrQ7+TPTVrMA0$`*vM@J%>7W z(`f<%R*NaeR5_sbxwOZh=DBVDeQ;Mi;?Kg}k*9xohwPrOadUGTG%oNUcyb3L@OL1$ zzHM=FNsRmm(oF>|`dq5$L#+BI-me8WbXMj0_=MnS1Bjd0elfMN5?Lo)MNda3At}aK z1sfh4tFErTc=->p3u5=l2gy_P!d$2(X3gDP`(&UgKHx8rD}%T$VOdxu63m$9lEyF2C?^F~GW1#d#V?l1s_txI~ldqD{*jY=QN~#oJi%ajG+_;jR>%iRQ?w{c{ z`~&UcAGht@KV*K)(F%3<4HgB}z}u#&mLZ@K9voz#BC5${xh@)KAf1M1-%(?)olj^y zTB-9VCu<~s-q}gRD*&a93JmeoFSIf3{<2&5=V0AsD;A1)S&Wq$}mpaX{qsZur$Ets@ zz=4*Rz~iF<)OOHJE%C5yIY7Iq9)QB&2GU|B(be}7R?QQ=h~ zcn{#2Ub%pLq@-HWR~NzMCanTdl}(^$0i-%!=hx9ve(=3(T# z6kbFFIsQ>K4*?~Gp{5!S=QY7#Q< zXI43kbi&Rv+Ki9Iv@4Zv1-Lu$oXJvBQd(MCzIjX{UE%)W{rYg=L@>oNx1q-UMzf3l z$!X8Tuo=3YNoI=B>&zsJrQmB|_=tvf%teX|ZZJ(|_F4$epvu8bD;4f|AJ@s-yAj$N zRA;h#_iv#jUk`tMrx;>VDr9K}pGh)*yrMp!F-8m?~RV zm4s@L(H~_{sppnPd&q}UYg|J8l;b48{>pW+y>Gr9{O#iGycDBDjOS2g3tpc&K_M|4 zzWRqDj9dV@71*sv(Ip3C;)-8PJ~OhH=O+9|VAf@z2y-c-r+jdC6zl9mj|{uZ?e=%b!;-V zZmvA>eWWi8anJbClxeU(iQ|!O)TnsiWN7H46k&m!u^H%@%$xkzWDd{d{fp|5w<%)q zNaZvgPS?ZL!H^dFT8`%WBG2=~HBc;QwdCjLb1>XG%|NwyVvNs+@1i}B@zviS;;OhZypw&Iuw;DGUq4Pu)%iLU45voEN+Sv$QNEl zgQg&P>`fm-NM0WG3{be&*x2qh2R^|JHJ(<*H56>L5iYyjE`9gtLK0RUa!DhQca|-~LfUWzJT485Niz3w7rHWbQD;EVLtR z=PYz~W*1s$xq#4)=SxGEM-iB_6|v65F;Cj9?DUpV_e{j!!^6YQ&d%ZC=uVOn?;`~+s>x%oKmb-}x zHgK(HIDQC1FeN219+H-p7Bq+Z0LGspXE)FAh7!BoGIzie1=z`U%PLhGGjQ?#le2>r zxB(o4zUu4iOFArekP++=?@gg-xM4WNhqlIkyGs2N1mvwsUC5nbtTZ^x%Efbf{R71( zK+PeZg@MNnxb&rWBfn^|!-mY!$Hnfm_6^p^dCAK(-FD}(0<0ZTrCE&6#lj0oh1LLEc8A515#S;<$T_>g)La?1YA@Sy}Qj&Tu}NZEtU{s;UBi@(Wdqoy$uDBdqC7 zpRDeCpE5HRrjVUZveabZkFdB0u;S%uYJcLFh_c@P1m_FudoojF@R~X5>({RzK76=T zE#tHXhZ9_s#a^Xs;M3O)LkWqAR5UcnDJdw#=*S2lliR}W=RLNY^R{g)=D%)HsO$3wb=IHE+)JH!b9aT!o#6s{r_u3!8ut46>T>5PBG*qI&ICG!p zOzq>LTa*&(&1Nrsk+28raHT9YVXY$~ENy2j8>DO4z6Z=viVtDR6ON@fI!62OVSH-p zGJ=^T5P&=Uf`aCf>p{B054MIhMB3D5R(sk+WK=04HH+Z!7PV#QTet_ObJ z-3oRd=)Y}EZkPPTY>BQ&qsz+5FN==q*fXF|TAsa4hh~>C^p;sePf+Z*qj=cYl_mBw zXVGTR5bw@tmQB6*GxT8^nizAME_mg56lT~)xo7vTD~>S*AH{cGkHUU>(U`s%ZyMq? zyYfMMboo67F2(Jm+X%hr-2liN4&4OKoXXS_dwU#R0qSdNJQHYrrl+URiekGADUHUC znB>ArV9RSmIl(W5)oF@Ab%1^Lc56r;0+~%--XbmgzEu@HJ^cy;5cz^H9XUDKz4_1# zI6vNRT?NrIIav(Er`sYO$u1^Caq_^%>NZ7aW;xXMDKBqiWCVtqJrHv}Qah8^&6;|2 zq4n_vS=FkAdTxHcsK?=I0P$LL~zIQN17%&v;2r+<204rVWfH%D2ItMJG_>~g8V z-Y!?t`Q!588^**fQ6}8xHljW9f0pFcihrYe;>ctsK)BbXtFMqL>}Ndx9&UNfd!2vb zM`#r0<2`F0x_7iu3N3Q|c&^T1w&R~7HgKR7Lu_WG(%CpirDm5D3aaz^y1IqEQ!~tv z!G$TR7le04jsEERhF9_i+E!@X zZm$Kka39V2J-=8wGTxSud^|WD-5nI2-s<>5$GPGR$O#~%U45v(w^FiDsc)-9(s@Kd zZf?X#FM0u`{xNu za*2tFb#-<7TSBac0$svpnH|^;ti6jS#qlXnl&I<3*Mw=%!2dSKW6028KN|lKZW~y| z^$&@Wv$XX(i-^Y|E8#`57`*JKpSQr>)~D+m*B59obB5MHIdY~@!O2l%jXzerXJk!C zZ^#BrdO6b2zX9$ZMMYn~pP;<$F=FlUZht@B9tt*1OYq$*%{^E##l#t(t*9~~Vz?K1Vd{g_&>GuZQlj|p$$i6{SobI0`}by@!#t=*UlO0(JEd=BAPNARL4DHQLGvU0eoE(OoK&7B?P zEVZnxWL@E{AxhjGVG?M0mbZRA`}8{jcwh+$4|p{-uUp9NZSH2~RK^DVFgo#WjxU1U z!pnCV-|=>~HZq>~)!fkDMzE*1G8!+_Vrf(32_iXyT7=mK-CiUW+v5LJ2@WHbnHZLl zgL`JQiEOIReJD*&X9%9Euth3ib``D3l*N43HDqtOGbYwML&m$*ge&OcS@%GEn+f?Jq4I+K?kvoait?dJR~HnQa>5!(+|D|u_1jv}r=_cvC7Q~-fVPA1J41hO4{ zeSJY5NeK}V5di_ShwY$#dw(dfo4mlz4gLE1nc;+Ov4kY8a|2=mN2}eiWrASagW^Q) zuu4T!^B$Dv=+I-OWAadkZzyv~p1NY<=l6=rN=iRRkT^<9OPxgw>$($AlM=LgPW<+` z2TCub`LoqNupPxx2?lVX-!e+&YFIfqI5;~;OXm0)JO6uWz%t&B9ku!s9t6#Swr&Sl z^Ima$5x%`lM;Sr1WZj?T8B}nWEq#EBq8dVytp91CUmC(pC8`Aetg1TJ9q`c7K*r9? z^idbv>XWnZ(|5P6F;ch>6348SDE|WL6L9=YEhzOtKRdxZJ{2?{-$($HL>R8`gqXhKAIoD=uOX!w!e8lNq@#wM+S|_-{eK zudkn!%>Pec95)&EV@UGHSJt054JcK47OK-`U3|oTn6gg^`4ANMnw*i>mPG`M@EMn@ z_Fo?>koV?W{V&eXh1A~(bSIepk?>Y`iTVkR((Bd8JhfyeQ^@+VvE-(eFYdxlSpCgp z?!R7ezFR|6v$UP;T4c>8|dtfwojFa|}FhSxKWX)$L~8PLrJO21m7dTxc>r+Dz-!NyosRvFP8k)WEY zrIpP{MrJqVFSh3zU{nF z*mpZ}9DfEben1{gYw^trow1Qt>HiS~*`+NTEJw<(uuNygjJWxeUnWE&ir<8<3Ca-Y z>Un{qW^DYj0Ral(m{IKbU`(~sic(Km(Yr>EqjgPW)fj?NXNXV2ZNki~A{6kw|EyR$ zJ69kOX(!DfaMqX0(kh?J3wOTMUIU&Sc)kHG*2viNXIyS5$04nV!``0YI3)_~dr(rO zxo((bpIx|Fo7f4H;Q?oc(2!+pU4CVR)v-Hl7s=cl`?_HJ&1 zc8E&T+upM)*2RDmX*#Jbx-f^1&3zk^punHS#mc9NwZO%q>Q&M1{b>;nQ_rLD_^VEkepydn>4hAx|3{v2Z+yGuk zWstgamk13|RDh@3AZNal{X#{2PDx0pg`w~^vK*_ThqizN5q^{%^xXO$ji7~5rjqov zt1d6EaQkcOd|UY}PL8%|Z^j3-iDDUe@0_I{9#4!PD2*(+B4SAA_Hg z<1FSUM|R!tJz4CHy97yF?%ls{eCQ@lAfRn0lV9HXFfWhlT%~7{2G-eHSio2`(JW}< zgfn;TX6+^BHHQPyf2YSJq@5*zky+UGt69d3vBqr|Kv0aJbup(}sf8)JRPkF_R(Jd_9Ls&OU;@XUe{6~V_Ac$nmM6z(;CS`C z0MV#aSX^w*Qwv_Q`R_s&zG%lve+qJ!?AMd-%gf73$a?IQPU~9lm9>ro|=`yR`X|^S9K4TwrS{vVbTiNG{UeS&t+Nwh67sJ zhrd8S2Gp-HTRMOvI(RrEQu(B)e;l0*yt+Q;sZ^#9>%5gxDEtdCR@MMNV|)tkkdP2g zZf-g;cZVx&emPrYWNea_CO_#m?4^5t%PFJ5zenm63v!pR#%d6s#j446!zDhen>pw< zdP{KVnH$Y)IhnPx{0ad`Kwa8sq7+fL{)2}8ex(rfUlFRqjL#u=bljyB`I5oR+>z#) z1_>30^E1}z-z<50%xOp9s!OrwG(c@Deg9tbsU&6v18m11T+eYRgWHM>YGLThGq=VKL&S+EBJLsw zmFl^zd*lqt(3wdrp$-`LEMLO}?8&r)%D1G@JKYIcvl8BO&DgC^_k(;A24xWK!=Svc z#l>D)DH<96mW}mlhbhLBy!hIoA99Z;3;-1y_;_X^PGH!Dolx`AQEIE8|I#Y?zKxaD zLcWNkB<65PnO?}@eJk}ouN5*jXo}A~L2Bg|ZgT+*a}&9(PdZ#650oL_jMMJl{RHsx zv~4`H_uE2S?)^A8gb=^OG>wtgV8!u8n!NOwtgJb;zTOG_zJ_Lx4mMPjKdS@(0iLe; zdEy<063OjbBJj1w1d<|4pz zKK&cZ-OI~Ba|D;peXa^=$CPm$=P*f#vm|Ao{V0Hc$TLSZ?ErKSv%rI9B&HR0-7M{( z0|@jbQ@9uma|N9gpLd6gA3u~sK&SptXXe|kkNbu8-Wz}Z{4tj}NYF-{j|ijvl*NyR z^Na@o;$fMu-UBq9GCf&zKP{@oK06W}$Qo3Z>0z`!mq2+XT~Y_1ta`#A*ca7U&=RToJ@Tma8xbGHi1@$*q{PoM3R+@6?@{~1NhFye zp@E<<->PUB72BCZ39+^1G`dXN;A%4m<~2cEeCn&?6ubhDii(=jhHXt&0+=K=Ha0sO zVxCnh&5N~4)U@5Aj>)A2)$o&9AO->OAo#tBg~0Nlk>b$t&TRPn0gWaW%IVw6GvO9B z&6o!Ts6` z;S%SpTpNk;*=u#%M;l|Fo}T3pV!s-3Wy|Q%#_^8fn+RyZ>@VBx8#WAgJTCV-pgjuc zS%(!J#n0ebiWP%9Jqb$-3MD_;B%(A#{yphW#wE7kGk`PzwEy(u!0T*mDW1}P$m8if zDFy6g5f>|fPNBqaJ$?4<7v8v+^6}x}()eD)v(Y}7CLz6q*V#UViin6PHy;3>ms}0I z5+E@$p>eHxXKl4O!PZn_70kz8B`a}CIfBSSo){UqhsV11Ew2SHV^g|!eVY%ml~XK4 zzy^-tKj|ADC-_FskH7Bl5X|Tt@h_$rPD@^xgz0bBEQWP;b%CMK+S(fUp{oms1FTuv zZwxSH)Lr317TzbC?UD9iuDWeSi+*;CP{XU8Z(jBc6fcp}%q%M_E7aWd#Jlo?9H_7tCVYd1abz=7e949FyYQ=a->yeSm+5F#QBz5jtE{;gFx@k`SdXcz6GZy1i%*Vi9tLcP^b>p`@YW^_E;M*-J; zmZ+}jdN+Gb?ZMa{MW;VKIb5EeCM&NjCb=rG-@?xlOVwwhOB(|r zZlXaDTx4;8o~}Pl^15pU(deta`_G+5Oo{u4M@gA8(@v}R?SG)mq{3b&B_)Bq4e{|0 zX=xRiqnvV-b{nakU4f3H%0>y?ML@Vv?Gn8C(gA%5r@NXS?x$cc?l*s@_?ua237w&O zPye+KRsM^fbi90Vioe#=Q-dAQ7y^BC5b@?pjt;)GIZ-Zoq%K)$J;uE^7Y=_)>J*pREOwJOj))SKfhg58PAGlu3G> zK7Av80t|gXiAOW=(fO+Ffz}a=bS&+{b+FCj-l3k^z5Oh;;)$%$$CS2@Jc2Ui^hC6A z#*Elcpes#M_$hDve+!&^1AsQfd)7!t=X+cfwI4%AYoPRvl)oBqb*we#I*`&ne*E?| z4WLjU)RPL`1jQHP>KHkYEL;w5z{2l9Kw+RTXLiIvWw#L(Z^i}|iE$eg{Fq~`cbg*S zvN!Le`zx2$9`Q77*`z(b+jNjvVi`K4hdZa+kB0L9$n!M8zw!|gKSl9uUJevL*xsvk zS}_@q~u%5BF|#KW_}ntHZW z*R@#TYSzE&B=D!z7+qnxyj`f>HR5b*_=ctU@!O{K(+mW{NK-QeZMIhmwXxn$;$&Vl zS22)s&97;Gs3XaMBAnzQFO`gZTR-@7C%C8jRY&{9t?pP$#bEK3Z?QKzj`!v8@(gd@z3l zw4}*$b7k-V?-{jLb}3T({hHJR?RQm`7POT5JM=dT4>IE?6?qby1cc(J%a`4`6#4&h zYkg!_xBMc@hMd-ToQ3Ch5!a7cF~-En< zYclk`;gwO(GB`bS)k0ye`e|U3i*P3Xbdd0LV;XS@CAyCZAgjPs9PopH4L!)>fBvX2 zMp)R|lAUX2Y3|2dd1*CHS6WlZLfSAFY1_cyY7XBfz%6cKm^c7F8B?TvX!D8N%_{?G zD;B(yu@CTOPW|-558+|DFJ`!(NCeqK7sy=cLF;b?-nGviB5ocf_sEMdoRb39X3p&!zJ&kZ%B;LwLALW~ufmyEHB#9hexcgS+C3 zPXQhzab`7`ybppI|kmtaA)a9=O zl&d>me0_b@*v|eIW+FfUsH`Lleq7!gfvQPl&9vf~{cM11c2J3eU-t1+CP$n%&R#Tv z8h&pMfw@3H2T8MDeb(<cuk}5q3_L4? zW&{_}_sfU+PhYRIbVb-oYVv!&Nq+?Y@aXjK$|02I@e6P-ctx7wY|TBAuHcK&p`xo3 z=DKt$4oREPUGTSiCuYt1T&M&RY;vJo`g5>p+48w4b93(-%59xT~J&7hDcvT6yHfrOGCJBQPC?WW&?nu5ah=@PH@oFm+EXz)jBme z&4c2=bcnl?)_c!A*`BPZxqPZ(QK-t+A0Yd*Oo08Vsp%*u`)=#u6fOl(N{YkQ2tBjx)l%0jfjeAM2)Sg00IPe8du%;?eYlp3{HUT2FG@WQh2-ZDR1*C!F6wgpW- zm^Fc54(w`)IqRJ>w1XCrQ?tb6SiPn#Rmp!JfENOu&5OQ7pf&(Yd`yEivW5l)#3#F1 zSMyZstu=jF^XlHf^XB~OvfCgBCfxR1jl34$%6qLs9)}i2Mzd2>2G5G`RM}pvkK`wF znnkRD17p&!1vUW9xFT%<6a@e&Ww5a6txL{xA|cd-r&3qoddByp6MR@<^t=1bk_} z{i9+7QOO-TuTeNzDfY@TC_7!CKy;>&&z|hmZ4~|SncneQ5e3rPi6k8zXFD64>n<0h=8NBp zS65d6tq2;UBX0p`pQ@v*F_%xhj2P!Kb#6m8 z76ItZ0OSFhB`}DCz`M0iPlb+|zZ8PgKNBhvNFHIb-+wxh-mBSJ^|sg zQ4ZL4*%aSEIAAq=d~S&pkZTd{Ry@e>6aBUOCGEmqqG3)@lZ`*S1;G`Dxc;8^Bux^n z^vy>yXK9XLGi;Joi>QMhcY*Z}M$2Dcd#+5rLg7z*vzE5#i(e{c^eVLkAT#H39%ZbRy2Id^lc!b_0RW zs>wThG7Dj@5s3lsZ6`3o{=fxR!$|IaCL|i%TkI%5(K~Iz05f-@h=$K=fh?&)@O_|Z zZ@v*o18kb}0WBop>;Y~W86*-iMsYW(t2`pPbI~Xjl39C&QTIu_tSMlA7~TP*3Mv+1 zu#_E6F9{-N+J6cu{%k)ip`McK)sJuaQr9-aFvG#3hzoiqSN0r1!9O7pjm1{=r}kQ~ zZviB{6um?A2IJ^vUZaD{?AQj{u|RqW0l-ZbF{vpqznGat8_Ecl#d&Fa$O%nV+CrWm zKYp~a=>?99d4m;MnFvs>#+q);G*Z)NY$`tEbQ}=nDWlf0+gi#D#hncr4IV%I$IHrU z-P-74GTi5oDa;4_Fy^x+ZjXKfgAdVGn&_UuJ8ow*Xij6RF&>4lMCUhVOsTZj=owo7N(a?xFE%$nY zuGF8-7VI_~rB$+4pXS`n7!H}#0|E@Oz_(CO3`criTN?-aui+!` zO>*_rfl?8Cv9`z=a9+v%tU!FZv?jXtGO)L|R~^YZ$f&PR3ZDbWN>*0Zb;IR!AVBft zH1>TiyWQvcxmfz>;6_G&5_SToy;cuCx{P!2-pH52KM+Q}5zq8+$5`tZc}YBT`W$f2ylTFMLRR9k;wW!S!+tDF#tc@2>Cn1>^e*C}Cerz!KB#1{v$0fkHVRPwd9VBb8q_#n-!(7@;KfW+ zveoN}0Z;@WP5^3|>bY#;*^%aZo$)ea}j|MemSm$pCN#QXcVG?|l zE-+NMZi6c-e!qIjnBI&q=k^r+spgpq^3PK0N}1Red7QDbcys{x9*6zqmGrGmOcpNB z4qmbn@$vI-A*+jb15?3R@frepFAywNT~!tP@^N`di38ZRimc-55sAZpj!g;e2!)CD zwEj9soE9B8aG%?ilPZeK!OzY=>?KGs=YF5YHbh<;Ou<8h>1Pt zkLdWJaP`NH+Ru*IHPp>EU()NxeCO7PsGI7c$SL|VMt&$qsXtXBfrcs?F?5y@XVtM2 zE#K78<921p&KU+iMt9`kCNxLZ#6RgWeGT12rMLZgpmDE6!twQ2wwSkfZ{0lpFv0F8 zp#}B@J@K;^qq!o-K=5*(w(I0+blO638g-BiR>Au6cp1017_!IIfr^hy-uiN~_=*ZO zI&z#i*08MYgVL_ybp;`~Hd!icF&WTb$%D71>*MIpHq9k_pzUeFroB-80$DL2EEoj{ z+@C+YU>T*)isf^VqyRz$O9zH~X~!wW+}hQ|#6Cia~A<)hWTUWgNe9 z!dD+cqFf)}U!e!PIG4JjKsi+gV>UWa><&;(I2Kc%2;CSP8|z7wz5d0hGkXkPp;2UI z<>>&FvGvHp&Q9Q7W^u7S3|7`$F9oVKz};=9EotN2ZxG1K&$kDV2uQ3z9rl1lX>+<> z+h#Yz#_1!3LYsPOjOmV@Mv|ROqM!M-dq0CZ=-*5ov|J%~>i5nd{TkR=wmH8$ld$`T)%jv# zRZY+Oktwy2(W3S|@?yhEmX0`C*$f_%*;4iTiwT^%HKW?Hs>q!@Hy=r*Vpo^(JvmaA*(jf_d$S2uvR9+lXKvii{hZ5Parh7J~*X zs44H0>GU23?N7DN?I|)zhHvhCnHx$&S6C*#T3ZLoE1HK7!H}T{4EP_D0BvDtXea|i z4Oq*44)#BeTfaLtUGBK%og7v?Kob$PA zI*$PITWO^UZZMSp%O-LuXK!}}KtpP|q{_-8!^69;smHeFWl%E*2CD9wchtUDpm1Rg4USw!)L|eAGOmwm^v1CudVydjo1Ht%_Lr+OOo!>*^z+^lE_9hNC4+UtCiI=l%AJ!tIS7tKg$yB9pWny+hHk(G~E6u4wDwgE|9#8kdp;tmq z>ElUmyER3gYk!~6olXJx2w3<)=V=^;D+vN7!Qq?*ZIgNo)V~)8* z1p~6Su=fI+CyWv4Jw9AuHydGNcaWI)Mio4VNF)*f+W0nEhGVpVk_T3hZpm0%hxXSv zJwAkE<_V!rlNT|yOEN{<4rQMJS@HSyWTm_-^F$o*wmqg3&Uw`HCwc+T^cHRSt$+UB zcrP)@qX37Z@395j3=~paDCHpVRk`6+Vs<2Ny zW)*jODMnAOdg6Ev2>yZyr8OBZ;*l!I#KUB*$ivMoJMBEghdPqiFN+v=F?>hdOG`xA zMuF0_P39b!?gZ3p&{sQ!7Lm%Nj;&Rui9?>F2MqudxK8^LyF{Kx-`*Ik-Ch*2YTu2Q zvS3&(oA>rkwyhBNuzF0$!0EfHQ*UQEe}~@2I4@X0G4mAE6~RuWYx5)3BH|mLt5Q=E zFm7GcILE`$X?n1@$eF*9J9V;(p;m3nw&v|FQCcB8*K;f|z2TZw1rp|tcBmbQx@5je zZ5IyKZqhJh0CWh{&wnSUsy^fL8I4<1esFO3bI<@5{}KeY{puipp2z=S`msOO!$(+6 z6BsW*|5R8x`8tvf`yt~*v(h1ne%4W4JDau-w!l89GW|z{X)?xip8O0efcY}xI4tQ) zfW`awbKoq2bt8v|(LZ4jbNWhcz!2DNlbHXTp~Fy>bUSg`y#@?5o-#!3Tr@BO)gegu zU246$`xE)xTxtIzJ#U{U{P;@&e-};xitGs>QyAhSq!ZJ5Uksc-YAfwWRNz^DOtrsD z;kc-|hFP#uloe*(IfWZ;NPB%MU%xDYy(-`^}e6!Q%+V&Y<_4oGPo9HJ=b>tf_U94#MFG{Yms_ zn*GZN63IdSWtWS1D}s&sTB*W>r(#>Mx9YJ5rE<@^OU%h#$xq{5zMmxIPmAFTK=JCtnk6R`>AX| zYz&}1&{Ud?jew^a+yGETX=h-_z{PP6&b7$fa5J}Y&c;D?%>th+GGsJK*Nh^wdYY%E~3lh z=hNkJhikj$9)pNVd_u0=6{pp6q^zJ&FiF+8oWi657bmva%fO9N`Mk_*{!D~L?+%cM z-)yeE-7HDxI^>heSnBxv4{y8vT_(YDB9mv(*q^P14z(OKRJec$tvHA~dkk^1+^WUe=}*QyGm{#NSRj}myTxoeQ+ zRY%W=aAm9iJZP!f0xWY_o1aYTwfdm?nGMbXejJYxcL`@~iA$}!4Pbjq$J`>ivE;o8 z1nQ0*v@R|XFtRoTis=bjx39YFYZ1&K_ni9*eD0-+ctr!)k+e-@E?2S&$ap=gL@@h%%nwX`eCbe zb@gZV2C}a1@{?Wfh17vh$v%;pd1zgstR@*uoTswlF^m<(wXd-8y{!(0dP{UOG!zQG zCVAUbCnZs5=HYUT1ObU1UBYISBTlXR-oolCYtkVo5CD)$qU6ZO{@wm%Rq&Cy)E3}{CLd2?Sa)sX#KXmtyO7&1#AjE@7A$w<`c=`wLRck z;ig%rv9C#*m7ANJnF(b+PHc9v4;4^608>JBQq%jQa_kP#pXBQ)oxBFcn_sT_<{JxP}E`f+ztGoxOd3|4_96{c7QrUY!3+;{m`7-cnv zH5v%2qs?>eqd&v0L(OJD5mR=+`}&f5G-NBL^wPhcc2pQbjaf7nqXDajYeNR}fW$G` zUZFLt~xepV-zIyTNCGfRfd>YWU%dz&_7QkywCac7eS!9rc+8%knAM< zKa}0mHVC=HdY>StaXGqkl37gvm4~M0k0|j~(Pu-@$zjM2 zuC((h<$eEferfq8&>8|w2?#u>=y%=`h1(~6~OCvG8@ z>1OktPnP+kj|$~x|2opBVvIWkt$uL!kQ}Am-wERMdk_&!!YR{(SCLV`U@hw8)f04U z@Jvwk!tf1qU2in+;DLe;B&Q%PU8@RhJu4Zg>biq4)ikTY3+nV{fVC^Qyn>|Wfd6fq97t40kW36BsY&TWoc(6QC$?^DA zecngytV(M;x;BB$2UO=^yhs7)4%+^5{&9(V1@&n|dg^g!W*Vt!ikLak4^fM*^7Rw- zJY?)=fD6&Xqf<1q?6*mi-o47&TSNXaOT5_z{&$V<#(Us-TlIGKZ`T4V0 zyTNf4IL7G=OXyy3@LXx(V-Yksg!k`f4XptP$5(=Y2CIC5^ZJ9iyVT&j9UO9@Trw}s zhl675#`xkODYAPLtx?oTwGy0+@3=_|5M3n|(Y#>E;-diy1KOmrm8qj=uj~^ z0S~K@A}W`Ww%0F~Ay6Oyp^o(M$VeqfqoGzv;{#TkYzun=Hn#n<$R5APlQqPv*R{+T z2v=azD7yXGLo>+0hh1tuLg?n`2_^ph3#gCsFT*KZ8;7icfcn}@218f zFJf9jf4fEZ@FC#H1Bg1kA#hPBbp7^41gG!ZeoO z+SYot7#FU<#c+DZcuB8d8R?f==M2}{)1;JSB)fM{zwwRS?*J*DcX(+ zqaw@Q-#hL7N>+S5XNVYH&ohLA}0JF+@{CpUd--#V3zkHA;4xOl)Z88C-{ zlCK~-7LWgC;GvN$m%4<+#|z3WmY~sZmb?_Sj`m*q`bcm}ceB-1m)r0pH=|5f<6t_s zz|b2dj_T=GSl6QIxC;*i@R&U(`E`5Q4n2@<8g+{B_^Cc&`mx)DsG& z*>8LIENmu{<9sXF?UkA1WMmzjF=Gg8Y5bE^+MX#C1H!>Qi^Y9s$%oDd;`o}r+w0O; z3f4+0seobOG{K>Y1K6b(7;l=_T6uyLMA;nU?7y2_kYp#mr+%IU-&P)1yo8Dm2MP8 zN|0_O1Q8UF?w0PZ8<9pqML;@~mhJ|TmR4FiMY{XU{r&x)@r-lMIQyLrVDEjewdR^@ zu4{fSi*5+=Ub*Ekw=MvdG;o1n5MqNUC=%S zH%K8_b#>k#N~7d>!dq>E#L|SY`Hz3RklB}#PH7+gWsqDO=<|g^Z;%U4Gw^zrHoxkw z+bZVD@T!*`Kiq0TjQ5~UkfPoZ>k|8aaqd0oX)Bl%yypi`!e^ck1MBX7G`%7U(y(a&`2&NoGRI>o$ zxcJt3Jlcec&yMzkOmJ$1iVm_Kv-r@#Jd2J+07E&&AXz)mM-AeAS(&w5G(WbVm(?eS zT#1`lO+VAao^cLp_U^NID1U#d^y<~ySaWBGG>eVN>hXv$b>8{>x1z^&E4N;hO?V>B z{o~nRUBYQ$h2jG)$=O+cNqynQIu(L+vw50@xQ{Zw0#Dsb);1)&3AYl+ddq0-vZQjk ziFQQ?1H-Y=v)jc*RpmDv=b!{tXc-@tddr)`@YYSDuNZ++(hJhj2FWbV+APhF-3iW! zGv+;4BsSu`w%e+%M9O!MQy*h$L@)^pr+d!~-o{!NKDaFCI+d2~vr?OcJkK?kE?c85 zoA2%cCQHjLt}cP|hKt7?pWbVdQwtoC*w&jryEvgy+n8|PdGoLO#re#}t6&x7y-k|) z7bQg@p$<#f7}H8vI)12c!_MU_&t#-c|HUn)aah*b9g>H&z{LT?5d3B!Ds2mFvrtph z@Ke+*m|0UvONUd!Jud=h9TGAA$l`q=R~MHwm@~(k>a1Nk+)+Ii&J0T-HYzvrxQWgm zYYUH6>h3}&17~`7W8-#-)MFMcP;%sc!P6ez^PbXDSGbZd z814v{Ra!nGNqyHT367tyM0gkEmuGBg9E4CW(wuimi?8*VdP~&i=H`?zPgdpSl)UVi z&&5h|o$Uy^JLG-9ZT}u!d*3oW1ZD=PihU@emqy7I}EG=EbQCN*A z1>|z4_tsszXV38R`ncBsW5x%>sb0FN1EV5!DC}fe#>M9@+^X38;iG>w)eoq!z2vXmF@IQCX>R^}u9-}g4Tn5~8 z!RzB)2Iz?e^X8af(3Ttp-+WH(Dj%N#$4?cwTavl!@DG!vFt-{67wRlSQ&R}CH7hk< z&a2HIi8eO2n>(A(?blBKrFmRNW-CB+*u<)ZtQvLpcyucu#i7K*)||_5dI4T9oJ@cH zQicw>5BmI9>NN_th4@9=FC*LCFV%42pB5o!o9(2nZlWF^xPlN%=bQYd zp6o;1o@l-8R6Txj=Te<7M#IHUG8xqN;@2w&Ei8yJo8?_66Hf}N?e;qRh8x5sPkc^X ziF7u+7jg#%2P0pcS8gB|do!XwVN6P=T{JUWZPW~DL!KMG2tz3l)bdxOfAkQdZ9SMW z%c3XVkg#g>>Y_A4SPRZ+H>ZeE8u7`6l49x3Nt|A`{J5-rWOem`c^J1ymLZyXb%o}c5;DwmGeVP6I7HNS#t<;^yMw5)omm{sIk#uyw&b?2yZsKo`6aYl%|7?|Ll6 zJJ*`;WLyZn!ORn; zDy*U+Ax`d)o0Pu_-Q^B61xxN7#&BZpu%}#4+!wNiT;*=W&OjV8X$52(&_O_%1ghZz ziIX?bg$2y9G=V~vpGoYD23h^-f|UxF0XX&t)Z`>=+MhpvhQ{9UD#y&v%rgR7?HG>W zYUj=Y3po=!dVG(xdwgs(qtjQbY5GQShILuL%2xm4ouRfIhNp6!N`ULpe=jIKSTY@D zAcN+q6)ZtD%-ly^@?EFg5i2+QkJ{>aC2m)I!0xr^*v^q0MxZ`kx9X8 z105C&QL=lGH*AO8T`L~@YGceIkmm5zwqumJcL%WCN$t~uc}P!%Bf`u$_CMYzP_#kc z8gNndk3o-mFsiHSv_+O%u9;mjm|40u*R)Z(VdsKp?!R8%2Crw)_jhZzV+4GTk6te& zo}4r|n!Yk*%{!UeY;7t)0)q2>PK|ng&6i(AdcN6?9Mm+t00YB1DLLb1(fa3-Yu8V2 zuj|5c^EE_-R5kFp1hTuX$xN`XoQR0Nj^7pUDb2~Loe1WUv8-;?8Kg){cnVpivSbVW zbNv}5D^}=vfbH~~VAS)>gY`epn4LTg`w83GoZ9Z+p?R86P9XnrFz=X3l4}F28PA>c z_5XpJmVr*LcSo{=7u)Ywp53<^CFzh1a|eW9tuXM!t1b5;GG1=+(3tfj;pfx->x*o< zH;}x^qAv>?2ZV|qKH)Ukf0sWUP!N7d%HoN3e)0483ccpPhWZgiJ~u~T^W;LJ?Av-w z-S@2g`tw+X;&d$L4eheeD6@sj`YgB1Y&xh7V+ZdOsaSipQdPdbgrSeh!j?v)h++^` znbDk_xaXMxvIbnJjCVtEY+l2={~KVGuN)jpTMap)TLkQ9f22wTscQunE@La?f8p|y z3u6KA>F_yY{$PGo&;QSN9eqapUz#g*e@8acJuAA4(3Wkyp_p^O-8Clg%CJw$!7kU- znH4=b@~?l?(HoiF+Wm)rwQ>KDl#s!roaX!sZ`elCQGA1TrHk_ha<&#HT)}9rvN2M% z#_-S*KE3H5dHH|)$v*W-GTP@O(z}%j%Euk!9FBj@!}C=Jzh8sw4pZUlCAiDJ~5!CT9Och5rr-r&OZNenW-#cHrskq(R2$+?- zN$<%i7}5^&n8Qo@_GYiHg=_`ns{OcAR32W}a3uJ|no9KZ@(Kfd=zgz*669*bcKZDE zyP^&6n!Wm^+4ajn8D(Sx;7#M zIVyuw@4JYIWD#!feR&k3kINRid zf7JKSTPY@50=8(p5M+5(&m5V4HI}sFdpHy#dUA`tdaZXdnpH#pbDEpyj$Oq4d6b*E zv43!mK*hp2v(EWagmFm6!NvN<@cL1Q?;8u!6Q8Bjm$oN6mdU4XXER?+CGOZ*q1RR# zo-gRixwYr{4Ti!@iL(5xIhl-ycgH?)I_rSp1U)@^7!b1n)fgx|09+Fq9?;1p*c8Hd zp&(V$?^h)AuMeM-WZ>tLH;R2q;2LmFZ~J?8*J*J_hwfo7d13KCQmZ`OI9(m!fm4(@ zOO|pysvSXCcd<%}%%^vfI}S@&d#iaThw5b$M4?%BD_;m>Ip*C?T#c(xe7L%Jq?d?KJg;#9nqO*K~2EQYG zI+*6oRF_fh;;yc)Le!$r{RGSypfG~0Qvx&6QX#1=?G6(Oj%yJ;LI45E1k}{w1sAm| zfV2uJ|G>@IYt*keD%tS(hFM(ec2BJq-KT_w7XR&@%c=(Rm#4`v^f@d?I1G%%F$c`&p?Zuxb@@wZoKFQH4-%gzb>NV8`&)Z!wrXtEp<5nqJ zD%#otFXk+B4E`a93m2sy-~6^4FM`|B&%(pQq3EllE54!MI9?=F7H<$?y}ptBmFQPV zRxtCp<#L>e-vErgQ;R*refXkWl|GIv!fGcP@&BZLC2v`kIx_gCGj7bA)_90L5xsWSA))V`@MzC@=C$}Zi4Fl6R^d^XHAY%ugC zA!Hl}^&T(K09rNYL6-uWz!)|i3rowcXYM{A9{H91Qr$_JC$msS%#ogZE>4f_XXn*- zq?iPWBHFjgx&G#>oGdxWuk8QIiGI>T3?z%AIeEe--Ap|NC&NcrE>*Yepsr3jXfXSP7lW zX}Z7JfuEKH?_~7)roToI5-gRZV;&x0WK``;M@Lg}`DJ4ohKu};^5%czBRvl87#+nX z-eNUi)GeH6>zI-w~rkoWDl5HoY9ucik{IpIA+CrQtal4Yf*wqw*p&x=5$<}!yo)1#%AQgN-{ z-y=JHT~xHQ;ggxR+VksfOaVpsWVj#=%*7NLBYn10kEAx~>8|g}x?04; z-x6^A=NK{--D+!DHpozBcZ`dMQiK3H+W;p85Yt0W$UolR`u>HM&hVEd77~Ac<>-d4 zmKj>?c~WPFRdAL>8hYyQoqhir|C1cE?b_IIR+#C(v}!Y$f34%;=}SwnaqmvBh`R0T zT-2;eJc2*;wpJUf64RHFZ>RGP(I)W9r6P z5Tprt7Ls8FBfa0qThWxlJ!zYo(+}6L)EAg(df4y?$RJkS+@q1VPMKAlooqZem$sG0 zG4!32OGb>{IzNIm>4xH~`yzF|Oa^M1|2JAAD>jDUT&WTRoumg}`u7~xiP8`Xd|$>Q z^|!(K-N#kA*PWDe$5)l<4HsT1FoDa@sz6&VsD#dVjPPp*WbdY4O)8SIOs`=^j4bO? za-Xc_s}QBl@_)b5aGVa~5}lN|rF!n|(y-23>UR3~;wXz#@D80Ol@6n_LaE0~I-NM_udY!^~uQTpZNzd-D*aq(!PT};dzeyLz zg4d*N@1!+4BfA$T1)({UM@iQa{+E%V2Bg2a{nsXKL#uMft8d(PW={U@A^vSpu~A7i@KhFzB7{|Js7MdSY;^4#O@ zxdOMFmGyI9Tb~fA{J!+v?Tzr_+b5j|2MB;)?pC^-_FY*SPU0iG&SRA02=TG#>2r>;w zeUp!9l$4`_`S4Yhxz$w<@P#58d=_gaDe{=&uf3C=IwkQ&4tPNYKr(rNTo1ZfesN2< zE|t5bat56kigoZYntVy9QX#|Y!D#PEP=AGsY9~cWxYvvSyd$*@g<0_A`0cfL`PxL} zPZhoBkc`u=o`er?DQ@%r>aoytwlV2i@!4F0sTulq;U$4Dkxp`r-E+m?>oE<*bD7D~ zIhwB1`m1%lRl677jP8h0qn2j%(S_#cJ89)7$yzlRw1nnGBfxU%*bT|NM}09fFzw4J zxH|4KebR)h#riYwiF3dtLtf6`&5OfGfW20Xj@%9ff5uX=Tbe1CQU)xgDH9GH)q4Kr zsb~mdtp)$HDoXf_?Ey7L5;Y8z_?4yk&o!SjHxbfU1BRkaq>N8cRc=@X6}6T`rNrR9#<*`J}Two-)YwC3vy$p7W}zY{*;g8 z2epTtDW$QIx^@Xm!}Dt>G0_hn?lbnr#9H6}(^K4Ul-`lmZCsc8-ujco%kt7y_nK$W zWh=7;Alink(K_C_TjUW`F&FSGX^CWI0QG8JdGYv??=~Gue-2ZB>VPN>7=d18ceN%` z&g7+X5}w9uPfX|aQ%()!3CtKu1#M!CI?w%)SwIez=^CEdWgqCH?NMK#EEty!!XoKm4mQK-QeE+MHRKxI8Bn5$OGsl)xZUsX5* zAcm)Rh!*CHMDOpP1sdvi6<5YJ>8)1V#NFHIW6F8Ti3&Af<1(118ow)ty`e}rZ*&n$;r%w5L@Y`*&%P~{(;n7FVg)6uyU$h%<#>=$M*nnS;78WRl>RPwI_GboQ zJ(GHh#Y>7(NP75eT;@NU4`WQmiVnL9$1LeMnkA0{N|dxo5g4R^`;RY=%FpciPn>vH zRbeL@Oot8`{3`*{bLEomoKTlO~ndx~IEd~BXCNROM6PLJX;0>)BWl{PtX61UF7xgb-B{@vJMPx-3rv z6ZI)K<|SPbn@L>2;-qP~(P&*5F|WTroQ%Ks&H+d6$D7sLk1qSd4wK!vqwK}xTdKX+ z?Gx-@>_dNrc>55*(~Gz$1%U5LHdrP3Qv{J;2HTn%c7~y&?PJ;fqi^jzQaqm%?!CvO zrCbeN=B;MOK_QKo*j?5CSq?mutA6TAv~cA8E-Fh%&wr64#-l^Fu3Kofi|UsZtG&u4 z)MZ>>DOZ|<{LMSiCsH2)(*VUyk}nfnjpce4;3cAnwa8}H&)5@z=lt?EFDfOfh80X* znR^dy1`mepr1sO^VMmnrpg+KhCLlgrS4@)Q;c&J{!WcTa-+-qLadnhr6 z=1{#<_Rnv0sVPE;*(6Cy&ANV8f?Fc`7rzjx=9=EDG6}rz1Afn_%h!B0e7U}IG#0Tf zAxk5kbKe8NJ*g{b{WjW3?_u(0rpBUd=~7W`iPe?S=TEqkr6k@7t%v12L}4wsGxeV8 z1IF)03}L87;X9Ns#^pwEBULw)`KqgUyO|w2&V$w7S`;p|b>XDQfyWoF`W)RS9X>@y z2ftJ?HR^+?I+vn3-kjUlz^zp%DgZew(H7Jw>j;>Vgc;XJjMb>!zu-k7=$J}x$3ko* zj1wLdK*@ErH5YdRwxlT2ybzKdNE^QEDDHtpoobxPv-Ugnr(7&mj0@fI5e>V(hy`D8--G+`t*qJ zm|H$_ElK_5U4hu60?PG)JSlw*iPtZKqD`8bF;U8X7{qOj6OwoEGeC0nZ`j`&3uW~f z^;3W?A#E-$(9Ajfc|nJ{5aDs!DISV3J|!l%jJ}&BN-Eew&{4v)-p>!-MZBEji{ocS z^7qj@zCvtm9PFa&?g;hu2}lFMZD|OD^=-_*)-Byjn(N{-t)_!qoSI@BsGr2|j7+u7 zP-59Nu4(UcbC@2^U`sWSebKN%;PI84? z!L)q_L!ZZh@C zx;ioT5nVQbzlI``!+I9&OqknIH5fs0k(PucfIOdQX672*wLF$LVdy8>J)mu<#`ASH zc48-?-yZ`!Tt`~}u_b4igN?3F&Ikp`M{jUh9s5o;{r>4}RT-Gf^oclAwv}6_die&v zLWxxgxPKbwOTdmAbu+a(f(_#l=f_d`1Ow9AdpbW+b7_}QW?jsU35~bH1V)4q9Gu*@ zVaVw3IZR)xf&`hgAo>lyz{b=>p^JhccM0nuw=iB-0XcR2a z=d2m-zbM`5I7R{u8hKzSDe@Ds)5SV}-7e{=x`{%Kd_t+q*#sLtY->!*3)ssywoK0f zT5ORzerN_b4*Svp$_x#)t?1&MqAhjn=vy z@u1CYW1llsGFW4&xI|BJ$qzeMJq{c^QykCAVG8DTG{dG*n8+W zFs8ek%dP2)S;CmCTqL66Q4*8X-$nuz!2CrLWSZ}Vu~JBP6H1)6>|d*?a<#M)z^;~} z-&Ptd{{#CbThF4-4#-gnbCjcTxd_t-5%cl#swFbl=0GEjXcLY44G^AATc8wvE?4(- zs`vZT!f&I@I0doizm_by_ce_vFD@;Ck1k(&F$N$$KoB3%x>6m!^;SMDJ3Ay8`qV3b zQ-d|73rVN-(cKD(ut-t^wEtn@>&pC9zUNs@q4y)y17b`BD=C;0pO*+A5A!LkcXu~{ z_d*B;9m)wW+7Do9jblEHh{5je@RdygL$`9^(BZh_;JB_H@d?-_`Hi5`b*;LGPE^bhH zL4VjEBHzK3+vD30kMD1LZ!?=qx^e}6>s&Tvb|-|BoBnU|6uZqmR;4_PMtt?sZZ zRrkX@A&{Uvu5$)53do$rj1G#5XYt2jl}shYSuGZ25^z2^?ed<@MC<)@DBv=!O49l%IAyo;u(sVl>o@ZkX-( z()SoNni2Op=-9d*8#Q8CMPChmh8{qL^J_kmcQv>DfAUdsqr?K@rK{>bQKVMM-^)4r z#)zw>Nc?Bhd#c=ei_3&eTLpbcfn~?4$DC+yd)12@7V`m-{Y6Pmj?gH@TI+ywqJ-Xf zxk&&4fe7cP?xbnYu`MWUZ8_giM@HanyRXj&|Qt<(?TVoI=n7wDA28vny-d6$O zsm;UWH#5gNGad+qHuwm}U(jXycHtrad;3xqS+%64BF_6vq@@$TUd7#WT`j7_J2(va zJnF2|9t~U0qvM4v6?G|FGHOi1YE?)QsADko6=_UQLM-vH|67oaL(zPaiu6WCoYJ+F z_$3GTeiecy3PPjF2eSEvx@eQFb4MQEG}@on9jFzeugq_%^L&j%GSFd%I8E<=PmB?l zkR<g^~3ucOJL&81ZHFd#0f7;fKQ^MsjYX zul^dWh>3!noC)mi=0?RA&p)f?Q|v^{<-kX87Dpz`6OyzPvam$v7~C&5eBj-?!^h*I6B8LyS*~xXSeWyg$y6UUDueHb-fewg z`b(Vz=JHMS+QLboY$Y7ylIQniq$WY=it<;%f)SOqYuQk4y<|2B?GNJRiqSWXDGNs8LkR`b$A~Eu<6xPHmRw@dP<@n2)fYGiJ(wfBPc#Zp!J^Vq_`m~ zCFahH5PQ8X)XWdhX?!eHwvM^+ zG5a6>_b?>$eLbIx3t&w&eHTcdXlPrsN?*c6iNyxgJ3QkgVV=e)G@Z4`8PsPb z>dr=>wEzytl$egW&-N9fx$_|n!_XJgN_T1*y8jjFr^h9?YUfjI+i4WPh6hn5rIvfM zN-Z|5!s;%!{2bF&aB=5}JRmJZ5onnpnrBBk*{!B-+JPpIN0Z$_+{4Y68On>8eO=Xy$j085l;zdXlc>)@v~cz zY(Vfuzf&9Bz+#UAkJQz#bQBWA`*Uv%O0!n^!t+-tDJ;9D|6clz&(3Iv`dP)x^CXR2 zu3}%tGbw1E5|xsMmCq#~dCO0n`0?aG)5$yWr_FDf`YLl!z60DLpR|@ZS!147YO#NP z*ldVvSo84S3VJYcjlPR#^Vyga7kf^O)FOYs+b4zHQo0K3ltH&lr8-2et73@ncuqD?{!-m|Pv z%gXn|W%&wbB3yeG+f$hbq%Y8KwSDK%Rv=tOBwTJjQuC$tyIlUG`PNG^@ebcF8vVDa zm@phuKS$@b(L1*(a^aJ~lurNA#67O9xh-z~xT@gA+s2uX7zirsEzhy3{Skh1Aqz7$ z23R%U4*6$?0bkpy$R$}}^A=v4yN1axWqZQU%|@@tv|%)=;@W@~mWtP{CkVFTdhRWLPRit@VwIeh|^w~EP3u1fcvw#MrG5*0}lJ~n4#%BHN^cDO9t&bB(a zbPL_tz}twff@a~~%}o?);qSb?54%9cli0X)$R(`qz&3qHwB31H`^uD?@@EE9Rqjkw z3I@K}m#=@T$Ra2{yI=6Bxwc>jG42;D*D)e%okmvm8#}9Jai$u?e<|R>x2=otI2pR8 zTU{xk&_d5Xh8qr4oIMeeVXgcGQ7Ex2)SGLgTg=aX?*zxSH+O({o(=>d>bxmNRvhJPz#svRbXUvyAXPf8yEx zJy!t>%O97W(U-IBbuQ`90=DY>lB5{(feap|G$GOQdnpRA-~gSI@*@wtr}rXvc6Kb! z?Z?X>^qQbFe17cIfMUoKpGck*>=prtEzxZp2e z4-mH?XRFu`&D+VJv;#I^+OWScf6v)gDRw5Igx}G(H;va}Fg1o``$0Jl9a!)-{kHGG zv#Pc+hCRL29&NCc}?!T&=;%aGFk{n1;~Xb`Bs_;5vG z;ro-F3hVKq(b3oi95{|7pYLWSyUpUz3xEq-!D(lKvYOh`9<%om07_b+u^Jg0uHPr? zb$b#ny1nuOIR-DRrj7IU4d{$yKK=vAF`D8z0$2iysl(PhOx3mwCplTOuwvx|Rl9jT52~HjLs3h}qaqUK297YuQ z?BzyK^3#i+7hD`81)!)pT+lmT0J@6c$rfk=8v>^a0Ve>iXc9lJdoN3XP_^pf{DgDz zFGwgs#04;x%=b$EnN^n27;W*dbgnshk{9p=f zNgFot8VUo39<k>#j7O|BBFk?Z`I9J~;Z7 z=h0Q??>MV#Yu7rhC@t53wibkblDl7M&X(tBF5G}UsWrJBE$>>)J2r-i8j48V&eu&~ zNUK@5tS}rSuTBAIwREi&{%9nA8SeR@=vk!oxUJ{-xau|E;T0UKPtr~x%sObeIODHB z%+)*l3!pgbZri4#9b^f*!YRnf&Ez9T0Cxj~3IJ@e#n1d5I0J8&$>iy*TZ?I9+WxU!83dJ&F|7F#o|O2z^Ml=Zm(%%fQq?1Cu4DygQ!hZln3yrlyOx zk`J*6L7)pOPcJIj4(zHXCnw)|zu+B0U^emimtVA+o5Xh{HAXS3J<7qfNx5I>6A>IOI1P&$nof!Z-$wv35fFDnCD(o(oPozIv{tT< zmIQ?{R{0~R3AEVINreC&7c`d8Y*Mg>bsda;A6{r(bUmT@r1slx1F^`ucmMg4w$Ib5 ze(nN2=k5z{tVXRXFZPR9Iz$W!z26+E8VN4&5lk73>a~@xJ@nZMqvwz5vOUyl*wX^) z(skiOm=Zg=1U)*yk>6^g={5XQzZvil-LxCL-f(e#mBvd!<#&PC0`t`ABCqKAR)pyB z@|TBRGkDMs8`Fgdd!HU|L6hM_PNNGA*g!&hafTbiyYc)CLvb z)8iCDhgy4}o1E^Q9ZXFDz~V!M*L-C1>HH~jDio9gd<7_Hp-JCKTSU}en@z7oPevu3 zmJ(g_cTE8bo~)#@2b3z4){W3);1zhI=hwPx!wIwAQ75R5x^(v+`FNR{wjP`%B_#p9 z|9>wSVqgO(rT5z>eE9IeO=xm#j7ii7di#A6S>l^Tc2loQMP5c|j@qTudePJynu{%( zum*sY?W6`#YwkTifrk0RW}0*Mxr)jC@`{CVwjy^|XXrC@bv=+R5MpN+lY|(hqB4_O z79CA&kO;As@~?&I;Hx-O#))fwjpf!u527k)G@`-((qT8+tm@!}&|xNWoSAz57eZ~r zO}&O$BBa0#U@Uho_Mo8v zNjRyBS*>4(rsMf}W49E!doR`1N#zF-;Qu#?K(8yjHf(lW9K$*}og)4h9A;;_&OeLpd}9xG_5 z??;Ab+dDg=htqE$I5wQE+2RHm4t>)A*_zAJBl_nHO=eu@z`R4VP$22J|4>-JmoWPk zs4S~?_D+(d0R zpJzG(eF`21*zW|L21BJYL~^7s==CivW?Z@q&|DQ@gsd^)XkeWYcEJ0B(VS6U-Q9?s;(L} zWo56!nIL$0XUBWgR>&vST<@(GlB%2@`VU~57Sdv9Fv1cg`?}?-%k|rN3D1`xU1GMS z-Up2&m53KzT_+zS*zW>+mdHf3&{Mc!PCU}YZdz}? ztm$>?&^=4>V)7#8&d@ML+LUWS4~h@Nt6;xEi4X*7 zvt7r*33>N!Vci42*$E!Jv$IB?YRwMNa;e0MAWIN(urZq^ls`lhM|m zfZt4>~vpj~ydYE}r@`>j?>0!ts$^+?m;H5UWJ z!Ut*U#~1{s@D)LldhRIs)19)w@VWnQixyE>webd|GU5=taHS&FYj>Vw``V9^>Db)J z%gU-eS+A+GI)%96I_Z9&lM`{26mH}ztTh#G^wIbMz4D|$gmS8CjGvzJUD6b!A1 zCe2J9#Y)n@z6v>3J+P+>tLXjTKDnd(wQ0P)r$@I?|B{qq-}Tv1QgZyjJgo}xCbYN4 z6*l2k2)YqMp=;Oh@f#ztO(s)PQUJ0B@C5-%f``c_T;fs!@!d%DhYv;OgZFZO<9f59 zC9r^NB%`FXDpF4o;e6FYsr_zC(5rAC3kypPXHU&S@3#ttH-T^4r~B;W5y5y-vJ0=n z{3VL}CooucQ4}|t*(JP3;r5PLITpW&G$p%jb&;Xyc53MDb!0>FO;Z1agT^6`zB=+r^RSY1tij`b6y zi(|%*pch6y_L0d*UMN<41Ic1$@hSAZh{q%CHD{x`&WmM|T)Q zwj*diD=8`I-(~9otPE&GOh`!Z_s9AmQwlL_DH%D3Eq@Q$+XE~c+YUCsMQ?Q#-{^(& zDeQ=_m}8vVp(X28l6xz|ivg-c%!!v9dA)E}6a2U3*$ShylKLd^{rk;K(X;HVtmPje zx6m8&OiR2?^$L7~{e+uvs>%8G?G*k2mo7xOEq5Y>{N`Q<2M0q&Z97@(4xiA(1Tlel z)!WnKQlWYa;`Ys(`|E!^!Ox{kbB!(3E|xOj{XGGJxcE=m1qDGw?ZV$uQ(uougynz3 z+~Iny9=(^+;eR=(Z{fV-^wi5qV-J^67+f;b%{?HetQB{HfbjBVWDOpy+%iqph#scM z4leTULdn2Yf`)Gv)G(Q~koJQJ8Hel9xb^MNGb6jgTO-&L9NpY1W3K6-5waJMaTc+} zfBaYsB#s!I#p@!6sEsD=3CKAiU)8eSTY8=OB0_)0=?hzTQg zo)xm`9zZTdN2J5e8R(nOheh!9tG~f#C>)q{MeEcdDl>1&?$gqWoqq^pIgw;ASdn$YM1-C;X1wgrfMlA)dJwDD!mCauA$*!iIXU~d$&SQ z=${iD!y)N;CgE%o5I1JiLo6e5Bb(Doy~ z8w0*?6~-JM&P5Q412|N)7Vnp@zA#R5BhWu0JLc)49AF#pAoFy5X%F;Ql>DGrmfh%? z%pjKyHvhoo2fUk^94u zP6&t5>ZxUv>ODz`we&aRD5_6a@`+^>$Vd+Sj`rNkl)_{J>kZtE-DMzI&4n zKvj?o;09oPyISz^AAz3NR)B5+9O`ykH&V^PWs8ZC5n<%uuy zh`l|>U2WBG>h>zqPRFKeIM~=;SFC9SsvEk^3J3RR(gm1bY)AbycCgP<_1Wn)GTAox z%WTwrORSz}L+s@`;3*MznjP@S36rFs(f#+XAYei{keP|851Xi}?s_eN6#)tZAQcxE z9%97ilWaO{6qAOD;j3zW4{QdV&?&(vqm1_D+ zn|qfIt(&hjPXBHiyxe6dS*F(ry$Qfs1B(GoB_+QbalE#Z(7p^lzI&a_1z$5V*fdLn zR~vO|-2n2^O@00Ys5#!#Czr2Wnay$r)G%8Z9qf_{;~iaHj+uxf%1SQAPsL63op@^B z>fXJ`71(|brK+^+p%CWZ2T6#tz#sSv&Fk%twtvIw+Og7S(F{4;eudxvSm&w z(K(MnZd(W!Qt`5pj2E9@}e4xi*jvd9^HMK~4M ze1u+CCrH`A0)$3>5b#*+v2vBRP&sOpRPB8?1eTN&994FAOQ#(IKDqPRO`~G)N)20Z z)ua3D{P0e=pLL~jDb`gW90dOwA1%U$`zY25DuHZ4$*IiaPFekKvHD(% zGRVCkINYP7yChli@#Du@*PQpmX{%~){>Y1oO}j+A4_jgh=C7^!9gi9bC?L8UTS99( zvh0fQfne0TORj&au6?aAWv^aol=kj6PdqC-dtZDg10|~79;$T4#&-{NU~|;E0hZCF zqgG<+lKF=t!2MOqR!&z6k)#KOq9>WCj~CSMH;i7#@N#isIZyy>GKlcaA!(61B{A`p zGik`1#5AeN$&1xlZYaMA=6&A|r?$p5WO#KCpq*Hw1S5Te0|SOeMlFUM1dbDV*CrO< zsgx0l8yFbCdho-Tk#S|diTYwGx~E3}A-KiRZcJ!!XoknAez(x0zx`S=8Fu=OmB)mE zX<1M(fN~zZ4i6868y8>ds?4Ffo{v5uSo9AMzx3MMXjaUxu4Fr#f}I1%oTw+uKS?N|PR|tl9<; z>bknS--U*H%mk1?vg~tM#osVFsp~qS$p@kO&$SYc_-<%e6|-5iAfQ0S%Vm81dN(vJ zLp~l7UpjEng|iHtgbRUlFYLJwh0xTj7YYh}+Y4RRJX((*H$k4pCO1g$FGhfCZy{Jv zfBY9tz%b3lQ-ec7+<|UCt@hdJ8p|wTUugZoMvdQ%@blV4Uw`_W^=(|MKh?i?T!FU3 zbuiAVQH+%(h~NC9wRM)G2T06tJ_!yFNA`URcRoFM+1c4i{80DX;0l~vg?g_Xj`sSr zzMG_Tf@~J#Mdcha~5*m7)MKDYy`0g}8)?*kpTfmGFy>mpuH_1m{R95&N=qcYT zd_XB_X7&qV6`j1=$agGWKOidXWM1_)`n6f>LTA;tWdeNsPf<}Jl4-y_#XVAmQ=(}J z|APlO`Corq1PpF&7V(w*WXD&l!3);8(IfT?6;}^(YbIicD#~-*+6BmP@S7XSfF&t` z)pItO;==XKmrUeJ?wzJdEJY%E;YKs72$Ao1hLInJTYY_Sa1l=?jV4#KA?Q6Nz1Em{ zY1>yd7b>b{x&>3fJOLkSu*|shP4W7rLiBE9Y^ORYRLADI1J=|XFHcKGt=#foJbBWZ z4*jTL8mho(Q@5u&FZ*tY;-L#XHa+Cb88#aLKm?gX=D-2_GQih`#j)=iBOHlQ=j%=FbpeQ6OCFP26*lRNe=8c!SY7|1 z&&Rc{c{(-3hB+?~ICsE?qfcz$uo9eM08w2(@zu!q?A#nIyd$U|Q39_B@{>j4ff+5k zNQLjl@0w@8sV0%j{G&qqm?O%oZhA^ZM^*L8yDv~f)qvXv0^dxz*qgU+@50;VRabk! zCWtm_v-tsjuTXyz5YH+pafJVbBrI1I$#dYNq{Vtyz%!B9*eDj4Ve*J9NjUgGymve^ zCR-x+_c0u=Z`qS_)b6JD4rYFmT|k$>lh6LW`k&K-_sLoXTr#3f3knO_=Pkq?AnS#4 znx4l>Iy}CxmRUHNXs4lF5g9{0*2;#XAL`jWicOKwO;_T;pR+;MgLy}aP4Ilg&kWIt z&ie>!`LxSnb1$NoS95CR%}o~lkg;- zeZw{(juArkp2rrlM}(}bkP+D=n|zF86WJrODO<_jAssSGRQ3qpkd`va?>RqzbX{FK zan9#`-{-l<``rCie5aP_tOT=ccEeQ49}w@hA;U|otdxb4n0Bs*WM;A}O>h*}&N8#J zFVD`(pwafvKES!A+~#2Q?LfHRT$nZyj#j|`!6^p{zH5U+L#0pkLnEh|eE!B3^57=y z$5xOvvJv2;|FGLIPLYBTKtmU|N&_SN6w`_lP%~eCL4h4UyK;ApsAjbhv2G>zWYrfP znN72>3mI zCh<9(#W0yQCP$`IspW$0XWa+%P%vz0)?r+N1EGDk9&xu(3IK-3&L3{nnxA`omY$B< zXqNok;P2G-31}EOWTufY%NT2}k^*qE_UHjED>L)x zkqSYX&(+vHvet9Cxws+#TIXhG)|9}RL4-xUuWF%(q0uSb9=_EA^n{_SyAbe>_dcXqW7|bplGl( zvfmj-Q2s4}BMt!(prh-@O`jg(viA$zPz6P$6$Z0z9Tou7$W)B!Zm@+cj7g_Q94!e+ zNs{^ckc`8D!tQYeDip1*u3Fk(R5s_!>^QYd(2NXu-Lebk8}wmU#zCdXalRpRL5?eS z@7$nEQW-!M1kypO&1+%GMXBb%`h$>*EkfC^A?p+btE8l)moGJ2ttZeahSgAU$f>AE z##m+u!|z9i5ENgsNhSCk# zWM+%>CSdn3CUQOSSC{Nuklhjc`o&KIIoix!;A5zH)&oNNkcpRVRhTw2UUhZ#I%2X1 zCH}!l>d?>-q-HI9FLwR{eDEMKG3v6(foM1ue`xq8N91kULR+};Wl?`JmsZG@xiBTsfC0X}H{H<;5{kXW;1Jx9UJo>dQ0m8yeRp@3?k_-VY5474TbnA*m zh9%>VR1mhnAWxxYB#&UXy*xK2T3z~O4onS)u7He!B8FZ*a9#VQxaz*35KOLsqO1kX zB-VJ6tQ0aH*i|A6(FAn2i1#bM2IFqfCVT{bk5l)y{KqnvxV!;AM-~Z3(wu4WPfaOAXGlz zP$Kc0sI#lfp(bTZrPE^$Y0%B&)oWxwYon|PpxuraZB0lD}6zJ-@sxo{Qzw89NaWF^-dw!C++O-686wKN#Fg_zqIM zyjtbcE3i8fR)Wbgx;i_7tAzI}wtE!#OI4EDMVS~lY9b=&g1~e_pvWOAIuUo`AhIu{Qr}k*v!(B?1)^b3>fw?*=I9jD8*j9ivmJuHlkry(Yy zo82w)+uQ3Z5(s5xe*R^>457{za?+vSz#UfU=dYD&L|Cf+yCFY7;W!ArZ|Kow%ejfZ zgOD3=cm>PyUoQ?{zW+N!YW)rjvc)+dKnlvz<6TOO3VxKC86y@H=L6pW)&aN((0>8! zOvz)8PUXYS^Su*Sv)9rh=Ie_TE}3;NEJO;y>~TZrhLaPwx+~Bx`$VAc%w{EfA=Vuw}%@9FC4MVmX=%z>caq;a|EO=qV< zta_A=-|>6RIF?dCqEyque~mqS4?rDl7~UP zkT%f3P-3y0NNT+Ha_#-6{R{m|Ue?whe@v>}GB*CU*S4IKl?7s;%J)~?WTl|r<^~9r zu)4N>eEwXT^}0IU$L^3H_Jb((ZCD0^;^Md3yo++BCe+$EfPo0%Y=}Xv1;%m6N!D*m zx`oVC=+bKqWO*$e0U*t;+9@gF2*UR@GkXU{8sv-vBP1*=Zrhoan;ZX?=DpNHAEMGW zZ4A9A|3dIOD`dcVf>=-?Ck<+@BPXiM`nfC3sReLQXQw~Fv0&F7+>EtWpp_ozbh=DV z+TJB~9hcKC+O`laf2zwCkk8K_CqHBitRnXH>-~JVrY#p+-?@MC15jwBA(x%@65<=fqI^hKz3@(p+(~FpAZa6+JHS& zHyiLSg6#Qr2hle$(6Trj80mNkLh)2!H$^CT$-B8Yt)=LwRmVO5`e*RrmBShWeMMkKhV(5Wr&({(4B^g6F?%bpc z9G=z8OEAgWkC<4hsj0yZB8lPT;u>7_RXw9mzj&9JC8KafDh7)mp!n*5{4XmjA*l5~ zfB)9e)V%HNtj0%U+AM%`U#x`4!hDOpLjXZ!=A~T|cX+d)hiVdGVPm7>5&1*zj!jxpHg1ju6>E8Hgur`2-|;?biHT9sQ@9o^bp?qp{B#<9VDMP^lJLbpMsX%W+537(advI{^6x+2*1=x@ zJU^PXvbOdbfGNs2Ai2o;IQ(X#74^7#1HOP@U>$zR<^hsA>_>5x<8wIZLjd$6AS4_{ z1Bx2F)vKI2;o`@(q<;XLW#qt{C5me$*bQGL*HLGW*YE@Gno8^1^!nx33-zHr4aCe8nQ?hO|6%ZNKojlNuPH43O$Tu?BotmYsJ*uvfa{`=l|1-diK!TT_t97xfmACt-_ zBEQibF6G$hhJ6=A@}%jBEw2aC6Ip(%0rP~q+?0&0;mU4|Mo*3~&-|K4a;u%yBe3@uJ(~1oQIbyx-hMc=THYAP&+>qm?)s2Yw7k8e8o_rW8e%1BI{~(#5IH>ftq?Nn7JNTx)HZy9Al+dRx zegp8zqWlzcWy7~Y*g~MZ!i~l*X#|RbQh;;b_axyhpwmm-LZO7>jKz=7PPasFzJULB zgvG&qLwo#)vG32YD{B`RC88L6VG%9O&bNBxq8HZIfT#h3>H$rkR_w=EHPPeL`vd1OkD z)@46&%e8D61s;<05BuplX?q_lZA}zHP!z-sSl1UTg|whm|L#7Uw9J9XRH_PQ#bTJ#rPQrJF7?6^*|d+5kr85U&Tvo(oV(8np?dnFckbBjsf767 zdO6O5NwkKx%r8jx{S`WjblCVjAL23DKFilOdJ|iiq(mzSqlS59cDrBKVxSDdEK}-C zkLRCov=?ADP(9-@n3W6XxF5Pq7N<^3z-KesvKviI0hzy+R#t8}hN>LqsTLv=s5rRy z3YoK}^JA9-{(A?CGJq^NS=D@2f#gurX@I$~kh%?C)3oGdVF7_DS84giDl?(EI;$ar zz9>;;|81a8|Dd0Jpj5I{q9D>yh9evvIdH}5hZN~@@DrIB8RLoSz|J6>RJL*s6kCG) z0kG`r)Xp{_md$He@xFx?XDm>*S1g)z=+>eys(b$-hD=BSdH{5A02n0$zcCQU@DUbU?t&JXWYk&Wt-888&D<^%_TUx#4x2Yci=)>X`<>|zbFD>kKqEVs zEC*D_O_3a+AHhG=_udsJvIDSoa6lY5IXMTD5B{Be4f6L-VUZI9a}Ss)aB>j@oN)S$ zc!z>1x{)NA=xH*PCC3-#RwP7D{ae@3) zRaprpB*^O8*xc0R$$&V;ZJg0A_`p6QLir7D83SJw?|?AX&^@4^i@3op*K<>~9ok1O zyBxoc?%rOu`Dq)!u0?Os@(qLKCvr}nm#B2Sy~V05@8u4F7ZFOz2znewqB;DH!I#U| zhdvwTHFHng2_tN{$3ROvD0*0iy%z}>i~?5woUnxGE+NK?IV^%>Q}UR>n;^QD4e!gD zGt!$e6J0%#lqLMHwYAdOjgO}mtM}93jwp&hO&X8Q^#5A{l88W>C!>zo%(ehg+D?}J zrB&SGGe8Oi?+F#0LRziEpR=21Xp@HQ061CGm+LcyxbV6L=86w&s{T z%#}F?YX)jJ{K=WH_6Ac|Uw=b@J}#}O}pyp=_Ms6XJ%${ zK690321Y^(EHBc`4$Xt#paF_`u>>ycroO&Dpy|Ph0P6}}C(qBn1wJ#R5}RlQDJo#I zOC7LBeGjB3*K%>G!s?Y{g{7cnfVKtNZ!0FpfjLZyi;oWoGrbf$CN(|d1v1y_&3!(- zIB%m}P~}jU3^qcbuk|W@%hf1P^Y0XYTUzQl{OB=dfbV8T-EBVglc5+lxEu~DxcUJe zHLP$Jqzod^-@l9Jm4=;v^0n`A?p7hF+2Ge$^^;&%3Pu&21202=b^HaKvFT{*G03(t z1Cg1`5a9ud3gRhEiV!6M&*E3;eGuv1?Q!PP(9)JoyFv+JxOD07V$d>3-Jm=}dZHd* z=J4n!%!RuT7mt7h8N3!7WaW!cyat*l@^>G&Ls#9OE_yRkJ^2T=|EF_bta6B>w!sF1 zxNQNdzYnTKI^p1?i=W?jAe15Lg4FX9ya@JKc23Uc%}q{BS$R1ibGWSzO&q(*(MIO> zch?Ufs04sDu=_vW@7_;WTdih`zs)PT`NG8!a!y>_5lph(H#G%=!;Kr2MgsetU&J2W0ClbU zE&iUmtJlB#tBf9L4a;ctf~wdIC;>11vV&bX8H#z_Es2~u2w3YLPIg{)x8YIoOczF8 z68|VSmD0HO;KjQ9hcKHU9CDpb7Vq5_^E$7n?CJaJ!t{u<=WZ%WZ|I9lJz zDu2-%^k|a6=lw%q8UhW+^y<~CaIpMTfqNG0ih-2BX~Qlma$sQRL1Q)HA}lUG`TF&Y ztMozVup`dp0p|~tRw`j+B_1Y7gHs&zFbYlUB!U8`f%SxKuoOR=~HN7_mhyvP%g#$ zPW_ync@JD@s;wnMzHiWE*E7JsdUzGyZY(8vqGkpRK`=7H8x|0t5w~i=uqgE%|5pnu z4-^F8-a%Rq?CR<3dmLmw__1Xx09YaP4ecjpp-dGU5A=8*UIn#=(mZ?YHcEN*-l6DG zv~Z=oSs47bA>!YWUNX;My-G>AEwQC?cKMBwO{f18NV_eo!C)}EySq@>pi%BN^X}LL ze@@4+V>1{8A*lcm4MfgC&DFf$^y*;PqTZVLcPL1WKner32r8r`bLvzB;h3P^vLVzj z%|5USw=IPVTU_>q;KxB9IJu^0W(LuSJ~#{v4XJ#Tn3!#!IRiF<%<{GcQe%OJ&B34D zBO}_Lx5+6e0MY9ltT(@S3B8$B&abM?n>7u0z06zX!n(2HDz~3l)LG(>twVv&an9Cr zHZ*+Dr9fE6g_@7K;{a|FyQ(n&oa!vh`cY|nwW-h>8IK&{;e$%mySs@R`k&mJGw_jU!e zx$UoDz(<#W7)Kpn_xG1J`hg*IRC??M$=1+If%Xq8-pDB3My&1AUV849MCl6AbL)Eb zQZNzuDiopchFrOt(v3*X1?Uf&U7j6{vLg_YLz{?kU^*zVKNR<$w}Xt49e*k+DswY4 zRac1B1;d?~m>5|5Et~<_hJ}WLL(k0(af5z#2o0-mC4s%!H-1N-&nD`CFf4KtjFE4t2#H8%_ZlgcaxYEsWO)JE7a$UA6oq& zO;|o+n*gmhxXp$J2bD~fSJ2ItMXmbUg<{IES56Bp;#$mtWj3yTIf_#Ibc_PZwIS@v>oq%QoZ zg?jIbs5`@}&?%EWy*6uKeyLx-o;K~8lAO#Es5|fZ0%G|<)tz)?E7{l@?Y-4^^W=+6 znvn=YjL&H5YDX9f&3NEWdRU?uN{^2}F#AHN{CC1s>&%R>m{=U8H56q>M=lT(?o6u7 zJvOhMn4H`iu?I5`$6^*Ng!FX0(J#M{WAN}KumB6I{k#>363{B(FtpKt2Map}6kH`{ zibo@0L4c-s!|w?99H#IcK$FVCZu&C2JnMM!WXw}`Xf$cq5&8iZ79du{Kx~lAA6gX< z6vRIkqTLqsCA2?XghWEHr>i+K+j{5YfYa1WPHwIS9x`5QzmAvZ(GM^E6?*0BlYxBL z_&mJ4N2&-ns3eSgwOh+b5&Vew!AxfY*iIecCkCsjoZK zt>=5v{z+Or;e-pYWE8qsDd0bP`mzpuUs!LDWU4LzSAzNZ<5`H{-4omi16pu;8kt_e zW8$P|VuAnwPxf&tGgnTpdNU#0I9gw3IN+w13yX{27!dss;heu7=TKr(XC@RA9j(bl z(?(AG=yuSZFMifULuiti0heb{WHntortSP%0&5(w6PDpV@hg{S5|rGui2#cMHINZA zr$(66m)KM#kh}uwD#qXPt<-p2Popr>-#wUc216GRKxh+LF~*>hi{1{_AA$HHEl0Grm1&@**N( zpo)W^)Ij)S?RK1lssIJ&OEhJ05++qkRW-6ZPZZoxx1W6g{tPavsp@c`(Y|2e3GBL5 zQQtv6Vr+~U8&;dvn?sLkv+-`nAN6aXDdS;ikW#kWzOV>(jhRJX$=M3*0G;ppR{q*D z2@>$pC|`_Va`vHbd;Wz{CFkUq?SEQyNq9P4JU_4)7~m+^Q&WwgS&xfDL#heN~7j?o_|sX+gvjzx*(whqQvk0A3D`gE(R@G}Hg3 zjHJ|5;=hRZ*3+)Y^XxH4GdLDTC8C>sbRhE8v$s2-`hnrtU!Jx9N-;R&tm{AjmyEou!wu zXeTCGax2KeZg!I~B=t|tjJPA(h7qZ2`NIlm{>rILZMFM@h~@=HpW&~I375~ex~s+1@WnAse*duJx*5| zR5$?T6;w4&b~%XebCB5pI0mIM#Y4{!_jTy=GZ_UP1!%1Kkq-Wh1JN7V>ZL1w)n`&( z+`0%Yszl<(TEDy4w%`6i=j2^ZcqB}UR00i%vHh5?U6;83q53V_eOA69M%?PE`O*&{ z+P$?C@NacBDfJ_E253_N3jl2#krq)}Ls5P|{ziQCXPV$komwUS<5HzOczp1b=Q6a? z?kjp02b<2}mZ|q20Y*=bxv=$*+LVc!1OuYtJ_)End^AHfkDDg$!qYZ_j>TZ~ixg(< z(c8a{fugI~@6?3589+^FY7&h<{T23;qFU3K9^2Aw-2ja3s#xd3x8&u2kAsEJ5f?<_ z*;d=#DjvZz?~nd0ZU60Va{m;QeghjEP^n%l9bTPzaP97sgI@gG9adIW%v0haG*!HY zdO?6wU%}uy9NZ=p9EWPkI$s@Nx`zLm`kvV6Bz&xu=;40t0_)pp`ynq%xRK^I$ zdFjPa{I;YoGHL~=vd|k&Dd|{;mvX+Q+att2Rvw{v@icG0+14vLrat_$*wU;)Wd-j>@wRyiCFb2DwVgcqK-`bX z^U@?!b7Qm{EsK;di2ast&(qv3mD5YgJr>4@e=hPI+0<-#)s*ykq6={jNXdWLWIu_~ z$yH#>sPgqk!Y-Kv&0_}m(><=i`}sE^71J&tQFohS{6vdjP%6*B_g~2qjEyDk(^2In zkqlKzqq$AR@jKpDZD~b6Az)zdTQ`@;T~!*U4ZC)2 za!+=mNuvdhX>r^th555#mm`KQwOs^Yb4=3l6!!)qzmVMvjqT+!yX#gkBGJ_K;q%mX z*o|tjhj@9Bk^S}Yqt`lCU30c-2ZT!wQkDr^u5mp?jXr?WY|)ZP#dZInN&sKy`$rA5 zctMs7ZWp3|B-lJTb_g=&%N$@efKe}!7hm=pN%WGK<}!JsPgOikwsK-`NVvjeB|Kd% LL(K+t`{@4xqUR0n diff --git a/notes/pics/transformer-block.png b/notes/pics/transformer-block.png index ef51b52bb59c586e52d85501d18ef65a207aa724..e8674f7b41aa9281b090b4a9db4e8c2749d71c3d 100644 GIT binary patch delta 109598 zcmX6_bzBtR+Z|G*1W7?aO1irdLBEI~-7Vdn!hkf02q;J+C?K(PcS)CYNOyO~d-=Wl z4}KPRcIMtE&U4PWtXDm3seV|*UJNJ5B3sf02F`lptKz8=YT>iihO=Amm00Udj=JuI zTkBm-VQju@Z!m5TeufeL?Ac#x>SM|Oq@<+&Gqbz7aqO&(_hyJiQf8PNSX$z#uI7>5 z#a?TeJ4-$i%i8E8*NST|XzVu!KYk5W1w*_qIDcb9RwcNxb;G?*@s)9GJ@Df`nPp35 znomZM68We1rsxo)K+&V5)b>g?MjA7|@+VF!CpN83!Z*uA)^DEEiS`{BrH~|q0!E@mLKNCc1%)NBibZ^q|iwr$=C6iudGN0hdgr~sp|*UmRLiw zEQ5`nJp^|^+}POb)|cEv)S#~a$UOCo<*=!Lsjj#ane+t_^c^-tf}r$Q9KO$K)EhI> za5TUIAZ_OdEi(m_u!@L8tt;B&;w!Z`N!=3LtG&EIhLEr!$dBxwVqel%yxlCe9jmW# zaSDmNmVbZB{`&Rn+y;Vl-xHc>t=3Dma@P5LoSCuKQfDN@L=VWa#C(qiL8zP%1X<-< zna7W<9Ex(mtpU@c=NRY~NRak_HY2Wj*z$NE;~MER=pVc_&x*(W_s+%2OppnZTt@3#|6$X@8nXq+P99ZEUpbX-^t=4o6IgZoTF zgDm$UDE!|aJpOBE+|`v5bNdpFao22URdM6f7h`h#`-ex2ccQ)YgrFQgekTDkDw9}c zJ9IZoy>Wsdg+IBtkR(?zQRl3$?q01zXy8 z#S~?xS}hpD+rvm8wsi_Q@(j`j7_M=1R#T+oIpgTUI_{h-=xL1L-yobIJB*12nLtX) ze+zF+!7gLzE*vmNl9<;igI4-ds(kMA!84ZbxxVR?E> z^WblyRg&k+FRir3v=Aymez5LB7!!qVP)nYGU^xU~C}_C+*Zncx0)a#+wZ$CXQW||; zy~x{7EwZMA48aheb7>x+|6 ztMif)s74j!sd6d4aT%1 z_t$XV8TR-q z?;w`n|D6i2eF$xNBFxLyTTDno489kxwd}-_TDVx#Q!Y_h{k^fxMB8lz-9P?I_Cruc zv}|MO!fcAhai@sdJ<3BA3?a$4n1*}%vPNSx4a-Q42;{|wB(Yv<4_~aiUKlH~< z$=gKEp90%lR|Eu;nztl0N;E|Ez8f|pz>4-sOtSp3-?xfFF_f3%H6L7Z_E1~frhlP; z0^!LON6T-^$d+bVX2F)1H@*lH;^Lu=uqIi ztoGQ(M%(3_D@)fj3NY*T0uq!cVjR@L#U`Z_Qq)Kjwe=0LrMulBWP$+-UAy$IM%$~k z(=-PuH8nL>5*hR4qq3?hK_kpiq(*S#L`}g)Il0VZCUuJNdwjW6eZB>qdEGTfzGo5< z&a@Lv_fNl4N+)ZaqZ8Pv9=k@R^F4f30K||ac9YN}O0>sg<9?;J6}HY&K`N|-h*4Y; z0!R|a=A-E}zkpuV)I_oxj8I%TE?hIRd%Ab++Xxy`32~h{@>M|1@sl;JuMvQ%5yT`}D5d zsH|a6iF5~t7e54X$sRAwRNW?6UxSo|EvcYq&lkMnEKG_RL(IHY!TL!CU>f#MIuV82 zPR|^()JzHbEa>hqh0_F63T2Wves;!w9)1ZfQ`Z@hWfoPB643k%6dpfqNp!(CNN-0K zxZ+GL6IXR@ks(R3I7w$Q$_|R5z*XKt5|qhv6T~9HPD4M}3XN}Z0hUI^JiLPhwM|SZ z^t!%BdTKgH)^VSzP`j7wC+7`KYj29QJ?;o}$j^(g$wqAe(O<{?{xQ`2Bs$uX9wvDJx|`^0s)z5q^_M+a&XQA}ec%Rnl^)bIEa|}=s&QkLxLW?*Xk1P8 z1qwta1v%Ro!)E$9#nRE=a-{J2kBzw);#?5lo)+#8PM|~Sn)Wv z6BQCH804r)A}LNajw9WmQu>&0VTY)U@CEexq}nKic~>W*uJ6w)b(eL8RLy0yfEWEv zO`U`g9?E|Iv%O6mRMMtJ3CV9yHVB;tidNoZU=gf{VjeEa2m zug90x+|;cbo9WP7S zfYP5&K6;D4^~>>x^sNPxFcS5-LyDzoeZu%tRSg6EoJMk#jGrZnC9Wx?CcF2SxHu8!t_0dSR8d<;MCO5SO8TK z>a>!$=xGqPCnV?P<~mUzp^{kSHV-i;it)3f5&GCAW}yW%Ck9so_`-Kou%dnRNVHKy zi4a^DgA<|C8k?Hx+wzcM-k4d8zK65kmpYZ5Kh?Ko-UmS#Q_ zYZ|hiXPjQBGSMcSc?saNb_qlr%pOB`K=)|Ig*^54=E{A0LdgXgOW19Dq7jC5sUXN= z>~DMuLO07|JLS(3x~Ud%sugR1r#G1}+LL+CShldx0(n?(sq=TRmE^*AfJO{Y0Nnk~ zZ?RCY!pO&|^H7+9+CTV1>7OX7Juz|LYmb@i`x~pKe{g0~bII;0O`K<}-YA+BtP{)H zV;sQ>A-z@DV_7r7{SneNe72RciKO8Lu!tk$$*iM{O@0>=5^|N2;L2AOT?B(~{&ZHcx%|oDZK+@kLyNf z8=-QQ;%`iqTUXlstFW1rlCJkY+a38$z$Ys}a+~AOOj#iZR{lM0p8Ds=MTPEFGN}R# zr6tvh>+d}!bh3*-u&;G7=Hrr(R-*{BS(DR<){be-sf6&u#GTHwk)U*c&q4e>dY16V zW0)`0)Y^JqnQu=NtLoj&pu(`&tSLWsfOqEw*DN2{tPoesIiu=i=6qO9Ue>UfzFV2vOMl@PHI$+DgDZ2)xZoR(ZfOSl8>Zh2&Xkx}b8 zF~7}3QPyd#<6Ko0(-GO{>1l^nG^otv?eH?YLGJFAX&B4jMup#x;ffNqDt*T!2D=Wt zCOU4?4`=195pu{?{gZitjtut`OW$y1?}=Zca(Ft}d=5CGv=3U^kC&-ourM#sBiGVJT(|E;j)B9}D@(0jiR0MK?I z7Pdzf{-bYyOu-C*$HV(#LvD0b4PlyWnaJ6U43+U#v#7lsmDOW^&J$r3ji|FSbqUc#)K~v2C@~ z{*=VX@rLqIpA)5H$|KNV2}mc?CWVsXOKWK|doJ|F6W-0c892^Vw{{-z;9(dJ;-_Q4 zPYe;IPCnA-awhkqnO}`^W8L?qTYU{3GVih?ez(i;qo3$|7hoTXxtHQ!BTBMXESR2O zmi)KCp~s~{*drLi-L&>ZvEYf}?Uzwr8$4M!R2+w3x3AGXH=))`RcDpQ z?4ZdT7w>6I=oT-2Go4J>Udb|m5uY97@((ThX^jmZL#it16O**Nm#pFZF1k$MN`9ZG zR>R}1GnV2z*sFF+jV(fsFeK32O+bflvwN1O&UMnqS251=R?zH_0F-W);2E?K20zbr zf$Hq?tJP(&8pGkf;`c_zfn&_T6S+Uc@(U{DDAO5OJVD1CY_715Ar8$2P zPo>S|-`^?>=Vktkc_}gn5d&+^mU!lLE`MGjY~94itA#?buy9{ON6*90Vmqixf}?rU zFIrSGHxwVld%aPF35kjACW@#zI0~P)V}WXA;^ou+H`267fHPdgMl%z~&7T-)EQuaH zeM3=8>*AmL-0$3}%-2!kK9?qDW{Zh_7-kx}%Pms0QYOxQVvkq)q)igdI7v-PEhcpR zTV)obp0T3}lAZL3G-Om3r1JYo+@3EjE*jIkk(1jRE6{O*ot%`Fm7ScpS&hJ#w;ht# zAg*qF^^-x4#8vrAHhH)5VZR)A-TRMDAtvQ-Uq%q1&{Lc=g;{|6e#f!bAY!G;Otv&Qfy3$Eu5(QINNErKgu?516DixQ$)t| zwMu=i-1Nzl-KH#4MBM+FA}I(`27fCjwA1&})lCi!i8KAdLLdnR{0S^2Mx5w!k}f~| zTO|(p5o1NA6FxDVeX@L_I{{|UHOIvG>FEqDm;!l_mx+}%SpvQV&k||@Dx;X!aT6cX z@_(CeV(3mESmXS(NqjaH93;;RsWLeGAqlctm9VvE;6Q_a0pc@clzn_vvj2YJ+D0qx zyQS=c*tE4K3}`M=W;DVq+N)a%a2$9AEhH@E=wf^18B%Vx>IAac7J~>VzQ_ zt4Qm_jN34!tBWiWR0$pc7Hg+iBU%4Jd^#vKyM z?CH|)DUtetC$VapEby?m730FSuCEECDVOTA_gZo5=b`DoFMr^1aNv_8QKMj!{TfN2 z5_}o;r7FuZT=u`@$$8cX8W82=Be)4s6mA2TH6O#+By z7HC=hF76hqc=(-0-^#z|L;^LNI5xR|#q=kg>?}RK8iSq(tSGHeT!EU7+iZuK-uaDL zdim^1P0f_+E#D(60{k~F$Pw&St;ScUJD#4NF?5j>BE;mrfGhL*jjdkP@>%9n7U7F1 z=SI=pzbmQpUVLh5DE<(v?%}8Hcf-MsTt2^RfRExSyMYsB6E>h05}tvI>;YC^Bxxq#@(AP}J5YLr6gB8=?9N`)^`?GKK@P!^=P@ z2$7qsi$P(;h9N1JURQU0G$3&YR@#Ayk+=ZQif^A_RzqPLmPpNFT4dH?5OjYSjf@od z*kX{gN5sge{Xx(H5yyE|@4(hwZ?xP*@*yIXhv98Vtn+NC`6GM^=Uy%k6$p~2=6B-a zc`ZfxX5++oVI?JRDLyn%F0ND`9hp=SE6 zoco7j=sN-hSYxmrkPzrN&gOr4BWvCG!-`9}G;Y16`3|Bq^wy$RrS|Js&O8ozaU{!4M_fi_uJSC{Qn z8JD~>*pezTE;H0lt1%(QK!TR1ySh4o{TB|tjquzCTAw`qY&Y3G#VC2QbYwHlkEL+> zVHF*_@Z$=zMPd2x(!WtB`}p<;adB~vmEzg;_8S2B`Urh?x<=O+^oY0Ho^LVr%}^ut ziv!qC?9H1un3$NHPXx{4K8t3LlMf57JDSP7^>Lm;s^Mla%KnW4_A^KSY(JStNIDSy z>zX2$xG`u_==}B9Q5DaMH?Pum)zW8jQ4h{PDkxCSL&9@M=hwWsqavd(SvTs63BkA2 zy6uGKWMm-6e>ApmF3R#ER#7;#{W0`^bj;?5kwJAL6F|NCDqoYrcMzScZqa zkxyrMo?-^ISt|3rzF@hyxdrgF5*>mE*B7|FXo=TMX!+fZUV^~^pPr5mZwNFeMxk^CppZ` zz+Ql(F?4_Hr5rgJ=#4tAEQmd~QCpLO0ZX7*HN{SY86;Ij$VEUoIh8&pCa#3Lll&D| za_OTLs+GU`NlWV2b~XXaA|<3X_Qj>8-@;MU*w}#vWt<{GT7V!>fB*b}fP$`I!JF2W z-80qt`cN5e{kpKN)O^wFAjX|JJNo8vA5CVDR@HIjx zUQH~UTiRo>Sw^>xAv`0<`8SVtSBdVNj{D@~q%^PRp$S~)2r9$~9jEtg@eY+nUzJoI zV$0Fd(Rh{v{Tdn4{tT^_ywDrhtM!dD9p#lLKyX1Iv+B)!QV!ZhzQ^+w3CgRfvB$1* z&;~LDvO$uiapnEC4eKPHbrOuoOnao^B+XxG@lcjmRw!OX*;!dxsjCws^sxdNl1saI z&U`Rn7SuhbXj_X-6Lky-uj!d`ZQ5|{ zCeAfV1l+#Tb;}&cSZ~>6DYE*8XK~+!T{kOir*Y4;;PY0hthWgt^Io(4#Y&XJsMre4<)S5*0;j_Oa95$}tHszVjHvF#MU=JLGYP%%U_(`_J(MCK1T;!&QuA$bfO> z8hY5G;@KYC*h2=t@X55C%8-fRx1X)^xjGFD3S*m~2ezilcvV*D}v%Am#pWQ~UZzaIX%p$uFbp z=5h3JrBI90AbIdabC7p1PU{!bC+|hUMiV3j7`@M=lZC;C=q~iy4fNy3yQ~valN*Q0 zP$HOf>?`d4fyW-{OA-)y)Nt6%LZa`n;5x3iRu=|eA9M_7zbgdLy1r$7DD&=eyfN$7 zFN(1NAMhJ%vFx8e=@N%AD5=;WE;TwS6up8i<-rzwKJ~gMwuxr)!Ked zGBdF00ycV(wMT0UE`;a($}c%Sos63_-ybyCHTH>f=IySWITV~$gkCM8?y$RP&g<^x z48^}mO+&BU!1u6=0TlkabGt(Q`tb1Z)1B$p(pbc-j7&_Pr<3NH2GUtSe|{q6$`~8Q z#KJnDM4D)Wa%;QI`&$pP|5N&E$f*ejz?sy3On*KVW>j~D9eSB>k`iY@ewvYy+5)t(SARAOHVJH)=jrz3-OU~xw%#W&_f)`6Hw2f$ zMGxMsUOVqS>KEA?fN!03b)Vw1=~Qf2Oxw|B@L7*t@3%gB-|;!}aBX+Gau1GzuW4nX z5zXGHP!0={&2&YntxE2Fi{bVBXQ6H*O7PwKI@#9;4*(FWW)-ojgvi>DK+)l|IyhQv zkGME!eI(J#-&5~(vN={T4KQ5Qh>(Cl<;xJ<>gwtb+8;h#FL%Xi-8>$0?4WROMkD!f zJoH++%=hMU9gP#8h=>SYV1ppV)-hZ`ktmN#!yBSsQcz`EHvxagV+1Fm9vChCcAr6# zDJ(ktXrGi(oEc(lr*)%)urSv5lO`K3H}gvSg?qf;^T{899xSnyUrLiyiy^RzPy0$R z1p9ZcFdz%;8*k!50dvw^X@9E@rf^WhQaJwRX%y1-jHSXpr;|fzqJ~XS-4f)t-kNEu zg_s{ERSH z@w9hwrt-tO;+l|jbzKsO+?F6LjeJeV0kJc|aoa3Q@xxA9kVSemE*mJ1MDbprU?FYu zeV8qWtw|&-<{HHCUH4|i#KjwObFKc>xCR9UJ$dqEv6ssC+@A`YLYVh*PJ*63$T~ao z`uhD1n8I>!n6&&zgBOk`O?hxZNOy+*p`WcAbNyGbQ**Ks1Z9zak2aik1M(f~gJ}_O zz9Q!phCd$r!jH!BK>DX3tybG1MC?#iB;nl${t)_WNmJ96Ecv8Ri`(l9X*%8_#YX9` zNl7|NN<-k?ME&I$Iri%P7OeXEt)6%egL*GMp~rRM8E+GLH$dRgWsuv~9sHH!u$^nT z@ke>EI*`@~5Fv4y66Sn&_Zyl;-otnU--|u?P9)LX=crF0W0wqq7#GXPwBlgf>C;>y z*_a8xm&3djypIJI6&b;p^A9&V7|NR1cgHUspXeD$8X0x{ClnH?5m@B~`Ncs3J`Vn$ zSdJb0zU8@nU9!5lc=wU?xscGs#ade9N}LWDKg8hM4?QKjwR_^SF@cx1(-k}L?NJ)W zrpBj#P87X8J>Kg-Le3AW9N{Htr}NxAM0aoR2T(mC!oyQNSD&n@pyQAochW}DJ%9eH zG;V%u&TVH3KYINOGUO+$#PU=P5cj59{}bK{J}$6Xt}$9FEq31|;We@4R3upCi9i13 zV;ucjS^=k*&Gx$5=*cH*tj#1v#xkSU;7D?T)#c@{@$nk!>gsB++Rj|#9Y~_KcBGMc zS;Mq}>@8sp<*-~;1uSQ!PdpP&gzfCqg4|OTwk*8+AJMRO8}EG6209)ZsW&DhB!pZg zf~X?e6riVH`9p3`_qzVLg9?6nss+M370f-8=4pCc+QxUcH`jg=JWs5)yL9b1YDl&rA0?a zfBD}lCgvj+T26FDT6I9^88NLUwL=2$t4x$|&9s#nS-`T7Kga@sHz0b1U3tj;PV8i4 zA$JZ`;u-I~dJ*^CWsZ(0Di{XoP-!*#CV9X40o8s0pqLkiUQ-dtb-f5cKiL>wOZDER z&afQLl1~=o!o!drD>nY+2+HWwF%BWe#Wo$gYP2*=2#ObWHv3#278(ht&(qcURsFRT zZPijtw6>Ozd1Q*C+UGNcU{SYjRv&%g#3KnGukByL^j6~WGkpr@XyoSR-d@e!g`>)V z?g0p43F9`5PCZHa!YAKfvyObNBA5=XQh#=c8C9t?F&N~YT)(pd+OIoh0+{Y^&gQ6Y z-q^K=6RBjq#WxV&Z$imV^~&8!#v$k54*)G_K#j)ZuPno_pFbU}+}HY3zyKcl3aYf7 zCbs7S6c8^Q(&45~W1nrA=suCFvR*P>>YS&|OH-_Xh{9CIn9n*N`fXYH(uC7R?@^GH zE*aY^U9VWu``%>aQ1p`* z4^>x`TTE@gpRW9lNfK|C`yt}dQmpI=2cf|o;$N?b)cGLn* z1o`xL3XhQBw}q55mP=nXwfc+Iq)CD;gS*RkYjKB(Z+`pEyA#Dr_bk$gqGHGZg2_L=^`3SBb)21@!`1@{6!1>9FD@>kByI&I8m@M0+wG@+ynNv6aJ5tU zE{UJbMn7@>00}CWF2wm9(m(&_V;oq_9edAC^H0j97XO_&?h$97IsLN{0pKy4LBq_} z#rAQ~?M~$!Alin9hpjKG0VlEOsHBAdZryb#PlJPoOw?l^VAYPkKlemjrCrKa8K`)- zCxvk2wK=ndg7d*&xMNdx;=s;j72dgk%prfItc5((n zW>mv~DDeq2=wwWLrRo?+xY8#&7b|usG*7ZHqrrSV}8E#$LS~1F)NX5`U!i543}W0}Wlr_Ug4% zauSl)-&5bV)pohb2Q@|thQDw8JH*W85A6qP7vi4hAB(6TqYDZ-6OqF{B6yDkZFs-fi zWn65MT@BC&?ZR&>DS(1eW;u-eR8SFCR8-W|{GObg936d+bu3&gwX`Nz`;x*eS^^*H zGS$O(zCV1!EV^RoXU$y!gP4(FJlEhO7sq-5mL_F570fcjA_2w?_*lg1b@>L;N}n+R9k7U+u9=2h^#tEyw$<}*$Gye2Y0ePIVJdZ6={8S;eZ~O$%wD^l z?A+gsh6MH|OK@T>fg-hfHXQe#&nmzcn~_u_WkGs#WmcoPucIiVJ19J56%>3y4cY^2 z2FQ|>TyqRC^pt^#NlZ+Po}QkMj}P#RY;0^|V)dZNZES3SP8&l92%C*5>%zY7ZZcsP zMsXfUu_p)qP{AsvruIYHgD{yfgcyx`Mq=@>*6EG0Rve1IWNU{ka5Z(uGFPkX1FdeU zZe#H#Kh(1kl(X9jpqLT76E)Hrdt#o91gs?K-}{{~(#%gS9$Fi93mEK;0hdJI)@M=U zw$Qt)#ybKxb&w0U$HVWeebfh1#qQ^pM^9lv&XQJQKnVUB7VJ@|*H>3KqfzH#^`kXk zCF4?%f>egzB42$Fr;MaOteIKaa$3TZfAihuVTSHs3az%uO8dF@QDRwJm&F~F-Y26P zOUB3$WAI`9Q=*jjk;wkgoLV(&1WQJJL!W4bOXjdO*nOM0(_-EWfFA0l{?6l?+^yBe~Iy))}XAlKy3>=SoKc%j%A^Fp(cj~B+> zHT%^>qYs<>Q2+=7t*@B@2Uu5r_16hmOjqnXI_@%IW#SAiua*Ri@ycW0%?FUa1*FKT z!A`G;*Hi4EX@fv9X>*&ebYbw-YhL-KF@=gwD;hXur0IQp6aGx9Oc2lRZ@ z(w_w{WEe7L67?E)5N(S&!_i|AqO|VXl8WYfPJ`GAxCFK;nyoqqt_rx$0IbC4_>95ePFO}xBxOvZ)Yc|gs&)!xc9fN zRiy8Gu70sdd_EwLR~q3lTc|?n47fXfVS|vX#rcp&fRtzRT^(wec}e1V(6uGI5H_f5 zObh&?#j#i4=(@IsTI3s(2MwcC)YOE^iVH0#qV19d?DeZ0sPXl@cgk_TtS}-(iy9o> z*~vO;73I?W+=vT1BZM4|VL742uZ48@uZ4P^m&nG2X}D&|RJiWTwLX)59u$>iGX3-3 zbeF~?OV>mA@35bNCCp#aNmnv<^Lp&h zzyBq?+M72ojuXPyW3X!^(o_s{iqYuIJ4O`wvsnETfWn zwGX+vJFCWlyay}MM&H$cQRZR?zhOSzV`Ax<)cJbk3=c8=^ZK+ii?xRfr7Kw_F&S@h zoZVnzS?CLwbQ2AjvOLi@Ib19i(#OFtgc5x)2!=ue2!ZA7t-XABynIpBaI5PS7^!Tg z`$1LbHu+ENhUfwB&Of!rUB>C`Zl}FdikhF5?IKu^AQ|g$$=le@I6B#b3p!b4RW(eV zm^BReM@+_lakf-0sG=S-6*jUo8|&Q{sxk`7i?NG~JSxhU?%QSMIh^Ka2&#%@TQ;_8 zi~XX&)oLqLNRj7l?0(EZ#g62&`KMaT+DJ}tvP1jX#Rpvt#(qK^_dfO&EF|ni-gVq? z8~!GC);c+caOLEK2rMNa9cNg?XQx>v{!oNFH?Ve&E_4^(4VMWyui^~>mf*_k@+Edp z;=y!@-c=8Z_{lkC{o|#@gH>c`-GccHyOo=5tRl{|C!D^kM5DRnQ95f^h)ZZrxGCkx zKr&{<+m|sbHRVnlQ~b1ST#lCdyA?jaczku-`if~)KjET7BhEI<>_YlfKmq)j?*RKd zp6+61dMjbnqahA8)sqgc{7YTY@+sPx}Q$`m?mgf^JswA_23i)jcIU17& z)5-caN&x2zGE(uT3Sm3&mP{#Qw;%6b%El04paLQ8k-%by)6raA0EC`CiD6j0wVEun zyR)=HQ0L4Fl()`y@KJlT2vaRUz|iC0&q=AhY2(Di`7ATEvVV*J!QO2ldBea(*SdAW zCr_h%?Q1s~`K1~-HGb|hFaiPbCVU_p9oeZ~Yp&x8rM2edOQ`zZWc`mSJbNl|lf!i1 zLRHmH5N9S@>T2JnS3oag?Cw@yHyZEa`f?rwZtCKpp#}?w26x1PHG4sima%y3v_xCw z_aX_vI+)7Hz%sx_J-0nq?O827Qmzx>o5-2;R^K%tVb zw0WA3o7jz|?qU45nB1ltG)U4lc5YtOp&){Px`Zx_POAjFb_3|J>^C@+pH*f0 z-zrdNM7GO#JV1g@2+6DGe~nFa=1He!J?XmuJnaY)0p04d+rt6%A$=hXh$-A4sacZA3frVC%MiFeX0qHGP@Y$3 zd-lXb(RwMFLJ2w_JZ}!AFqm}M&fMq_ND1NW!`~=+1;jH(bshQcV z=UU3pHFaUbW$xVG9hl^HL~j8r&#G5*d@mW#m=4s!dkwXKjR%wc^~C!q+r>SRf%awk zj7sc59WsiFS-g9>=0tcYz8*8M&D22rv*Nw)h%BQ-CeCyg;ry)xgPMXKkV&j;Z1fpk zIO|s*)ufj-@WEk-*Z*eCD0F{yg##pSn^=*Z6z^KHc}BH;QZB1bsAYM5DA1UTr=$fl zhE{UNVW0;9xL`M$t9C=AOz|Z4xx5$P>F@b#(3!KdvtJ*5U0z;RQ4m@Qq4NC>cpp9Y zf52r4WFzsb?NSWniC>)c#@lsA{a5n=j~Z?-w;0hJG^KtFf?94s!;QU^;y$|&;4e83 zOcNO1w}26pmPSFxcA%gVgT0Rb{*qhkOVY@LZo!A8kta*?DMZ|g1PyB43buMBZV#dk z)NIAxa({hfsVV)`F2g;(_M~z zK;AvR_h!)U%~R3`o8m|7-ihY{ZRNG__vZN*4dKRQS)C6fVAEvN#0t~tIM7V;86(y9 zpT5HG#KcEy6%zDAU;3S$I@RFgU68H!;h>%N)u+%^G{CS3gFy;tJ##?Pkl*C!>+OBY zW!x4+FDHI?eUw+&Alz+!v+xN1e|N~x_GBsG`R0DS3`wl$1l;-VOz0iJz#ej9y-&F_ z7U9K34Si2~cJ_X6DP!YBKw!VacW)3spGUEKz`}n2B3`LALMyVJ#v);-%UFt%NF5hq z_t6Ai3&ZA*AiYGQz%x#Jnt;K0HfH`Ci$-w0@qv8)pU5@iL*}71QhUT!jcX1|gR>BG z`=#(b+Of)aGw3O?nOu5rm3frDCY`yrrh#S_{qMcWqp6IFp9S``pIM&O`cz>ja z{x{64uKw`hLl+CXQct~2;OYdlcMY!7qB}^HqqPBdOlq^`&glLixQ!w0!{X6JKL{j{ zgr~qo0m7&7o$$s_5N5|4!y#4{C9ZGU+9OB+U;gSGXS~pW>eK^>T3GXXwQiFYz)opL z!_2`kFfi~475Vq?-{2xsz-|dhG?1LY02OKhM6x-bvwyM-DTJqJ0(LW+V8REZz9HxN zm=0_oBxb(an}DDdnDuxMY)g7+{vgH$TMPhg!67pj`xYk&6--<;h=@^Iju%21!o!V# zPDn%tXT8$Ba%YBJ|0R@~j{7HOQ35aTfRNh#`>RKWL~jH*)-*oz za>G~CbIGYG6}EsWEViF(Kn$xFX!CjO8^%Mc4*-Q$C0OOM@fZFj7hhpH{9IgITtdPi zZbiqwo{yF`AQW(0fUO0*j{BIFdC-k~!_BD<4H=KwTk!7Peu#wh#g+T|puZ?PTLdv% zMrg2+{OQrN|GCiZRSy~*4oaPax@zLlc)*B~{u!U#CO4Nk{PB;W7M+xq0dQ)?{Mt!k z-$+PL3C1}YsIX;t{`_=(2*n-`9G~MjW09rH%gtw`S?RIn?%~Ce*HD!qX2O!C5vKEH z&SmZ?vDK=uB`91WT=sntkqKyDK$6?>nzL({Dq@OuIN?C1!fsh;||O%Mzd z;d7wh3O9ZLlv^B!fiHL_5RadqdXB?rSj0A9+)cDb9GLxl2PjG4S#N1+0VU{XcDDP* zUzxZSutblCOyl){mmAnmLf3&>Q^sn2ygrmK0UD_w8|xT9sGiR=!1VH*iD{#3Sb>(N zkfMwLoD6V#VXCD*5s6|YZg$}>DLEnHyg(gfy=+H)_X?bsOAjuDKg59pPUWvA%t~2V zY?R6}81s|2ex7UbLXRkfRi)h7!HTflSjR|*&vCdEo+I*eV=}(i*pUHcp(MAYt{k^q zLU7$B=%cx!ecE5oqtybf(qK7f5!X##(8~ZD_sVw+c;Cctj=|Z0TK7G1vtH6%%3nO@ z{mGymtE#HPW!B>e5Nk^vQTC&`L~0s@cZWS3t-&~Qa&k!$u&gWsTtZIN zd9sz}u^83}I8X#OkH9hD+>Zg3LCFo9VAM)Jq7uJuCo%W{v=BWBW00<;<^#_&fED32 zmCx5)x#>WeIL$W&dbRwA`F)9(^&qtY`AaK$a58RS?wp_XR=%bZ4H?WD#PYc!IjN|e zum9$VD%egl`NTY!GSd#OpQpEgQ3R@Iqc{nJ)QBR2v*o|wlZ!Bf16 z`s)KUC#~h8@Oxql997Uj=z0Q5Y5c1&3oGk~&EMI8mIWdZ$S~<&0yEZb%@zUx#EPP#{e=)Jkc89IWtK0? zO)ET=(XaUL*Bwa3Kx|(LJOX-1GDG9ptaosS2|E|pJ;9IfD-AS8d01|_u`(Bvw(tIk zCf}S>TRjii?_TpmNkh9!xZnu+8xU&%6%5Xc_HuR1;{bvcPsQqA#O+ z3FfJuz=POR((CLK$F6tT%~JR_MOf`a5y(z(9Z^sCa2e3fK!O@KfW;UX)05T&R1lbNiJpt5SBo*TLE28 zzsRr|Xdtle!`_*hnRtCKfIk38&R}X43@C+GY}|!WMB)T$ZktPi~|U`mIm(ZtWcG~jDGfxK};>Xm>cfloqWF5zan+?piMfW}Ek;#++D(e7z>n(rkjr(d$e zTma9$ydFdU4$Ionu{g`}bseE65X&Y{4>$7)cY$HY2*yBHbG4i4DcOE{y=4pzsslbd zJH?G`t^OWI0WEhEj3(Qoc_ep(<<{fuS|x#@K&;@V!9+y{wD$!-?6=3+68K8``m+G~ zGV{8D68TL-f3n7P3&6AcV>oK<-$q&e&UU6d9)UrY*LEDCXK85(hJoeScc-_o@qNVr zLh(lEs=Me>FVDFKHh@-w*dF@$ScWo6*x*kLv?dL$D4SPw8b`5=vt{>B*1B^p3)|^;6D+fyD)w zt@u*5&#vIJ+PUb=qtj13{pX<$L2mLc#@5@(vW|{{B^7`)auM{`T+>Om4sZuU24G@v1NBmT%~n9LZkQd<1(< z=eGk8vi9J^bqQfbFMr(sZGiG7F0RwM^b{=v8Ni|O%Ez7*ICC+GX3)zXY78L%)~G7^ zPl<4E!X2Cr8x&;fDap_b2IV^=R|*9vUQQVoC>d^9#ug?m=DA2oV?+-o!m|0gRDn3za{%(!E6->G` ztc9;Wky5{sd#nTpUhaeXw=-R-BF$r-4UM^q0s9!}EMZ|`AocV>Gkq0FRt_KL`+wP9DiaaT$gI@uV@#AJHn zm?|S|1uY1O_xPC$k~~u5yflXtzuhAcmfv6^qAr{UR8&Hl$KP$Hx!GQho5~2SlUa~f z$d@?%r#(@@`f`|@RTbH4^@!y2p>vCjGT=&51RXP+*J?^iVx|KC)S|HXvVF8(+^?~gIXg2%jJ zJFL0q`il&a@Kc<+nIwQ_3rtw-4d;vNaO?w056Mru&qJ8T#m;7ygsVIb7Nf*3Er5qp z!@%bxUkfh1_Pxtd%0$O~3PjL4K+~L`dmtvCXMn0N6G03BhyB?<7|oqteo9QuTTa7OxcX+G$}I9a-u zNn(ItWWl=n*ODSKcYCICrsuM;SlB4`k%R+g1K297an^n4*Son7dFm-*g2==^Cnq=Y zy1sYx@%GyFWcE)+EsH-b9(CnP@oNQJZU+CRQf)l^Q5=nxMz0m4X0sA7wKuXT?rl=Y z0}iHv+ABW{*4fsPWt?{hAjC@6JkX{=mDv|(0TwafyTHop0Da)7`CzGo03HJKXN&R| zEdV6|5y93Yd@`c4wfxAS%wh;+!YQy-GyI7ij|N7~a5`sG%m=C~dQ zc)$g+?Fk08wlrOEhzHa|aO7tJ!#7ruk=N(ag@z1J18rdh;OaGIePm;;N{fX^dkG-2 zDe$X5{8$3>Kk)Nr=%w(1Iid$qU@ADB!u2k+1J*{TUS_%Uqe$=;+zM zl%e9xt-$lKf^l|zDd`A6RJA$(A5GsKi1pw7eNkj)Btj@#X4x}^q|9V*viIITQV1aw zl3hkt_TCa@XJ?bW_X^LszW49(*M0XjKjXa5d9BkOs$5m*_LCcVy6Cqlu3zgdNMhME zZA~OWMptmzap@-uq44n+ZFNI6wY(J0{^lC>Mb;dzUgNfMqG}ViVipaKr_o9em+?{` zZ&24#a>|kRs2AFvwv(lDbf6^xVchkA*M-7icCa}$#q$=94uH?HbG()_;)eFV>(_aq zNfq=aU5F-Q7Cv*rUzsek>W zE?&K<4+`klmxLGMO`vu+`>`i1d^O||vL4C{#HZLX6@xFTc3VFg(y{*#8;kD3(I*W+ zP=6}yl~mmCmE4EkcnG1pIFhBW1|cb($MnmOyyj1$$%c+XBaGu!wX{BRbf94>Uv_@} z{a78lkHXGoaG>Jj;X!KRc3fyJprxD>DNO|u=IvCKsD`wY#Y;-J(h+M28t?u!vNqkg6M=R3cof_}w~l?9 zUw^c+*z*OgH+|x}s3^437}$LpQ8(7m-!Lk~t*nk!*pFy9{PdGi>AnxpWVh(I)YR0{ zQpoH97yDa%i zDH1*;L04(02(Ygcumq!^jAA+boiHY^t1hrkSV;0f2FRwp^`-3FJ@lZ=i;*+*|h&&KZ?$V!hnI}s|Zx^@z)9MsyjJfeSM z`DsI*Dok;%;OrzchEQQFIcBWtu&Gs7OYUd4ZpB2$hV2z!Y4^W>v5B4sQS8=vHJjt3 ztkw#gkl{Gl%>;7Lu(F4Wkc6h^Rl{M`r*ZK}4mzI~TI37z((mC-T}*O^cE|mHa?Dvq> z;cpl4PC*Mk_F0x_QuUoF;tBsp*H6r0S`suctf3qo0RB@6J23{9EZ0Lri|$yUeX04~ zKH1X(@C~>9*Q!iQ#j|g$zu-p#82$&ew>h+S|IivWa&nQbY&A7FNIO8Dd&@7opNfia zqTTTGJAC3FxB5ulN((B0J6T$_CC`$of>!ux<|hO*#b*bXVnqy;qlCNHHb0#bk|+q7 z-H=#G{ef^drOxh>^ig~}Gq{*(JCrbMPg+z8-KlzrLiT1mIvP^kzc;iLWrbHw|5!cV zp0%$(vpKPr-J;i+^fga0lG+XmNH{vFFbJ_&8QHFE=vVn9wo4N$M%ZY>`LnFP*(Ull z+88-{7W^>nv#yQJM75d$wMrhfQ1mF% z@{#j3P*i7H7F&|LUsYB8h5CF>iSW_7OwFq6nS>S-a(@`O$*IZ6blbBNt-3D>TPWxLWn7FdI8A+tRPU1yThfW0 zirwGxTdfGZUwjuv0_uU>+P1>hr$BPw=WjMk-AiEZ^`(0FDH$*UwktR=-d>v1L%03kGj1$@O$6 z-c_DO0lXk5{or|$DEiYXjLXu~1Kvm@_^5Cnsh#8QdgLUhg4Q?jjT54CymF@ct@bn} zpQubDBYSa)HK!VmU8O9A`*|$q^E1J}i?33WNB5;k{YVpjonvM4o6Gm~<{V}G^IB^` ze8cOzmKYYq`>VUhFq#p(+F!q|BBK^4Kz_k^?9XxS&f<#DarieeBIgi7}uTRpO%(M-iM)E22R@Ad*9S+|MQmQe>$wGcIz$F z-hP0(q}+h1$*RLuLh9OG@af*LSU-}sUobBGwgU%(5P;Fhj%h@fXW|SWy7{`r&d$y; zyP7UfCxAG4@7)uy8y9k3=tO6$SUK2 zQ4=HY=8hRpnJ?;@7ZLJJHq1f2USV|&D=KRrK{LA zx_q`xH!VL67x>!j?C&)co6jG_>EoORR5j#xig%h#&v zXy1RlyO`oSr1kkx_^fwfMaS^sZW(l1@cSlYRt0S=EH1{qe=lS|DE<7|v)P;c99KnL z?+wbF@!o4x$cpW`N6_(a>iMHE`PRjl59B#7`%8+;^QRh*Z%XxBJ?VM$v3&h^1)>xT z6lvnS22Wlhyn^fEWZHF0=JY#lt!10EnU_U0&w6;dZe!5dpdx7XhN}iXh9z=#I0@`k z*9uG1#@{@9l4&X8%WA3x3|aA80Z9}ZDV6;m%c)~Cw(+Mdcep9Vz5)cP|2M8f=M22k zHBwSq-#rz_Zjcz#AnI2qyjJszIqt(>yZ`(%(`APpl8*#0t6T4Zdgd{`j9LgIjO8F* zl2X^UptRkvXP@#o>ib(-T2fF=f0rraX+wQCLd&6k=IE$3Q61WX3t-&id|A5#e6=iF z>x)+P{Dmu0vMFo$f{!wCX8pJJny*m%e-00aa$^SeC`9M>;n_~zV8%<&O9{3@9?xD0 z(c)az6yE)={nroUzX$C)R1U^;Xm0GrJ$PQZ0Qjc}b2tnF37I4+o}R}b8RQ-?gQ8zY zs{QaLw2YR{>2WVy(~7dyF^PQzv_eYXrN^H-tW21Z{MGxK>u(0KKjmRMcyFKNp(-m0wSHh`2_7%;g zc}_o(34c#@vXEa5Yirs9Dh8yha~J7W_j_csF{n4HXoZDoR3w*ya~9(J8=ffFtz4(vMC*K!X1hq!el zb~EAxIZpR~u+S2Y)qmO@`^8k!FxNK6UB|e_UEbhAH@Fsw1qQ3nW|2g9(U8zovikcD8*VXj_T8C?fU~Baq^y%O^g-*H}o1fzPb<2dlBLxx-!x%XXl9#;@-?z86Vasbc(aKl92np69cEiT*nz> z{^!p3|1C*s9ltEziPZNwjvhN-_~YKLQ?dY`#pIVer$~M6AlR-)T+>;nA&l=tq-No?_EJz6s1>1B~(jCR`l%Aa1naIN5}G#2e@d zm}&UDIB5v5!3Y)5Gz|#ZlUzW7lpZ{IU}~B%wTV8;WH5c88=jw^C(-9&U}!OIJO&sY zfCKIr7A0C9L;uyk&{v;5+Im^snp?zS6?3=P!4D@5%Wtg1o;1fz0X$&sa${v0iC?_C#M%w%sTpV zS0l;kqt!qZe2)`U9v#f|T2V||<(wV&I8}$QH#7u(383gYd9u{`{XN;;)9<5~e70Vi zdNp+9&eYZ5tDhZRBXI>!bz9@hF~Nm5i_Dpsx{ky5Q!Y-|^P^)F#V=|N)dt6u#N-fZ zFh>cbym>RkrC+>PQ`ORTrnu(pdodMRf3ewQ_WG*0*FQMzt+Y%0;NNmsh}@g6(E78s z(w>U#HW-Y-@AKPLFPf2drNjBHba5O*8W7(vlYSZ%ge{z|8HFED08s;W5z_geXwWUG zgy16#db<<<;5jYiu-+I)s?cBqn%dW3y>kazC{@UZkPdZ)vJ9x*jm2t)i#-9`KVagj z18kwmP&vCF>NEoA3rVu;4{$61W(PCo)ytS%OlukD@MT_m?HwHeq)x(ryd44aat{<6 zXfRk39Rd!u?CbVpN4!8LUu)EYP4C2pIQR2GJkUew2?p&G!NxY%vy*-4fd&NVHBdeJ zYfrlYxLWdtm6vxH$h2B`h`_@n{Ne&kBj6ozOa_P0G_AN-sr}UChc$@a_{{#Ef}9*c zvi4%#{_vP(mw}E|&`i)En%F6IPSb30} zb9XUCRyxP4kae!D$6Sp@D3$eBJMP?=n}vav{`vOPZ(9|ATsOv7<8P-loQRP4-s7wp z?!Eohb}W|sy6@K7E@J%fS?=F29UGNhi`h3gCiM!{m-#4YpPZ8e;G!o`!0-XlA)0CkI1wG6@d*l|2WfDz72p*^9Uw&my|D=iCykeg zJPc+4k8skLo4k3k@X0d&Idb9U5B@Ni0(N`%DPN6MOR%S`&BqzgW}p@hPoN~U+}8)Ja3yHr z9!C7;dtfQy@!=&vO9?>Z!*gXGel0WjFg0~u>b=d*z6!099t_)PJsRj7)6>&gWobRp zbO^vAYz^)H7?%>g6R%voIjyh+!0IAMP^{zY^bGDj zpCgC*ctD75k>~+g0?;km}NIZm4#>C8tHDiwG zkSPp~oq$Bz)XPgGh5RL4VEEC{TRUjS?}K#|t~oP0J7KHM1PXQm%K-o>wqslMuizoV z4fYb*;&-8uMptwcaXzF-dpg0<4%ik{l?!mzQUxJV;3t8RJ0amuuGjh`(Alo5Lug_e zZY@~k_z6B|t}y5g1DWVKDao&(DzCT$f6UfrZoLJyhxvo*sRf2C-spATU&-Z|r%aMX>x_Q?{tbG|l2WwE)!E5O;$(>-$~*!c!r}U2EU!!- zQ9plmg{WXZ15zHg;d-i+5yg7=z{^eeoVbp-(dB!~sC3_(abp5))GZ~N9bm-Z^eBab1GD6yt0L&h8bHE1=-ni4G0-DuS!L#MZRx5eY_vFR>l#{h{&B7aA~NM zfNWZP*h25nSiiO22^>1bo zqPFr15vn9x$7fl3JblNObk67BV-Q49trcU~Twmpb`c?D&zomTU5rTL5=Zi({lsatU zRve{FNwq8L7tXz173R1RRo*`^zrIB6;AaB@0^laqoS0x0oPUL$76F-}w98B&#ZJ_H1X?7xbb4U*eRo@`R#Ag10%#kc zhzk|9B~rN8dw)^HmZ7P1sHi~%l=N5Y5B^vK0E%~dGKF0Dj@X`o2^eh{bf=}{F>D0k zt?Xcd#@fOe_|L5qVn2Lvg{e$LNgo2)^z~`^a4c?NthsOy@898Jy22ToB#O9m8Pw~> z&I7wTNGwg>3X;PHB)C9zq%`@I5Gp{lyNVs2}i z!$aut?km^5k#>}-`1{?D)r#euKZ|V>Vr{iE^Rh$P5q7!gyzI;Zoy^%K&x1d-GH{2qJltJgM)X!oVsA>7ctuN^~&fT80(N70)2s`_I zwXkJX$Di)&;=93>gA32h$mpQpWNd5<(N`D7z=GXVn*>=G=uhH$kZq)uf?t6e)SG5z3veaDV+s8sCQz?dyT0LIWsL{I6rK}s1whl* z50#L&M~oLB0wm{Ha-_H34PY)ntBpNN{>!1`%y2u8z zP@aBWb!zG@Hny*DtN>@e+0vbf8P4smbymDFFF46V5Mfc7nTmDKypaKqj-~uWnCg+ zrt|!F7zHMAVPqJ0kcUnX6+W^6YBoMFT=z+*SND34?VO(F`L&Xk_E7@oi!ON2pOfJQ z!j(#zf*;-q43<`HK0stg*xWkhZ{K`h_v=m+=4Vn&a#PiR{do|)v`yDvpxJw{ASm0J?|^%@l2E(^ zUjmZ`Fg!I=n+kf2G}_9xPD1*exvP9OEO1<0i+TKyGA5 zI5H|)>6uqo2ejsW&iw4X+$%5*oU>Qt;c~w@P=?R}9D&dY{Qa|3M7Munrhu9*U1q2_ z51#R<;yi#ir_MIqqmY6n<9Vz{&=Z2VG6r6{;-QkBP(pt zp%rMs?p>2dP=Ay3c|dSiy9dY(x*E`H!`lcgtG2#=yQ zScRSxmy~=x_INN>E^hLJz^$QjCWu;k*~!v!84`*pxOCg=*x?{sKr0ms^iI*zdkBYs zp9AwKkQg9x(`nyFkRc5S4X!|q1Guz?d?n`Vy?D+~9~tqF(=Qh8pmG1Y*8!vDEmzbFK< zf?zoK;cW?0I=cH7!0ZpU{6?o;1Ce=dlBJZ=eK-$+DBGpYg)ST8qr&XlkY?q)fe)AA zDd=(LtLNc2frz3n_ESi`ihf;mH0fsa+#9Vbrwm>b-Tp*I7D%INUOa}XBs~C6Fz6W_ z;MIp2Q)0ce{~Yw}LWfV%@6LusL-*(}$jntajk&F;=iJ2)tm-(V0o*@bRq-vYz=gUe6Aal8S zc|LHw4Sh2}PmkC7-~p7D24ZSh*I5CGOSo5A@*khYkQ0g~8g5M^P4Mr8u-0K@Rd~@@ zF`6-&aYO%Fo2g8Z?LE#3KKa4TuS=?AV~{JxI3^a)qmp;3Dc>0l9n-h`r%q2G*b+-h*_x%1o~@qw;b;xDRBj0FqB}si?VL z6wZ@G81`~wY57V)K8Ap|BBf{X-_g!r$E$M2BEl&ga?cck{7~O%LA4IeWD44Uz4!=d zhq~aau<9kj>la%V&M>IWUjx~(4pt?t3OhY8UA)#H@5y9Ihk2?^*sfkZV)6<;<@Dz! zK-Kv|+RNqCuSZRMcrkiUp4OC+9J`oaC(}kJc77WI6%=--ElJsOLfs4?%Xn#8k}LSD zYh>i+lZPh|A(~_5%gq6bO?OaG$c`#&_j9zM)w`^B7wgJ^o6pW}XA9A~-PYEI{}RA~ zdeB!#b=1FEf--h+P=hzI4*?EUS7BiRS$J(C;7qS7kKoUW@H3h#&3AGo3)Vv(OB=%b zGf6w$uCxq_=|ZmsjE;YmK)Azm(FO8z^UipH?AqSGC5XZ(h{^HT#y0g3yBH1506AO7 z(eX4Wu)Bw=;74<%b+GM$TFry~^vE@lj)-Y`cm>! z5a?O>ph@uQ%g8;QgeUi+wAR;cM0x8nO-Ezp1~KE$(vMwV$i&hpFhLf}UB3Oe5{6<9 z>L8;8v%gIA)|ZOnpHnjm{3`Br`-Sez;iv=)kxkYw1a`GRwREx54@Sc}4?_SLjf-0( zl|i3;(0D-fP&wdgEj-Nf@jMWGPp=K#07%HqZae~*z{kf2jzlP|H|Xf-4zjjh8-4Te z2HmLMl~xk1*c5m^S-D%`nA_}>dqm#2{{S#P8OI|~=r80Y&_Y3vzl)f_lP(D7F$Bpx zjs7CSK@1E%|1w42G|1+9tAmUn+nJn<%m-jR&(Hyfa_Y!uP_SY1d9hxe= zTnLtswa$7h8_mtPWRTSS-*$)}d+CYy$nYqGFfa(Tae_r3*Dbr?rCvV4p>PgrdgXat z?Zb<5M*$9`Kl=J7#-AV8m?m}KeOX~Fe4+6v?tHVH<>};YIk=KVv-sJTRO~O|6`d$w z&n>9_RrckJRTzi9$WBF~bqDt6ygZv9Zz*FJjGUjTt5aKR}y%E8=+RQbvvJu*0PnyPf~#S*XCVX!sCt2}mZm0JHU@{PV`i!1Lg7xWTno>` zw0G>EJFtG{2)&}>rtEZ;{0fkqD_`yg!wRox} zuHjfYzkl@fv0d;iT-85eTQzP5l3K6!itVbzd<9aNGeN;%{oN1|3p4a}wRqXxs zkB{$iwt&p-zH{;LJ(q9uAJ(&zqZ#Fz)?84M9q*bR?iGLikXsQ!RNPXM&KhpYzKdKO zBC)2>c7FlcstaPFxKrH0_35t34>*=jDjLr6;e;|uK{rQX8TYcTC804%PNXB( zBlDz6D2=~+zMfe?`7>kMgFH4KQ|IU}Rp{U+`N`~| zi-BS_v-)J6)V8`KIje2KrDK{8vDz%!M>_OF0{>EWA-@LVMr70mfmZH4oq$f<4qy{F znbCtkq*ZMc3WF{)?vck?-)GsdD%m_

h`l+SL&Z6(r%j)3`mHPj{y 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
-带 KV Cache 的 GQA 在解码时每一步只输入新的 Token,把它的 K、V 追加到缓存末尾,再与缓存中的全部 K、V 计算注意力: - -```python -k = torch.cat([cache["k"], k_new], dim=2) # (B, KV 头数, 已有长度 + 1, 每个头的维度) -v = torch.cat([cache["v"], v_new], dim=2) -cache["k"], cache["v"] = k, v # 缓存的是 4 组 K、V,而不是 28 个头 -g = n_heads // n_kv_heads # 每组 K、V 由 g 个查询头共用 -k, v = k.repeat_interleave(g, dim=1), v.repeat_interleave(g, dim=1) -o = (q_new @ k.transpose(-2, -1) / dk ** 0.5).softmax(-1) @ v # 新 Token 可以看到全部前文,不需要掩码 -``` - -这样逐个 Token 解码的结果与整段一次计算的结果一致,最大误差为 1.9 × 10-7(完整代码见[附录 A23](#a23-多头注意力gqa-与-kv-cache-的实现))。 +带 KV Cache 的 GQA 在解码时每一步只输入新的 Token,把它的 K、V 追加到缓存末尾,再与缓存中的全部 K、V 计算注意力,代码见[进阶:带 KV Cache 的 GQA](大模型应用%20-%20进阶.md#1-带-kv-cache-的-gqa)。 ### 采样参数 @@ -338,7 +289,7 @@ SFT 之后还要做偏好对齐,是因为 SFT 只告诉模型“这个回答 PPO 更新模型时不直接使用奖励的高低,而是使用优势(Advantage):一个回答的实际得分比预期高多少。预期由价值模型(Critic)给出,它估计“从当前位置继续生成,平均能得多少分”。只看奖励时,简单的题目每个回答都得高分,模型分不清哪个回答真正更好;减去预期之后,比预期好的回答被强化,比预期差的被抑制。 -把生成过程看作强化学习:状态是提示词和已经生成的 Token,动作是下一个 Token,奖励模型的分数在回答结束时才给出。每个 Token 的优势用广义优势估计(Generalized Advantage Estimation, GAE)计算:先算每一步的时序差分误差 δt = rt + γV(st+1) − V(st),即走完这一步后价值模型的估计比之前高了多少,优势是之后各步 δ 的加权和 Σ (γλ)k δt+k。λ = 0 时只看一步,依赖价值模型的估计,方差小但有偏差;λ = 1 时相当于最终得分减去 V(st),没有偏差但方差大;λ 取两者之间的值来折中。 +把生成过程看作强化学习时,奖励模型的分数在回答结束时才给出,每个 Token 的优势用广义优势估计(Generalized Advantage Estimation, GAE)由价值模型的逐步估计算出,推导见[进阶:广义优势估计](大模型应用%20-%20进阶.md#1-广义优势估计)。 奖励模型只是人类偏好的近似,模型可能找到它的漏洞,生成得分高但没有意义的回答。所以 PPO 在奖励中减去新模型与参考模型(冻结的 SFT 模型)之间的 KL 散度,限制模型偏离太远。 @@ -381,14 +332,7 @@ DPO 的损失只取决于两个回答的概率之差,需要注意的是: GRPO 把 KL 散度直接加在损失中,概率之比的限制与 PPO 相同。代价是每道题要生成一组回答,DeepSeekMath 中每题采样 64 个,生成的开销很大。 -大规模训练推理模型时,GRPO 暴露出几个问题,后续的算法分别做了改进: - -- 全对或全错的题没有梯度:模型越学越好,全对的题越来越多,一批中有效的题目越来越少。DAPO 的动态采样多采一些题,丢掉全对和全错的,直到填满一批; -- 熵坍塌(Entropy Collapse):模型输出的熵在训练中很快下降,同一道题的多个回答几乎一样,失去了探索新解法的能力。原因之一是概率之比的上限:ε = 0.2 时,概率为 0.9 的 Token 一次可以升到 1,而概率为 0.01 的 Token 最多只能升到 0.012。DAPO 把上下限分开,下限仍为 0.2,上限放宽到 0.28; -- 长度偏差:GRPO 先在每个回答内部按 Token 数求平均,长回答中每个 Token 的权重变小,错误的长回答受到的惩罚被稀释,回答越来越长。DAPO 改为把一批中所有回答的 Token 放在一起平均; -- MoE 模型训练不稳定:每次更新后,同一个回答激活的专家会发生变化,Qwen3-30B-A3B 中约 10% 不同,按 Token 计算的概率之比剧烈波动。GSPO 改为按整个回答计算概率之比(取每个 Token 概率之比的几何平均),并对整个回答截断,Qwen3 的强化学习使用了这种方法。 - -DAPO 还去掉了 KL 项,理由是训练长推理时模型本来就要远离初始模型。它用 Qwen2.5-32B 基座模型在 AIME 2024 上达到 50 分,最初直接使用 GRPO 时只有 30 分。 +大规模训练推理模型时,GRPO 还暴露出全对或全错的题没有梯度、熵坍塌、长度偏差和 MoE 模型训练不稳定等问题,DAPO、GSPO 等算法分别做了改进,见[进阶:GRPO 的改进](大模型应用%20-%20进阶.md#2-grpo-的改进)。 | | PPO | DPO | GRPO | | --- | --- | --- | --- | @@ -463,7 +407,7 @@ SFT 的样本是一段完整的对话,通常每行一条 JSON: - 秩 r 决定 B、A 的大小,也就是可训练参数的多少。一个 din × dout 的矩阵增加 r × (din + dout) 个参数; - α 是缩放系数,实际起作用的是 α / r。LoRA 论文把 α 设为第一次尝试的 r 之后就不再调整,改变 r 时 α / r 的缩放可以减少重新调学习率的需要; -- 初始化:A 随机初始化(PEFT 默认使用 Kaiming 均匀分布),B 初始化为 0,所以训练开始时 BA = 0,模型与原模型完全相同。如果两个矩阵都随机初始化,训练一开始模型的输出就被打乱了;如果两个都为 0,B 的梯度中含有因子 Ax,A 的梯度中含有因子 B,两者都是 0,训练永远无法开始。反过来让 A 为 0、B 随机也能训练(见[附录 A26](#a26-lora-的三种初始化)),但有研究发现默认的方式能使用更大的学习率,效果平均更好。 +- 初始化:A 随机初始化(PEFT 默认使用 Kaiming 均匀分布),B 初始化为 0,所以训练开始时 BA = 0,模型与原模型完全相同。如果两个矩阵都随机初始化,训练一开始模型的输出就被打乱了;如果两个都为 0,B 的梯度中含有因子 Ax,A 的梯度中含有因子 B,两者都是 0,训练永远无法开始。反过来让 A 为 0、B 随机也能训练(见[附录 A23](#a23-lora-的三种初始化)),但有研究发现默认的方式能使用更大的学习率,效果平均更好。 按 Qwen2.5-7B 的真实维度计算(见[附录 A16](#a16-qwen25-7b-与-qwen3-30b-a3b-的参数量)): @@ -502,16 +446,7 @@ Qwen2.5-7B 的权重在 4 位下约 4 GB,比 BF16 的 15.2 GB 少了 11 GB 左 - 只调整格式、风格或者某个具体任务,数据只有几千条,或者要同时维护多个任务,用 LoRA; - 显卡显存不够放下 BF16 的权重时,用 QLoRA。 -全参数微调一张卡放不下时要用多张卡。普通的数据并行在每张卡上保存完整的模型状态,增加卡数并不能减少每张卡的显存。DeepSpeed 的 ZeRO 把模型状态切分到各张卡上,按切分的内容分为三个阶段。以 Qwen2.5-7B 在 8 张卡上训练为例,只算模型状态,不含激活(见[附录 A25](#a25-zero-的显存与-mla-的-kv-cache)): - -| 阶段 | 切分的内容 | 每张卡的显存 | -| --- | --- | --- | -| 普通数据并行 | 不切分 | 121.8 GB | -| ZeRO-1 | 优化器状态 | 41.9 GB | -| ZeRO-2 | 优化器状态、梯度 | 28.6 GB | -| ZeRO-3 | 优化器状态、梯度、参数 | 15.2 GB | - -优化器状态每个参数占 12 字节,是模型状态中最大的部分,所以 ZeRO-1 的收益最明显。ZeRO-1、ZeRO-2 的通信量与普通数据并行相同;ZeRO-3 在每一层计算前都要从其它卡收集完整的参数,用完即丢弃,通信量约为 1.5 倍。PyTorch 的 FSDP 采用同样的思路,FULL_SHARD 对应 ZeRO-3,SHARD_GRAD_OP 对应 ZeRO-2。显存仍然不够时,还可以把参数或优化器状态卸载到 CPU 内存,代价是训练变慢。 +全参数微调一张卡放不下时要用多张卡。DeepSpeed 的 ZeRO 和 PyTorch 的 FSDP 把优化器状态、梯度和参数切分到各张卡上,例如 Qwen2.5-7B 在 8 张卡上训练时,全部切分后每张卡的模型状态从 121.8 GB 降到 15.2 GB,见[进阶:ZeRO 与 FSDP](大模型应用%20-%20进阶.md#1-zero-与-fsdp)。 #### 5. 灾难性遗忘 @@ -564,15 +499,7 @@ INT8 按通道量化几乎没有损失;INT4 必须按组量化,困惑度从 直接对每个权重四舍五入,称为 RTN(Round-To-Nearest)。GPTQ 和 AWQ 都用一小批校准数据计算出各层的输入,在此基础上减小量化后每层输出的误差,而不只是权重本身的误差。 -GPTQ 逐层量化,每层按列逐个量化权重:每量化一列,就根据校准数据算出的二阶信息(输入的 XXT),调整还没有量化的那些列,抵消这一列产生的输出误差。论文中 175B 的模型在一张显卡上约 4 小时就能量化到 3~4 位。 - -AWQ(Activation-aware Weight Quantization)基于这样的观察:权重的重要程度不同,与较大的激活相乘的那部分权重对输出影响最大,只保护其中 1% 就能明显减小误差。但为个别通道保留 FP16 会形成混合精度,硬件上效率不高。AWQ 的做法是: - -1. 用校准数据统计每个输入通道激活的平均大小 sX; -2. 量化之前把权重的第 j 个输入通道乘以 sj = sX,jα,推理时把输入的第 j 个通道除以 sj,乘积不变; -3. 重要的通道被放大之后,相对的量化误差变小;在 [0, 1] 中搜索使输出误差最小的 α。 - -对 Qwen2.5-7B 第 14 层 q_proj 做每 128 个一组的 INT4 量化,这样缩放之后输出的相对误差从 8.98% 降到 7.86%(α = 0.3,见[附录 A18](#a18-权重量化的误差与困惑度))。两者的区别:GPTQ 通过修改未量化的权重来补偿误差;AWQ 只做通道的缩放,不需要反向传播和重建,对校准数据的依赖更小。 +两者的区别:GPTQ 每量化一列权重,就调整还没有量化的列来补偿这一列的误差;AWQ 先把与较大激活相乘的重要通道放大再量化,只做通道的缩放,不需要反向传播和重建,对校准数据的依赖更小。具体做法见[进阶:GPTQ 与 AWQ](大模型应用%20-%20进阶.md#1-gptq-与-awq)。 #### 4. KV Cache 量化 @@ -1306,7 +1233,7 @@ for (CompletableFuture f : results) { } ``` -两个各需 500 毫秒的调用,并发执行共用时约 520 毫秒(JDK 21 实测,见[附录 A28](#a28-并发执行工具调用))。有依赖关系的调用,模型会分在前后两轮给出,例如先查订单拿到运单号,再查物流,所以循环本身不需要编排调用的顺序。部分调用失败时的处理见[可靠性与评测](#1-容错)。 +两个各需 500 毫秒的调用,并发执行共用时约 520 毫秒(JDK 21 实测,见[附录 A25](#a25-并发执行工具调用))。有依赖关系的调用,模型会分在前后两轮给出,例如先查订单拿到运单号,再查物流,所以循环本身不需要编排调用的顺序。部分调用失败时的处理见[可靠性与评测](#1-容错)。 耗时很长的工具,例如生成报表、等待人工审批,不适合在循环中同步等待。可以让工具先返回一个任务 ID,保存当前的消息列表后结束这一轮;任务完成后通过消息队列或者回调通知应用,应用把结果作为工具消息追加到保存的消息中,再继续调用模型。这与[开发框架](#2-checkpoint-与人工介入)中暂停和恢复的做法相同。 @@ -1656,7 +1583,7 @@ if __name__ == "__main__": mcp.run() # 默认使用 stdio;远程服务用 mcp.run(transport="streamable-http") ``` -SDK 根据类型注解和文档字符串生成 tools/list 返回的描述和参数 Schema。工具抛出 ToolError 时,错误信息作为 isError 为 true 的结果返回给模型;抛出其它异常时,模型只收到“Error executing tool get_order”,具体内容留在服务端的日志中(实测,见[附录 A27](#a27-mcp-服务端的最小实现))。 +SDK 根据类型注解和文档字符串生成 tools/list 返回的描述和参数 Schema。工具抛出 ToolError 时,错误信息作为 isError 为 true 的结果返回给模型;抛出其它异常时,模型只收到“Error executing tool get_order”,具体内容留在服务端的日志中(实测,见[附录 A24](#a24-mcp-服务端的最小实现))。 本地服务端以子进程运行,权限就是启动它的用户的权限,规范建议从环境变量中读取凭据;远程服务端通过 HTTP 对外提供,规范按 OAuth 2.1 定义授权:客户端带着访问令牌请求,服务端必须校验令牌是否签发给自己,无效或过期的令牌返回 HTTP 401。令牌只说明调用者是谁,每个工具还要按用户校验权限,例如只能查询自己的订单。 @@ -1811,19 +1738,45 @@ Vibe Coding 这个说法由 Andrej Karpathy 在 2025 年 2 月提出,指的是 ### Harness -Agent 由模型和 Harness 两部分组成。Harness 指的是模型之外的所有代码、配置和执行逻辑:Agent 循环、系统提示词、工具及其描述、上下文压缩、记忆、沙箱与权限、子 Agent 的调度,以及在固定时机执行的钩子(例如每次修改文件后自动格式化)。前面不到二十行的 Agent 循环就是一个最简单的 Harness;Claude Code、Codex 是功能完整的 Harness,可以换用不同的模型。MCP 和 Skill 也是 Harness 的组成部分,前者负责接入工具,后者负责按需提供做事的方法。 +Agent 由模型和 Harness 两部分组成。Harness 指的是模型之外的所有代码、配置和执行逻辑:Agent 循环、系统提示词、工具及其描述、上下文压缩、记忆、沙箱与权限、子 Agent 的调度,以及在固定时机执行的钩子(例如每次修改文件后自动格式化)。模型本身只接收文本、输出文本,不能保存状态、执行代码、获取实时信息,这些都要由 Harness 补上。前面不到二十行的 Agent 循环就是一个最简单的 Harness;Claude Code、Codex 是功能完整的 Harness,可以换用不同的模型。MCP 和 Skill 也是 Harness 的组成部分,前者负责接入工具,后者负责按需提供做事的方法。 + +提示词工程关注写给模型的指令,上下文工程关注每次调用放进上下文的内容,两者都是 Harness 的一部分;Harness 还包括工具、执行环境、校验和长任务的状态。 模型决定了能力的上限,Harness 决定了实际能发挥出多少。前面的实验中,模型不变,只在系统提示词中写清楚查询的步骤,成功率就从 0/10 变成了 10/10。围绕 Agent 设计和改进 Harness 的工作称为 Harness 工程(Harness Engineering),这个说法在 2026 年初开始流行,核心是两类控制: - 引导:在 Agent 动手之前给出方向,例如 CLAUDE.md 中的规范、架构文档和 Skill; - 反馈:在 Agent 动手之后检查结果,例如编译、测试、lint、架构检查,以及用另一个模型审查。 +#### 1. 组成 + +Harness 的每个部分都对应一个模型自己做不到或做不稳的问题: + +| 组成 | 解决的问题 | +| --- | --- | +| Agent 循环与停止条件 | 模型一次只输出一段文本,循环负责执行工具、把结果送回,并决定何时结束,见 [Agent 循环](#agent-循环) | +| 上下文的组装与压缩 | 决定每次调用放进哪些消息、工具描述和记忆,过长时摘要或裁剪,见 [上下文工程](#上下文工程) | +| 工具与权限 | 工具的描述决定模型会不会用、用得对不对;危险操作要求人工确认,命令在沙箱中执行,见 [工具调用](#工具调用) 和 [安全](#安全) | +| 记忆与状态交接 | 模型不保存状态,跨会话的进度要写到外部,见 [记忆](#记忆) 和下文的长任务交接 | +| 子 Agent | 把独立的子任务交给新的上下文,只把结论带回来,见 [多 Agent](#多-agent) | +| 钩子与校验 | 在固定时机执行确定的检查,不通过就把错误送回模型继续 | +| 评测与可观测 | 记录每一步的输入输出和 Token,改动 Harness 后用同一批任务回归,见 [可靠性与评测](#可靠性与评测) | + +工具的返回很长时,Harness 通常只把开头和结尾,或者最新的几条放进上下文,完整结果写到文件中,模型需要时再读取;Claude Code 默认把一次工具返回限制在 25,000 个 Token 以内。 + +#### 2. 引导与反馈 + 以“Controller 只能调用 Service”这条分层规范为例:

这条规范只写在 CLAUDE.md 中时,模型大多数时候会遵守,但无法保证。再加一条用 ArchUnit 写的架构测试,违反时测试失败,错误信息写明了违反哪条规则、在哪一行,Agent 读到后就能自己修正,不需要人逐行审查。编译、测试这类确定的检查快、便宜、结果可靠,应该优先使用;模型审查能发现规则写不出来的问题,但更慢,结论也不稳定。同一个问题反复出现时,应该补一条规范或一个检查,而不是每次在对话中纠正。 +反馈对能力较弱的模型作用更明显。仍以“订单 1024 到哪了”为例,在模型准备结束时检查一次:用户问的是位置,就必须调用过物流查询,而且回答中出现了查到的地点;不满足时把原因作为一条消息送回,最多拦截两次。Qwen2.5-7B 在只写了“回答要简短”的提示词下,没有校验时 10 次全部失败,多数只查了订单就结束;加上校验后 10 次全部成功,代价是模型调用从平均 1.7 次增加到 4.0 次,输入 Token 约为原来的 3 倍。更小的 Qwen2.5-3B 在写清步骤的提示词下从 0/10 提高到 7/10,提示词过短时加上校验也只有 2/10,反馈弥补不了模型能力的全部差距(见[附录 A26](#a26-停止前校验))。 + +让做事的 Agent 自己评价结果时,它往往会夸自己做得好,所以检查最好交给确定的程序或另一个 Agent。Anthropic 的一次对比中,同一个模型单独做一个复古游戏编辑器,用时 20 分钟、花费 9 美元,做出的游戏无法正常游玩;换成规划、生成、评估三个 Agent 分工的 Harness,用时 6 小时、花费 200 美元,核心功能可以正常使用。 + +#### 3. 长任务的交接 + 任务大到一个上下文窗口装不下时,Harness 还要负责多次会话之间的交接。Anthropic 介绍过一种做法:第一次会话只做准备,把需求拆成功能清单写入 JSON 文件,每项带测试步骤和 passes 字段,初始全部为 false,同时写好启动脚本并提交到 git;之后的每次会话先读进度文件和 git log,启动应用做一次冒烟测试,然后只挑一个未通过的功能实现,端到端测试通过后才把 passes 改为 true,最后提交代码、更新进度文件。清单中的一项例如: ```json @@ -1834,6 +1787,14 @@ Agent 由模型和 Harness 两部分组成。Harness 指的是模型之外的所 这些设计分别针对长任务中的常见问题:新会话不知道之前做了什么,靠进度文件和 git log 交接;一次做太多、上下文用完时留下半成品,靠每次只做一个功能;没有测试就宣布完成,靠功能清单和端到端测试。清单用 JSON 而不是 Markdown,是因为模型不容易随意改写 JSON 的结构;规定只能修改 passes 字段,是为了防止 Agent 删掉测试来“完成”任务。 +#### 4. 模型变强以后 + +Harness 的每个组件都隐含一个假设:模型自己做不到这件事。模型升级后,这些假设可能不再成立,需要逐个去掉组件验证效果。Anthropic 的例子中,Claude Opus 4.5 基本不再因为担心上下文用完而提前收尾,于是去掉了会话之间的上下文重置;Opus 4.6 能连续工作两个多小时,又去掉了把任务拆成多个冲刺的结构。他们的结论是,值得做的 Harness 组合不会随模型变强而减少,而是会转移到新的问题上。LangChain 的看法类似:一部分现在由 Harness 完成的事会被模型吸收,但环境、工具、持久的状态和校验循环对任何模型都有用;Claude Code、Codex 这类产品的模型在后训练时就带着 Harness 一起训练。 + +#### 5. 与开发框架的关系 + +开发框架(例如 LangChain)提供模型调用、工具、Agent 循环等抽象;运行时(例如 LangGraph)负责持久执行、流式输出、人工介入和状态保存;Harness 在两者之上直接给出一套可用的默认配置,包括系统提示词、工具调用的处理、规划工具和文件系统等,拿来就能工作。这个划分来自 LangChain 的文章,边界并不严格。现成的 Harness 产品变化很快,例如 Claude Code(官方文档称为 agentic harness)、DeepSeek Harness(开发者预览版,所有能力都以插件提供)、Pi(只带最小的默认功能,其余靠扩展),具体功能以官方最新文档为准。 + ### 开发框架 上面的循环、工具定义和消息管理在每个项目中都要重复编写,LangChain、LangGraph、Spring AI 等框架把它们封装了起来: @@ -3057,116 +3018,7 @@ msgs += [{"role": "assistant", "content": raw}, 重试输出: '```json\n{\n "order_id": "5120,5121",\n "intent": "其它",\n "amount": null\n}\n```' 仍失败 ``` -### A23 多头注意力、GQA 与 KV Cache 的实现 - -环境:Apple M1 Pro,macOS 15.8.1,Python 3.13.7,PyTorch 2.8.0(CPU)。正文中的 MHA 类与 torch.nn.MultiheadAttention 复制同一组权重后对照;下面的 GQA 类带 KV Cache,先预填充 5 个 Token,再逐个输入 7 个 Token,与整段一次计算的结果对照,并与 PyTorch 自带的 scaled_dot_product_attention(enable_gqa=True) 对照(d_model = 64,8 个查询头,2 组 K、V): - -```python -class GQA(nn.Module): - def __init__(self, d_model, n_heads, n_kv_heads): - super().__init__() - self.h, self.hkv, self.dk = n_heads, n_kv_heads, d_model // n_heads - self.wq = nn.Linear(d_model, n_heads * self.dk) - self.wk = nn.Linear(d_model, n_kv_heads * self.dk) # K、V 只有 n_kv_heads 组 - self.wv = nn.Linear(d_model, n_kv_heads * self.dk) - self.out = nn.Linear(d_model, d_model) - - def forward(self, x, cache=None): # x: (B, t, d),解码时 t = 1 - B, t, d = x.shape - q = self.wq(x).view(B, t, self.h, self.dk).transpose(1, 2) - k = self.wk(x).view(B, t, self.hkv, self.dk).transpose(1, 2) - v = self.wv(x).view(B, t, self.hkv, self.dk).transpose(1, 2) - if cache is not None: # 新 Token 的 K、V 追加到缓存末尾 - if "k" in cache: - k = torch.cat([cache["k"], k], dim=2); v = torch.cat([cache["v"], v], dim=2) - cache["k"], cache["v"] = k, v # 缓存的是 hkv 组,而不是 h 个头 - g = self.h // self.hkv # 每组 K、V 由 g 个查询头共用 - k, v = k.repeat_interleave(g, dim=1), v.repeat_interleave(g, dim=1) - T = k.size(2) - scores = q @ k.transpose(-2, -1) / self.dk ** 0.5 # (B, h, t, T) - mask = torch.ones(t, T, dtype=torch.bool).triu(T - t + 1) # 第 i 个新 Token 只看前 T-t+i+1 个 - o = scores.masked_fill(mask, float("-inf")).softmax(-1) @ v - return self.out(o.transpose(1, 2).contiguous().view(B, t, d)) - -g = GQA(64, 8, 2) -x = torch.randn(1, 12, 64) -full = g(x) # 整段一次计算(训练、预填充) -cache, steps = {}, [] -p = g(x[:, :5], cache) # 预填充前 5 个 -for i in range(5, 12): # 之后每次只输入 1 个新 Token - steps.append(g(x[:, i:i + 1], cache)) -inc = torch.cat([p] + steps, dim=1) -print("3. KV Cache 逐步解码与整段计算的最大误差:", (inc - full).abs().max().item()) -print(" 缓存的 K 形状:", tuple(cache["k"].shape), "(8 个查询头,只缓存 2 组)") -``` - -输出: - -```text -1. 与 nn.MultiheadAttention 的最大误差: 1.7881393432617188e-07 -2. transpose 后 is_contiguous = False - 直接 view 报错: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces) - reshape 等价于 contiguous().view,是否复制了数据: True -3. KV Cache 逐步解码与整段计算的最大误差: 1.862645149230957e-07 - 缓存的 K 形状: (1, 2, 12, 8) (8 个查询头,只缓存 2 组) - 与 scaled_dot_product_attention(enable_gqa=True) 的最大误差: 1.4901161193847656e-07 -torch 2.8.0 -``` - -### A24 在线 softmax 与注意力的计算量 - -环境:Python 3.13.7,numpy 2.3.3。按块读取 K、V,用在线 softmax 累积输出,与一次性计算的标准注意力对照(n = 1000,d = 64);再按 Qwen2.5-7B 的 config.json(hidden_size 3584,28 层,28 个查询头、4 组 K、V,intermediate_size 18944)计算分数矩阵的大小,以及每层线性层与注意力的计算量(不含偏置和归一化): - -```python -def online(q, K, V, block): - m, l, o = -np.inf, 0.0, np.zeros(V.shape[1]) # 当前最大值、指数和、未归一化的输出 - for i in range(0, len(K), block): - s = K[i:i + block] @ q / np.sqrt(len(q)) # 只算这一块的分数 - m_new = max(m, s.max()) - scale = np.exp(m - m_new) # 旧的累积量按新的最大值缩放 - p = np.exp(s - m_new) - l = l * scale + p.sum() - o = o * scale + p @ V[i:i + block] - m = m_new - return o / l -``` - -```text -1. 块大小 1:与标准 softmax 注意力的最大误差 3.05e-16 -1. 块大小 16:与标准 softmax 注意力的最大误差 1.11e-16 -1. 块大小 128:与标准 softmax 注意力的最大误差 1.53e-16 -2. 第 1 块后 m=2, l=1.368, o=17.358 - 第 2 块:缩放系数 e^(2-3)=0.368, l=1.553, o=38.377, 输出 o/l=24.711 - 一次 softmax:权重 [0.237 0.087 0.644 0.032], 输出 24.711 -3. n = 4096:一个头的 n×n 分数矩阵(BF16)= 32 MiB,一层 28 个头 = 0.9 GiB -3. n = 32768:一个头的 n×n 分数矩阵(BF16)= 2048 MiB,一层 28 个头 = 56.0 GiB - 每层线性层参数 233.0M,每个 Token 的线性层计算量 2×233.0M = 466M FLOPs/层 - 生成第 T 个 Token 时,注意力分数和加权求和的计算量 = 4 × T × 28×128 = 14336T FLOPs/层 - 两者相等时 T = 32512 -``` - -线性层每层的参数为 3584 × 3584 × 2(q_proj、o_proj)+ 3584 × 512 × 2(k_proj、v_proj)+ 3 × 3584 × 18944(前馈网络),每个参数做一次乘加计为 2 次浮点运算。 - -### A25 ZeRO 的显存与 MLA 的 KV Cache - -按 ZeRO 论文的记法,混合精度训练时每个参数的模型状态为 2 字节(BF16 参数)+ 2 字节(BF16 梯度)+ K 字节(FP32 参数副本和 Adam 的两个状态,K = 12),N 张卡时 ZeRO-1、ZeRO-2、ZeRO-3 每张卡分别为 4 + K / N、2 + (2 + K) / N、(4 + K) / N 字节。先用论文中的例子(7.5B,64 张卡)核对公式,再代入 Qwen2.5-7B(7,615,616,512 个参数)。MLA 按 DeepSeek-V3 的 config.json(kv_lora_rank 512,qk_rope_head_dim 64,qk_nope_head_dim 128,v_head_dim 128,128 个头,61 层)和 BF16 计算: - -```text -Qwen2.5-7B,8 张卡,只算模型状态(不含激活): - 不切分(普通数据并行) 每参数 16.00 字节,每张卡 121.8 GB - ZeRO-1:切分优化器状态 每参数 5.50 字节,每张卡 41.9 GB - ZeRO-2:再切分梯度 每参数 3.75 字节,每张卡 28.6 GB - ZeRO-3:再切分参数 每参数 2.00 字节,每张卡 15.2 GB - 核对 ZeRO 论文 7.5B、64 卡: [120.0, 31.4, 16.6, 1.9] -DeepSeek-V3:61 层,128 个头,c_KV 512 维 + RoPE 键 64 维 - MLA 每个 Token:(512+64) × 61 × 2 字节 = 70272 字节 = 68.6 KB - 同样的头数和维度用 MHA:128 × (192+128) × 61 × 2 = 4.77 MB,是 MLA 的 71 倍 - 对照 Qwen2.5-7B(GQA):56 KB -``` - -论文中的数值为 120 GB、31.4 GB、16.6 GB、1.9 GB,与上面的核对结果一致。 - -### A26 LoRA 的三种初始化 +### A23 LoRA 的三种初始化 环境:Python 3.13.7,PyTorch 2.8.0(CPU)。冻结一个 64 × 64 的权重 W,用 r = 4 的 LoRA 拟合一个秩为 4 的变化量,Adam、学习率 0.01、300 步,比较三种初始化:B = 0、A 随机(PEFT 的默认方式);A = 0、B 随机;两者都为 0: @@ -3198,7 +3050,7 @@ A=0 初始损失 2.3699 第一步梯度 |∂A|=0.1667 |∂B|=0.0000 300 步 两者都为 0 时,第一步的梯度全部为 0,300 步后损失没有任何变化;另外两种方式都能训练到损失接近 0。这个小实验只说明能否训练,两种可训练的方式在大模型上的效果差异见参考资料中 Hayou 等人的论文。 -### A27 MCP 服务端的最小实现 +### A24 MCP 服务端的最小实现 环境:Python 3.13.7,mcp 2.3.0(pip 安装)。服务端即正文中的代码,ORDERS 中只有订单 1024。客户端以 stdio 方式启动服务端子进程,依次调用 tools/list 和 tools/call: @@ -3237,7 +3089,7 @@ streamable-http tools/call: { "status": "已发货", "tracking_no": "SF1234567 把 ToolError 换成普通的 ValueError 后,订单 9999 的结果变为 `Error executing tool get_order`,isError 同样为 True,错误的具体内容只出现在服务端的日志中。 -### A28 并发执行工具调用 +### A25 并发执行工具调用 环境:JDK 21.0.13(Adoptium),Apple M1 Pro。Message、ToolCall 用 record 定义,execute 为桩代码,每次调用休眠 500 毫秒;两个 get_order 调用用正文中的片段并发执行: @@ -3248,6 +3100,39 @@ Message[role=tool, toolCallId=call_2, content={"order_id": "1025", "status": " openjdk version "21.0.13" 2026-10-20 LTS ``` +### A26 停止前校验 + +环境:Qwen2.5-7B-Instruct、Qwen2.5-3B-Instruct,transformers 在 Apple M1 Pro 的 MPS 上以 float16 运行,temperature 0.7、top_p 0.9,每种配置用随机种子 0~9 运行 10 次。工具 get_order 返回运单号 SF1234567,get_logistics 返回位置“杭州转运中心”;回答中出现“杭州”算成功。两种系统提示词: + +- A:你是电商客服助手,回答要简短。 +- B:你是电商客服助手。用户问包裹到哪了时,先查订单拿到运单号,再查物流,告诉用户当前位置和预计送达时间。回答要简短。 + +模型准备结束(没有发起工具调用)时执行校验,不通过就把原因作为用户消息追加进去,最多拦截 2 次: + +```python +def stop_check(trace, answer): + """返回 None 表示通过,否则返回要发回给模型的原因。""" + locs = [r.get("location") for name, r in trace if name == "get_logistics" and "location" in r] + if not locs: + return "[校验未通过] 用户问的是包裹位置,但还没有查询物流(get_logistics),不能结束。请先查询物流再回答。" + if locs[-1] not in answer: + return f"[校验未通过] 回答中的位置与物流查询结果不一致,物流结果为:{locs[-1]}。请据此重新回答。" + return None +``` + +原始输出(每种配置只保留统计行): + +```text +qwen2.5-7b 提示词 A 校验钩子 无: 成功 0/10;工具调用 [0, 1, 1, 1, 0, 1, 0, 1, 1, 1];被拦截 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];平均调用模型 1.7 次,平均输入 Token 484,平均输出 Token 43 +qwen2.5-7b 提示词 A 校验钩子 有: 成功 10/10;工具调用 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2];被拦截 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1];平均调用模型 4.0 次,平均输入 Token 1457,平均输出 Token 119 +qwen2.5-7b 提示词 B 校验钩子 无: 成功 10/10;工具调用 [2, 2, 2, 2, 2, 2, 2, 2, 2, 2];被拦截 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];平均调用模型 3.0 次,平均输入 Token 1084,平均输出 Token 68 +qwen2.5-3b 提示词 B 校验钩子 无: 成功 0/10;工具调用 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1];被拦截 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];平均调用模型 2.0 次,平均输入 Token 638,平均输出 Token 55 +qwen2.5-3b 提示词 B 校验钩子 有: 成功 7/10;工具调用 [2, 1, 2, 2, 2, 2, 1, 2, 1, 2];被拦截 [1, 2, 1, 1, 2, 1, 2, 1, 2, 1];平均调用模型 4.1 次,平均输入 Token 1626,平均输出 Token 118 +qwen2.5-3b 提示词 A 校验钩子 有: 成功 2/10;工具调用 [1, 1, 1, 1, 2, 1, 1, 1, 1, 2];被拦截 [2, 2, 2, 2, 1, 2, 2, 2, 2, 1];平均调用模型 4.0 次,平均输入 Token 1439,平均输出 Token 105 +``` + +7B 在提示词 A 下没有校验时的典型回答是“您的订单已发货,运单号是 SF1234567。我可以帮您查询物流信息。”,即只查了订单就结束。 + ## 参考资料 - [Attention Is All You Need](https://arxiv.org/abs/1706.03762) @@ -3390,7 +3275,6 @@ openjdk version "21.0.13" 2026-10-20 LTS - [Google SRE Book: Addressing Cascading Failures](https://sre.google/sre-book/addressing-cascading-failures/) - [LangGraph: Streaming](https://docs.langchain.com/oss/python/langgraph/streaming) - [OWASP Top 10 for LLM Applications: Excessive Agency](https://genai.owasp.org/llmrisk/llm062025-excessive-agency/) -- [Dao T. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691](https://arxiv.org/abs/2307.08691) - [Jiang A Q, et al. Mistral 7B. arXiv:2310.06825](https://arxiv.org/abs/2310.06825) - [Katharopoulos A, et al. Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention. arXiv:2006.16236](https://arxiv.org/abs/2006.16236) - [DeepSeek-AI. DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model. arXiv:2405.04434](https://arxiv.org/abs/2405.04434) @@ -3400,7 +3284,6 @@ openjdk version "21.0.13" 2026-10-20 LTS - [Schulman J, et al. High-Dimensional Continuous Control Using Generalized Advantage Estimation. arXiv:1506.02438](https://arxiv.org/abs/1506.02438) - [Yu Q, et al. DAPO: An Open-Source LLM Reinforcement Learning System at Scale. arXiv:2503.14476](https://arxiv.org/abs/2503.14476) - [Zheng C, et al. Group Sequence Policy Optimization. arXiv:2507.18071](https://arxiv.org/abs/2507.18071) -- [Liu Z, et al. Understanding R1-Zero-Like Training: A Critical Perspective. arXiv:2503.20783](https://arxiv.org/abs/2503.20783) - [Meng Y, et al. SimPO: Simple Preference Optimization with a Reference-Free Reward. arXiv:2405.14734](https://arxiv.org/abs/2405.14734) - [Hayou S, et al. The Impact of Initialization on LoRA Finetuning Dynamics. arXiv:2406.08447](https://arxiv.org/abs/2406.08447) - [PyTorch FullyShardedDataParallel](https://docs.pytorch.org/docs/stable/fsdp.html) @@ -3417,3 +3300,7 @@ openjdk version "21.0.13" 2026-10-20 LTS - [Simon Willison: Not all AI-assisted programming is vibe coding](https://simonwillison.net/2025/Mar/19/vibe-coding/) - [LangChain4j: Introduction](https://docs.langchain4j.dev/intro) - [LangChain4j: AI Services](https://docs.langchain4j.dev/tutorials/ai-services) +- [Agent Frameworks, Runtimes, and Harnesses - oh my!](https://blog.langchain.com/agent-frameworks-runtimes-and-harnesses-oh-my/) +- [Harness design for long-running application development](https://www.anthropic.com/engineering/harness-design-long-running-apps) +- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) +- [Pi](https://pi.dev/) From 50064de08303eaf46d07518dfd6302c44860368c Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Wed, 28 Oct 2026 22:51:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Update=20=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=BA=94=E7=94=A8=20-=20=E8=BF=9B=E9=98=B6.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增进阶篇,收录多头注意力的实现、计算量与 FlashAttention、MLA、训练与微调的细节及对应的实测。 --- notes/大模型应用 - 进阶.md | 284 +++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 notes/大模型应用 - 进阶.md diff --git a/notes/大模型应用 - 进阶.md b/notes/大模型应用 - 进阶.md new file mode 100644 index 00000000..39308781 --- /dev/null +++ b/notes/大模型应用 - 进阶.md @@ -0,0 +1,284 @@ +# 大模型应用 - 进阶 + +* [大模型应用 - 进阶](#大模型应用---进阶) + * [一、大模型基础](#一大模型基础) + * [注意力机制](#注意力机制) + * [自回归生成与 KV Cache](#自回归生成与-kv-cache) + * [训练过程](#训练过程) + * [微调](#微调) + * [量化](#量化) + * [附录:实测](#附录实测) + * [A1 多头注意力、GQA 与 KV Cache 的实现](#a1-多头注意力gqa-与-kv-cache-的实现) + * [A2 在线 softmax 与注意力的计算量](#a2-在线-softmax-与注意力的计算量) + * [A3 ZeRO 的显存与 MLA 的 KV Cache](#a3-zero-的显存与-mla-的-kv-cache) + * [参考资料](#参考资料) + + + +## 一、大模型基础 + +### 注意力机制 + +#### 1. 多头注意力的实现 + +主线见[大模型应用 · 多头注意力](大模型应用.md#1-多头注意力),那里以 Qwen2.5-7B 为例给出了各步的形状变化。 + +手写的实现如下(PyTorch,与 torch.nn.MultiheadAttention 用同一组权重对照,最大误差为 1.8 × 10-7,见[附录 A1](#a1-多头注意力gqa-与-kv-cache-的实现)): + +```python +class MHA(nn.Module): + def __init__(self, d_model, n_heads): + super().__init__() + self.h, self.dk = n_heads, d_model // n_heads + self.qkv = nn.Linear(d_model, 3 * d_model) # 一次算出 Q、K、V + self.out = nn.Linear(d_model, d_model) + + def forward(self, x): # x: (B, n, d_model) + B, n, d = x.shape + q, k, v = self.qkv(x).split(d, dim=-1) + # (B, n, d) -> (B, n, h, dk) -> (B, h, n, dk):每个头只用其中 dk 维 + q, k, v = [t.view(B, n, self.h, self.dk).transpose(1, 2) for t in (q, k, v)] + scores = q @ k.transpose(-2, -1) / self.dk ** 0.5 # (B, h, n, n) + mask = torch.ones(n, n, dtype=torch.bool).triu(1) # 因果掩码:右上角 + scores = scores.masked_fill(mask, float("-inf")) + o = scores.softmax(dim=-1) @ v # (B, h, n, dk) + o = o.transpose(1, 2).contiguous().view(B, n, d) # 拼接各头 + return self.out(o) +``` + +拼接之前要调用 contiguous(),这是因为 transpose 只改变了张量各维的步长,数据在内存中仍按原来的顺序排列,这时直接调用 view 会报错。contiguous() 按新的顺序复制一份连续的数据,也可以直接用 reshape,它在需要时自动复制。 + +#### 2. 计算量与 FlashAttention + +主线见[大模型应用 · 计算量与 FlashAttention](大模型应用.md#2-计算量与-flashattention),这里先比较线性层与注意力的计算量,再看 FlashAttention 怎样在不改变结果的前提下减少显存的读写。 + +序列长度为 n、向量维度为 d 时,QKT 和乘以 V 各需要约 n2d 次乘加,时间复杂度为 O(n2d),分数矩阵占用 O(n2) 的显存。按 Qwen2.5-7B 的配置计算,每个 Token 经过一层的线性层约需 4.7 亿次浮点运算,与上下文长度无关;生成第 T 个 Token 时,一层注意力的分数和加权求和约需 14336 × T 次,T 约为 3.2 万时两者相当(见[附录 A2](#a2-在线-softmax-与注意力的计算量))。所以上下文较短时,计算量主要在线性层,上下文越长,注意力所占的比例越大。 + +标准实现分几步完成:算出 n × n 的分数矩阵写入显存,读出来做 softmax 再写回,再读出来乘以 V。GPU 的显存(HBM)容量大但带宽有限,A100 为 1.5~2.0 TB/s;每个计算单元旁边的片上缓存(SRAM)带宽约 19 TB/s,但总共只有约 20 MB。这个矩阵又很大,n = 32K 时,Qwen2.5-7B 一个头的分数矩阵在 BF16 下就占 2 GB,大部分时间花在了读写显存上。 + +FlashAttention 把计算分块:每次把一块 Q 和一块 K、V 读入 SRAM,算出这一块的分数后直接累积到输出中,n × n 的矩阵从不写回显存。难点在于 softmax 要除以全部分数的指数和,只看到一部分 K 时还不知道这个和。解决方法是在线 softmax:对每个查询维护目前为止的最大分数 m、指数和 l 以及未归一化的输出 o,读入新的一块后,如果最大值变大了,就把之前的 l 和 o 乘以 em旧 − m新 再累加。例如一个查询与 4 个 Token 的分数为 2、1、3、0,对应的 V 为 10、20、30、40,每块 2 个 Token: + +```text +第 1 块(分数 2、1) m = 2 l = e^0 + e^-1 = 1.368 + o = 10 × e^0 + 20 × e^-1 = 17.358 +第 2 块(分数 3、0) m = 3 之前的 l 和 o 乘以 e^(2-3) = 0.368 + l = 1.368 × 0.368 + e^0 + e^-3 = 1.553 + o = 17.358 × 0.368 + 30 × e^0 + 40 × e^-3 = 38.377 +输出 o / l = 24.711,与一次性做 softmax 的结果相同 +``` + +所以 FlashAttention 是精确计算,而不是近似(numpy 实测,见[附录 A2](#a2-在线-softmax-与注意力的计算量))。反向传播时也不保存分数矩阵,只保存 m 和 l,需要时重新计算分数,多做了一些计算,但显存的读写更少,整体仍然更快。论文在 A100 上计算 GPT-2 medium 的注意力(序列长度 1024),浮点运算量从 66.6 G 增加到 75.2 G,显存读写却从 40.3 GB 降到 4.4 GB,运行时间从 41.7 毫秒降到 7.3 毫秒。FlashAttention-2 进一步减少了矩阵乘法以外的运算,并沿序列长度的方向并行,速度又提高了约 1 倍。 + +### 自回归生成与 KV Cache + +#### 1. 带 KV Cache 的 GQA + +主线见[大模型应用 · 自回归生成与 KV Cache](大模型应用.md#自回归生成与-kv-cache),这里接着上文多头注意力的实现,给出解码时带 KV Cache 的 GQA。 + +带 KV Cache 的 GQA 在解码时每一步只输入新的 Token,把它的 K、V 追加到缓存末尾,再与缓存中的全部 K、V 计算注意力: + +```python +k = torch.cat([cache["k"], k_new], dim=2) # (B, KV 头数, 已有长度 + 1, 每个头的维度) +v = torch.cat([cache["v"], v_new], dim=2) +cache["k"], cache["v"] = k, v # 缓存的是 4 组 K、V,而不是 28 个头 +g = n_heads // n_kv_heads # 每组 K、V 由 g 个查询头共用 +k, v = k.repeat_interleave(g, dim=1), v.repeat_interleave(g, dim=1) +o = (q_new @ k.transpose(-2, -1) / dk ** 0.5).softmax(-1) @ v # 新 Token 可以看到全部前文,不需要掩码 +``` + +这样逐个 Token 解码的结果与整段一次计算的结果一致,最大误差为 1.9 × 10-7(完整代码见[附录 A1](#a1-多头注意力gqa-与-kv-cache-的实现))。 + +#### 2. 多头潜在注意力 + +主线见[大模型应用 · 自回归生成与 KV Cache](大模型应用.md#自回归生成与-kv-cache)中减少 KV Cache 的方法。 + +多头潜在注意力(Multi-head Latent Attention, MLA)由 DeepSeek-V2 提出。GQA 减少的是 K、V 的组数,MLA 则把 K、V 联合压缩成一个低维的潜在向量,只缓存这个向量,计算时再用矩阵还原出各个头的 K、V;推理时还原矩阵可以合并到 Q 和输出的矩阵中,不必真的算出每个头的 K、V。RoPE 会妨碍这种合并,所以另用一个所有头共享的小向量携带位置信息。DeepSeek-V3 每层每个 Token 只缓存 512 + 64 = 576 个数,61 层共 68.6 KB,与 Qwen2.5-7B 的 56 KB 相近;同样的 128 个头如果用 MHA,每个 Token 要 4.77 MB(按 config.json 计算,见[附录 A3](#a3-zero-的显存与-mla-的-kv-cache))。论文中 MLA 的缓存量只相当于 2.25 组的 GQA,效果却好于 MHA。 + +### 训练过程 + +#### 1. 广义优势估计 + +主线见[大模型应用 · RLHF 与 PPO](大模型应用.md#2-rlhf-与-ppo),这里展开 PPO 中每个 Token 的优势怎样计算。 + +把生成过程看作强化学习:状态是提示词和已经生成的 Token,动作是下一个 Token,奖励模型的分数在回答结束时才给出。每个 Token 的优势用广义优势估计(Generalized Advantage Estimation, GAE)计算:先算每一步的时序差分误差 δt = rt + γV(st+1) − V(st),即走完这一步后价值模型的估计比之前高了多少,优势是之后各步 δ 的加权和 Σ (γλ)k δt+k。λ = 0 时只看一步,依赖价值模型的估计,方差小但有偏差;λ = 1 时相当于最终得分减去 V(st),没有偏差但方差大;λ 取两者之间的值来折中。 + +#### 2. GRPO 的改进 + +主线见[大模型应用 · GRPO 与三者的选择](大模型应用.md#4-grpo-与三者的选择)。 + +大规模训练推理模型时,GRPO 暴露出几个问题,后续的算法分别做了改进: + +- 全对或全错的题没有梯度:模型越学越好,全对的题越来越多,一批中有效的题目越来越少。DAPO 的动态采样多采一些题,丢掉全对和全错的,直到填满一批; +- 熵坍塌(Entropy Collapse):模型输出的熵在训练中很快下降,同一道题的多个回答几乎一样,失去了探索新解法的能力。原因之一是概率之比的上限:ε = 0.2 时,概率为 0.9 的 Token 一次可以升到 1,而概率为 0.01 的 Token 最多只能升到 0.012。DAPO 把上下限分开,下限仍为 0.2,上限放宽到 0.28; +- 长度偏差:GRPO 先在每个回答内部按 Token 数求平均,长回答中每个 Token 的权重变小,错误的长回答受到的惩罚被稀释,回答越来越长。DAPO 改为把一批中所有回答的 Token 放在一起平均; +- MoE 模型训练不稳定:每次更新后,同一个回答激活的专家会发生变化,Qwen3-30B-A3B 中约 10% 不同,按 Token 计算的概率之比剧烈波动。GSPO 改为按整个回答计算概率之比(取每个 Token 概率之比的几何平均),并对整个回答截断,Qwen3 的强化学习使用了这种方法。 + +DAPO 还去掉了 KL 项,理由是训练长推理时模型本来就要远离初始模型。它用 Qwen2.5-32B 基座模型在 AIME 2024 上达到 50 分,最初直接使用 GRPO 时只有 30 分。 + +### 微调 + +#### 1. ZeRO 与 FSDP + +主线见[大模型应用 · QLoRA 与全参数微调](大模型应用.md#4-qlora-与全参数微调),这里展开全参数微调时怎样把模型状态分到多张卡上。 + +全参数微调一张卡放不下时要用多张卡。普通的数据并行在每张卡上保存完整的模型状态,增加卡数并不能减少每张卡的显存。DeepSpeed 的 ZeRO 把模型状态切分到各张卡上,按切分的内容分为三个阶段。以 Qwen2.5-7B 在 8 张卡上训练为例,只算模型状态,不含激活(见[附录 A3](#a3-zero-的显存与-mla-的-kv-cache)): + +| 阶段 | 切分的内容 | 每张卡的显存 | +| --- | --- | --- | +| 普通数据并行 | 不切分 | 121.8 GB | +| ZeRO-1 | 优化器状态 | 41.9 GB | +| ZeRO-2 | 优化器状态、梯度 | 28.6 GB | +| ZeRO-3 | 优化器状态、梯度、参数 | 15.2 GB | + +优化器状态每个参数占 12 字节,是模型状态中最大的部分,所以 ZeRO-1 的收益最明显。ZeRO-1、ZeRO-2 的通信量与普通数据并行相同;ZeRO-3 在每一层计算前都要从其它卡收集完整的参数,用完即丢弃,通信量约为 1.5 倍。PyTorch 的 FSDP 采用同样的思路,FULL_SHARD 对应 ZeRO-3,SHARD_GRAD_OP 对应 ZeRO-2。显存仍然不够时,还可以把参数或优化器状态卸载到 CPU 内存,代价是训练变慢。 + +### 量化 + +#### 1. GPTQ 与 AWQ + +主线见[大模型应用 · GPTQ 与 AWQ](大模型应用.md#3-gptq-与-awq),这里展开两种方法的具体做法。 + +GPTQ 逐层量化,每层按列逐个量化权重:每量化一列,就根据校准数据算出的二阶信息(输入的 XXT),调整还没有量化的那些列,抵消这一列产生的输出误差。论文中 175B 的模型在一张显卡上约 4 小时就能量化到 3~4 位。 + +AWQ(Activation-aware Weight Quantization)基于这样的观察:权重的重要程度不同,与较大的激活相乘的那部分权重对输出影响最大,只保护其中 1% 就能明显减小误差。但为个别通道保留 FP16 会形成混合精度,硬件上效率不高。AWQ 的做法是: + +1. 用校准数据统计每个输入通道激活的平均大小 sX; +2. 量化之前把权重的第 j 个输入通道乘以 sj = sX,jα,推理时把输入的第 j 个通道除以 sj,乘积不变; +3. 重要的通道被放大之后,相对的量化误差变小;在 [0, 1] 中搜索使输出误差最小的 α。 + +对 Qwen2.5-7B 第 14 层 q_proj 做每 128 个一组的 INT4 量化,这样缩放之后输出的相对误差从 8.98% 降到 7.86%(α = 0.3,见[大模型应用 · 附录 A18](大模型应用.md#a18-权重量化的误差与困惑度))。两者的区别:GPTQ 通过修改未量化的权重来补偿误差;AWQ 只做通道的缩放,不需要反向传播和重建,对校准数据的依赖更小。 + +## 附录:实测 + +以下实验在 Apple M1 Pro、macOS 上运行,软件版本见各条。 + +### A1 多头注意力、GQA 与 KV Cache 的实现 + +环境:Apple M1 Pro,macOS 15.8.1,Python 3.13.7,PyTorch 2.8.0(CPU)。正文中的 MHA 类与 torch.nn.MultiheadAttention 复制同一组权重后对照;下面的 GQA 类带 KV Cache,先预填充 5 个 Token,再逐个输入 7 个 Token,与整段一次计算的结果对照,并与 PyTorch 自带的 scaled_dot_product_attention(enable_gqa=True) 对照(d_model = 64,8 个查询头,2 组 K、V): + +```python +class GQA(nn.Module): + def __init__(self, d_model, n_heads, n_kv_heads): + super().__init__() + self.h, self.hkv, self.dk = n_heads, n_kv_heads, d_model // n_heads + self.wq = nn.Linear(d_model, n_heads * self.dk) + self.wk = nn.Linear(d_model, n_kv_heads * self.dk) # K、V 只有 n_kv_heads 组 + self.wv = nn.Linear(d_model, n_kv_heads * self.dk) + self.out = nn.Linear(d_model, d_model) + + def forward(self, x, cache=None): # x: (B, t, d),解码时 t = 1 + B, t, d = x.shape + q = self.wq(x).view(B, t, self.h, self.dk).transpose(1, 2) + k = self.wk(x).view(B, t, self.hkv, self.dk).transpose(1, 2) + v = self.wv(x).view(B, t, self.hkv, self.dk).transpose(1, 2) + if cache is not None: # 新 Token 的 K、V 追加到缓存末尾 + if "k" in cache: + k = torch.cat([cache["k"], k], dim=2); v = torch.cat([cache["v"], v], dim=2) + cache["k"], cache["v"] = k, v # 缓存的是 hkv 组,而不是 h 个头 + g = self.h // self.hkv # 每组 K、V 由 g 个查询头共用 + k, v = k.repeat_interleave(g, dim=1), v.repeat_interleave(g, dim=1) + T = k.size(2) + scores = q @ k.transpose(-2, -1) / self.dk ** 0.5 # (B, h, t, T) + mask = torch.ones(t, T, dtype=torch.bool).triu(T - t + 1) # 第 i 个新 Token 只看前 T-t+i+1 个 + o = scores.masked_fill(mask, float("-inf")).softmax(-1) @ v + return self.out(o.transpose(1, 2).contiguous().view(B, t, d)) + +g = GQA(64, 8, 2) +x = torch.randn(1, 12, 64) +full = g(x) # 整段一次计算(训练、预填充) +cache, steps = {}, [] +p = g(x[:, :5], cache) # 预填充前 5 个 +for i in range(5, 12): # 之后每次只输入 1 个新 Token + steps.append(g(x[:, i:i + 1], cache)) +inc = torch.cat([p] + steps, dim=1) +print("3. KV Cache 逐步解码与整段计算的最大误差:", (inc - full).abs().max().item()) +print(" 缓存的 K 形状:", tuple(cache["k"].shape), "(8 个查询头,只缓存 2 组)") +``` + +输出: + +```text +1. 与 nn.MultiheadAttention 的最大误差: 1.7881393432617188e-07 +2. transpose 后 is_contiguous = False + 直接 view 报错: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces) + reshape 等价于 contiguous().view,是否复制了数据: True +3. KV Cache 逐步解码与整段计算的最大误差: 1.862645149230957e-07 + 缓存的 K 形状: (1, 2, 12, 8) (8 个查询头,只缓存 2 组) + 与 scaled_dot_product_attention(enable_gqa=True) 的最大误差: 1.4901161193847656e-07 +torch 2.8.0 +``` + +### A2 在线 softmax 与注意力的计算量 + +环境:Python 3.13.7,numpy 2.3.3。按块读取 K、V,用在线 softmax 累积输出,与一次性计算的标准注意力对照(n = 1000,d = 64);再按 Qwen2.5-7B 的 config.json(hidden_size 3584,28 层,28 个查询头、4 组 K、V,intermediate_size 18944)计算分数矩阵的大小,以及每层线性层与注意力的计算量(不含偏置和归一化): + +```python +def online(q, K, V, block): + m, l, o = -np.inf, 0.0, np.zeros(V.shape[1]) # 当前最大值、指数和、未归一化的输出 + for i in range(0, len(K), block): + s = K[i:i + block] @ q / np.sqrt(len(q)) # 只算这一块的分数 + m_new = max(m, s.max()) + scale = np.exp(m - m_new) # 旧的累积量按新的最大值缩放 + p = np.exp(s - m_new) + l = l * scale + p.sum() + o = o * scale + p @ V[i:i + block] + m = m_new + return o / l +``` + +```text +1. 块大小 1:与标准 softmax 注意力的最大误差 3.05e-16 +1. 块大小 16:与标准 softmax 注意力的最大误差 1.11e-16 +1. 块大小 128:与标准 softmax 注意力的最大误差 1.53e-16 +2. 第 1 块后 m=2, l=1.368, o=17.358 + 第 2 块:缩放系数 e^(2-3)=0.368, l=1.553, o=38.377, 输出 o/l=24.711 + 一次 softmax:权重 [0.237 0.087 0.644 0.032], 输出 24.711 +3. n = 4096:一个头的 n×n 分数矩阵(BF16)= 32 MiB,一层 28 个头 = 0.9 GiB +3. n = 32768:一个头的 n×n 分数矩阵(BF16)= 2048 MiB,一层 28 个头 = 56.0 GiB + 每层线性层参数 233.0M,每个 Token 的线性层计算量 2×233.0M = 466M FLOPs/层 + 生成第 T 个 Token 时,注意力分数和加权求和的计算量 = 4 × T × 28×128 = 14336T FLOPs/层 + 两者相等时 T = 32512 +``` + +线性层每层的参数为 3584 × 3584 × 2(q_proj、o_proj)+ 3584 × 512 × 2(k_proj、v_proj)+ 3 × 3584 × 18944(前馈网络),每个参数做一次乘加计为 2 次浮点运算。 + +### A3 ZeRO 的显存与 MLA 的 KV Cache + +按 ZeRO 论文的记法,混合精度训练时每个参数的模型状态为 2 字节(BF16 参数)+ 2 字节(BF16 梯度)+ K 字节(FP32 参数副本和 Adam 的两个状态,K = 12),N 张卡时 ZeRO-1、ZeRO-2、ZeRO-3 每张卡分别为 4 + K / N、2 + (2 + K) / N、(4 + K) / N 字节。先用论文中的例子(7.5B,64 张卡)核对公式,再代入 Qwen2.5-7B(7,615,616,512 个参数)。MLA 按 DeepSeek-V3 的 config.json(kv_lora_rank 512,qk_rope_head_dim 64,qk_nope_head_dim 128,v_head_dim 128,128 个头,61 层)和 BF16 计算: + +```text +Qwen2.5-7B,8 张卡,只算模型状态(不含激活): + 不切分(普通数据并行) 每参数 16.00 字节,每张卡 121.8 GB + ZeRO-1:切分优化器状态 每参数 5.50 字节,每张卡 41.9 GB + ZeRO-2:再切分梯度 每参数 3.75 字节,每张卡 28.6 GB + ZeRO-3:再切分参数 每参数 2.00 字节,每张卡 15.2 GB + 核对 ZeRO 论文 7.5B、64 卡: [120.0, 31.4, 16.6, 1.9] +DeepSeek-V3:61 层,128 个头,c_KV 512 维 + RoPE 键 64 维 + MLA 每个 Token:(512+64) × 61 × 2 字节 = 70272 字节 = 68.6 KB + 同样的头数和维度用 MHA:128 × (192+128) × 61 × 2 = 4.77 MB,是 MLA 的 71 倍 + 对照 Qwen2.5-7B(GQA):56 KB +``` + +论文中的数值为 120 GB、31.4 GB、16.6 GB、1.9 GB,与上面的核对结果一致。 + +## 参考资料 + +- [Attention Is All You Need](https://arxiv.org/abs/1706.03762) +- [FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness](https://arxiv.org/abs/2205.14135) +- [Dao T. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691](https://arxiv.org/abs/2307.08691) +- [NVIDIA A100 Tensor Core GPU](https://www.nvidia.com/en-us/data-center/a100/) +- [GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints](https://arxiv.org/abs/2305.13245) +- [Qwen2.5-7B-Instruct 模型配置](https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/blob/main/config.json) +- [DeepSeek-AI. DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model. arXiv:2405.04434](https://arxiv.org/abs/2405.04434) +- [DeepSeek-V3 config.json](https://huggingface.co/deepseek-ai/DeepSeek-V3/blob/main/config.json) +- [Proximal Policy Optimization Algorithms](https://arxiv.org/abs/1707.06347) +- [Schulman J, et al. High-Dimensional Continuous Control Using Generalized Advantage Estimation. arXiv:1506.02438](https://arxiv.org/abs/1506.02438) +- [DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models](https://arxiv.org/abs/2402.03300) +- [Yu Q, et al. DAPO: An Open-Source LLM Reinforcement Learning System at Scale. arXiv:2503.14476](https://arxiv.org/abs/2503.14476) +- [Zheng C, et al. Group Sequence Policy Optimization. arXiv:2507.18071](https://arxiv.org/abs/2507.18071) +- [Liu Z, et al. Understanding R1-Zero-Like Training: A Critical Perspective. arXiv:2503.20783](https://arxiv.org/abs/2503.20783) +- [Qwen Team. Qwen3 Technical Report. arXiv:2505.09388](https://arxiv.org/abs/2505.09388) +- [ZeRO: Memory Optimizations Toward Training Trillion Parameter Models](https://arxiv.org/abs/1910.02054) +- [PyTorch FullyShardedDataParallel](https://docs.pytorch.org/docs/stable/fsdp.html) +- [GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers](https://arxiv.org/abs/2210.17323) +- [AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration](https://arxiv.org/abs/2306.00978)

Bh2c8sO$47s!Fz~}bO@N#c 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 @@ -208,51 +206,15 @@ Q = x W_Q (n, 3584) 交换回来并拼接 (n, 3584) 再乘以 W_O ``` -每个头的维度是 3584 / 28,所以多头注意力的计算量与一个 3584 维的单头注意力基本相同,多出来的只是切分和拼接。手写的实现如下(PyTorch,与 torch.nn.MultiheadAttention 用同一组权重对照,最大误差为 1.8 × 10-7,见[附录 A23](#a23-多头注意力gqa-与-kv-cache-的实现)): - -```python -class MHA(nn.Module): - def __init__(self, d_model, n_heads): - super().__init__() - self.h, self.dk = n_heads, d_model // n_heads - self.qkv = nn.Linear(d_model, 3 * d_model) # 一次算出 Q、K、V - self.out = nn.Linear(d_model, d_model) - - def forward(self, x): # x: (B, n, d_model) - B, n, d = x.shape - q, k, v = self.qkv(x).split(d, dim=-1) - # (B, n, d) -> (B, n, h, dk) -> (B, h, n, dk):每个头只用其中 dk 维 - q, k, v = [t.view(B, n, self.h, self.dk).transpose(1, 2) for t in (q, k, v)] - scores = q @ k.transpose(-2, -1) / self.dk ** 0.5 # (B, h, n, n) - mask = torch.ones(n, n, dtype=torch.bool).triu(1) # 因果掩码:右上角 - scores = scores.masked_fill(mask, float("-inf")) - o = scores.softmax(dim=-1) @ v # (B, h, n, dk) - o = o.transpose(1, 2).contiguous().view(B, n, d) # 拼接各头 - return self.out(o) -``` - -拼接之前要调用 contiguous(),这是因为 transpose 只改变了张量各维的步长,数据在内存中仍按原来的顺序排列,这时直接调用 view 会报错。contiguous() 按新的顺序复制一份连续的数据,也可以直接用 reshape,它在需要时自动复制。 +每个头的维度是 3584 / 28,所以多头注意力的计算量与一个 3584 维的单头注意力基本相同,多出来的只是切分和拼接。用 PyTorch 手写的实现见[进阶:多头注意力的实现](大模型应用%20-%20进阶.md#1-多头注意力的实现)。 #### 2. 计算量与 FlashAttention -序列长度为 n、向量维度为 d 时,QKT 和乘以 V 各需要约 n2d 次乘加,时间复杂度为 O(n2d),分数矩阵占用 O(n2) 的显存。按 Qwen2.5-7B 的配置计算,每个 Token 经过一层的线性层约需 4.7 亿次浮点运算,与上下文长度无关;生成第 T 个 Token 时,一层注意力的分数和加权求和约需 14336 × T 次,T 约为 3.2 万时两者相当(见[附录 A24](#a24-在线-softmax-与注意力的计算量))。所以上下文较短时,计算量主要在线性层,上下文越长,注意力所占的比例越大。 +序列长度为 n、向量维度为 d 时,QKT 和乘以 V 各需要约 n2d 次乘加,时间复杂度为 O(n2d),分数矩阵占用 O(n2) 的显存。上下文较短时,计算量主要在线性层,上下文越长,注意力所占的比例越大,按 Qwen2.5-7B 的配置计算,两者在约 3.2 万个 Token 时相当。 降低这部分开销有两类做法。一类让每个 Token 只看一部分 Token,或者改写 softmax,结果与标准注意力不同:例如 Mistral 7B 的滑动窗口注意力中,每层的每个 Token 只看前 4096 个 Token;线性注意力用核函数代替 softmax,利用矩阵乘法的结合律把复杂度降为 O(n)。另一类结果不变,只减少显存的读写,即 FlashAttention。 -标准实现分几步完成:算出 n × n 的分数矩阵写入显存,读出来做 softmax 再写回,再读出来乘以 V。GPU 的显存(HBM)容量大但带宽有限,A100 为 1.5~2.0 TB/s;每个计算单元旁边的片上缓存(SRAM)带宽约 19 TB/s,但总共只有约 20 MB。这个矩阵又很大,n = 32K 时,Qwen2.5-7B 一个头的分数矩阵在 BF16 下就占 2 GB,大部分时间花在了读写显存上。 - -FlashAttention 把计算分块:每次把一块 Q 和一块 K、V 读入 SRAM,算出这一块的分数后直接累积到输出中,n × n 的矩阵从不写回显存。难点在于 softmax 要除以全部分数的指数和,只看到一部分 K 时还不知道这个和。解决方法是在线 softmax:对每个查询维护目前为止的最大分数 m、指数和 l 以及未归一化的输出 o,读入新的一块后,如果最大值变大了,就把之前的 l 和 o 乘以 em旧 − m新 再累加。例如一个查询与 4 个 Token 的分数为 2、1、3、0,对应的 V 为 10、20、30、40,每块 2 个 Token: - -```text -第 1 块(分数 2、1) m = 2 l = e^0 + e^-1 = 1.368 - o = 10 × e^0 + 20 × e^-1 = 17.358 -第 2 块(分数 3、0) m = 3 之前的 l 和 o 乘以 e^(2-3) = 0.368 - l = 1.368 × 0.368 + e^0 + e^-3 = 1.553 - o = 17.358 × 0.368 + 30 × e^0 + 40 × e^-3 = 38.377 -输出 o / l = 24.711,与一次性做 softmax 的结果相同 -``` - -所以 FlashAttention 是精确计算,而不是近似(numpy 实测,见[附录 A24](#a24-在线-softmax-与注意力的计算量))。反向传播时也不保存分数矩阵,只保存 m 和 l,需要时重新计算分数,多做了一些计算,但显存的读写更少,整体仍然更快。论文在 A100 上计算 GPT-2 medium 的注意力(序列长度 1024),浮点运算量从 66.6 G 增加到 75.2 G,显存读写却从 40.3 GB 降到 4.4 GB,运行时间从 41.7 毫秒降到 7.3 毫秒。FlashAttention-2 进一步减少了矩阵乘法以外的运算,并沿序列长度的方向并行,速度又提高了约 1 倍。 +FlashAttention 把计算分块放进 GPU 的片上缓存完成,n × n 的分数矩阵从不写回显存,再用在线 softmax 逐块累积,结果与标准注意力完全相同。它减少的是显存的读写而不是计算量,原理和数值例子见[进阶:计算量与 FlashAttention](大模型应用%20-%20进阶.md#2-计算量与-flashattention)。 ### 自回归生成与 KV Cache @@ -278,24 +240,13 @@ KV Cache 是用显存换计算。每个 Token 要在每一层缓存 K 和 V 两 减少 KV Cache 的方法: - 分组查询注意力(Grouped-Query Attention, GQA):多个查询头共享一组 K、V。Qwen2.5-7B 有 28 个查询头、4 组 K、V,如果每个查询头都有自己的 K、V,每个 Token 要占用 392 KB。极端情况是所有查询头共享一组 K、V,称为多查询注意力(Multi-Query Attention, MQA),缓存最小,但效果下降更明显; -- 多头潜在注意力(Multi-head Latent Attention, MLA):DeepSeek-V2 提出。GQA 减少的是 K、V 的组数,MLA 则把 K、V 联合压缩成一个低维的潜在向量,只缓存这个向量,计算时再用矩阵还原出各个头的 K、V;推理时还原矩阵可以合并到 Q 和输出的矩阵中,不必真的算出每个头的 K、V。RoPE 会妨碍这种合并,所以另用一个所有头共享的小向量携带位置信息。DeepSeek-V3 每层每个 Token 只缓存 512 + 64 = 576 个数,61 层共 68.6 KB,与 Qwen2.5-7B 的 56 KB 相近;同样的 128 个头如果用 MHA,每个 Token 要 4.77 MB(按 config.json 计算,见[附录 A25](#a25-zero-的显存与-mla-的-kv-cache))。论文中 MLA 的缓存量只相当于 2.25 组的 GQA,效果却好于 MHA; +- 多头潜在注意力(Multi-head Latent Attention, MLA):DeepSeek-V2 提出。GQA 减少的是 K、V 的组数,MLA 则把 K、V 联合压缩成一个低维的潜在向量,只缓存这个向量,计算时再用矩阵还原出各个头的 K、V。DeepSeek-V3 每个 Token 只缓存 68.6 KB,与 Qwen2.5-7B 的 56 KB 相近,细节见[进阶:多头潜在注意力](大模型应用%20-%20进阶.md#2-多头潜在注意力); - PagedAttention:推理框架 vLLM 把 KV Cache 切成固定大小的块按需分配,不再按最大长度预留连续的显存,相同前缀的请求还可以共享块,见[推理服务部署](#4-pagedattention); - 量化:用 8 位甚至更少的位数存储 K、V。