From f3e54a7866c5d69a20e85aa6dd73c1012353410e Mon Sep 17 00:00:00 2001 From: Hetul Patel Date: Sat, 16 Mar 2024 17:41:29 +0530 Subject: [PATCH] Added RLHF Blog --- README.md | 8 +- ...g => Large Language Models-challenges.png} | Bin .../base_attn.png | Bin 0 -> 51293 bytes .../kl0_attn.png | Bin 0 -> 41176 bytes .../kl0_plot.png | Bin 0 -> 32225 bytes .../kl1_attn.png | Bin 0 -> 42266 bytes .../rl_outputs.png | Bin 0 -> 76670 bytes images/site/infocusp_logo_blue.png | Bin 0 -> 2170 bytes images/site/infocusp_logo_blue.svg | 5 - mkdocs.yaml | 9 +- requirements.txt | 3 +- session_1/README.md | 1 + session_1/part_3_landscape_of_llms/README.md | 4 +- session_4/README.md | 34 + .../RLHF.ipynb | 1535 +++++++++++++++++ stylesheets/extra.css | 6 +- 16 files changed, 1589 insertions(+), 16 deletions(-) rename images/session_1/part_3_landscape_of_llms/{Large Language Models-challanges.png => Large Language Models-challenges.png} (100%) create mode 100644 images/session_4/part_2_finetuning_lms_to_human_preferences/base_attn.png create mode 100644 images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_attn.png create mode 100644 images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_plot.png create mode 100644 images/session_4/part_2_finetuning_lms_to_human_preferences/kl1_attn.png create mode 100644 images/session_4/part_2_finetuning_lms_to_human_preferences/rl_outputs.png create mode 100644 images/site/infocusp_logo_blue.png delete mode 100644 images/site/infocusp_logo_blue.svg create mode 100644 session_4/README.md create mode 100644 session_4/part_2_finetuning_lms_to_human_preferences/RLHF.ipynb diff --git a/README.md b/README.md index 6223031..60ffc62 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A multi-part seminar series on Large Language Models (LLMs). ![Session 1](images/home_page/Large%20Language%20Models.png) -

Large Language Models Full Topic List

+

Click here for Large Language Models Full Topic List

## ✨ [Emergence, Fundamentals and Landscape of LLMs](session_1) @@ -34,14 +34,12 @@ Explore diverse applications of Large Language Models (LLMs) and the frameworks Coming soon... -## ✨ Training and Evaluating LLMs On Custom Datasets +## ✨ [Training and Evaluating LLMs On Custom Datasets](session_4) Delve into the intricacies of training and evaluating Large Language Models (LLMs) on your custom datasets. Gain insights into optimizing performance, fine-tuning, and assessing model effectiveness tailored to your specific data. ![Session 4](images/home_page/Session%204.png) -Coming soon... - ## ✨ Optimizing LLMs For Inference and Deployment Techniques Learn techniques to optimize Large Language Models (LLMs) for efficient inference. Explore strategies for seamless deployment, ensuring optimal performance in real-world applications. @@ -50,7 +48,7 @@ Learn techniques to optimize Large Language Models (LLMs) for efficient inferenc Coming soon... -## ✨ Open Challanges With LLMs +## ✨ Open Challenges With LLMs Delve into the dichotomy of small vs large LLMs, navigating production challenges, addressing research hurdles, and understanding the perils associated with the utilization of pretrained LLMs. Explore the evolving landscape of challenges within the realm of Large Language Models. diff --git a/images/session_1/part_3_landscape_of_llms/Large Language Models-challanges.png b/images/session_1/part_3_landscape_of_llms/Large Language Models-challenges.png similarity index 100% rename from images/session_1/part_3_landscape_of_llms/Large Language Models-challanges.png rename to images/session_1/part_3_landscape_of_llms/Large Language Models-challenges.png diff --git a/images/session_4/part_2_finetuning_lms_to_human_preferences/base_attn.png b/images/session_4/part_2_finetuning_lms_to_human_preferences/base_attn.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7dffdf6dccdb66392bf0f840cb4f7c1cc49169 GIT binary patch literal 51293 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

!>94QJ?aL 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

C6 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 EU&(2nRR910 literal 0 HcmV?d00001 diff --git a/images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_plot.png b/images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..e76055d897b3de166e69e596104b437969be1c8f GIT binary patch literal 32225 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 literal 0 HcmV?d00001 diff --git a/images/session_4/part_2_finetuning_lms_to_human_preferences/rl_outputs.png b/images/session_4/part_2_finetuning_lms_to_human_preferences/rl_outputs.png new file mode 100644 index 0000000000000000000000000000000000000000..2a204f536c2eb52cb5f1039e921a2b25dfc24dde GIT binary patch literal 76670 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

l-uS!<$Vw*;U51Mzol zw6wgs)vJfN=JS|Y&6>&Y?Z+j{;!METL4{f~*QdHWam`?U-9E`+b%tj0R<#TNg?`12 z^1TnT2*6M71zpTOg@(TGxEyx`l_1uXH8k75cdwLa&irbIUs}B0_!w)NpS0-fNVbj0cz;fC3w2|<^7%Z8res)PeV2WC@6aMQr`M}M< zZwbF~Y&JvbY|AOn`o!svodh*-c+XK(b6=@%>rLZ}h#urH?RDgCadDRkbACl_OgudD zx4bCS2;^Max%n)~|NVCjFegHiP!VdE#^s8>D>Q%{uF9VX3iUuIOBd4iSKSt6lf<)U z&oYw)(H?2WB(Ue@T z9{jqMdD;z4O+d;nan_jmckSARBAZ-j9+koUE_=pWaB~V4P*jrg!503TGPD{oNAfLq z1bI=(ynZ>~KyPmg02j-KyBvjML2+>d$g&_zTz<(?AqOU^z6;xw%&Ux!UOqmbsVv|t z!h4zjNa_%YKtq`$6BfnswCYdlmoRNAbt+i*aVKTn@5AbNPp2ls&CA;ktzY2o&Z)A@ zL#%5rkyAx-yq`mt3@t_msGIqxTF!-Y3z?`#5*k6RfFYDAZ?K$XBCp!|8vX+C3R5u) zjosUdC1Lrn*<&*T6eJCfy7BeKZ;%~AiWQKa7#T8dA#xWil#6=SxA=G3UQt_{@r%Ua z>xnKmfqss%m=mCW2;BpP`H6m4Ie9e9LmBEq6h4ww1m0(FevZ!KaW*zKQWBqVFhp~J zHtsn2X~;ORyq+|*1`)B+ZotFjokHz*;Q|%8U6%~REbf^deTZ}eJr#?Q=ATz5D+z|F zpZ*qEawuwRRo2~o|AmfM+n?fa6ZmuUpkPZ0L3U%T;bmFbc;70sRK8jtN>qAIIq7VQ zrPB0`u?G&w^}Qkp9Ps@O3}6jMXiSE(1Pqxm;OU~C185KVQAUmo>>+rFStpB0VzJ?u zy?w=(7WN^B1d$@wO@cLz+yicAY@z@M?r+Arowuv|mxf;CAJlh!n(Ws3$)2!Lg2jXh zA*8N1Ul|%(NTxoXyvu2Dyp$e9=hNrS=ghmQKPWaV-kXs|KyR_PuyW@B4*vDI&=6H7 z4~<)%*yS&Ps8gC9C1{XD!Q;!9WjgCqJ8p@@WkQ2|Vdj;SnEh$2M~?iHHvQJdP@is! zj>IFlxz&CAXy6rfJODZFVlOYz0%EE$nG+A4EB7b}dLSTzx+yyXj-&QfN;1NPK7B-` z8!y$bbo>Fy&HK2XK;1d$*DJRRY`*rPp<_Kx3?6L1ZlSanpdJmPp(kj|Vj)vYoJNv2 zbHFqLVm7~|VXH4FV$<=0e{o1$fP5~N>4V$vzfcpfHkX(jq*AWW8}F?+0B}F=Exs5* zRORMQavOPXDU12-LEL=u<{mHwlp8*A$4wYcMVGdt7fj$Vp$rSq<+Ol!o1Fn|+G-)^ z-7=3%)FYezZY^Qeowi?DT&%6PHwo{``}ci6=RS^=H^qt2kd3IL!z_qvZWct{ONln_ z*>hmrc@3E$P9#Bam^Mw%D=JykZ}b|u<}?i@dz8BwjxXr^=ktN=KA&~#hyp{Iz{X-J zq}m>kwA7h+1*Art0#oIpMCo<>{e$nHhM>fZ-~6X-YwE6EsynIoG4TS|Rz)51gqoml z3jb!`O$>|T&P$TEwz25mk|Hk~Ss$xzr9E}k7RhZE{%bRywRwl{+&O}g3zls@orOI| zj$BAg9EzkfctfCw+Y=AP7_Z`RI#CR`nnc?!wie{{hqT#A=t7c1qM=uw13Qo`ilbKf zCm((G>eWWxG>R7O!oE=8&Xt$_vpI&aoxZFnwJPLP3g_Gcx#|D1i=c&Vfpm`ajZ)td zwImi)y7d$FQS9H`^H3mM;hZ}zmbT~+WhAEark|gM zFM5oS1*hA0(m|a>F(3*SLkQpZa@`0z_11^x^~&y^|! z(A{$Nfbw&X`QPovWDSx;un7wR(5@B)!{{@hst&N6MZD4Dt__tah2?PhUDVYL(hBa~>o};hCO}Yhw9aujTd{laenr&7nKO11oa&tav2_w1I(%YAhpnx(KgVITbDBGVpXQE$$gs^8#ksAd-b|ghYt2rro`Tfj*7a>_=r?U zl9D%X1|DZ*mT2Nv3nA;wgXEWN-I~LqND8Y{&PDFYK43ckyC=7K&YG+dqek_JAGnXG zjGCGOyZfZNa4&4r znFUpmhB$Q6(t@TGz$K&QGTYpGx>b9VTWe_-Z%)ad!p$86mPPF8Qv4uoO||1zHLihX zgWx|R>AAR9)Oz#)*I=_@4u0JTJ%wQbw}C=PTH1HI-;8-9GNTa+v5XS0!|>3hP#JeM z6J{1j&2N z_xz}T7LVET<0f46wp$o!4vz9=meb*Rh6#N+f42Lck(Lzakg?lA*aU$)m1E+qEt-Y$ z;0Hf57Gbjt4c4P12(+O2X*uR&XEPMIA+af@Dj#iP%%e}?yLZ#vQS?mRnp|=TaVaPv zE$*^qX{+B)uI{>dNe_Lu4SpYK+6T0`QOR{HPg8YQQ&CjpYFtOG6gmUS6$Tc1n`$g( z1m%05>+}iS_QY_BekC^8vw;^IiKMU`an=S-iX@c9xSFWcZ$D;QBOTAQ-soKf0fv>+ zl$Zt4uhIB{jB7EbQz_J7GNhv@P`W2}>r7}IvTz~>Yo*rDE&eP%`%b_aW?+gOBpl3C znkE!7ghLnDq6iP#5=Kt-BibAiq~U7#O@=cspCILe)q+n8vBKW}f=J0skHegx28_-q zmu%g1Fo%^!n%M}p%EJ9UqycqU~e>+ISJ>Sy@OytNB z&AkN-D>OUTk*?$y8TeB~EcUg~pHRO@+6E841iMVIiXfQ9#}fj{f?)d_9~g}C&2uU@|V5-q}l1-iQ@?Da?0(Y>v=AkMsc$-q)DZ6SboD^Qgmtu3_l^e;eX zo0vZ^TDn#j3k4;K*mKd0o4ltzrEuIrkS9y}JDzU(+5jsF5hDU`oj%={AxPEsy1iWp zV+L|!{02RwKWM*bL**R4<9Z?;W#IRdju{9_ZA}vcQHByx|m`=YH#C(j?w1N+b*NVr%5{3 zm)-GyFKP<8C6!~uFpE>CQZQg}Z&OB2)sN;pn6CzB>Nw~Q@+C%DetFkXz@D#a7{jbr zmT>u3_|XZw)tj);K{5j-5d{QW-Q+hgw9kK4-BiiXw(J^_H;OHY^Wj^sdWEX~?kM5m zBqm-sethqqJz8`8V1l4NA%(P>^u;zt;%(fo@?*EAdipD6ka)@XC9{!wi&P8ss{f7>r>tKW&7&~}Bl8cGqVW<$4^elb9?4}0AW<9EOQV6c^oLi>rpRdhyH-hmC2}wz|cm1KY3A*}PSVKou^=g=tg>w-UE8XWppfVut$X_?)5zB+qy6)e^kq_2lRN((rB#NegqI;8^y0JAZnqo$1}Waq zp~_xYW}Fipr+P?RF#;9jQsG^@bV*KDmTtSYrbgr=W9&N0$pt>8^MxMD85Df-O;NqGyMj?l3JoQ@g|0=FphkgQBhpUrj7zv3&$Bv1PNucwX zN<>Eq^x+Qm)K`~PzgsW9umTxo;x?ym6{J5reZ#XSy|{r)IwOB zo$c1ZO|XOg`k-s%^3cp-hV?a$jQ!G+7Xx~1ORG|79wv48#ZVcAZ$Owo7b-GyX6iq=2YqTcSzB#oA2Q3Atm@6`6w&}ICPJ_jYoa4 z0P;{AH?$sm(0|gIOny0fz%L}pR;Wo+c#7glkOWmgdNDdpOsv>7El69J}gXpT_s+SQ4viUPf% z;d1YyxDg;OVu~>D41eK_x!h7%d_DN&_yZXuBxG&rVydo?ml(_-DnXzENacU~Pr3xt zM$roc* zBcU|e(9TD!U^hQo)+dO=-AgHB8~~jlx}Lfo(g^ZU+jc7}C3nh)!Q(XKl8L+F7C|Qk zB1N+d^FqV<`n86zCng5OAstYgNjzv2e?K_1Lq@08bJDU~cbxlkf@icKgjjB=6Kft7y zp4d3ifes$rfLS&@|0v4ObuLwoD>Ds=_8NcYK(vilsD!}ULE&K>{cUeX*`V4#0Ij%A z_+zBFQxS1_=N8ozH@@&q7v)ih-iq?5Xa8OvRrq9V&?}4UUlx3M3WQQWEalv}U3Q7c zNtw0))My$d6cn}Q&R+R6uwyLy($MNPubXP80wk=|T=@>IB17uQDXU)1n$h7H?pYMdVhX-8{FfU9xG^|{e z*wV8|@!3BG-3=sfx-~O|jAzOlYd>KqQBg1paDds55STCz6*3+K|Jt>6j*d~BbF_AZ zLfP7qV~AWHAxED+6-YIpK?R}TqTORxi9<*HwaeotY_0hRR*u#|2%t!!8jb93i^PN? zb<2@Egnklg8)PnhAEm?k(V9P&^wVgL^tpe=KXB?0BO`BGF=YJw6q=<-v-N=99ChWZ zC)Rx&c>k1i>%vF}DWH5jPjQOU5gMl630vBJa6E5IqgNaKAoK*u9Pq4SMXG-j0bKnf z8@xS-CvTrJRtVtSx3@1u1SFQ8g9g0>OUQ&u*h7LhfJTR0TeD2@WkW<*xf zGBUTE3Gm^(g?{3u<>8TYAOCg7Yor>0=iI8N5~i%7u`BI}kw-R^lG!LL zGYEBvOKRcw@82^F&>KZ)y=g=q0}b|%Uhgw$QpbqAZOO+Pe0}VwAj2o0LRF}Eh5-%q zyuu_AEc*NzfhCpIf=e^#xB1H1U4MZ76Y@k`z>ep0<@ViCFx?{1B4EnFXa6dE3h@}N zSwv0^j26p?Jp-|Q@=9sC(ijz(_%B)TlI+`+mc;pY9D%as+pTljaKze=(Nsmz zGF?45(~%2s8Iw5i^c4W0cBEg;^TC=C(;XZLpoo~_o9=G|=5fUPNfoF4t0wBF4r)#z&9gY24>JLh zosSL7o5=&=Si7H{R+fI zU=otkI+OhAS(?`1!TehitfRlRwne6}cOMVBy>txT#`mzvUrc zV2R)^c>CqGKsEe0pa@!15ZqlwyMrRKmk*=aVUG$zz1%#qW6O?9!n% zV2BB{RY*tu2XkHD^#`jSpStN1dt;4Gi?F%zAvjNfkB=R*tPH}q{Ncj~%|*S5s=3RQ z>RaxNxW6AaqN{5{w7xcTM~Le`ap6J+hqOWt9LGS%du0>Hw01TDTnh}m#l{CqG5g~K z!MbmoRO+(qKX>7gear~e{% z2=h&L1uT^)*Q6&UVZO1^zrHN+qI!BK@tb&Sbrlpvm6R(rAu$ANM$UC}+k*9~`NS$< z9Ab0GE^s$$Y-(c8TJO>6&RdgI%OY}3wfBC%J#J<4D~pzgIj3_^nfg@bqjJbd+H%d( zUzJM3p7y?ZQ|EAS6`F@~qXCvn{O!I*MJYkyfo#y2COclNlhM(#obceY9OpM+-#@LO zZboH4fmvzGbq}0=O=A3ST1Wo@$hL%!t3wk`gJ`wy<|JF&Td`}cwoD-$XB#*|$4pyF z5xseDF3q=wj^+HwuzR5>TlHY|hff@7tjMUa&*M@4h(2nV1fI@odDXtRVx9MfuzDo} z0}T70*CINlGbjbi5%GM3OnlXUw3BAM^)H8~2Wke~FVIb)D}USnWI5$Z9>o8Jc52GX zx;H1B@Q15cDBluT7|?&~=g&UqKBr}#IVkbZH@>O03!w{oUYlCKP;g2;(0g|aNX`;ZV(!lXKR>eOQD z{{>7Gyz&K@lJ;t%t!>M8Y`7tm)6t#BQYSIiXw|#TtS$V>MfD7aKQoz0e8s(Y)x*}pH(|$TFdt9(OsRbI&vz`)XN(&Raw6-UA zHJX_c+9s4v01`oyIJh)T7At1-_-XJ8Gwh`A284ge73DelA=)C@M7NcvGecX7HL>R7e(H z_bk_7ZuF!{=kpqJ46CSTxhh`~ozi?Z2;Xrlj8}6lswSF8FqH+q29s(2x!=kA<4I2l z*T6OGG~Q1_0Qk=?E=IQ4wRWVbDKor8*K+oBd~iFh7@B*Z>zn0+KPO7fOJ4{S173^UYM9tSG%^CUy+Gzu{+r03V-@dl zRB{UXjV=L|WwxMlxh%3ZKk#_U?Ddq8M zotO2!EPQvNdC%VDCH>YdN7a9hm5!2l;TpSltQd6l>;BLJPX?KOK+8nwfnyQo#2<61 zAatF5PEj;e_4X%Ts@W-c>dWJ2GD@y|89--I#eEG;ruu@F~0C__^oAQ$A8yV+Q}Kn1s9sH;o42m`kQ46 zALH>LUNA;J38CAXxyHv*#W<>g560bWbzX}d)UV~UuBI{YP-6F-$}cT+({J8vBK3uf zjQ+{or&3l7qnbT)Cbf9^A|lgi8*H5xBbcX6TynqlWd6N-Z&FtFV!Uon9h14h@w|fzk?{1 z%`tj`&e@AMNKgM|(of~nq59G_Am5s2dZ!suFkYB*V9y>0YBl7VOnpLFTQ+S_to`v~ zap;vVBY$axX`JRbI(`OOqQ5&L}87lb?a$0c;>Vnj~|PHP|Xb-x4#Af z0*q!=3{dHBYN}?wB0ES9qIBCUE-%{u|FejT20(<&p3HA3^JG-*oK=rvH_r(wx~;O1 zpVTZz@I3RJ^UQZdMPe0WDdE=zD7z(6qV28U#hSuLi zUAeJF7Bv;e43)icGri5s=NL|C;+Pf3`Z*>cfW>Z<{o?NQEI0$sL|O}^!Fc&#_#K`b zxJkTNe(hfk9{CZvrRsiVSrX6+>bn<`m`nj!K5BfpWcK&z((Kj9M>_s9?c)dnq*kXeIuk0(-dn!`$DNKB3BC^lNEmyvdTN=#zYH&=5(1M<*7u-6tVlY98s! z4$8lKH>x-~F774*{8R=Y^=@_3P9M@VSyv}vmqBld1?W@$q3aU!u2}P_>z;E1;dDJQ zm;k+B5@gbd^Sw5-d`@KK?Cbl5g>1X{U3#P2(4>X)_Zv8(b7SrbGJZ?r7i! zNOnxsOuBI42+h!?OM|!Fs&8t#S5y>xr}2{$6R;M0u@^mE$(>5wHaxfwF{8tRlB)Wk3zm7g|U<6DPw<7;c z%<^Bj(BNEI{0Xohzm#!WiW3i-U<$Z|>rY^o1{yRRU9aXF@VWK&A`6ABMH!yh@FY#W zxt|2^-@p=2rgOU;9Gxi>y{-bSjnDPh6lN5zl3lXYsvr7c4m@pzYOXSWAqjDg_ z07Rdio9RUNhMhrE^T&%lUw|-p62P#n=3h%lN;|jvyP2&`un;Jy+XXnt^cb&L_%fH@ zZI!z<|KkdY!ncdghduXQ@NCdL-%IEF7u^UAb)O#O(rv8O2IUidhAKw={ylH~x{}v& zcPv6{|B9<~8}fem>I*|MfB$`G)x^nQx45KW8xfjEBNb)B*`k#z+gKfB9}s!Me2+kj zgozzuJi$qz+dwEiFU^Rb>j%O}I|oKi^(>-zhnu>~wYHFfVmlred5-!8nPo4yOJO{LI@}yHV4e`LW zCj_u4W=O>sExI&=9w*9hNfgFIU<1kt6n+#$5ceNHE}bKeoP#T3Y_iXFN=LsIaqPop zRkQervj!#?lagp7OK+_0@Kj4_C-XE!5bN~~RI!BpH91F(UpoBk>C=MH$`A4WihGdQ z10E1G7TJP{i8!vota2vpsRY-cYGepRN(u(($E4y7}XgmUUPvB z1%YA40ZQ>jo#o`j0A*w2mpo&jnKHfn!Gs5bWVg|)`~B5i)O$M*j{c!Tu%+pDn(wZ% zL7}1Y&u=2oD}Tt!CeAuISbijxO!;S_xAcbM7_u0Wuy6Z3MeA{f3Y~hG{an!bk1~~!*6O2O7&l)KI z4TR_Mty@QtbO41LCAAWJA%AT(Dh-qdj=^l9!$uw`!I6YqA`g#5hCx(2UR1&)t{}St zbP!b>x_)t#^7QvSs9_Y}KKMLdxS5-oxo*zM06*mQmtP@m9=J1nYY&pfDnEP>BYpvg z`-vGFV3DQ%U+(cBlHFGvJlZ~K_{fn5?Gm90nPLvBjYO04NG_K24ox$ECijq%0uqPb zIbjVtG4CPm9XFVfci4h(r|XjkIpk^i;@ibh(22_1ksslq0spXc~lYt z_4l?Esv)@z2G$RCShUngsPHjyfVZsn@j-u~5{-U`kecd;PMTMY z+nSZd{&#F5sBS&18nexxU%Zu_eGHW_(ca)EC?Yt32Qk_n&H}Y8!b*I31Iq5*b;90tiyp+mA!v8;T-C= zymyEPdF8imm2dC0*}=0MVofuGc`zd0o%HxSfdCykgi-!)vHl2H@lt631gITvmU$h$ z%(7mfJ%EHyO{TfEeTfO72F=JRuAJe^p9k2pCel~G?-WO1xtNDPXt%});{gLEZeAU1 zd6dt>`lmf#wCFukn)JKbIXLX`x7}+IOA1AK4GTNp)A;7Bx|*8XZ*q)&Cvm}CvOH8z zPw%qwnWtH)Yeu&B`@0q()l_Mx^fMWOM>K%+N%oSw*Wr#osaG}!$$uvEik`yGtTnx9YC8JD7j`VtY zRc>;al{WFiMP8P+wsJz&-Ma=OMnLDaV6p1WIKBf%HMlhOyWIsuCs-R0lz9()DqQsa zXEGnOoq*d>xumN94tb|!esKoyrytLBYLF&f$Fe?O!e7^izjni%~xegs>Us*_qyJOOH{cg~%*&Y5&Hfmb;<-)U) zk{`cGivd@ImMmMAW4%rgxYr_W8VN}Rcf}V}Q?twP9T{l8o%rt#4hZvt>``2Dx=EV7 z0wMH2Sl~%USHU%FB|<=uMLQg{yXQ#Tuy_>YH!gbo~?dATJ zJ4H!_wy5l=zDgLE!UOOVxJ>9jc88bSWSe6?QW7{jLG>#d5I~jND(+j%XmpVh^#FO6fK2^(Y^*8*jkI;=!@}&b^|$_p z0)XX4Wa90g!BAjDSduI67nFMw8jw6UjqZ6U>Tp(`%mC-XoJ8n)X7Na2YwDH;r1jcq z6_q)|@M~6)x~zcx4E47-5Ow1-Ki!tcn$0i9rOqaENJ5C}>(ah`dp}1R0lANm#R=^4 z@H0+7_%SLxQ}F%^=g;rX`?HD_+1g+YCkPErVbXO=QcY#$Ri+d`HsH2KtJ1Gzcs<}+ zbMY9)nDukfQ93{8`e*)5o@J%CY5e(tV3CY4M_+o`kt|eH;t;0F%lC&=>oqy*ck3Ys zwC`>EIbrL2ErXcQg2pbCg16ku9$oIRW_IuU?BB)(YJ=xVJ7X-`Pj>Im$pEUT&s<%- zJUkj^+I9k5zh`dK6w5s3K+B_LkLu$j(_aFOawiigpTe4D$;hNNpM7dU(d}1y5srmA zX5?X4hP}6RU8dj{?2D{iY3Efgd1{etAI7MC4;NMGc8Q<;Zjv!z-qt#V!Ppq02>D7# z5RM$-z(+(AKYG36tXX2($qVl{ns*#a-X1U-CCsGkwA+s5E2bh z$AD|H>M~Y`ipjM+OB2KdK%XG*ZiFolR&^;rcmz|nnZQT5CUPOJs}5x?GNJ^b_nG;W z5?Ymjcy9Ic$B)>U(8?RFjCbxG>Upvx7qaD&%77U_d)wLA9i+E%+X3p87vitQonVBQ z3!5k72Eey3zAh<7Rg<(C4-ll>4>bRzC}uhzv^%CQ+}h5 zoLIw+2W9x;zD!gz%%kR*S!WcB7U3lW)>R+vXC#!N8=|)2j&3=p(_U$(&ib`U2|5I} z@~a*DU9e!l#es<-?SbB=AXw;h=o#0hv$M|iX(_5d42CPNbK5|v#Pbydr01eIUc0nM z*>pb$-MJUt$1Yr`S7TFGR_09>f9qrtH*NL1L6u4hI3Qy2`R&`+?t6DAVA)`D7#Cq; z*tc&T{204Yuvob89+R|h1Z9HzIrnhK!9GYNA05p02PpJ)sD4jmZ1 zBM4Nf{3fz`aPQ0nP38(J|F(o1IOeY%!bmBBqwCYx69$U1B!3N1+DT5EuHlMRa4X>H zWXduUPZzwH3;WRE`R(Gsi17)}yYhm620d`@!i8%oDcku&kFXz895DudcGYXgo{lN1 zl<0eKer5P?eREFiKOR1mEKRw0WK53>Yq7F%-oqQn1!p67C!OwFK){%blzvPvXAjO> zyjTp^)xXv0hTjL4M^2}qpGkP?VeE;RY%@-MtPY$=%8@1$)~qqvJz@4`Pq{S(u#Y>lFlI4~0mPt>x+L2^2;Ynh+0mEI4Z(2T4r?mS5xWLi<+HN zJpo3Y_1R(iw}yt|hY!W+mJQy>X>cc9zBeOt^CtcSe20shTPBlr8L^VD7e^I1;W!0~ zXov)BcQ*KqTp1sU)`5DiOx+^%u!oWoD&)0<ZS zTa$U%-HoQ0A&QF!FMg2Fdt3-QkD7SjbTN!q?kJ;R-ImeR@(Ut>ATp2wyh_c>&lS}M zjxkpB`S`e>@qu$TD_8e(UXTzs#^HYNU7P;Q`u61u7gB#iLng5kX;l35>79+C1V>8= zTwxn;TtXpUnpsMQ8G`Pj_ce|-3$ zAM4JwEE3v=hAc-ov#4nD+-PBuqa{u3;9@^KY5K4+@r+fx{?8yg= z6R%xUxxoDZGmc&5wDTEi&dR*;^Dg;u$l%&UHOSb#3<|P2RJt=w>c%6GA-5#pL3c zsJC~*af(MS(OW(-J)WZ=S5djM@Cs%G9OLy~dqWdWYTl>SV?GmWZ~GPUZ}^MJ8D|8U zzW(Wq49$IL>ADEsKU&u-yNqOXsU<;Pej$7zV~gilXQEK{hK=dx91T8;vAo_+YZxKB0Vk;J@!L#Hj#c5n4L%$GGlYg8~ma=KEH$yWA zT4rtGL@oY3 z3m>1-k3-a0Lvu+oiwZ0&+q6{jN54#jg8bs$&1#GKiwY6=iDmip=~wDMzw4NoTidsI zuC@j47sNzBWi>LC{X>piWV7q3{scH_f8D%0;2KNbSSO1mIxWk$0=Z!}Wd#eqbY04zCk$VvFY0aEp9fIaeu-4kA2UE&1#gtq|siIr8*NJ$Sh6(yzY ziUurCa~vG%D-o2F$+W;EY;tNPh zI)L5v!i7OXnHU@Y1Rn5bHBt45J9>>>CpmB`M?+ujSpODbB@H=x!_>Pe$Cr zD=!>lyBVMw`5Rt$pZ9?G1WGfeeRh|y+&&X_nGzcDISJ3<0VI}G4XE^E?9$bTpm|uf z><=2bq~i4$I^?QtQjoP9gz*6Ye&(#9)CC`spedS*&Hd#+b#M1HJ0gc){SUesg0j>z*|*anhu@=^KVd=X;8C zNvQmQzd7+%(JIm_==1xQafc!kpaI>8ZD#rM8Y<1B-RK3BmDd6yq1r_Z61;soC7XsF zw?uwnp*T+%KoxNwE|-wuQi3;K9`*Ovx>C35jhoAAYwuV2Ah{}~)`jKfA_Or*3sALe zUlmpo0I1wW+dKBajyZkKoO7QoNP6It`3=yH{7_xZfaVT7Kv4eE;o*~0iaKw+i+er#krYzDLGzLqTG9NmX;wPz(yn?iVh-L@HB$*@ZK*Fz*PtM?TV9<&P z4K=3zHZh4CzS5P1p^=g(kb!=#!U0gM&NotH1Co$D=FF{EuSN|XJhkTv9&)=APKI=t z4*G(?V4dT|L;zE=#*RR$L&OSB2z$M~l!O?+*1;t+$lV3A49}T(>^T=Ot%DPJtjFd@ z?QdctEfC?wwFz=Kb_ox?bknyt!%O|g>FouU?xm*mJILU3qzF()sfXuDoCkNlW%-BQVHO5XCLw z7L0B|W5LP9kxP^}*9aRDNeRX89m7M>L3W9o?H=wAR14`M8^n1ANO~tPZ}s)p^e~k9 zXGf!YN=#&4Mud$H|C(Pas;cPUW}W$xa0USFFED$`cRb)n7%wL}Gs9Gp`Zyqc2WUf} z!X{^6E`Z5fB$#xSxy!uQt{vE~-`KYUNc{RoSka)cEzQ%1*2LRoz9fN8XK% zdo?8`rbfUXiUvj@VS&s>|FyBM&3w#%UYwp*CQula?UhL|D5PrJGUg z={|~rJ4P)$QK}V5v_l_8y)Cu%w(W7;|Rnb7b<*X?y7}2-FUqcy`-n+Mg zXkbb+S$5P7>Ys~qyZXh*2=j3R@m%&{5dsqXkT^YgMc$@M( zwL9)cI`*&yr__(1=~~N%0TAO%-anD)Eh0`qq1|Bp_6*tIjBF1ntU8&Pcz)JzXKvh3 zS2@#X55w6AY`?yG(X3hOhbL2;O|#Y#vWT13QAAg+fM;vt|=jY~{dT9QDkt0Xs^q&tzax*BeqDgfQ!HDD+a-z9TrC;z^s1(O$R;0cy$0a4iDv-pRe%p zjymip0v(970ReV)yxxsVwEnWxXW)ZQ+mDAE+PY6S9nHbQB*h}yI`JiWbNr$PKJ-^- zApjah*M8sWKKt${5P%Rz6ZRu$!T^;;3l`X#J)7DaBrB?p1Fn!~{-oP7G`p04^-(gy z9t2c6O2oR}m8$;Z56r0G&K0_BxG^6sCF*=#n!Jhc`?%-R`X>(_P}OWEhlq10)4#=- zF@^gmBT=0a3_$@&-3|@J+&asCT3T90MvBQE7ytm)LmtuN?KfRD4?E0H_Xs?x7-w{J z&3|n0e8UGC8nzcucKf~>zMNgA(dpFeq*G(!I5G%SrA(u@f-_@QEMskE%$>X2@Zyq3 zdO{XwyYe}QPTaZt29~9vfdL9ve9WAW*-t1Bny#F5WuQ6=yjT_VUDCAvUi*T4Kf>+y3>HP-gyTqR_<-;t-fymv;BdRfk;0$ zpxc}|b0%AZC2*>EF%4X9Jh{y&CVAP5f8NmHiu8aywEKn8wFMu7acEOevrW^83- zr4(vNkSp@~o%}ea9tow1`X{nwAT{Z8PB|v=nj8!BtINR*hOt&+u1W_s%LAb?)c{%r zl*0JH@`VdS7TGD}z`^_)Bv?P>T-@VVSPfy9=FKCNo3MLSm!+VOoCR>ZOBODikmyL? zPhlMuzrkb6Zcw{?yD^hUgdOAG?9G0M(FTA)3`o@FUT1c@*UFX2XNru(+v(lA2}d2! zzKK@o-+%~YggH0;rs@V#KyeE^Up{R21crn}Kkgfa0t|P9!N7qowgYSfe$N{}W~k^K zyR5o{6Eye?YgJ!=Ka~oxpGfChLe z4IPs;$~I-u1i3gK@^^RhYQ14~o*>$J)CB6XK?=@MZ7x#1eSSD@v(aHT@v?KevOys& zDL=N0Dru)Zs(_Ji5Ca?%m64iq%awgeStz~&YM8N*kQ?!z8#|@ zW(@cNKcX^d4qayRg4tUwPDgB6_7O^G7EGnPyL*b81%c-=3i0)Dhqw{feIH(YCh_?3 zK6LFmI#&E7fr^ytyvJz2i|yw1mWrv|^3bBSM=qFV!5NBOE+*Q*XBPH~I}Bwc_O|>z zEbGtal#*W^MuXvhuMJ6f9QHGUXTsQ|zx6W@H+`JTb;0iaITsb0(8)o4*zy^R7WEa% zAk)AkoE(>~SV5+WLfntqv^x6!m}sw(o87x~kvPTM(QUIo;p<3N1Jv*#|8}Cp9C%ciQJ(UK{(CH-X(T zhXxGeCiQ>2-2q+i+N7_R>%QafL)$E>+q~g5{W!0Asz32DPDE&SZri`APsN+*l8r#Y z$|7hdxG!JM1X$Qfny3`O8uHLwZT!vJIP}@PbdM(L=YP^d_nC9Y&w%n#eaPY_QZ3vq zlW9Q2Sr3XO>WbjKryY`1|8+8=Y@*klKN$K^Lk()A&^0U<(YU;w=oIn%&OHcoQ>BZe z!F05rv-4wanv*A(1!}zFrHSdMii$oX)YsRYC}9Ag_=FRp_`xya2*(rl`4*;c?n%Ap z?s!G;hfrVpW)!r5Od`A`m2R&=71h;ACzzQb=2ykrJ7CQ>uQ31*+~3SYtvj&lS3WPB71DISUGGiEGaxw5l>Y!#8d;kH|; zSoye|4Ns6y;YkW^N(v&0ty^5za77_{c~e@NdFml)yRg)N?Myhx@-*hww70j%Sc+#< z93|ah2{&1~_rJcn#R-j4@41d31+%M>p>UQPXzS|eEGM&VGRzR=u5Kc?1tbqvFBg|8 zW`VrOF0sXLfB}$ZnbVgCKGpH#VV;xj+<&)NZx<%^GF{~9S(ct_JY)#u#OWQ4OqO`w zBaLzrrG^zV=t&+KXM5&~U!4xM0N#jGk0b=Km3IC4BUzu~le20k`642$ejw$Pq`<^F zOs?H=7x^x@Pg2^K#|6^hO>wBdG*8;L?OKjyAP{%ZF`* zwskwvJ^kIkLmWcSG4N{`6cveE^Dc4UV)XX59iU=8VFLe&u=qC6%jN#{n9WW&(qM=D|#v`=f3~K2D=bABYi$i5=)c;hQK1|NotF4 z0KF1FGJ3RzApv@uu*#AzKmgI&wY$T@oYrnMpEBGxox(V`Z8wGKyV*|%s)Z0Ep`xt( zhNA&t%%(pZ4^Uze6X##;CTg)vhJ-pJsX~qwCXFH04!5?rQNzNJgsU65XVK=d*oHpP z>BqS>oqRl3*Uf+s^1;T8@3?0|gbr?ti5>asojY~H_cYGcwS?cvj~rrbT$$`RbEY`^ zos2$EbZ%>m>6}J$-q6c}jx$woKMBG_(9r5IMbF@orS1zN_3Z5K@>yq+jjBrWq^-UE zD-3>kS{XP`t7x8P2UEtz)thwCN=vcZa#T$Bi;6mT?p%6x$=+xak|_)RYDJX7^r{$* z)KC52b5q!fYNCHDsIm)j>iWMER0(JskboCIc@iTkF2Ki%;?zuP|E>inEQAAf#gLns znfZCzH?^9~nV06}l5l;gRs?c)@4iRf024Gq<37Ve#NcAa-V*AbTjhfppHZhIXH|xB zX}oXnLkW+k1C)Q>CAEDFev@w3PSl7{^v^iQ2gh{n@iUWTOm~K|(6Ze;F^Pnfp+Fug zVPfD_OO)Qu@NlM1Q*B>n3e?^LY!=87?>r&bCk7=~k~2nRW#!;lT;&cQeapYJq@J;q z8mw^T+BGvWgq9a_paPGGIVC#aE_NgrA;w4OyqlfZ3_u@r!Ui8Mjl_t04FA#s%)PbDQKL4YBBGl=SRo`(nH z^ps^%)SV6o`h2yhd1O6&^H_z3`ueQtEzJ${y}d6Y^#HrZ57=wWh9LWY#n?vvK3t?F zwtm7QoF>LkHeI;#ImG^o3p+Gs2ZT8cV)dZK>u_HB!57=C;gW@Z^kHBnOzP+3M#qrQVnFi5ha?T#y(Hz+eh~O_g$~xxu!u2K z&=d|g(B}kN*x1=2H-n2i!m8OkO<7hNCmpC%d7G5$(WM;;l>w`vyoTQaE@WMhE^)Dy zo%GXAI=YcLpg=6A%0kZeYs%h!z^IAQ5Dxm$VqVnGq&yg^0j@XIaxT*1Hh=$a|6~YF z%6=I{Lhc?OQym-_v6aCy{Dm;acG+p=Y_JwX9wZ=r*!eSOvXk`?UGHzcnM%sXIdBn#ge`BG9bE-lw1$Mhe?9MYS-x5-J;r>jMm` zO4z;sjMGXVALGN5V_#~^I5G1NKSBNH|JB=@fMdC@{ogl5NRd)BAfaeLX)YlZBGM$u z6qP2@Bq@|MCsRTtm82036v|ksRg&f;qCw+LDV6emF0Hkmz4x>K`*@!J`yQ`jAIBb6 zTlalkzu`Q;=Xa>juj$&SlU&ugUZHMVlbylM%I?tv)f}!M*BvUWZf3FKpL34o6rp?< zehNA=dG77(#-We?j&mB}2#kr{y8)IvM?wCw(o$k+fyGT{QG-if{oXGPnvp-WG)2akbI#Bdfc8~IO_qwirls7EfB!L9Q;yQ^T8Pj5(AWt(xG z@d6@PX55@Phdh|u{DBPuS}od778a-sSxQ=-Q;|oJrotWZ$wUAhx>W}_cy(y1QTjJ zmuJ*wl=4{U@v^ae;=l_YfR{$WBY<)WbU)iN+`O_jx$VI>V%?rRWvmQ6`c6F=?4Gu# z$lWH+NRY52$7B-77))rr4f^4-VXm3CKtdR3Gb$3;lIy#j+IjcM!-tT2<}X?#Z>!FB zhR4lsv9u*X0V_pw6_kxvs6?N)v$M@Pz6CDw@{r=UfWFM!N7 zG0_epIx}I%*|RC`7m>{C{aM*`V+wG^0}Oc(IlbwZ;`as-<~ERp^&QgoA9n6OJS78w zE6_rjvlzFIFHrMk5uXvSNsMx&D)P<7R`tf_CXlc29t3D}D;bQQFT6-LvH zpJu;>fEd_6&vwkukcnU{;tSnHxqMPBB`jx6wUk&gn8;Rdr7)w*_ z^Z0jYpqjUPS|jg@ivfS(ROov25`+f2L|el9xpkf16df-IH-;I9@Pnih zw2_F3faOFabWv9iYu5aW?1i9joj7DoRlXFXbo@u)Zm`KRZSUW^cXH;LD^S61yttT^ z)k>tb7?6g7G4lIT&@~AWdf{6<9lbm6gy~BzH0GS_>^;^m8Ns1^CyMXIY0rfM^0@|o z6^4_L{IH!NYjhpnUD}E=$g@2;0`Lxp>x7OnD(Y}*xL!5?cm5L2XAFSf&Thv;1OPvG z(ta<{$3x7r)W`hVX5K7Ny$)slN%eX)i=HlfnQF9^l;{s+W7_>oZrlKKE-NeBaE8Gd zpV9!s-!cg90Gmu%xp#zCCZPZDhyblD2eNF&S}AWahoU(OV@|GAik^83w{6{;o{^C- zV#Tqk!$aMmMsfZC2+})^;ZWubd-<$kWu!k&?mJpTx6IU9Eza%OF50TdV?-M_0nHVA zJ(9Y3Qt=g6)AxbkE|SOi4%W7|-Vou4W7x8V=oemZBW$3~+ZtY~A0AP3Exg8rlq|13 z7Z1#UpE8_6mS&fIH{IU;pzD}*(cSv|HpB|*a)!TCd}SeH8$bh2^otiA>mNK&5kLP( zUq^r-t_lKgepcTWrWZCxTS{Ja>D-y4YA6=U6u9D2BkNdh4v<8F8P&i4S`NrX!yXl= zblv%6KqtASmOC>9Nn%h!vWT~B8-BVKYDz&b$WRI^P}|snsM&IVc3$aS*q7sz@r6sx zvJK2edawgglw+BF5h9)b0<4Wf9~|2Haj)KQV%MNi0h|k*_WXHik;QlY ztCUA;fpg$BaJ@S0kBl5dzP8fX=TKl4UMw|HU^Bly@tzcn%{jksDw4bs&uC6p?3{_7zLrR2=U3sC0h)Ubt z%j*KE9#A(yB&e7>Hp{%9atDcx=NQePTOuJJ^~w7-yJ4CD&_jA0Ja}6DozBUOtT7+F z@dC?X2VYQHMoCm6!=Bu|`q#cI6pI zhOc~dw6OB-|oQ(8hadbfDJ;-a4wSEkQemRJT=hY6;=zE352OaGy=@~?bi2L zUU!?RUue$Un(9}thSE5)ZW)shy+)bXSJP`dij%H8&g10uIs*TL)2H>L=HA*1frYjC z=*}H79$n|mIkV`|z<{DL%}tT!nxkpgh=BsMXj~Y0uPam{oDR|SV9Gen!6B0!*mZ~W zGjR0I|DM@3)ahTCU8leNH)fYxK`6Jl8Yw0Psj%{48N=l<+j4U*jNQ(sK2%pTuWewG zSY3s21AV$jd{u4j@CA2|G8w;fM*z3*0U1~Ee&7Fr+QqDzNpi7Lu*q$Z1B7B&EimAu z)uEW~I0JVES5HsI_z-Msm{e3&YBV@Hw%7YuwcU+0-mAQaPl2P)|^8n>;)BZrrVSq`8LvRiJf?2fVlGa}&f zmhC7qSOgaptp!^@z*zkQmYM&S3x;!j0Y(n{M}XB3?#w7{mP1(glvOAA`_N@D2dh&* zd~0Irrgr<6yO#UP{>|>%;`!v_~OK`x205rvwwdFIHnmgJfEQF+;=Uts z0^(+~N=c7xRgelVgV+n~;9+vY`?Ap4!s_9iq4i{HD#Q>L9?^JX!5E2AJVRh8Rc_6P zoh@CvNc=X?!ps z$2G}5*7^usc_xU0B4y8*Knf4+0>6sIyNF(k6+VC1vr>|tJ9P$e7qo?72*n;&Yn{&0 z7^;O`bv4+&V+S=yuSc7v?!4Ppyk=&1EQc=yEqW7eb}XJi;!;9;prli(afNB0E*d<3 zsDhDk5%Wwih40gTo>6}OR){+#>!^Nhn5L51TF}29#sMnEC#E}@k-OXBO{;bZLH{~4 z+0f=zi;0#-RGX*&jq3Fu0N4LMtceO-+R_m~^trn$gG;P&bJ%O|3er&&i%nw)2RM9} zL>TCk$551PJKHY!w*1p%XXG(BQneeJG=X6Sqx!Erext57(>GS{h79=rOvBzWf%`Rt zJwNT4yGSGwLTG$_Q7VbYyx>T=*XbxEEqKY@+p_|32^no{>}G{YMiShU;uT&x;` z%b-?7zi%(&y&10c$HO}{%!MDm@J5AR$|6B!jR5aoG+YW(08@j|=Us~~Yw_P6y z)GJo4is|k$?i~I1lP6DrIGCZ(GlyI22;7ifb~x0EDtTC$n;LJ=&4G5)Yw%#g;5HSx zlL%pD#aPFv>tgD07_#s#sUBceSe^S-CgjHzd+^_BTHuXDV1lylr=v|87YArE6D8yt z0+HCw4Fy!->fbi6h?KFufXr``!Il{FDwZv>e8gvK2@nK~H)1hHnCr3Pn zDc8;-xq|-K;>Am@$}tY6jD(||9m4l7EIir^8(Gzsl)`Dse1ph>Dxo0Z zs<;0o*gav|kvEU$igm`_!Li3w{^EmuaX&jl3c^;|{ri^!n=i$^Y3@XSe+TY)X`hfB zK@!QBJ*I#2RG^AQjD9BW?l*Z^7BkP#~=>*aR~@HP*zO8jSLNG;foAT95}#O|2zGb-TDG^TAIJ{ zwCdU_%1?96QZkNk@u5Fp=*nXD>xJB{jQe>>#)R0r-PF{Kx!|2o9Mz!I!@`V97L_55 zE)F|z)84e*goK5LPg_56s^HKfAp(w|9z{sbgYvmu?!4idxW|a)7J3cBG3HzOkit|H zbl2gto~ef7uHqWr6%3ow+Rq?2md@W&c4Lmn|ICA-0tEL9LnYU%*I1i0t)xjhG@E|@ z{?G3KkAaC)A>P^q%28MKTs!T|nI8)SG#reb81Kow~QxYj5=_+?MX6WwyTZyM;^1_qW7Bmnk^It)X~@-)&aUA zGh(z*G5fnk&v<{}bV|>anSpHSub@u!U2DEre{-;hULz7=x)u=`iI-8}w-;Rm2~YM^ zZGv`pnM3EY2J2No+6dMc>9U8SCrMF&Y|iT3c6E?*|?%B~!* z@hj%FslqE1QN^dWv|s@;#@->XbOS76yE%WMMW6E<+s&X!BvCB8m_;X zhlaYPn!lJ#0U#2AK?t}aH_0kWoXKu|= zk2LgX>ZF-q)iqZQ#P?y#ru3Rl*f;<_*6N=a@PUpW?bTX~yR*JyI2unBQN@ZTFss{&f+BXyTw1*`n zCHL+P*3=}yx)y>FEDkKl8YMZ1z`rns%c)PJRSRUVf4tm$i5`w=eG5V8Jobi#U0$aI zb2`zo@RJ%jYHw(aE`-zBq$5C&LHvusGxq?wtd31qlQ+Vt#l{)o;4+FB+AgYAs&VY# zDv!yvdsmiRf+GNAGA3n?PEOsGl-%dd8@lqHLx6Q`jM-87{8Ko;h*i z@v~>AesfR>WkIy-F=8s!a*_MDA3x}hEsy<4(%SJXYnA>~Ue7-hzVwU~eL2n=U&O-$ z=I__mzSs330~mU5CW`gwt#3hSn3wQ*M&!mtmEvunGLm*=*0A*>7Ib3uETOlRKG z{H-K#>OK6g79RR>_eaAZS{+!n#k>1{S{mMuC5l8JU5s9ejWL)Xl}GOBiFdEV5rdt4 z9J!l`_BWToikh$V2X8h%8276+@1bksKhU%uU%e#|bpF3%X&tyLmQ@_F?^HxpM=q|j z?1&}JI*#W!!(kCwU9y>~{+pxq_G!1w{p$rDnPsaw?@lHAM)p2V3^yr02%ubA36!)> zt*u}FWq|dj`kDWO7Oqv{<^QA$`JXfkR$o(A!F)%hNrgUr`lR?FHl|((IoL3wAjWAh zZ)`17$Ql1*kD<@^tdExnlbd0Gkr6Lt;og;$#ZCI*6_x@Ss)Z)>PxP0{DJfqeGx)qq zg|mo!sjnusIZ(mCmzi$p>gNP}yF-S=Bsiz6#J;*!4S`LKB!;^9Iy~oh{v%5#cZvOJ zhkgXiaVSKe8^2R9zhOjFKC?J5^ZmY%2Z95ZP9%G&J_1uMBgsj9dNtgFCH5zCMzd8? zbHQp#2aW)+XVRA>MC@utC#3RzNu~{o>V&O{M{xvk2%;c>ErwZFdusl@CJ%mvVrM&)O z=ghxZIq=S+E~=gutPdc<6&P6e>ztLD*{2W9LSFcL%wE7RqGNEKtQ1#5*aOOlkFdA2 z6lA}ZXYqWj@%fMw>Hq3qcyTSPt*Yfi74{1AadhvZT&`$_cb%dDl%Ak&&)klNIKtk> zW(SCEfX*o;S?}SZ1KEOn*=d@6*gw+Z#Fy2EJ-e{1H|+=_-MqYD3oX9)R`Y`h-=If@ z3!Hf}Ar|u?-Q3947%e)$n1#8TymU2(KaVkI7en7j4!DX61PXFw8#3h%K&uBwbH5c` zOx!?ED`Kr7uSCLfen;1Fj``Y`FV1Q19{e2t00h&?D<8HdRx!z%#hIkq`! z*RE9jg@(Py1-_G9bQILpggtvUyE#mo7R_Pj(RNL5;bO_j=~0l%i0?faot7!9{*m4G z*RoaAk6Bl_H#|J}YiArFg%kqKI|y-Iz2AXl(H<#nIea*3|Ni#cDYu^IfEiAv_1QP6 zjVL?doBisRU->7YP*GLJW6Xg3jKdfSiWtQEYgN6UZjV{#P$FM$M!z}ww5=`?4aVUj zrGzNmUb@g5e{;MvTQ$23vHM=F*&+Z_Tp;yx(;z`Qrue@Uh5b)9|9`2`^ke-6sul>j z{zK6UAIzwk``j%2o}ofeZ8m#&RbS9@E@+#A_mlfm;WS^gX^eW$Ql)0#N{;isb9r0y zDtRXaHo}LMu`hVsE6RLC1FDP&jj=$yUA&w!kO;VeyOVR7=gPhtLR5N(+P8QzoMOpz zZA&)tZ*r9G%xkYc38^rP7Fj2kA&>cj%-KnAz<@7kU->C3!&C~%QmMm~rCO^d4T&F( z-lw?px)+;^$jGyxhnL;}Zu;%rqe0{D19Vg1c5eysfd@(dl{yLt;mfdT^FC!=6&PGc z|CzzXB(H*UYh^V1`=R4M(YI7Oc0|`ECnwj*$@$j0HK-%Va-jRdoGu{z zO}TDlyBa#(o`?uvCc}(Y9&Lmr3Yd+(a`>)YmAt1%Pt4OC;MS|Fsa;|=RTQr^?{W@E zAeGi`eHT&$)}Zr%!qfnvX6u8dqSbuoh{5RZ$94YO6HB0Q(Q8uZ0`cLGG$r697Q*y< z<-q7nGR`n_8#Hf{qhnl+B$pd$F_dP|sp-MBmM!soExlwMf*=^I`Yj2G**ZIlROSh55cIEK6nbs}r4s~O_%I8K0h z->|EP>{GyL^z`KPo0}i6`54q^XLEDlDfJ#Zef>Y{Xz0yWoH+H}LCvBmlWTTtoUiF1 z-Z6OVuDZ@XD}O_#wIUBaEs4}V=*{`A+cJ*&Q~`Z#i!!l^wqBf~DQ z{5p8#pdaOr*53SZY3@AW7PD6b+_%lRZkG!Li0edERXFGC$&>paZN>1)%o6QjXUoo5 zJxXm`(Fja`L)~tdVCyipj5|goqUTXs@ciRP^{!nXC!@A%hI$`qpq_YT=Co;2qDCa^ zhVlgCvNuwt9zT4Dhk{8o4Mzs8dSbxzla4TJceue0pNFAZWHH2Ka^rB9$SW(na)mua z3x(!b-8q1Y^h z@Tbj+A(>M|z-!PdxiIDt;xY*lhl0|}ISUuIEqMp6iA95~bLkYeBQuZJ1H`Ib^mEeE z!t-3w#kTF(*A>bhMm{DcCir*>H=bR@n=M`$Kuegp6;2T(P)J+y4_)!-ePB;#q0)uq ztrKaPT-Kv|cUsJ)kz9^EjQWLu=(~C1wSncqDFr4u+>e|v) z=lhe5ZaX!BeuwA`l3~b#!ewaX^5vCBXxuU6g(-%EDx3HF!})3|Z`cHj zjXen&i}tem<465sq3y*`Bn6KW;bifJR+neQHg790-}L7AX*O&h%l#X$7##{fX8a*0 zrbzI=e*SC?O3Cie+>+-y%K!7`0wMTd!nkqT#>Q%KFcHAGRF;N?Wlsmxup1*E1+(|cQ$u_93@&od@o(6ADuB47F% z*ccpY5PUXij9=-ua^25{8O%G$H6%>O;?7d2wPmHHc{38rF0OnZXE%_A|N5fVg!8Aq zGC%{3@O#i&Gx04HB@K;SOoBT0)!0-Jyf%f0RXqFjo|QM|o&oq4zh^f{iq4)pXX#g& zu4HH3)(JA|zJ0S1wu8YTHP~V<)S^Z}*gs$}e*2cU1{I^i{+{tSSNi&LsR|i^eqxPS z>sw^F9iaxmU-~*UV>q5C$)3^E%U`o1VcgvY7$6ZAhZ`Fkxvx3?IQ08Do|TFF9e9Wg zigY#t50jJULD}-_xT&DS=mwSpgol74@tm0Q200wtn|Ye>*MWXJJfn{G^6&scK0N;c zM2l&yiM3HR0^5-gf!9>Mf$?gorLoo9M-M@BmuCYjF^d)9g!Wh% zZ`pLzv6hjQ?cg$dKn#pHB7yF4UV)ZyV<*|uW){VFlAQ|4w9~2mBUWrBNJyswTFY^$ zVi09Nm{;v2^TlZFBe_1CcfHN=eId8SeEp;RCw2tGQEwZ_&%%0%8GWdmwN4p!a|H%i zBC-x-+eU193;U`5>(>YTx{PCRk>xIpd&td2Cu%4U$3Z6QHO)GsI`PY-lPA~KJs;P? ziDgt$HNfD2MBtJQ`jcUqhrB_iiddEo+=+Wk*;i|=FDh8Q=n-!DA>7Lpx?ub14kt<~ zUNi6eoq%(}X$f<+%fA}*2gc(3;+1E_{l}H19B^z`Yt@U+l>Y!;EQ7pFYKt^Zt-@Q0 z5vtPeVHywm9(gLb#En0c_sL=ER3mbuML{**?LD+z1N*05yclPqQ8{Bos2f$G^1D;0 zNr%MukLnhnu>9@){sG&-57*5L4er4#L+QSa;^YTe?3ldd_oO@Ej23T{-G@An{&8U{ zkx}yb4eh%Pkr%OzsfK0+^oqH$!q<0w5C01nD~vBS;H%*&mkL%{e)!-)T!a)e;k#a| zu44tP9_388L;EiF;H8Ui6;;;(2H<PEk7(JyM~iHtNF$6AhWQcNFI+ZQx1L_&5;@gfslcF3Jfd3^K2AJnq=O9o!H= zC@U+gXrA^miK14Qe-XSia`M&PP} z{5qLJTLzF*1+z9+x=rzrwI9ldW6uh5D^2+> zBvFnITvEgUtLhlPRqNh|_wQf$41@K85hZJRTUglXl#~l=zMg8#p-&<;1y&^>0b)HG zFfa|f$O@(k(6h9^W$X3krh%`6_fc1Zk~6!*tY-4HXyL{(m#lU&GW7TboZZn;QIK2> zy(`eHYGt&2bjPJ_$my|C`T_K3&`-CNv>UN5Z&n(6L@h!(9xZZ)^#ZI)G?tgZS7)3d z5`j{q#}RJIix-zXIp2Tu=pME@SG3gf6erFsD*V%<6o?WUPVgNG5peE&PtT;FYg>$+ z^rNlLDFzjLJlDzVdpIMbi_j<;gjb@tjEat~^DJ$>cJAh7Nak%iFn?A!$sPiya0-kOg^ZR^xGRwxxe5C zifb2uU^AQIh@~1AzXOz0=_=&A?%5+F%C(V`{?b;M4B+#{B$!H2LlW--WNXE{6nqTXY_GJ`37jxWUR&VB>LgEUo+YmQ&3 za`b3oqQn%|HeNFp1ASb%=qW|`;d3wsK`Of5<|6nd=fBI!phuh{@bvcY+6C)fi1b~d zI2@91{;4;Wk58%;o}DEbtf;C=XZ?$P07r@&r|XU*$;m@sr%O)=>~D88)^c;>EJKkA z2LOY|t>3@Q>g-f>1EQAhfC2604<@qbZAT{$G1J>;K%*HT?qsVE=R;Y|`ZQ<;! z7O=Z_xCPh7`XltvLk17tGG1BsIhtWOQHeV;$H3fM$`1AM5s84sk<&w;`*udh5dK%* zhxia3Lt?w~D?5lxT5JP?SBXg!5(>cSr|IO4cUOJ>rl_kR@uQ%kV*jM%G0^eB^5n=Iy)e=Ui7gGRO6oLjYp2`=0BKI9LN?opga#?ONMXQ zm@p-z!DZnvW8=qT;Bam2qQ{TptaT7zurJA6?NH$Z!%90Ph;f4mLr^Ae@*)kt1%=lr z`5|AU68=C~g$OGH={bZZM5v82)TmReYi-cE4_n#gL zpW`4CLiK=iwsOS^Rz`HdSN^1sjqqwu-nm)bCrcEaB`t0*B^CuBC0{Gi0GCUn=z*oK z)@}6)=E8*h#fEIOmE?qgfleW8o@u3_Xx`)GZD*BGChzUTw#M{_4!Pb|$T40%qQ}QB z_K7-uqIA9!{;FRTdZ= zhbo_O?i_NY;);rOc%Jy2W?(r`Wjk-t=R!GiY|4gY97KYx zAJj1Td7Zc2d;EB-n@ZSK7DhZ8Ci-YhLFRaS>#OwmKC`CoWCoQHZ7dvy(Bs^y*er94 zPH*x=rQtsVIg#F=>lLh1B^eZfyPEsyfdgUkngLjOM{^mS=?oSQ;<%h z`*4P~XS=e@sW_qF&sn|t8z(wETCGj+yImJ7;HGo5w}1ZPh3DeMJFaG#ia&-ALr%d0 zM_=E_ImJStaHN##yGO8k;E4XVsPy2qQTeI`sW^&||HNc%*|6^N1&9KeRY-aF@-b=M zbibRrI&7>T+-eSNm63t9`C<0HWL_-;k!>HS6ZBTL=~?!z+D;QSh?N8|RhMBSJdLRXEBp z8ypBc;QI+LAF%k`P^!hExo4`9+?zN1 z!;?3VoEZAK%75I`LGo9q;{^vfRA~%Z;^H1-IwO9#TrI2%oCjA|?lf5Et=n|To2-s} z0gczghknTU%;wAyM=4#b0A->~c8oH%9z#YcJL{?t@?(N$_t?m?NRxmH7yTS3DeGmC5GS4;l zK>s=veW#pr;__VQFMuQBzjgfQ&HnA>3pg0SY#|nNql1HQNbnaBEJ;a8<5_3>)ce2+ zql@KR(W%O|5GE7nO843?R-cbFR44KRl+3)+RX@X{qO=|_soUA*u&r=1QiO5@=tXld z_8qo-f|7@}(1n+mXQKpV_3#h8y#sl(c|9gtSpj;_H)5Z}u?!b4?q7~=sIZ;c+swJ3 zQs(82yCZxlvqnwg6}xwrABr2A_B?6T0qy0Nw3LV#H`!5e1DqtrpTCm{G-MdYi%0IG#TAN$Q#u*df z1>(AKz0+^^FgZ_={@xBP95M?9|36K_5;cBLj6%#z|8yJsuRkw!;kVmZCpq8W?qq#B z)%gzU3(3f$?W9TRc^i zDY~8Uwuhm+`MPzN)*m0JAv`Z4!mx3~oqBTLy?3;R51$!v0uUAMCF~^*AdbU*F)_X0 zUjG$?6j0H8*OZyNpz@N6_`Fc|oAOd*Fr^z942FLmjxt3h!LZ#c{z_bme1_yQOaA0H zsU|8S?Q1J-0G+M;_(ss$o1KWz?|M^@kY*L2cc8 z@jzmt=_Dz(*xFAwhq5#&3K{dPMas4$KUv|;vJW?KV3d=QClfc7FZX7+;D%{!^n&qvZo;Vy1YEp&ABqTJmV~J(NFK^ie zr`osutSEirMFMMpL;J;K#ZWg4=tuZ}?z6236MLWMy2FD@UP=pGB#Ml^3w(T*uUdt! zQ)y)=DP&RtlZ;vg#D;ZB{{bfcWDXC8eaO zcJJ=w=qUF}vEj>?-4jezLVy1H@sXh^$TU%IOn^9D=GUvMrn6H()i|h0R#=Nyp1gFc zg#5MwLI|(^;13Rm{MGYbOdSd%sMkAx+kGRnYvR41Ufehf8nbloso+oTWo7f`xz{tt zA&&q+fX9I6G0%VRnT{xbJgFv6oS@aqT=r^G!1Ft7w0D@!S~gKv_!}JE zY?uDa37sEm%bDjEM2~tCYSN^vxRTVop?&+dZAqwVsr@%TdyLg`%G5Vd!Eq@e(u^Xe z?vb0oN{Q>5J&j8*<=8QBH>EiIz4AN;CJw?v721D6@|BRt+%f+O!!gDo;fc(-G%7ec z5t?SOs_Y1^P3*?rfAW)lbxE**ZRYt)S0xm zkEc%Ki39*Pvz>x7&-yb3*qgKx@e2?4OS27FyOs*ek=agJ*)ldNN^E?oR(EPWQn68Q z@2xMCNcDZ*vOgITAo`=Zp^(FlLWn7yU`nko(L8eT$=?WFNW_+cL`oi~VY6|$a_9o6v9s_4iiv2o)dxfS5 z-bm6Po5mm7qH8u`LT|c46Ah9tTl^YWfk`~GNhtpxJxal*@=z%ls}R->z4Q7Z4J@*m ztb!=1g*_-QZ~7S69FMlGw&Mv%QeeW=!q!Rlus>jSV7Q?lww{iFcK*nbmwa*A)@I1~ z!B~TCMWHB%NGW&TtZ9m>Nysu&(_q*6&tZ6i&QZ>u<)(YC%Zj3{t*XZ?9*%Q6d3hiJ zW*>P_Kr;7Ttp*biR94S!T)A@O=uw#g1wV)wv`rYy$ENZK&wd%PYyW=q;zH<$FiA?k zIWr0xZ-19dPQaTLQo0ccG${;0d8eI9;;QC|f-=j~lP{?392>LVZBI;04C60o;+&9p z;as14hFlGW*e7f#5_14hRG7`$)x^ zlX3ZN`nIewv=aY^GxJ`owF7=WfBrr!x%g_a{$E@Gs!WOlnx-XDt4%q!xSfP(4hkI} zFXH&;&!79Eqv9*i#B-YahaVf8o79f5*r+2%$$iH+2IdOEg-)cx;djDzrsA&5aZ}Cr z82B6dLxsi!jDZCpnDp`^H4jdkY5bD=Ts8Om!Vjz`X195>=T4lsP3v?K3t-;7WaN9S zQYNGf{#G#N6^UZ4hYT8Y119T~moT}y4Y7`}0-eaUbss2@!4?e}*|TRAypPCf``s~M zVb1u0<4M_WcRv0tK;Fy*q894Xgrq)`Uj6wsW{>oX;j2x>N{Zbt+EwtDOD0T;44|3>1v>}E}cGt*ILCZUfo{2dd5rr48_ft zW!7dogJenu`#=~&(}F#v${&&<2QC-NSS%~R&N+XmoE|RvGOsN@bzE_w`@w|LAqnCx z9%p7|hKQfJ&gxMWOeLrzGM79ZVW~HI!QDP8ZFNSoCz#8A$ApOaYDH6T@$S}-F0CCo zb*v6}G*B|!1oMQGaIPp9A=G~!=c;o5S8q`erfZ;r_;ZcQqnnaxozFu{(r=502$olX zmE&w$DJ$MT4`Lx*T;S<9p18+v6fe{XKsgneOM7W*y3?@x*-j3X+^J%ik3$&lm~@%6 zhFp0V(<(Q8+aNE6P>}T9r`T$+N*I4oE_YN@8!*gqc4+_G4;~C1KKvUmmTR0%JaC|I zdFE0m)4|hK<&GXan9i9;lp*j5_8)B1y=IB>uV1X>uH>lXMED$Ss_|>Uk5 zR2440sPp3(C+vXkfvVZZ2cs!%5o+B-C2zn^T9TH{ZCdT{`Nd`!H`vn3D!=3QZbNTj zcBrnXJsMYZtOgXHt`pKJa)H5;^d*n=7Ls-LyK>92?6b3-zNc&OcYyt^jg!_B!nnru z4TN7de=VHgGiL@xTY08A@CVjEx^8D8UqC^J)jd`~WY9x{8Q_$uF+cib5Cd<}6}oT; zlpqKl?pU4gFGhNd>lXt=Y6A#_Trc@H>B_19+(4z3m|k?(+>1RGL)wM0ckx$idne=V z&$ojZYXts$>vHf(Qg$L0MZ)LuL2(N+v=-7zVYW%4qg1XhLNAqT1j&p>vYO`3*uaO z0PjByElp2?lE-QiJk?j3ih@uZ;+S_oFV9rMv!_H-jk>Oe@%TD$)Pwiw!-2MiSZ0aA zzX@p`yA)cODKg*cR{fR8=>2bch--h!SnPJaZHa9(`%leClJ|owq_12Jk|Gj$pr4GA zwV@(^Ut237+RI@`b7~()0Zw%)A46S%yF$;TT6P`(EaV3F!un<<)xBOmN(G)*I|(WjD7rmu$&p%mu$rC_%+cm)IqG{C3@uBi9h7l$pLhFtf*A*^Szeo;J8awqjyB5etB&vD!3OEXoMT2aR5d18me_SCi6Fy&t!ww+bO7m!7uOxmEV_XZS8kcLc~D~sFOahorU(_&q-6F z`PIfx9NTm{u`x087B9BZQUdKkBuPV!+{)@u>Gwf76d_1sm>^O+h=RCbp^xGADP*1N z>Ut?2ffmd?LF^e6&kbY7EPq>Di>JUnB*_PkK!+hiBsn{KZ=NfNLj%`ZOpHReA&VI9 z3dvR)*3|K;A^-UH%p^9t3=>iv_83SEXw#+*-I=}86m--a#8v5$ksV`hMBh2fLt4Z(_)E8SJTQ2&`@n(x)JEdE-hEf3EASV-%_jJB73I2!X06~Tmn zLZoGgQ&_?LcO<4Wd?NZHNf%SixRCWlZRS0%^W*h%+KGZtr&xIZ^GcH}%^TMk{`t!n zNzv=&--E3Ea*~WV(&v-4^F~f;fkJ*%LW06G3sG=S&pUe#vv2-d=gs%b~A)Pj@SKifzS>+%D13T-Pfn6kG`przo3CY-oWe#d8 zcPeaA&&cAytg)|czZ^WMDH(j5UD~MkGp8|dLM~@y3;Lm9lrg}}DrELYVBLv|RY(n7 z4*RaPM`EFlT7ZphLy-Vff1?P9c9>+J>8p zd!D)j8OWj`S#avzrWJKqw3nG0?Z_H9*3XX{4r>fphj}H^H^RM8CVL7tUqA%&=FBNWnJr>=e1?AG^#Dpmu?f`%5-bY~ z3%CR|+Bg!EGsicUE!*amfdd%F9Z)D&7~x!j`hk$PJ&TrS!RCF4;u^k9-vcM|mf{;h zT~70b+*o~GqnnA)z%$ARV$R#ai4R=MJqSL+ks9UY*&O)Y@6EZiG~J&rkVIZgZ8FI- zU{rMc@ZlO3HnxTo7O|*gsV4o(o~;M>A8R;eCgV-`JlIA=GH8v36u?$}qyv-IP!x3I z#jUu(5SFu2DEPT=>? zvT>{{h=6d07*XO9g>t5HC-);hUr1v3vUCebqL+{XPcj=LuRCw_*1=sd`C~$k+XSVr8Y64#mGBOfE6j3Sh8iD1I6ZyOi{Pjtlwu;^Z z#xBgbfFBqHgxn%Du*;I@#2^-e$G}Gg1t=Y-&6-7*V47M_m%_H~IJ(d4SIo_;-u(Z` z3fucXWQFNjAzcU$FJ-h+^@h0wWg*X^Qm=wsk^e90U@Y5)PoD~={30+C+$CCk)bJ4l z5h-jdPtQCPTI>OvuuYpySVfe#9$7dHQcY$Gyox@3EC5nx&tA(^9;M3_8@5U#3F{1# zs)5Q6m5M}kic0sFF+$*)GwT)zfs}53#J(l&?n)5vN=t*|1>LsbzI%+j_5H_>&mKPP zQ$c2$hW{H*AMvsW>M&w~Itpi?PCEl$Evv8qB$0~OWo^SfN~yXX6yicJB)%8yJTqdD z=mCD56AqQ4d%5xI(;9z&GJQrZdud%x_!!ED!YUsGKd_^e)YTPi0EOt6F2Zr(z+>eD zivfMMu|Wq--X!w`IB9glhwb|CC-Ykp@TP{)wY)3YMhoBObTk_8PLsA~S_LC8-oHXF- z3L>Q$9GAma*Vmvn!ua1%Wjo6gZ>Nd-;}^~TNIL*%AU-8)ZuVfCn*)|PbR;^{O#~aL z_3XolEa&1Uf-Q+ukB9TZql4TXE7_`atdK@HPdT6~%2-=E`j%h096x|dFIA*&YumlHih-A1XEJbpX^ljDd&nogQG z4(9czVhXBo@*;i#FkD+Zi7{T=a|=}OYwYo)Lmn;{kRQm6S9uT_j(Ri4?aNS2z@99UY?D zC?d8F)m1ub4@T%Tdc~VgV2L)_$;oYICn6&=m*Hk@)i#{+;!W1$)D z8X4N9h)!kPrw(%>_5*kzp3c1#=f?#~ZT#+B+l$UBkMR}y4#E#sg~cOu^L*RjfyrUs zIUH@Vl7daeP>uj0XJh~inT$OwX4JxFU|CG%G%6PGGJ9E_Up5sHhh}+ARh1!D#sTDj zRW+tF{AT7ke{E~*=BRQ8K)5ncA>a~Z_vzDpW{I1JZfO(tgUOj$f>Gg~!UH7e;$9pB zaEFOa)i|m$K^Tq41y6`kJnN8=c-_omClf;)UV)lnWK7yStTZnVGI?Hk`6xKB8ImGM zWo}zkLbt5bn=V9|a0c@uFMa6jSs@|~*j6PpPa(Lm7!)1gL_#Dm!z+%U`GSnF_QmyR z>KJnD9y&n~WW?r8aRjpb{JEqkw?rnO*DG9_rv|gkL_u5@PAtr*!;h)^ySIOZy(rs? zHW6+V%L8>JcMe|xbD!ZW-b~Gt=MTd%IhL4ch!8{YT|jSnWvK2RBuhd~f^$6GJ~MX*3JH2uyk0qy>O9=7pLdW?D<@Ta7q+Bp314KE zeVH&D5*ijQf!A_2Jw0yZs#CYWfWeD$DLcV2xTuFLdRY1T^&aNEZrW|k)jts0@kKRG zMx>Z+=Gq^kw2o5u5Vt)z7hdWYcc4UmDG2mA?xDmTY&rOmx+0*!0bo(kKFktt*DhyH z42OKr`0bYR)Bve{+x^P6(>DA~BJaKq;cZ0XMGflC!<)LT<@s*ArV+9=RPj$nq#Z zO1;3KYPGeHWh3BFdHtDtvAX=?LuLn~5V2Hxt~HCn-YUvTkZW#ESNuXZ$Yim;H_o0G zdv=zo@slN>kH0=8G&@~f?uFugLtis1Ua;9sYqP>*i1Tsv73q&FJpnKvw(sMNij2LNmP|pVb{P0&1qZDEHMTs$LFm3DLi2kbP+j;gXdI z$7a{QeeH7M@P~4A?E1kU)%`VB1KMjKD)t)b3h@2;x#r=^L<6)m)>@#4O`MqJS9fs# zel-ysv{?~yCQG55QhJL->yyWC#|7||xn>>c4XhYZ5KssNkv*+$VQB#4{nw}+k#M`6 zo!i^CzO~124p)2KHbW*&7Fu%Sp7oJ_Js4XT6n7m7M&_tout4wI2kuS)fshiz4GS}d z9hBVaok3eP8oD86MVqBNZnQS+?*ki@yd09Xn=MVSC*#hb1(unCm)Oxm%8%O?q;i_D z?~4!Bb1<(@yxhVWdrG*@sei{Bo9&&T!-*+SAnj==D)V_DKf13W#SoXTo7Htt0(4&w zT#Ai1eLD`cKALrxPx}ec2sp@ldP>dsC(an(0BxPc%FGHCqV_j;1rGuR*1xWuML98i70fc+O8tYq?%%AtoiCc04C{3^439 z3_ly@;j9u?3->VScz(V+%d~MPV$E)lnb5n98%HGvb3+e(LLUvn)!G~fbWukR3VWJe2Sg2uCqqFks9agc4$jWT97&L;i+kcjy(cb?J`;|o-|E$<*sJT7C^oG* ztVoGV6>k>4o6{Ni0QbH=fDzSUV<5t4U0CVkp;je-+ykFS|IhQ=Z`$Anu9+!FUlzA+ zzd7icKT;HOsR9|m0Z+g$dMH_R`^l5G-QIKYNeE&hp6UA1%?>V-TfH*GzL1ZWMv5Xf zow;shV%UGz&ADXHFtWm&LrY6*m&IZ3_~#?pFOCilpr{1RVCW`lzWsrV^xZqBnKK`u zw^3G3!m;jZ3^EU|`SUFt425)6OeE<{;HODFS-f)PkZ=p!pIdJ#C@v`>6FC3!9_Ne8 zi%Ea07{MJu8!wnQ&Md2B#x!`~z+)#)6xwq69e0%+65mdwxcxY)m%mtIjkK4y1sChG z+RrZQz9nH_kGC74F95c8?xv3U?vr!ygQ|2jjZQn&fm&1%41jHH7PG$n7L5qIx^44j z0|NulX_WixH*Bjss=(lm;mo2%*$iqD(+vHrWM_MW3{lo``iF*&cXd7B+PBLbdlizj zBRQ7>0Bzz>&riFg&M`_5%gO)@ks^*AOCpOn?R*o-DU9pMUBRQGT zTNPQjx5>^m3j7rSvj&Pjvjbkc%m)YrPShrl)`(1KZ!v55xMB0=&b3dui@?9&9t|&p zCA`Hr1}M#|)566d3kJ5SDIV>C!`}D56R)9<2bUQmry7TA>TiA;m<5ai% z?nn;Xz8y~W45XB0WwS__arH}4DbvVR-?lVl{SWimrxndMY%^$)j&wir`uX#EqVNE- zLjR9UF_v(@1p^HXhCv<*Xt&KyR@Ziow^?6hxG=EOvv8Ed5$~jGb9a|#4;UT zRBMUKrbG2}k)RRdmXkAEEtYvmutq+JN6qBUB8~q27gOf2QTd@0qSzT&ypofz(IaUX z@Z2h-Cmrk1Fvec3E=6U|s7bzx+^JyP6vZ+5i&b5Nl>1^mmwj1<*LUyFaJ$ zyVU$^jn{Rhu@)BBxJXW;$41eD;S@tQz@Te~G>j8mFd4&Ch`^}THTs)X7JJ@e<*SYI z^WimcDe)&)uURwEZw5?^F-_vJ{9bOP7qcy)fAuulQpsNuqJ-|XZ3bkon=Nd722GoA zOo`NBn$Mj(gc}G+HOa!Hd`*gJM{*r30hkm+jErEv^)`OmFQJ5O5i+P3?XcXfdj9_l zDY3y7Ie5UkM7f+YJ`2Z>mu@MVmMaxf!vv2>@Ym){k`(PqNYHolufOz8sAk2I9BDyCF=r=*mhejpM;RKDuwQK|`@ambsw33uOFp}#vYJ#q!;p6L_2gHoT zstC$@z&5&14qrRLQ}tV868+Lya(D!O!bdvN20FNWYPnpx0Tei~2qZ_$zL zAGvC0K^5cxs+X<_d-mO&dpsp2Pjx?nRaj@>Zn8FTQfNHzvAAjgQ~es5$is)L3P6d9 z{1s@+WZ%)W0Gf%neWE(}7l9)8Q(j+HW#z%kU*9$kn|I*U&_RPbic&c`Y2iTZa8$80 zp8cg#+|ck8RvpK=a5AkgAc^MZ`1m7AoMPopU}HD+)_;N;TCqhHX2>%Odt0z zQ1e74khTxpcoW7o5!Ad-T#ox$afJ3jeHo$DX*Kc?O>zCo9QU))eHjE`p^(~9p+mJl zoe1Kq8kfOrB8{f}SpGrERKY8R(Zuo*`z)HgE+E0N4SVQY z=#$(ujzA*^{K=biK70|2X%7*T)ztZ+_%~M z%83*5QnPygN|D#dzd+AzU?gZ!aTLFlDkY+5``=K#q{9q@zseBEXS@(rF9rm?R^x65 zk?(JxV$T|0|%IU6{x zaE*c9$HQcNn?Lu=m{}(1Ix;ebex?zNrkiZsd;o`HoVD)WovIcFe*2zIi3IRT5msSc z2g_YqZy6RF`-lbwrliB<$>FiFwI4qs!q9D;ynsJ!*RJ*k<@X=xLP%Tq;}4-~7YR{t zjrvmD>wogJq)efoGViAqHy1?1R67H|)qrfOb?cVJvt>O{iZHh84L0qQ+F&B}uC`V{ zvAn%Enb!MU5M+s|@TVvqydR|}f#NYAfn5YMAa~8yft~Dt@*+Ce8@|zO zCJfd6CZUqP7o7aIbGVCw_>^Qy=FM-VdfvqFv1F_q7AF)!_@NQ{fFJc8wn2Hhyn>w> z2-)vJ+~L#mFkuguR2~Pc!{KvspH3v70=!5(TSrVrGMJ`AJgOV zQjkHFMhi(|)v_Kmhzt9UmH5%rN_L%XZikLl5J7)2x18wGvGw!Qmd{RoJzWAxs=48G z;FcxoA#at({!chqwIvM{@Ho|D;<)i%>tH*Bzz2cDFg4gWCeV5M>3u({k(aSd5D-N# z)ZIlLc6wF@a`78k2l&Wfw3{|=EY8vhY8@39csS@ep-NR%RdD#uq@{gJhbmQb_1V1! zq94GRiixNzG0cRdF)-G+3SKYt|HTQHx9sju2hDx%lIFfKyRD>PC*(`$&DwRXb`KYr zViV*xhfRJr=n5R&4fL=Kf2W(+v;;SHRINeT%pGC2u4#6{Z`DR){NGZLzYG2UM9ca$ aCMw)FdC2=DH|%^xmg6RwpE7e@|Nj6g)8xqj literal 0 HcmV?d00001 diff --git a/images/site/infocusp_logo_blue.png b/images/site/infocusp_logo_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..121623fa51c57bde1f2a97dedc4a93acfbb50d7c GIT binary patch literal 2170 zcmb7FcT|&E7Jq5f1PBHc#Hc=j?su`@MUA-!1RFcb;rqHVHJm zJSZLj0mT$y3V>`1F-~!H{o0p7_n>&YLjwSaegFl%9ROBh3Y$T8*|?7xv{7*qAYl6_ zVG*39Pv}o)$XXry#1)bLl<~in%8^l=2uOJbhY=eFhdB`-CPaV2#&R6~2|LK~p_HT) z$nlk9wjaY4;z)>%qrbr6U*L!&ww#{>IS#A@t~{1p( z!!?v|Dgdy12>>epvo5>@fc8uP)=56=jLHB|KMBC)koq@M@~68rmB8H3Tg!Ev)+5b=rh=nglI^ z+zA2&|3PDvF&Je6P8CP^zeRQf;FW+U@I)aD01}Tt;SsW%U_IP!l>8k2r&s_mO3I38 z1r#*8Yrqu>=8nPP|7}MgVF3zw{T+%*nrrqDoL!EOuG6t|^AAYo@C(kiij)lujVvr} z8DZfO+!N)OdY;K+AONiXiwMxGf+7m7goH*bJV2n}?kJ*FzX$;^FvOlP1x;smdGj-E z1B)IjYsTK=C-`?pA1=!z01MqA@hCiS0yBY`Qvd6XaYe`4NCRzKm$p6%O=kAe-D*0w zn&R;ZZu&ic{Z0mcGBj$=k8mK3rW3h&y{&RZDt)4in3!#UlZIx$f~W&es-nk)DH*v{(( zPj@~|5r|kLH+b6>x{^G}IObe%v938W#^YUDk;RiU_s{A!(XvVO=A*j8OHTH5#xj5Q zi8N*`Avl|>&`m#B5^(bR>B=ipPZ{(mqd~@=m`HowTgSpzhA%E=y)JyNM=tKWWXmeM@9GCoL_8kJZ08|Qrt@xuA?4mYddtNc3AIV#*JLw zu88;58VAf&d&KeMWPH#$&hobG%jbd~N&RN~=$9+3riUV~4w($3_Wv!5xbIU6~ZzE#wG&HhW!b zTmOvqyCY>{gg+!I>rTwC9aSJWkn#O@n{=t{@6}q_>i_U}o2qfR_p)eD4f!~={ejyl z?Wv(vqNU-cX>U8%skG$A&F^yK-*1qCHoU`1(wwcD`S~~_3XdA@MHWA^MK>DuWISPf-Ut}?Mf)3OM`8r_05Uo23}?NYGp}seTnYG zh6-2rzC`J5+Nq{n3n{CiiC*|wTX79GSMfTw)sd>3=Z)M;98AofOg-h|XJcqpI(V`s z-*@_C#%`b{OoOjRU|nHAsdJs1P_)?*S&0*O6aBa;9i#m(81xUrz1FCrT`^(FqZ9UA z@B104BB?nxyKvrHz>>Cx_RVe?a2k)a5K|h ziHUW@@{rbP&6iSn;($E$%#fW#^1JFWY4+q!ejRQ49xG_1EAXwyC8x99AJ|&pU|!Vg z#kIV+mTjBX--vrQ-{dB|N%O&7lkf}jD<7zsUpLoDI2!r7V<;@=F*V-QVY^@k|0efv zr~T>KhTdW4zWg$v_@d=opkngXQfnQ&q>QqFsh#kW&RQ+fw&?WyCU{llo?%GB=C}cz zXQJ@+P}enaK7GoPIkB5{w=6-KXax}M``|lUA$Jl!+*;TEV8o~Ww`RTbjEgJG*lN** x$d`;O1qA~o7jNzc+Zqcd=7J*2YbW>D*ypVB`-;3+Hoco$tFBzg$lWHp{|7en5W@ff literal 0 HcmV?d00001 diff --git a/images/site/infocusp_logo_blue.svg b/images/site/infocusp_logo_blue.svg deleted file mode 100644 index 39cc1bc..0000000 --- a/images/site/infocusp_logo_blue.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - --> - - diff --git a/mkdocs.yaml b/mkdocs.yaml index 886ddaf..290715d 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -5,7 +5,7 @@ docs_dir: . site_dir: ../site theme: name: material - # logo: assets/icons8-code-64.png + logo: images/site/infocusp_logo_blue.png palette: primary: white features: @@ -22,6 +22,7 @@ theme: markdown_extensions: - toc: permalink: true + toc_depth: 3 - pymdownx.highlight: anchor_linenums: true line_spans: __span @@ -41,6 +42,8 @@ extra_css: extra: generator: false social: + - icon: fontawesome/solid/globe + link: https://infocusp.com - icon: fontawesome/brands/linkedin link: https://in.linkedin.com/company/infocusp - icon: fontawesome/brands/github @@ -51,4 +54,6 @@ extra: link: https://twitter.com/_infocusp plugins: - search - - same-dir \ No newline at end of file + - same-dir + - mkdocs-jupyter: + ignore_h1_titles: True \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8be8bd5..df62450 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ mkdocs>=1.2.2 mkdocs-material>=7.1.11 mkdocs-static-i18n>=0.18 -mkdocs-same-dir>=0.1.3 \ No newline at end of file +mkdocs-same-dir>=0.1.3 +mkdocs-jupyter>=0.16.1 \ No newline at end of file diff --git a/session_1/README.md b/session_1/README.md index eeb5e1c..484b5ba 100644 --- a/session_1/README.md +++ b/session_1/README.md @@ -6,6 +6,7 @@ Covers important building blocks of what we call an LLM today, where they came from, etc. and then we'll dive into the deep universe that has sprung to life around these LLMs. This session is aimed to help: + * People who are new to LLMs * People who have just started working on them * People who are working on different use cases surrounding LLMs and need a roadmap. diff --git a/session_1/part_3_landscape_of_llms/README.md b/session_1/part_3_landscape_of_llms/README.md index 23b2e28..da6b995 100644 --- a/session_1/part_3_landscape_of_llms/README.md +++ b/session_1/part_3_landscape_of_llms/README.md @@ -465,9 +465,9 @@ -## Challanges with LLMs +## Challenges with LLMs -![Challanges with LLMs](./../../images/session_1/part_3_landscape_of_llms/Large%20Language%20Models-challanges.png) +![Challenges with LLMs](./../../images/session_1/part_3_landscape_of_llms/Large%20Language%20Models-challenges.png)

diff --git a/session_4/README.md b/session_4/README.md new file mode 100644 index 0000000..6421874 --- /dev/null +++ b/session_4/README.md @@ -0,0 +1,34 @@ +# Session 4 - Training and Evaluating LLMs On Custom Datasets + +

Session 4

+ +This session aims to equip you with the knowledge to train Large Language Models (LLMs) by exploring techniques like unsupervised pretraining and supervised fine-tuning with various preference optimization methods. It will also cover efficient fine-tuning techniques, retrieval-based approaches, and language agent fine-tuning. Additionally, the session will discuss LLM training frameworks and delve into evaluation methods for LLMs, including evaluation-driven development and using LLMs for evaluation itself. + +This session is aimed to help: + +* People who are already familiar basics of LLMs and Transformers +* People who already knows how to use pre-trained LLMs prompt engineering and RAG +* People who want train or finetune their own LLMs on custom data. +* People who want to lear how to evaluate LLMs + +## Outline + +### Part 1: Training Foundational LLMs + +Coming soon... + +### Part 2: [Finetuning LMs To Human Preferences](part_2_finetuning_lms_to_human_preferences/RLHF.ipynb) + +#### Details + +* Date: 14 March, 2024 +* Speaker: [Abhor Gupta](https://in.linkedin.com/in/abhor-gupta-565386145) +* Location: [Infocusp Innovations LLP](https://www.infocusp.com/) + +#### Material + +* Recording: TODO + +### Part 3: LLM Training Frameworks + +Coming soon... diff --git a/session_4/part_2_finetuning_lms_to_human_preferences/RLHF.ipynb b/session_4/part_2_finetuning_lms_to_human_preferences/RLHF.ipynb new file mode 100644 index 0000000..c4870e0 --- /dev/null +++ b/session_4/part_2_finetuning_lms_to_human_preferences/RLHF.ipynb @@ -0,0 +1,1535 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "321adccc", + "metadata": {}, + "source": [ + "# RLHF - An Independent Illustration" + ] + }, + { + "cell_type": "markdown", + "id": "b5085966", + "metadata": {}, + "source": [ + "Reinforcement learning from human feedback (RLHF) is a transformative technique that enables us to fine-tune large language models (LLMs) or transformer-based models for improved alignment with our intended goals. This approach goes beyond the standard techniques that train LLMs on massive volumes of text data. RLHF uses human feedback to teach LLMs how to better adhere to our preferences and values." + ] + }, + { + "cell_type": "markdown", + "id": "119f232e", + "metadata": {}, + "source": [ + "There are several very well written blogs on the topic - [here](https://medium.com/towards-generative-ai/reward-model-training-2209d1befb5f), [here](https://medium.com/@madhur.prashant7/rlhf-reward-model-ppo-on-llms-dfc92ec3885f) and [here](https://huggingface.co/blog/rlhf). I am especially fond of the one written by Chip Huyen [here](https://huyenchip.com/2023/05/02/rlhf.html). **The intention behind writing this is to understand RLHF using a simple and _mostly_ self-contained implementation to solve a demonstrative problem.** Let it be sufficiently trivial that we may open up our model and visually observe some effects of RLHF using different techniques. " + ] + }, + { + "cell_type": "markdown", + "id": "01c86337", + "metadata": {}, + "source": [ + "## Overview" + ] + }, + { + "cell_type": "markdown", + "id": "c9b868df", + "metadata": {}, + "source": [ + "Let us first go over some basics." + ] + }, + { + "cell_type": "markdown", + "id": "514c9112", + "metadata": {}, + "source": [ + "### Training LLMs" + ] + }, + { + "cell_type": "markdown", + "id": "ab3275a8", + "metadata": {}, + "source": [ + "Can't help but love this _beautiful_ depiction of RLHF among the broader spectrum of an LLM's training, by twitter.com/anthrupad. \n", + "\n", + "![](https://huyenchip.com/assets/pics/rlhf/2-shoggoth.jpg)" + ] + }, + { + "cell_type": "markdown", + "id": "5fffa9f4", + "metadata": {}, + "source": [ + "The image above shows the different methods of training an LLM, their \"size\" in terms of the space of outputs they represent and their \"quality\" in terms of their social acceptance to humans:" + ] + }, + { + "cell_type": "markdown", + "id": "e728ca93", + "metadata": {}, + "source": [ + "1. **Unsupervised Learning**: _Train an LLM on a massive corpus of raw text; this teaches the LLM a language - the fundamentals of its structure, grammer and relationship between words._ In terms of its objective, the LLM is trained to predict the next word in a context. \n", + "But! Though an LLM may know a language, it doesn't necessarily know how to converse. In its space of outputs, it is aware of what it _can_ do, but not necessarily what it _should_ do. It is like the Shoggoth, massive but ugly. \n", + "2. **Supervised Fine-tuning**: _Tailor the LLM to specific tasks like translation, question-answering, or summarization._ Here, the LLM is trained on a set of input-output pairs demonstrating the task. \n", + "Following the example from the point above, this is akin to teaching the LLM how to converse. Its output space here is refined to answer in specific ways, perhaps with domain specific know-how, or in accordance to a particular task. This is like the deformed human face, you'll accept it but it's not necessarily very pleasing. \n", + "3. **RLHF**: _Refine the LLM's output to better align with human values, preferences, and safety guidelines._ The training here involves giving feedback signals on the LLM's output to guide it to some desired behavior. \n", + "Following the same context from (1) and (2), after it has learnt language and knows how to converse, it learns to adhere to the social norms. Within its output space, this is the refinement that narrows down the conversation ability of the LLM to answer in a way that pleases its general reader - ethical speech, truthful statements, intelligent use of vocabulary etc. It is the smiley face that you want to talk to. :)" + ] + }, + { + "cell_type": "markdown", + "id": "f50c1d47", + "metadata": {}, + "source": [ + "For the scope of this notebook, we will only be exploring RLHF. Supervised training will be a part - though it is more a requirement for the sake of thoroughness, than an intented guide on the topic. Therefore, I'll be using a very simple supervised pretraining that is closer to the description of supervised fine-tuning above, than unsupervised learning." + ] + }, + { + "cell_type": "markdown", + "id": "4d8b0884", + "metadata": {}, + "source": [ + "### RLHF components" + ] + }, + { + "cell_type": "markdown", + "id": "de807a3d", + "metadata": {}, + "source": [ + "A complete RLHF pipeline requires the following components:" + ] + }, + { + "cell_type": "markdown", + "id": "f5a40a2d", + "metadata": {}, + "source": [ + "1. **A pre-trained base model**: We begin with a pre-trained LLM. This is a powerful language model that has already learned the intricacies of language structure from vast amounts of text data. This may be followed by supervised fine-tuning to attune the LLM to a specific task like question-answering or summarization. \n", + "2. **Training a reward model from human feedback**: We then create a \"reward model\" specifically designed to capture human preferences. This involves gathering human feedback on various LLM outputs, where people rate the responses based on their desired qualities like helpfulness, safety, and adherence to instructions. By analyzing this feedback, the reward model learns to assign scores to future LLM responses, essentially mimicking human judgment.\n", + "3. **Fine tuning using Reinforcement Learning**: Finally, we put the LLM and the reward model to work together. When presented with a prompt, the LLM generates multiple potential responses. Each response is then analyzed by the reward model, which assigns a score based on its learned understanding of human preferences. Finally, a reinforcement learning algorithm like PPO uses these scores to fine-tune the LLM's internal parameters. Responses that received higher scores become more likely to be generated in the future, while those with lower scores are gradually downplayed. This iterative process progressively aligns the LLM's outputs with human expectations and values." + ] + }, + { + "cell_type": "markdown", + "id": "549a5801", + "metadata": {}, + "source": [ + "This pipeline effectively utilizes human feedback to bridge the gap between raw LLM capabilities and human-desired outcomes. It allows us to shape these powerful language models into not just masters of language, but also responsible and valuable tools aligned with our needs." + ] + }, + { + "cell_type": "markdown", + "id": "9709c5d5", + "metadata": {}, + "source": [ + "### Applications of RLHF" + ] + }, + { + "cell_type": "markdown", + "id": "d0881a0b", + "metadata": {}, + "source": [ + "The most prevelant example of RLHF being applied in AI is for text generation to align chatbots with human preferences ([InstructGPT](https://openai.com/research/instruction-following), [ChatGPT](https://openai.com/blog/chatgpt), [Gemini](https://blog.google/technology/ai/google-gemini-ai/) are famous examples). Similarly, RLHF has seen application in image generation as well ([ImageReward](https://arxiv.org/abs/2304.05977), [DPOK](https://arxiv.org/abs/2305.16381)). Though limited, some research groups have also explored its application in games ([DeepMind](https://deepmind.google/discover/blog/learning-through-human-feedback/) and [OpenAI](https://openai.com/research/learning-from-human-preferences)). \n", + "\n", + "Even though currently the applications of RLHF in AI are limited, the scope for RLHF is much wider. \n", + "\n", + "Do you use e-commerce websites like Amazon? Do you use Uber for requesting cabs? Do you use Google Maps for deciding which restaurant, bar or hospital to visit? You must have seen ratings for products, or people, or services, or food. You likely would have given some yourself. These are all examples of human feedback. And when these affect the product or service to comform to user satisfaction, it is also a form of RLHF. \n", + "\n", + "Take, for instance, cooking robots are a thing now ([Moley](https://www.moley.com/), [Nymble](https://www.eatwithnymble.com/)). For the food that is cooked by the robots based on some recipe, the recipe can be adjusted for duration of cooking, quantity of spices etc for user preference based on their feedback. Self-driving cars are also real now ([Waymo](https://waymo.com/), [Tesla](https://www.tesla.com/support/autopilot)). Based on customer's feedback, the ride be adjusted to be faster/slower, less jerky, smoother maneuverability." + ] + }, + { + "cell_type": "markdown", + "id": "bd574943", + "metadata": {}, + "source": [ + "In the next section, we will establish a small toy problem to solve using a tiny LLM. Then we will dive into each of the RLHF concepts in detail along with some code to establish an implementational understanding as well some nice visualizations to complement our findings." + ] + }, + { + "cell_type": "markdown", + "id": "581953f1", + "metadata": {}, + "source": [ + "## Problem Statement" + ] + }, + { + "cell_type": "markdown", + "id": "0f11a388", + "metadata": {}, + "source": [ + "To keep the scale of things simple, let us work with a \"language\" of numbers. Our vocabulary consist of digits 0-9 as well as a special digit 10 that separates our input and output. \n", + "\n", + "Typically for large LLMs, the language training is followed by a task specialisation training like question-answering before moving on to RLHF. To keep things simple, we avoid differentiating between language training and task specialisation and do a supervised training once to get our base model. " + ] + }, + { + "cell_type": "markdown", + "id": "fee373ac", + "metadata": {}, + "source": [ + "### Language (supervised learning)" + ] + }, + { + "cell_type": "markdown", + "id": "a4b32e14", + "metadata": {}, + "source": [ + "The structure of the language is that for the current output to be generated, one of the last four digits (in the whole sequence of input+output) is chosen and its increment modulo 10 is outputted.\n", + "\n", + "Given $a_1, a_2, ..., a_{n-1}, a_n$, $\\forall n > 4$,\n", + "$$a'_{n+1} \\sim \\{a_{n-3}, a_{n-2}, a_{n-1}, a_{n}\\}$$\n", + "$$a_{n+1} = (a'_{n+1} + 1)\\ \\%\\ 10$$" + ] + }, + { + "cell_type": "markdown", + "id": "75fc02dd", + "metadata": {}, + "source": [ + "For example, \n", + "Input: 4, 5, 9, 1\n", + "\n", + "Generation: \n", + "4, 5, 9, 1, 10, **6** \n", + "4, 5, 9, 1, 10, 6, **2** \n", + "4, 5, 9, 1, 10, 6, 2, **7** \n", + "4, 5, 9, 1, 10, 6, 2, 7, **8**\n", + "\n", + "The underlined digits are the sampling set for the output. The digit marked in red is the digit sampled. Finally, the digit bolded at the end of the sequence is generated as the increment of the sampled digit." + ] + }, + { + "cell_type": "markdown", + "id": "cf00c517", + "metadata": {}, + "source": [ + "### Alignment (RLHF)" + ] + }, + { + "cell_type": "markdown", + "id": "605ee56b", + "metadata": {}, + "source": [ + "Now we need a \"preference\" to incorporate. Mathematically, we wish to adjust the probability of some generation rule learned during the previous step.\n", + "\n", + "For this toy example, let's change only the generation of the first output token to be the increment of the last input token.\n", + "\n", + "That is, given $a_1, a_2, ..., a_{n-1}, a_n$, $\\forall n > 4$, \n", + "$$\n", + " a_{n+1}= \n", + "\\begin{cases}\n", + " a_n + 1,& \\text{if } {a_{n+1}} = y_1\\\\\n", + " (a'_{n+1} + 1)\\ \\%\\ 10, & \\text{otherwise}\n", + "\\end{cases}\n", + "$$\n", + "\n", + "Where $y_1$ is the first output token." + ] + }, + { + "cell_type": "markdown", + "id": "3d1e59b8", + "metadata": {}, + "source": [ + "Considering the same example as above, \n", + "Input: 4, 5, 9, 1\n", + "\n", + "Generation: \n", + "4, 5, 9, 1, 10, **2** (notice the change in underline) \n", + "4, 5, 9, 1, 10, 2, **2** \n", + "4, 5, 9, 1, 10, 2, 2, **3\n", + "** \n", + "4, 5, 9, 1, 10, 2, 2, 3, **4**\n", + "\n", + "For the first generation step, the model will only sample from the last digit and continue the original rule thereafter. Notice that except for the first generation step, the rest of the outputs are sampled from the same positions as the earlier example, yet the entire sequence has changed. Thus, though we wish to preserve the rule for the rest of the outputs, the actual outputs are not independent of the first output. Therefore, this small change in the output of a single token can have a cascading effect and lead to very different generations. \n", + "\n", + "This is in line with the spirit of RLHF, where say, if we want to reduce the toxicity, reducing the probability of toxic words will have a cascading effect and we do not need to affect the probability of several thousands of unrelated words." + ] + }, + { + "cell_type": "markdown", + "id": "f4178080", + "metadata": {}, + "source": [ + "## Code and Commentary" + ] + }, + { + "cell_type": "markdown", + "id": "151d002f", + "metadata": {}, + "source": [ + "Before RLHF: _Enough talking, show me the code!_ \n", + "After RLHF: _You've explained what we're doing here well enough. We would like to move on to the implementational details._ \n", + "\n", + "😉" + ] + }, + { + "cell_type": "markdown", + "id": "beca59c0", + "metadata": {}, + "source": [ + "### Supervised pre-training" + ] + }, + { + "cell_type": "markdown", + "id": "a2ba0080", + "metadata": {}, + "source": [ + "First we learn the language using supervised learning. I'm using Karpathy's [minGPT](https://github.com/karpathy/minGPT/tree/master) for the LLM and supervised training. " + ] + }, + { + "cell_type": "markdown", + "id": "338dbd44", + "metadata": {}, + "source": [ + "![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/rlhf/pretraining.png)\n", + "\n", + "Source: [HuggingFace - RLHF blog](https://huggingface.co/blog/rlhf)" + ] + }, + { + "cell_type": "markdown", + "id": "08b9ae9e", + "metadata": {}, + "source": [ + "_Imports --_" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "991285e6", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "from torch.utils.data import Dataset\n", + "from torch.utils.data.dataloader import DataLoader\n", + "from mingpt.utils import set_seed\n", + "import numpy as np\n", + "set_seed(3407)\n", + "\n", + "device = 'cuda' if torch.cuda.is_available() else 'cpu' " + ] + }, + { + "cell_type": "markdown", + "id": "d6bde156", + "metadata": {}, + "source": [ + "_Hyperparams for size of vocab and length of input --_" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "125ad91b", + "metadata": {}, + "outputs": [], + "source": [ + "VOCAB_SIZE = 10\n", + "INPUT_SIZE = 4" + ] + }, + { + "cell_type": "markdown", + "id": "af08cdc7", + "metadata": {}, + "source": [ + "_Class for generating training pairs for supervised language learning --_" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "2bab82cc", + "metadata": {}, + "outputs": [], + "source": [ + "class SupervisedDataset(Dataset):\n", + " \"\"\" \n", + " Problem: Look at last 4 digits and sample one of them to output its increment. \n", + " \n", + " Input: 3 8 1 4 \n", + " Possible ouputs: 2 2 3 5 || 5 9 6 0 || 2 9 5 3 etc\n", + " \n", + " Which will feed into the transformer concatenated as:\n", + " input: 3 8 1 4 S 2 2 3\n", + " output: I I I I 2 2 3 5\n", + " where I is \"ignore\", and S is the separation token\n", + " \"\"\"\n", + "\n", + " def __init__(self):\n", + " self.EOS = VOCAB_SIZE\n", + " \n", + " def __len__(self):\n", + " return 10000 # ...\n", + " \n", + " def get_vocab_size(self):\n", + " return VOCAB_SIZE+1 # normal vocab + serparation token\n", + "\n", + " def __getitem__(self, idx):\n", + " inputs = torch.randint(VOCAB_SIZE, size=(INPUT_SIZE,), dtype=torch.long)\n", + " ouptputs = []\n", + " \n", + " # Create input output pairs\n", + " inp = np.random.randint(VOCAB_SIZE, size=(INPUT_SIZE,)).tolist()\n", + " sol = []\n", + " for i in range(INPUT_SIZE):\n", + " sol.append((np.random.choice(inp[i:] + sol) + 1)%10)\n", + " \n", + " # concatenate the problem specification and the solution\n", + " cat = torch.Tensor(inp + [self.EOS] + sol).long()\n", + "\n", + " # the inputs to the transformer will be the offset sequence\n", + " x = cat[:-1].clone()\n", + " y = cat[1:].clone()\n", + "\n", + " # we only want to predict at output locations, mask out the loss at the input locations\n", + " y[:INPUT_SIZE] = -1\n", + " return x, y" + ] + }, + { + "cell_type": "markdown", + "id": "a7f95daa", + "metadata": {}, + "source": [ + "_Looking at one sample --_" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ca079295", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([ 4, 3, 7, 6, 10, 8, 4, 8]),\n", + " tensor([-1, -1, -1, -1, 8, 4, 8, 5]))" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Supervised dataset\n", + "st_dataset = SupervisedDataset()\n", + "st_dataset[0]" + ] + }, + { + "cell_type": "markdown", + "id": "0b27620d", + "metadata": {}, + "source": [ + "_Create a GPT instance --_" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6e0d707", + "metadata": {}, + "outputs": [], + "source": [ + "from mingpt.model import GPT\n", + "\n", + "def get_model(block_size, vocab_size, output_size=None):\n", + " '''\n", + " block_size = length of input\n", + " vocab_size = digits allowed\n", + " output_size = length of output\n", + " '''\n", + " if output_size is None:\n", + " output_size = vocab_size\n", + " model_config = GPT.get_default_config()\n", + " model_config.model_type = 'gpt-nano'\n", + " model_config.vocab_size = vocab_size\n", + " model_config.block_size = block_size\n", + " model_config.output_size = output_size\n", + " model = GPT(model_config)\n", + " return model\n", + "\n", + "st_model = get_model(INPUT_SIZE*2, st_dataset.get_vocab_size())" + ] + }, + { + "cell_type": "markdown", + "id": "aa9a1014", + "metadata": {}, + "source": [ + "Set up training --" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8e8906b", + "metadata": {}, + "outputs": [], + "source": [ + "# create a Trainer object\n", + "from mingpt.trainer import Trainer\n", + "\n", + "train_config = Trainer.get_default_config()\n", + "train_config.learning_rate = 5e-4 # the model we're using is so small that we can go a bit faster\n", + "train_config.max_iters = 5000\n", + "train_config.num_workers = 0\n", + "trainer = Trainer(train_config, st_model, st_dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "33ace95c", + "metadata": {}, + "source": [ + "Training --" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11318c89", + "metadata": {}, + "outputs": [], + "source": [ + "def batch_end_callback(trainer):\n", + " if trainer.iter_num % 100 == 0:\n", + " print(f\"iter_dt {trainer.iter_dt * 1000:.2f}ms; iter {trainer.iter_num}: train loss {trainer.loss.item():.5f}\")\n", + "trainer.set_callback('on_batch_end', batch_end_callback)\n", + "\n", + "trainer.run()" + ] + }, + { + "cell_type": "markdown", + "id": "d5effd22", + "metadata": {}, + "source": [ + "Loss stabilizes around 1.25. It cannot go lower because we don't have fixed outputs. We are trying to have a probability distribution such that multiple outputs have equal probability of being sampled." + ] + }, + { + "cell_type": "markdown", + "id": "10fb240f", + "metadata": {}, + "source": [ + "Now let us give the model a random input and see what the model has learned to generate as the next token --" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fb947447", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input: tensor([[ 0, 2, 8, 6, 10]])\n", + "Possible outputs: tensor([1, 3, 7, 9])\n" + ] + } + ], + "source": [ + "x, _ = st_dataset[0]\n", + "x = x[:INPUT_SIZE+1].reshape(1, -1)\n", + "print(\"Input:\", x)\n", + "print(\"Possible outputs:\", torch.arange(11)[torch.nn.Softmax(dim=-1)(st_model(x)[0])[0, -1] > 0.1])" + ] + }, + { + "cell_type": "markdown", + "id": "beb3aaa1", + "metadata": {}, + "source": [ + "Works like a charm!" + ] + }, + { + "cell_type": "markdown", + "id": "b76344b3", + "metadata": {}, + "source": [ + "Let's save the model too. We'll need to load it later before we start the RL training --" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "53b8edb4", + "metadata": {}, + "outputs": [], + "source": [ + "# Save model weights\n", + "torch.save(st_model.state_dict(), \"models/minimal_RLHF_basic_supervised.pt\")" + ] + }, + { + "cell_type": "markdown", + "id": "0626b1f5", + "metadata": {}, + "source": [ + "### Training a reward model" + ] + }, + { + "cell_type": "markdown", + "id": "ba50428c", + "metadata": {}, + "source": [ + "Now we will train a reward model. \n", + "\n", + "The data required to train the reward model is collected as preferences in the format: \n", + "\\, \\, \\ \n", + "\n", + "The accepted and rejected responses are simply two difference generations by the supervised training model with human labels marking their preference among the two. " + ] + }, + { + "cell_type": "markdown", + "id": "48414a18", + "metadata": {}, + "source": [ + "![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/rlhf/reward-model.png)\n", + "\n", + "Source: [HuggingFace - RLHF blog](https://huggingface.co/blog/rlhf)" + ] + }, + { + "cell_type": "markdown", + "id": "a6d93d11", + "metadata": {}, + "source": [ + "I don't have the money to hire humans to do this labeling and neither the time myself to do it. :) \n", + "So here's a dataset class that'll generate the required data for us--" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9f9ea8dc", + "metadata": {}, + "outputs": [], + "source": [ + "class PreferenceDataset(Dataset):\n", + " \"\"\"\n", + " Same as MyDataset, except this has output as where x and y are input output from MyDataset. y' is the output that is sampled \n", + " from preferred distribution - and is preferred over y. \n", + " \"\"\"\n", + " def __init__(self, dataset):\n", + " self.dataset = dataset\n", + " \n", + " def __len__(self):\n", + " return len(self.dataset)\n", + " \n", + " def get_vocab_size(self):\n", + " return self.dataset.get_vocab_size()\n", + " \n", + " def __getitem__(self, idx):\n", + " x, y = self.dataset[idx]\n", + " \n", + " _x = x[:INPUT_SIZE+1]\n", + " _y_reject = torch.concat([y[-INPUT_SIZE:], torch.Tensor([11]).long()])\n", + " _y_accept = _y_reject.clone()\n", + " \n", + " # Replace first element with increment of last digit in input\n", + " _y_accept[0] = (_x[INPUT_SIZE-1] + 1) % 10\n", + " if _y_accept[0] == _y_reject[0]:\n", + " _y_reject[0] = (_y_accept[0] - np.random.randint(1, 10)) % 10\n", + " \n", + " return _x, _y_accept, _y_reject\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "8994ee3f", + "metadata": {}, + "source": [ + "Let's look at one datapoint in this dataset --" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b5b1f23a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([ 8, 0, 3, 4, 10]),\n", + " tensor([ 5, 4, 5, 5, 11]),\n", + " tensor([ 1, 4, 5, 5, 11]))" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pf_dataset = PreferenceDataset(st_dataset)\n", + "pf_dataset[0]" + ] + }, + { + "cell_type": "markdown", + "id": "a1bdf280", + "metadata": {}, + "source": [ + "The first tensor is the \\, the second is the \\ and the last is the \\. Notice the \\ and \\ only differ in their first digits. Unlike a usual RLHF pipeline where the pretrained model would be used to generate the outputs to be ranked for preference, here we artifically generate the data to look like this for our convenience." + ] + }, + { + "cell_type": "markdown", + "id": "5338f3c2", + "metadata": {}, + "source": [ + "Finally, it is time to train the reward model. For this we use the following loss function:\n", + "\n", + "$$loss = -log(\\sigma(R_{acc} - R_{rej}))$$\n", + "\n", + "Where $\\sigma$ is the sigmoid function, $R_{acc}$ and $R_{rej}$ are the rewards obtained by passing the \\ and \\ through the reward model. The intuition behind the loss function is to increase the difference between the rewards of the two types of responses. This becomes clear by looking at the training plot below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9997e06a", + "metadata": {}, + "outputs": [], + "source": [ + "import tqdm\n", + "\n", + "# Hyperparams\n", + "epochs = 40\n", + "batch_size = 64\n", + "rm_lr = 1e-4\n", + "acc_list = []\n", + "rej_list = []\n", + "\n", + "# Dataloader\n", + "train_loader = DataLoader(pf_dataset, shuffle=False, batch_size=batch_size)\n", + "\n", + "# Optimizer\n", + "reward_model = get_model(block_size=INPUT_SIZE*2+2, vocab_size=pf_dataset.get_vocab_size()+1, output_size=1)\n", + "rm_opt = torch.optim.Adam(reward_model.parameters(), lr=rm_lr)\n", + "\n", + "# Training\n", + "reward_model.train()\n", + "for ep_i in tqdm.tqdm(range(epochs)):\n", + " for b_i, batch in enumerate(train_loader):\n", + " inp, acc, rej = batch\n", + " \n", + " # Get rewards\n", + " r_acc = reward_model(torch.concat([inp, acc], dim=-1))[0][:, -1, 0]\n", + " r_rej = reward_model(torch.concat([inp, rej], dim=-1))[0][:, -1, 0]\n", + " \n", + " # Loss and backprop\n", + " loss = -torch.log(torch.nn.Sigmoid()(r_acc-r_rej)).mean()\n", + " rm_opt.zero_grad()\n", + " loss.backward()\n", + " rm_opt.step()\n", + " \n", + " # Save for plotting\n", + " acc_list.append(r_acc.mean().detach().item())\n", + " rej_list.append(r_rej.mean().detach().item())\n", + " \n", + "# print(ep_i, np.mean(acc_list[-20:]), np.mean(rej_list[-20:]))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "a37b9c0f", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Reward (moving average)')" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "\n", + "def moving_average(a, n=10):\n", + " ret = np.cumsum(a, dtype=float)\n", + " ret[n:] = ret[n:] - ret[:-n]\n", + " return ret[n - 1:] / n\n", + "\n", + "plt.plot(moving_average(acc_list, 20), label=\"R_acc\")\n", + "plt.plot(moving_average(rej_list, 20), label=\"R_rej\")\n", + "plt.legend()\n", + "plt.title(f\"Reward model learning\")\n", + "plt.xlabel(\"Epochs\")\n", + "plt.ylabel(\"Reward (moving average)\")" + ] + }, + { + "cell_type": "markdown", + "id": "de9a4613", + "metadata": {}, + "source": [ + "Let's take a look at the kind of rewards the model generates for a fixed sequence and different values at the first position of the output." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "b93643d8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 || -2.0374112129211426\n", + "1 || 4.983941078186035\n", + "2 || -0.8424915075302124\n", + "3 || -6.84158182144165\n", + "4 || -6.4326276779174805\n", + "5 || -6.820979118347168\n", + "6 || -6.832927703857422\n", + "7 || -6.83734130859375\n", + "8 || -6.613164901733398\n", + "9 || -4.2613844871521\n", + "10 || -6.424010753631592\n" + ] + } + ], + "source": [ + "i = 0\n", + "for i in range(11):\n", + " print(i, \"||\", reward_model(torch.Tensor([[ 6, 1, 7, 0, 10, i, 5, 5, 6, 11]]).long())[0][0, -1, 0].item())" + ] + }, + { + "cell_type": "markdown", + "id": "7c723d96", + "metadata": {}, + "source": [ + "Given the input sequence [6, 1, 7, 0], the first output token should be last_token+1 = 0 + 1 = 1. All other generations are \"wrong\", so the reward model gives positive reward for token 1 and negative rewards for others." + ] + }, + { + "cell_type": "markdown", + "id": "ff7bfac9", + "metadata": {}, + "source": [ + "### RL fine-tuning" + ] + }, + { + "cell_type": "markdown", + "id": "667455cf", + "metadata": {}, + "source": [ + "Finally, we have arrived at our final training that will use our reward model to update the supervised learning model using reinforecement learning. " + ] + }, + { + "cell_type": "markdown", + "id": "ef6e4095", + "metadata": {}, + "source": [ + "![](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/rlhf/rlhf.png)\n", + "\n", + "Source: [HuggingFace - RLHF blog](https://huggingface.co/blog/rlhf)" + ] + }, + { + "cell_type": "markdown", + "id": "cb10079e", + "metadata": {}, + "source": [ + "Following is a function for calculating logprob given a model and outputs. This'll help us calculate loss for RL and KL Divergence. More details on these a few code blocks below --" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "e3c8d54d", + "metadata": {}, + "outputs": [], + "source": [ + "from torch.distributions import Categorical\n", + "\n", + "def get_logprob(agent, outputs):\n", + " '''\n", + " Get the logprobs for outputs acc. to agent's policy.\n", + " \n", + " Args:\n", + " agent: Actor network (or reference)\n", + " outputs: output ids\n", + " Shape = (sequence, tokens)\n", + " \n", + " returns \n", + " logprob of outputs acc to agent's policy\n", + " Shape = (sequence, tokens)\n", + " '''\n", + " logits = agent(outputs[:, :-1])[0][:, -INPUT_SIZE:, :]\n", + " logprob = Categorical(logits=logits).log_prob(outputs[:, -INPUT_SIZE:])\n", + " return logprob" + ] + }, + { + "cell_type": "markdown", + "id": "207bfe14", + "metadata": {}, + "source": [ + "Hyperparameters --" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "fa705304", + "metadata": {}, + "outputs": [], + "source": [ + "# Hyperparams\n", + "epochs = 100\n", + "actor_lr = 1e-5\n", + "critic_lr = 1e-4\n", + "train_actor_iter = 4 # Train the networks this many times per epoch\n", + "train_critic_iter = 4 \n", + "clip_ratio = 0.2 # PPO Clip\n", + "gamma = 0.99 # Discount factor\n", + "kl_beta = 1 # KL coeff for reward\n", + "save = False\n", + "\n", + "# For plotting\n", + "rew_list = []\n", + "kl_list = []" + ] + }, + { + "cell_type": "markdown", + "id": "add83ee2", + "metadata": {}, + "source": [ + "Here we set up our models and optimizers. We typically need 3 models for RLHF training:" + ] + }, + { + "cell_type": "markdown", + "id": "60f32e29", + "metadata": {}, + "source": [ + "1. Actor: This is the LLM that we will fine-tune using reinforcement learning(RL). It is initialised as a copy of the pretrained model. \n", + "2. Reference: To prevent the actor's output distribution (or \"policy\" in RL terms) from diverging too much from the pretrained model's distribution, we need to apply some constraint on the distance/difference of the two distributions. For this, we keep this reference model which is a frozen copy of the pretrained model to calculate KL divergence during our RL training. \n", + "3. Critic: The critic network is also a copy of the base LLM but with the last layer replaced with a single output. This is used to estimate the value function, which is a component required to calculate the actor's loss.\n", + "\n", + "In our simple problem statement, the rewards are given at the end of the sequence. Therefore, we don't need to estimate the value function and hence, don't train a critic network. For more information, see this [answer](https://stats.stackexchange.com/questions/380123/reinforcement-learning-what-is-the-logic-behind-actor-critic-methods-why-use) on StackExchange." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1920d08f", + "metadata": {}, + "outputs": [], + "source": [ + "# Actor\n", + "actor = get_model(block_size=INPUT_SIZE*2, vocab_size=st_dataset.get_vocab_size()) \n", + "actor.load_state_dict(torch.load(\"models/minimal_RLHF_basic_supervised.pt\")) # Load ST model from disk\n", + "# Reference\n", + "reference = get_model(block_size=INPUT_SIZE*2, vocab_size=st_dataset.get_vocab_size()) \n", + "reference.load_state_dict(torch.load(\"models/minimal_RLHF_basic_supervised.pt\")) # Clone of actor\n", + "\n", + "# Optimizers\n", + "actor_opt = torch.optim.AdamW(actor.parameters(), lr=actor_lr)\n", + "\n", + "# Set models to train/eval\n", + "reference.eval()\n", + "reward_model.eval()\n", + "actor.train()" + ] + }, + { + "cell_type": "markdown", + "id": "11b4372a", + "metadata": {}, + "source": [ + "At last, we come to our main RL training. We use PPO, a famous RL algorithm for fine-tuning our model along with a KL divergence penalty. " + ] + }, + { + "cell_type": "markdown", + "id": "eaff1744", + "metadata": {}, + "source": [ + "**PPO:** \n", + "The main idea behind PPO is to induce stability in the training process by preventing large updates. \n", + "\n", + "Let's look at the PPO loss:\n", + "\n", + "$$L = \\text{min}\\biggl( \\frac{\\pi_{k+1} (a|s)}{\\pi_{k} (a|s)} R, \\text{ clip}\\Bigl(\\frac{\\pi_{k+1} (a|s)}{\\pi_{k} (a|s)}, 1-\\epsilon, 1+\\epsilon\\Bigr) R\\biggr)$$\n", + "\n", + "Where $\\pi_k$ represents the policy at $k$'th training step, R is reward and $\\epsilon$ is a hyperparameter for clipping the policy update. I have partly modified the loss to prevent too many new ideas at once for beginners. This version is sufficient for our current case. To learn more about the PPO loss, look at [SpinningUp](https://spinningup.openai.com/en/latest/algorithms/ppo.html) and [Eric's article](https://medium.com/analytics-vidhya/coding-ppo-from-scratch-with-pytorch-part-1-4-613dfc1b14c8).\n", + "\n", + "The PPO loss looks complicated but is fairly straightforward. To understand what the PPO loss does, consider the two cases: \n", + "1. R is positive \n", + "2. R is negative \n", + "\n", + "**Case 1**: R is positive. \n", + "Then the loss reduces to \n", + "$$L = \\text{min}\\biggl( \\frac{\\pi_{k+1} (a|s)}{\\pi_{k} (a|s)}, 1+\\epsilon \\biggr)R$$\n", + "So if the policy at the next training step is _increasing_ too far from the previous step, we clip it to $1+\\epsilon$. \n", + "\n", + "**Case 2**: R is negative.\n", + "Then the loss reduces to \n", + "$$L = \\text{max}\\biggl( \\frac{\\pi_{k+1} (a|s)}{\\pi_{k} (a|s)}, 1-\\epsilon \\biggr)|R|$$\n", + "So if the policy at the next training step is _decreasing_ too far from the previous step, we clip it to $1-\\epsilon$. " + ] + }, + { + "cell_type": "markdown", + "id": "9f77c733", + "metadata": {}, + "source": [ + "**KL Divergence:** \n", + "[KL divergence](https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence) is a measure of difference between two distributions. We use KL divergence penalty to ensure our actor's policy (probability distribution over next tokens) does not stray too far from the reference model's policy. For two distributions P and Q defined on the same sample space, $X$, the KL divergence is given by: \n", + "\n", + "$$D_{KL}(P||Q) = \\sum_{x \\in X} P(x) log\\biggl(\\frac{P(x)}{Q(x)}\\biggr)$$" + ] + }, + { + "cell_type": "markdown", + "id": "597c8ce5", + "metadata": {}, + "source": [ + "The final reward used for PPO is then a linear combination of the scalar output from the reward model $R_{RM}$ and the value of KL divergence $R_{KL}$ with a hyperparameter $\\beta$.\n", + "\n", + "$$R = R_{RM} - \\beta R_{KL}$$" + ] + }, + { + "cell_type": "markdown", + "id": "28f6b4b4", + "metadata": {}, + "source": [ + "Both of PPO and KL divergence are crucial components to the RLHF training due to the inherent fragile nature of RLHF. Mainly, the issue lies with the reward model and the fact that it _cannot_ completely capture human preferences. The data used to train the reward model is generated using the base LLM's policy. Therefore, if the actor diverges too far from the base policy and the reward model is asked to give feedback for samples that do not come from the training distribution, we cannot predict the behaviour of the reward model. In fact, this exact issue often leads to adversarial training (see [Deepak's article](https://medium.com/@prdeepak.babu/reward-hacking-in-large-language-models-llms-c57abbc0cde7) on Reward Hacking in LLMs). This issue is avoided by taking small steps in PPO and using a KL penalty to prevent moving too far from base policy." + ] + }, + { + "cell_type": "markdown", + "id": "4b9594c0", + "metadata": {}, + "source": [ + "Now we have the RL code --" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8f6c590", + "metadata": {}, + "outputs": [], + "source": [ + "# Dataloader - we use the same as reward model for now since we only need the inputs and it's in the correct format for what we want in RLHF training\n", + "# Can't use the supervised training's dataloader directly since the input has some part of output concatenated in that\n", + "ft_dataloader = train_loader\n", + "\n", + "# Train\n", + "for ep in range(epochs):\n", + " for b_i, batch in enumerate(ft_dataloader): \n", + " # Get some inputs from supervised dataset (only inputs - we don't care about the ground truths anymore)\n", + " inp, _, __ = batch\n", + "\n", + " # Generate output sequence\n", + " out = actor.generate(inp, max_new_tokens=INPUT_SIZE, do_sample=True) # Not sampling since good and bad in our problem is fairly deterministic, otherwise prefer to sample.\n", + " start_logprob = get_logprob(actor, out).detach()\n", + " start_logprob = start_logprob.sum(-1)\n", + "\n", + " # Reward\n", + " rew_out = torch.concat([out, torch.Tensor([[11]]*out.shape[0])], dim=-1).long() # Add [CLS] = 11\n", + " rew = reward_model(rew_out)[0][:, -1, 0]\n", + " rew_list.append(rew.mean().item())\n", + " \n", + " # Actor train loop\n", + " for _iter_actor in range(train_actor_iter):\n", + " # Get logprobs\n", + " cur_logprob = get_logprob(actor, out)\n", + " ref_logprob = get_logprob(reference, out)\n", + " cur_logprob = cur_logprob.sum(dim=-1) # Summing because we don't have rewards for each timestep\n", + " ref_logprob = ref_logprob.sum(dim=-1)\n", + "\n", + " # KL and reward update\n", + " kl_div = (cur_logprob - ref_logprob).detach()\n", + " rew = rew - kl_beta * kl_div\n", + "\n", + " # PPO loss\n", + " ratio = torch.exp(cur_logprob - start_logprob)\n", + " clip_rat = torch.clamp(ratio, 1-clip_ratio, 1+clip_ratio)\n", + " actor_loss = -(torch.min(ratio * rew, clip_rat * rew)).mean()\n", + "\n", + " # Update actor\n", + " actor_opt.zero_grad()\n", + " actor_loss.backward(retain_graph=True)\n", + " actor_opt.step()\n", + "\n", + " # Save kl div for plotting\n", + " kl_list.append(kl_div.mean().item())\n", + "\n", + " # Eval\n", + " if ep % 1 == 0 and b_i % 50 == 0:\n", + " print(f\"Epoch={ep} -- batch={b_i} || \" + \\\n", + " f\"Reward={round(rew_list[-1], 2)} || \" + \\\n", + " f\"KLD={round(kl_list[-1], 2)} || \" + \\\n", + " f\"actor loss={round(actor_loss.item(), 2)}\")\n", + " print(out[0])\n", + " print(\"#\"*100)" + ] + }, + { + "cell_type": "markdown", + "id": "2441630c", + "metadata": {}, + "source": [ + "Output is ommitted for brevity. Here is an image of some of the outputs: \n", + "![](/images/session_4/part_2_finetuning_lms_to_human_preferences/rl_outputs.png)" + ] + }, + { + "cell_type": "markdown", + "id": "a9091014", + "metadata": {}, + "source": [ + "Save model --" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9dcc1b12", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime, os, json\n", + "\n", + "save = True\n", + "\n", + "# RUN TO SAVE MODEL\n", + "folder = f\"models/08_min_rlhf_basic_{datetime.datetime.now().__str__()}\"\n", + "os.makedirs(folder, exist_ok=True)\n", + "\n", + "torch.save(reward_model, f\"{folder}/reward_nodel.pt\")\n", + "torch.save(reference, f\"{folder}/reference.pt\")\n", + "torch.save(actor, f\"{folder}/actor.pt\")\n", + "\n", + "with open(f\"{folder}/config.json\", 'w') as f:\n", + " json.dump({\n", + " \"epochs\": epochs,\n", + " \"actor_lr\": actor_lr,\n", + " \"critic_lr\": critic_lr,\n", + " \"train_actor_iter\": train_actor_iter,\n", + " \"train_critic_iter\": train_critic_iter,\n", + " \"clip_ratio\": clip_ratio,\n", + " \"gamma\": gamma,\n", + " \"kl_beta\": kl_beta,\n", + " }, f)" + ] + }, + { + "cell_type": "markdown", + "id": "d7706531", + "metadata": {}, + "source": [ + "Plot rewards --" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "d187c707", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "\n", + "def moving_average(a, n=10):\n", + " ret = np.cumsum(a, dtype=float)\n", + " ret[n:] = ret[n:] - ret[:-n]\n", + " return ret[n - 1:] / n\n", + "\n", + "plt.plot(moving_average(rew_list, 20), label=\"reward\")\n", + "plt.plot(moving_average(kl_list, 20), label=\"kl\")\n", + "plt.legend()\n", + "plt.title(f\"Reward plot || KL beta = {kl_beta}\")\n", + "plt.xlabel(\"Train steps\")\n", + "plt.ylabel(\"Reward (moving average)\")\n", + "if save:\n", + " plt.savefig(f\"{folder}/plot.png\")\n", + "else:\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1465c909", + "metadata": {}, + "source": [ + "With our hyperparameters, we have maximized reward while maintaining a non-divergent KL. Looking at the outputs above, the model seems to behave the way we want it to. \n", + "\n", + "Hurray!" + ] + }, + { + "cell_type": "markdown", + "id": "6a6226b8", + "metadata": {}, + "source": [ + "## Explainability / Interpretability" + ] + }, + { + "cell_type": "markdown", + "id": "d70c9c26", + "metadata": {}, + "source": [ + "First I run some visualizations on the base LLM to set the stage. " + ] + }, + { + "cell_type": "markdown", + "id": "4877fde5", + "metadata": {}, + "source": [ + "### Base model's visualizations" + ] + }, + { + "cell_type": "markdown", + "id": "9da71d36", + "metadata": {}, + "source": [ + "Let's look at some probability plots over the output tokens for different input lengths. " + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "id": "66501500", + "metadata": {}, + "outputs": [], + "source": [ + "x, y = torch.Tensor([[5, 7, 1, 5, 10]]).long(), torch.Tensor([[6, 2, 7, 3]]).long()" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "244f1fda", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Probability')" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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RiaRSb/lj0xKSEiQJB08eNBl/Pvvv5fk/2OCfZBJZNJv2SmTKisrNXLkSOXk5Cg7O1sDBw70ah4EBvKIPPot8ui0d955RydOnLB8tSJNtAbirbfecvmAbNiwQZ999pmuvfZa59j555+vHTt2qLCw0Dm2detW/e///q/LXBEREZLkNrhr4+TJkzpx4kSV8ccff1yGYeiaa66p0/yrVq3S8ePHLf+QVefX7/MZBw8e1KJFi9S9e3fnhSL95eabb1ZBQYHeeOMN59iRI0f0+uuv6/rrr3d73j3gK2RS4KmPmfSnP/1JkrRw4UKX8ZdfflmhoaEaNGhQnWpG/UEmBR4yyXN/+ctftHz5cs2bN69Od15EYCCPAg955Dl/5lF2drYiIiJ04403+nTe2uLGAg3EBRdcoMsvv1xjxoxRWVmZZs+erZYtW7pc4O/OO+/UrFmzlJycrLvuukuHDx/WggULdPHFF6u4uNi5XePGjdWlSxctX75c8fHxatGihbp27VrrZZr5+fnq1auXhg8frs6dO0uS1qxZo1WrVumaa67RDTfc4LL9mW9fPL0ewNKlS+VwOHTTTTdVu82gQYO0bt06GYZhOt8TTzwhSfr6668lSUuWLNEnn3wiSS53G5k6daqmTZumtWvX1hg+48eP13/+8x9dddVVateunfbt26cXXnhBJSUl+tvf/uay7SuvvKLU1FQtXrxYo0aNqrHOd999V1u3bpUknTp1Sl9++aWz9j/+8Y/q3r27pNNhfOmllyo1NVXffPONoqOjNW/ePFVUVGjatGmm7wdQF2SSe2SSZ5k0atQovfrqq9q7d6/LN/O/1atXL915551atGiRfv75Zw0cOFC5ubl6/fXXNXHiRFt92w3/IpPcI5OsyyRP36fZs2dr3rx5SkxMVEREhF577TWXn994441q0qRJje8JAgt55B55VL/yKDc3V1deeaUyMzM1derUGt8n6fQps//+97910003WX+9RwMBb/HixYYk4/PPP3eOpaSkGE2aNKmybWZmpvHr/1n37t1rSDKefvpp49lnnzViY2MNh8NhDBgwwNi6dWuV/V977TWjU6dORlhYmNGzZ09jzZo1RkpKitGhQweX7davX28kJCQYYWFhhiQjMzOz2vp/W9MZx44dM26//XbjggsuMCIiIgyHw2FcfPHFxpNPPmmUl5dX2T46Otq4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AAAAAGCCJhoAAAAAAABggiYaAAAAAAAAYIImGgAAAAAAAGCCJhoAAAAAAABggiYaAAAAAAAAYIImGgAAAAAAAGCCJhoAAAAAAABggiYaAAAAAAAAYIImGgAAAAAAAGCCJhoAAAAAAABggiYaAAAAAAAAYIImGgAAAAAAAGCCJhoAAAAAAABggiYaAAAAAAAAYIImGgAAAAAAAGDCqyba2rVrfV0HAAAAAAAAELC8aqJdc801Ov/88/XEE0/owIEDvq4JAAAAAAAACCheNdEOHjyo9PR0rVixQp06dVJycrL++c9/qry83Nf1AQAAAAAAAJbzqokWHR2tcePGacuWLfrss88UHx+ve++9V+3atdN9992nrVu3+rpOAAAAAAAAwDJ1vrFA7969NXHiRKWnp+vHH3/UokWLlJCQoAEDBujrr7/2RY0AAAAAAACApbxuop06dUorVqzQddddpw4dOmjNmjV6/vnnVVBQoN27d6tDhw665ZZbfFkrAAAAAAAAYAmvmmh/+ctf1LZtW/33f/+34uPjtXnzZuXl5enPf/6zmjRpori4OD3zzDPasWOH6Vxz585VXFycwsPD1a9fP23YsKHG7Y8fP660tDS1bdtWDodD8fHxWrVqlTeHAQAAAAAAAHgk1JudvvnmGz333HMaOnSoHA6H222io6O1du3aGudZvny5MjIytGDBAvXr10+zZ89WcnKydu7cqdatW1fZvry8XP/1X/+l1q1ba8WKFWrfvr2+++47NWvWzJvDAAAAAAAAADziVRMtMzNT/fv3V2io6+4///yz1q9fryuuuEKhoaEaOHBgjfPMmjVLo0ePVmpqqiRpwYIFWrlypRYtWqQJEyZU2X7RokU6evSo1q9fr0aNGkmS4uLivDkEAAAAAAAAwGNenc555ZVX6ujRo1XGi4qKdOWVV3o0R3l5uTZu3KikpKRfigkOVlJSkvLy8tzu88477ygxMVFpaWmKiYlR165d9eSTT6qiosKbwwAAAAAAAAA84tVKNMMwFBQUVGX8hx9+UJMmTTya48iRI6qoqFBMTIzLeExMTLXXUtuzZ48++ugjjRgxQqtWrdLu3bt177336tSpU8rMzHS7T1lZmcrKypzPi4uLPaoPAKxGfgGwI7ILgB2RXQA8Uasm2tChQyVJQUFBGjVqlMv10CoqKvTll1+qf//+vq3wVyor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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 4, sharey=True, figsize=(15, 3))\n", + "for i in range(4):\n", + " _x = torch.concat([x, y[:, :i]], dim=1)\n", + " axes[i].bar(np.arange(11), torch.softmax((reference(_x)[0][0, -1].detach()), dim=0).tolist())\n", + " axes[i].title.set_text(f\"Input {_x[0].tolist()}\")\n", + " axes[i].set_ylim([0, 1])\n", + "axes[0].set_ylabel(\"Probability\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ef20486", + "metadata": {}, + "source": [ + "The supervised model learns an almost equal probability over the increment of last 4 tokens. This was our intended behaviour. \n", + "\n", + "The exact probabilities vary but are mostly within a some threshold of each other. For the first plot though, since the input contains two 5's, the probability of 6 is much higher than others. " + ] + }, + { + "cell_type": "markdown", + "id": "6952efbe", + "metadata": {}, + "source": [ + "Now, let's look at what the attention heads focus on. I'm using [BertViz](https://github.com/jessevig/bertviz) for visualizing attention weights." + ] + }, + { + "cell_type": "markdown", + "id": "166f77b7", + "metadata": {}, + "source": [ + "![](/images/session_4/part_2_finetuning_lms_to_human_preferences/base_attn.png)" + ] + }, + { + "cell_type": "markdown", + "id": "cd112409", + "metadata": {}, + "source": [ + "Here also, the model successfully learns to look at the last 4 input tokens while ignoring the separation token." + ] + }, + { + "cell_type": "markdown", + "id": "7d3b08ab", + "metadata": {}, + "source": [ + "### Fine tuned model with beta = 1" + ] + }, + { + "cell_type": "markdown", + "id": "07d8f884", + "metadata": {}, + "source": [ + "We look at the same visualizations for the fine tuned model with $\\beta = 1$." + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "81e9ae26", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Probability')" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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G5lEJv2ePzIpISFBkrR//36X8R9++EGS/18T7INMIpN+z06ZVFlZqWHDhik3N1c5OTnq16+fV/MgMJBH5NHvkUenvPfeezp+/LjlqxVpotUT77zzjssXZO3atfriiy903XXXOcfOP/98bdu2TUVFRc6xTZs26X//939d5oqMjJQkt8FdGydOnNDx48erjD/55JMyDEPXXnttneZfvny5jh49avmXrDq/fZ9P279/v+bPn6+uXbs6LxTpL7feeqsKCwv11ltvOccOHTqkN998UzfccIPb8+4BXyGTAs/ZmEl/+tOfJEnz5s1zGX/11VcVGhqq/v3716lmnD3IpMBDJnnuL3/5i5YsWaLZs2fX6c6LCAzkUeAhjzznzzzKyclRZGSkbr75Zp/OW1vcWKCeuOCCC3TFFVdo5MiRKisr04wZM9S8eXOXC/zdfffdmj59ulJSUnTPPffo4MGDmjt3ri655BIVFxc794uIiFCnTp20ZMkSxcfHq1mzZurcuXOtl2kWFBSoR48eGjJkiDp27ChJWrlypZYvX65rr71WN910k8v+p3998fR6AIsWLZLD4dAtt9xS7T79+/fX6tWrZRiG6XxPPfWUJGnLli2SpIULF+qzzz6TJJe7jUyaNEmTJ0/WqlWragyfMWPG6D//+Y+uvvpqtWnTRnv27NFLL72kkpIS/e1vf3PZ97XXXlNaWpoWLFig4cOH11jn+++/r02bNkmSTp48qa+//tpZ+4033qiuXbtKOhXGl112mdLS0vTtt98qOjpas2fPVkVFhSZPnmz6fgB1QSa5RyZ5lknDhw/X66+/rt27d7v8Mv97PXr00N1336358+frl19+Ub9+/ZSXl6c333xT48aNs9Wv3fAvMsk9Msm6TPL0fZoxY4Zmz56tpKQkRUZG6o033nD5+80336yGDRvW+J4gsJBH7pFHZ1ce5eXl6aqrrlJWVpYmTZpU4/sknTpl9t///rduueUW66/3aCDgLViwwJBkfPnll86x1NRUo2HDhlX2zcrKMn77r3X37t2GJOPZZ581nn/+eSM2NtZwOBxG3759jU2bNlU5/o033jA6dOhghIWFGd27dzdWrlxppKamGu3atXPZb82aNUZCQoIRFhZmSDKysrKqrf/3NZ125MgR48477zQuuOACIzIy0nA4HMYll1xiPP3000Z5eXmV/aOjo43L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ly5d9NVXX1ldVhUVFRWaMGGC2rdvr4iICJ1//vl68sknFQj3E/n00091ww03qE2bNgoKCtI777zj8nfDMDRx4kS1bt1aERERSk5O1nfffWdNsWehQM8uyb75FcjZJdkjv8guVIfs8h+yyzcCNb/ILusFen6RXf5BdtVdoOUXTbQ6WLJkiTIzM5WVlaX169erW7duSklJ0cGDB60uzWn16tVKT0/X559/ro8++kgnT57UNddco5KSEqtLq9GXX36pl156SV27drW6lCqOHDmiyy+/XA0aNNC///1vffvtt3r++efVtGlTq0urYtq0aZozZ45efPFFbd26VdOmTdMzzzyjF154werSVFJSom7dumnWrFlu//7MM89o5syZmjt3rr744gs1bNhQKSkpOnHixBmu9Oxjh+yS7JlfgZxdkn3yi+yCO2SX/5BdvhOo+UV2WcsO+UV2+R7Z5RsBl18GvNa7d28jPT3d+biiosJo06aNkZ2dbWFVNTt48KAhyVi9erXVpVTr+PHjxoUXXmh89NFHRr9+/YxRo0ZZXZKLRx991LjiiiusLsMjAwYMMO6++26XsUGDBhlDhw61qCL3JBlvv/2283FlZaXRqlUr49lnn3WOHT161HA4HMY//vEPCyo8u9gxuwwj8PMr0LPLMOyTX2QX3CG7/IPs8i075BfZdebZMb/Irroju3wvEPKLlWheKi8v17p165ScnOwcCw4OVnJysvLz8y2srGbHjh2TJDVr1sziSqqXnp6uAQMGuLy3geS9995Tr169dNttt6lly5bq0aOHXnnlFavLcqtPnz7Kzc3Vjh07JEmbNm3SZ599puuuu87iymq2e/duFRQUuHwGoqKilJiYGNDfLzuwa3ZJgZ9fgZ5dkn3yi+zC75Fd/kN2+ZYd84vs8i+75hfZVXdkl/9ZkV+hfpm1Hjh06JAqKioUExPjMh4TE6Nt27ZZVFXNKisr9eCDD+ryyy9X586drS7HrcWLF2v9+vX68ssvrS6lWrt27dKcOXOUmZmpxx57TF9++aUeeOABhYWFKTU11eryXIwdO1bFxcXq2LGjQkJCVFFRoSlTpmjo0KFWl1ajgoICSXL7/Tr9N3jHjtklBX5+2SG7JPvkF9mF3yO7/IPs8j075hfZ5V92zC+yyzfILv+zIr9ootUj6enp2rx5sz777DOrS3Fr3759GjVqlD766COFh4dbXU61Kisr1atXLz399NOSpB49emjz5s2aO3duwIXhP//5Ty1atEg5OTm65JJLtHHjRj344INq06ZNwNUK1CSQ88su2SXZJ7/ILpwtyC7fsEt2SeQXzg5kl2+QXWcnTuf0UnR0tEJCQlRYWOgyXlhYqFatWllUVfUyMjL0wQcfaNWqVTr33HOtLsetdevW6eDBg+rZs6dCQ0MVGhqq1atXa+bMmQoNDVVFRYXVJUqSWrdurU6dOrmMXXzxxdq7d69FFVXvkUce0dixY3X77berS5cuuuuuuzR69GhlZ2dbXVqNTn+H7PL9shO7ZZcU+Plll+yS7JNfZBd+j+zyPbLLP+yYX2SXf9ktv8gu3yG7/M+K/KKJ5qWwsDAlJCQoNzfXOVZZWanc3FwlJSVZWJkrwzCUkZGht99+W5988onat29vdUnVuvrqq/XNN99o48aNzq1Xr14aOnSoNm7cqJCQEKtLlCRdfvnlVW73vGPHDrVr186iiqpXWlqq4GDXr3lISIgqKystqsgz7du3V6tWrVy+X8XFxfriiy8C6vtlR3bJLsk++WWX7JLsk19kF36P7PI9sss/7JhfZJd/2SW/yC7fI7v8z5L88svtCuqJxYsXGw6Hw3jttdeMb7/91rj33nuNJk2aGAUFBVaX5jRy5EgjKirKyMvLMw4cOODcSktLrS7NI4F4p5W1a9caoaGhxpQpU4zvvvvOWLRokREZGWm88cYbVpdWRWpqqtG2bVvjgw8+MHbv3m289dZbRnR0tDFmzBirSzOOHz9ubNiwwdiwYYMhyZg+fbqxYcMG4/vvvzcMwzCmTp1qNGnSxHj33XeNr7/+2rjpppuM9u3bGz///LPFldufHbLLMOydX4GYXYZhn/wiu+AO2eV/ZFfdBWp+kV3WskN+kV2+R3b5RqDlF020OnrhhReM8847zwgLCzN69+5tfP7551aX5EKS223BggVWl+aRQA3E999/3+jcubPhcDiMjh07Gi+//LLVJblVXFxsjBo1yjjvvPOM8PBwo0OHDsbjjz9ulJWVWV2asWrVKrefzdTUVMMwTt2ueMKECUZMTIzhcDiMq6++2ti+fbu1RZ9FAj27DMPe+RWo2WUY9sgvsgvVIbv8i+yqu0DNL7LLeoGeX2SXf5BddRdo+RVkGIbh+/VtAAAAAAAAwNmDa6IBAAAAAAAAJmiiAQAAAAAAACZoogEAAAAAAAAmaKIBAAAAAAAAJmiiAQAAAAAAACZoogEAAAAAAAAmaKIBAAAAAAAAJmiiAQAAAAAAACZoogEAAAAAAAAmaKIBAAAAAAAAJmiiAQAAAAAAACZoogEAAAAAAAAm/h8MS3mBpryazwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 4, sharey=True, figsize=(15, 3))\n", + "for i in range(4):\n", + " _x = torch.concat([x, y[:, :i]], dim=1)\n", + " axes[i].bar(np.arange(11), torch.softmax((actor(_x)[0][0, -1].detach()), dim=0).tolist())\n", + " axes[i].title.set_text(f\"Input {_x[0].tolist()}\")\n", + " axes[i].set_ylim([0, 1])\n", + "axes[0].set_ylabel(\"Probability\")" + ] + }, + { + "cell_type": "markdown", + "id": "5b37b059", + "metadata": {}, + "source": [ + "![](/images/session_4/part_2_finetuning_lms_to_human_preferences/kl1_attn.png)" + ] + }, + { + "cell_type": "markdown", + "id": "69f41ade", + "metadata": {}, + "source": [ + "The model learnt to change the distribution over the first output token only. For the first plot and attention figure, the model learns to focus on a single token and output its increment. As for the rest of the tokens, it retains a similar behavior as the base model." + ] + }, + { + "cell_type": "markdown", + "id": "dd7024d2", + "metadata": {}, + "source": [ + "### Fine tuned model with beta 0" + ] + }, + { + "cell_type": "markdown", + "id": "bb27d860", + "metadata": {}, + "source": [ + "As as additional exercise, we also look at how the model behaves when no KL divergence penalty is applied. \n", + "\n", + "I've run the training separately and compiled the results here." + ] + }, + { + "cell_type": "markdown", + "id": "554d9eab", + "metadata": {}, + "source": [ + "![](/images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_plot.png)" + ] + }, + { + "cell_type": "markdown", + "id": "c77b1643", + "metadata": {}, + "source": [ + "The reward hits the max but the KL is diverging, which means that the policy we are learning is moving further away from the base distribution as the training goes on. This is a result of not applying a penalty to KL divergence." + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "id": "54050769", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Probability')" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/qiWLVtKkq688kr16NFDU6dO1bRp07x+zrp16+qGG27QiBEj1LFjx2ovZ23evLlGjx6trl27qqysTMuXL9esWbO0adMmZWdnKyys+r+iVn/IKhISEqIrrrhC1113nVq2bKkdO3Zo2rRpuuqqq/TBBx+ob9++AX3+ffv26dJLLy033rx5c0nSL7/8og4dOgS0BpxeyCTvkEmeBSKTfvzxR/3xxx+69tprdccddygjI0PZ2dl64YUXdPjwYf3rX//yS+0ITmSSd8gkz+ycSf/3f/+nnJwcjRs3zi/zofrII++QR56RR38qLS3V4sWL1b17d51zzjl+mbOqaKLZ3N133+32uFevXh4vvNe/f39XEEsnutY9evTQsmXLqhTG/paRkeH2+Oabb1ZcXJweffRRLVmyRDfffHO15i8rK9OiRYvUpUsXnX/++dWay9/OOussrVixwm3stttuU7t27fTAAw8EPIx///13OZ3OcuMRERGunwNVRSZVjkyqWCAy6bffflNRUZHuvvtu152mBgwYoJKSEr300kt67LHHfL4YL+yBTKocmVQxu2bS/v37dcstt6h169YaPXp0teaCf5FHlSOPKkYe/SkrK0t5eXl65JFH/DKfLzid08YiIiJc57mf1LBhQx06dKjcvp4+AHFxcdq1a1egyvPZqFGjFBISok8++aTac61evVp79+4Num8zKtKoUSMlJyfrhx9+8PmuKN6qXbu2x/PnTy7frV27dkCfH6cfMskcmVSxQGTSyWMGDRrkNn7yNBF/3rELwYdMMkcmVcyOmVRYWKh//vOfOnr0qN5///1KL1SOU4s8MkceVYw8+tPChQsVGhqqgQMH+mU+X9BEs7HQ0FC/zlfRRQ3/esHLU6F27dpq3LixDh48WO25Fi5cqJCQkHLhEMxiYmIkyS+vvzLNmzf3eCvlk2MtWrQI6PPj9EMmmSOTKhaITDp5THR0tNt406ZNJcnjP15w+iCTzJFJFbNbJpWUlGjAgAH65ptv9P7776t9+/Y+zwX/I4/MkUcVI49O+P333/Xuu+8qMTGxXN2nEk20GuLHH38sN7Zt2zbX3VukE9+GHD58uNx+P//8s9tjb+4gUh1Hjx7VgQMHyn1bU1XFxcX697//rT59+tiqIbRjxw5JqvbrN9O5c2etX7++3F1YvvzyS9WpU0dxcXEBfX7UbGQSmfR3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(1, 4, sharey=True, figsize=(15, 3))\n", + "kl0_actor = torch.load(\"models/kl_beta=0/actor.pt\")\n", + "for i in range(4):\n", + " _x = torch.concat([x, y[:, :i]], dim=1)\n", + " axes[i].bar(np.arange(11), torch.softmax((kl0_actor(_x)[0][0, -1].detach()), dim=0).tolist())\n", + " axes[i].title.set_text(f\"Input {_x[0].tolist()}\")\n", + " axes[i].set_ylim([0, 1])\n", + "axes[0].set_ylabel(\"Probability\")" + ] + }, + { + "cell_type": "markdown", + "id": "cd3a185d", + "metadata": {}, + "source": [ + "The first output is correct but the rest are all messed up. Let's look at the attention heads." + ] + }, + { + "cell_type": "markdown", + "id": "d9d6a87a", + "metadata": {}, + "source": [ + "![kl0_attn](/images/session_4/part_2_finetuning_lms_to_human_preferences/kl0_attn.png)" + ] + }, + { + "cell_type": "markdown", + "id": "b2abf30f", + "metadata": {}, + "source": [ + "The model seems to have learnt to not look at tokens before the last input token. We can see this in the output probability plots too, that the tokens before 5 do not have high probability.\n", + "That is only for the input though. The effect of sampling from the output on the probability distribution is harder to interpret since we do not have a way to visualize how the weights affect the probability during the forward pass." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/stylesheets/extra.css b/stylesheets/extra.css index 858b297..21c5ba1 100644 --- a/stylesheets/extra.css +++ b/stylesheets/extra.css @@ -1,3 +1,7 @@ .md-grid { max-width: 1520px; - } \ No newline at end of file + } + +.md-header { + margin-top: 10px; +} \ No newline at end of file