From e90688286809d2157d50c045489a8be51b48f01f Mon Sep 17 00:00:00 2001 From: Xinyi-ECNU <1668529909@qq.com> Date: Wed, 13 Nov 2024 11:54:39 +0800 Subject: [PATCH 1/6] pdd usage doc --- docs/Prefill-decoding_Disaggregation.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 docs/Prefill-decoding_Disaggregation.md diff --git a/docs/Prefill-decoding_Disaggregation.md b/docs/Prefill-decoding_Disaggregation.md new file mode 100644 index 00000000..52a58e27 --- /dev/null +++ b/docs/Prefill-decoding_Disaggregation.md @@ -0,0 +1,25 @@ +# Prefill-decoding Disaggregation +Existing large language model (LLM) serving systems that support prefill-decoding disaggregation typically compute the prefill and decoding phases on separate instances. For each request, following the prefill phase, the system migrates the generated key-value (KV) cache to the decoding instance and continues the computation. + + +Llumnix can manage the scheduling of runtime requests across instances. It can perceive the execution process of requests and the state of the KV cache. Llumnix provides a series of scheduling semantics to support the initial dispatch and runtime rescheduling (request migration across instances). + + +Therefore, Llumnix is inherently well-suited for the "special" cross-instance scheduling requirements in prefill-decoding disaggregation. Specifically, it limits the initial **dispatch only to the prefill instances** and the **migration between prefill and decoding instances**. + +## Supported Features +1. Requests can be **automatically migrated** from prefill instance to decoding instances. + +2. Users can specify the number of prefill instances. + +3. Llumnix supports both **one-to-many and many-to-one migrations** from prefill to decoding instances. + +4. Decoding instances can migrate requests among themselves based on different scheduling strategies (e.g. load-balance). + + +## How to use +Llumnix only uses two arguments to enable prefill-decoding disaggregation for simplicity. +- `--enable-pd-disagg True` is used to enable prefill-decoding disaggregation. +- `--num-available-dispatch-instances` is used to configure the number of prefill instances. + +Note that `num-available-dispatch-instances` < `initial_instance-num` especially when `--enable-scaling` is not set, as it determines the number of decoding instances. \ No newline at end of file From 512e7d2197d46296faabcfac8f5fda82349f78e1 Mon Sep 17 00:00:00 2001 From: Hanyu Zhao Date: Thu, 14 Nov 2024 22:31:11 +0800 Subject: [PATCH 2/6] refine --- docs/Prefill-decoding_Disaggregation.md | 37 +++++++++++++++++++----- docs/pdd_1.png | Bin 0 -> 100369 bytes docs/pdd_2.png | Bin 0 -> 74438 bytes 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 docs/pdd_1.png create mode 100644 docs/pdd_2.png diff --git a/docs/Prefill-decoding_Disaggregation.md b/docs/Prefill-decoding_Disaggregation.md index 52a58e27..1cdc402b 100644 --- a/docs/Prefill-decoding_Disaggregation.md +++ b/docs/Prefill-decoding_Disaggregation.md @@ -1,21 +1,44 @@ -# Prefill-decoding Disaggregation -Existing large language model (LLM) serving systems that support prefill-decoding disaggregation typically compute the prefill and decoding phases on separate instances. For each request, following the prefill phase, the system migrates the generated key-value (KV) cache to the decoding instance and continues the computation. +# Prefill-decoding Disaggregation (Experimental) +Prefill-decoding disaggregation is a technique that computes the prefill and decoding phases on separate instances, designed for reducing the inteference between the two phases and better utilizing heterogeneous hardware. For each request, following the prefill phase, the system migrates the generated key-value (KV) cache to the decoding instance and continues the computation. -Llumnix can manage the scheduling of runtime requests across instances. It can perceive the execution process of requests and the state of the KV cache. Llumnix provides a series of scheduling semantics to support the initial dispatch and runtime rescheduling (request migration across instances). +We find Llumnix well-suited for implementing P-D disaggregation, because this technique is inherently a special request scheduling policy and fits well in Llumnix's modeling for request scheduling. Specifically, P-D disaggregation can be decomposed into two rules (shown as below): (1) a special dispatching rule, i.e., P-instances-only; and (2) a special migration rule, i.e., migrate to D instances after one step. Llumnix provides an implementation of P-D disaggregation following this principle. +
+ +
-Therefore, Llumnix is inherently well-suited for the "special" cross-instance scheduling requirements in prefill-decoding disaggregation. Specifically, it limits the initial **dispatch only to the prefill instances** and the **migration between prefill and decoding instances**. +## Benefits + +Implementing P-D disaggregation in Llumnix has the following benefits. + +1. **Reuses most of the system-level mechanisms**. As P-D disaggregation is a special case for our cross-instance scheduling abstraction, Llumnix has built-in mechanisms essential for P-D disaggregation from day one, e.g., KV cache transfer, decoupled API server and token forwarding, fault tolerance (for P and D instances, respectively). +2. **Non-intruisive to inference engines**. Llumnix treats all instances simply as inference engines supporting both prefill and decoding. Therefore, inference engines don't need to be aware of the concepts of prefill and decoding instances, making the engine implementation simpler, cleaner, and more focusing on the inference computation itself. +3. **Seamlessly integrates with Llumnix's native scheduling capabilities**. In the P-D disaggregation scheme, we still have scheduling decisions to make: which P instance to dispatch, which D instance to migrate. Llumnix's scheduling policies are readily available for them. Moreover, the migration between D instances is still helpful, e.g., for load balancing. The graph below shows the three scheduling behaviors and how Llumnix combines them. + +
+ +
## Supported Features 1. Requests can be **automatically migrated** from prefill instance to decoding instances. -2. Users can specify the number of prefill instances. +2. Users can specify the number of prefill and decoding instances. + +3. Llumnix supports both one-to-many and many-to-one migrations from prefill to decoding instances, e.g., when the numbers of the two types of instances are uneven. + +4. Decoding instances can still migrate requests among themselves based on different scheduling strategies (e.g. load-balance). + +## Limitations -3. Llumnix supports both **one-to-many and many-to-one migrations** from prefill to decoding instances. +Currently P-D disaggregation is an experimental feature, mainly to demonstrate the feasibility of implementing it using Llumnix's abstractions. Yet, we haven't added advanced features or performance optimizations, including but not limited to: -4. Decoding instances can migrate requests among themselves based on different scheduling strategies (e.g. load-balance). +1. Per-layer KV cache transfer (currently we use a simple blocking transfer); +2. Explicit or automatic assignment of P/D instances (currently we only allow users to specify the instance numbers, with simple assignment rules); +3. Heterogeneous instances, e.g., different device types, sizes, or parallelisms; +4. Fine tuning of the scheduling policies. +We are actively working on these items. Stay tuned :) ## How to use Llumnix only uses two arguments to enable prefill-decoding disaggregation for simplicity. diff --git a/docs/pdd_1.png b/docs/pdd_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3b2d033953164d9832691f3c3c1f352104d1a5 GIT binary patch literal 100369 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 G?f(FYD4m!9 literal 0 HcmV?d00001 diff --git a/docs/pdd_2.png b/docs/pdd_2.png new file mode 100644 index 0000000000000000000000000000000000000000..24f1ef33a86bb1b28d36bffaf93e4a50a6c45625 GIT binary patch literal 74438 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°7w(+6RM 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벪%n(7g?(xaX(7u=heHc!BK`tfFebZ#jd> zs+TG?>cBpxHy#oFpHBfoCDSdKG(!~@_h*{@CZOMlH9m6^1Mk%(ji9Eiulu8G~h>P&$uvPYl|+%SJS1~ zZgZ~;6ews9eKToI(fS(@>zJpsk&oC;%2TWaSgEMox*mqiom5!ZbhdFrGps_&)QapF zpY4hYxf{h)sqUxv?K$xLFXi{L>uy=`Pm)>6N+J$ElFn6$l^(c`@lY^X-vJ>DqQMG_ z*IwV+sChwX8H;PpVjnjK_)1l9AYQF+q^NC$MwSB<@muJVqB)E9>*=kpdX65kHQ7`i zuip8XUiUso`%_SOXq`SDLMCw2EiWP=hych7UJxBnKJA`3Mm07YwW((iN)5+H+>w@v zk6^s`Kb{6$y9cw<&_~6+V(In3BaD59qZQd2J$S%sUPXem52(ouitCQ^t!?-?6;5mOI-OHY5 zy;Ax}o&P>aDzgo9ZTM^;4qY~ta-p^$2$AF>0yuAAjn(s)TDM=SMh3cO-H%ANei zt9+cN;Fm8=RF=$8R<8Iq+`S3rds+4i8w3>OB|~wpv}P2}TKwf*l(emp_V<9AqdX=1 zl9FYs+QU#a#(x)A&=i#Xfn#4X9KaYl5XVAhLZ?}sSr#RqnZ)k@gETG`knp}>!!}{zpWAf(`Uv7mp_j2z(+&L#MPGg z6{K2urA?I+fNIQa5?IZ9tZy{v{VQ5Z%$+wkX?#+6flj*Yv*0$`&tzyhNl45}{U2ii zu3$aw92lw9PpQc%FetWYq0LWaa;o9){D`Z&3N zOU)KXD@_udu<(@4FKTY!G%kml_+D@^3BZryTH4#>>|dS`sASe|1%}06sf925l}Act zrsLEJZad|;XzW}aC&>&ZUEZo34MvRr8Q|BVMNhHac8t1c)toRzwSE<8)WIP6I1@~Fdz2GDDdd~y+gkIBMjFa0W&Qf;a)EN4hd6D z5S6@^x2Ze%dXlqps9H8m#QG!Z$~I}HbJw)1i+osa*ew>UeP|ccF==kFsa#;V-LofC zk-Fl4Cq$ATXY%{H#Uz`?Is0-H-pt~0(IWwzY+w|}%LJz>N?4pohpU+Q09Ym9g96)yt zYX3>7ZX)n{TEXDc>J10Bt6lGx51vxje=E-s$Kfoton;S2UOx^+Bt71e2R!Hs?Sf!e zES195Lg3)j&5wWm86HvDG4loK@o&$Xl-}Af&T$Y%X7O}KSFE$lx!#PIEDU0zz5b zfB6+SLp^mA-B{uCDwiwt5_D!$*_wjT1~io9pnSTyseOL52oI|5 zty7E-BI(d-d0kn;#&l0(*|1#qw087DlO zn%NKY(`BZ@Jfbbj8Wv^i=ps^;h^_eoa4ypg)9=27Vlra~?0E+4hW)v~4_ec2jL-5E zQC@6Kk4~!(3x;>lz|uXs_0j<4zy@?jZrSnwi#LNL>j6~Lb8tsgW%11SqFyxDomEI; zW=KOX+WXpxOUZ6I1NM?KXJzs|_e=w?cj-bd$DsVrCVA3` zrMSL9oetiVL9}a?I(RkBPm$d1Wq!~lp_+k+#gd1ZSZ&a$0$wmeiv7L7?l<_ooO03@-J0B2$) z(W^jX!q2j;(8Dltk@R_SE;IVlrw^E%mhjm0)6G6Q=)M4wwUNDcEaOqbvSXa4WxKA` zL&MXZZ`n${M626#i5kHlmp#PNX!|wg@8yIB;q-ABGlU{zAsjT!WW3`!u|U>c@(ZS@ z${Lr(xyaS4MXJcYm@!&46_B{#Q~C>Fw@l>(+m0I^z`*znG|I_%ZivPte~vnuSGMoB z+}Zkuo#HAKuQFWIj{j`1@lCb)t`Mrt6;=wmF(_Q)2wk;hsO<>MDQh{rS~B^X#{@p~ zpyqyY57_TgN8ZW9gy{JXA)&hKtp~ta^gY5!nUpIHyudg?wjDw*01jb+_E5Vf3yb1g z;fW~|uNGPFVp4nt&cSDzt!W9c%N5geue`MWHTC!-&Ba{z4!O;a8SksuxqFm4A@emyV2>U)F6o&z5y&@WxD<-c1 z28vGe( zAL$vAHS^(7r`3lMwqg48(Zt7g9r_f@#db236%>lT!9&!qlbJLhs;ODvybTMI_+y#Z zly-dRAB2_^ch!zMCKxm--aJ6^uW;%KlDV>M(y^6LcfXuJHv%I6gmy)^Y&UPB z`BjHZyiIIxb~nL8M{7_3!4*5(tm;+JQZ2E{T_D{3i~+JM`b51ga76_%s!rfl^Njc^ z25R|nBHdB0Q8#$u@Zkb*^F;anpuMLqp`_PgPuR20W}=9J#5(`$1wnQtZ=%yHFdi$I zjY^Sve}LS)`{<>pVzOLMGFK6((JMq%#pYD8Q|yO(K%r%qSwV5UL%hz9DihyQ-I%Ih zLQAvDd_L-Xx`J>KOgnqfoL~T5)E58-mEbjcaRCbTHd4}y41vk!CpK?Uc!8low@$#+ zMf*7}h$cszA#^>8kaUiBodQ_)f@%A$^&R`HGuxH2MCO6{ZQHNx1TPHg(*m-!K3g7fy$Kt>usPn({p|lT12}=N z&{nx$@UDxzqIe$pSM2UeRZ|P?MKQK3v8Mb3iYX`sKfnT4BE8p#2>HeRYlhI;o-gUv zz%A)D-34E^*}xX{bJOl}ExM%_5F?hv!TMHpkuWk&Q216Bd~UiIT{$=cj^ai{akhk)W!gtXcf{s1Gy zw1m}G0*De|qZotvwYCom{#!>;7}F(=j|{35QHp%dXlu}o;n`75 zd=Tr`nr_UV2QTT1^B7=hl7ASQth@bnu*=8sSU(r}ZB&{)Hy176vq7pq6v6_Oo7CKp zEXU7DiUV-Z$Na(Zp}UUZ2-WS{o>72dzvEgx6%hrb)HHi)-rq$hSoHmg4+u~;u@VCh z_bFS}&QorC!-6}R7Le7D-1EtW0-AgFOn=*mVp|^-dU&gyT(x7xverr$v@W@SZ6a2I zooYvH=M-qfI`QuC?bVxx>(&>~I=DyTr58`k$Y^!KkK-=<)Lx4hYar2K8c7bD#_ZY% z|2|8FKiU`t1>v3~Tr<^A1o{;}F1i3KDHD(DVb*AQ_!|@LK6Sdn>D6q9Xg43%Rp>BE zKUtN%HlZ;}HXqb2+(2&iy{1A(er=gh*z{D!ltFu)ip_pIiR?_b2Dz#0^IEG{mPASBAS0#Oq( zi4yrF*by$gCh?clR8IMrRPV@PNgzog)a4^HHVm?C^EYk$Vb545?RNz?ihGCoRpB#$T8bpKSt-f zX)r`i0+{@{Ivn;km4`up%kvB%YW6nit`A*AVG$euQ2?zKL<_Q9L0^7O4Qlr6P#*i% zkZ23hY~VkKy%!NJZ@Y)rn3oP--TmEkeHtrq&pZz-rq8`TCoQAJ>oBi0BNzEQS-bF! zsguLaeVg>mr#B-_kgf-WOJ8qMT4XCD*UMK8It_Y9A-&YY;GDEvAal)FERIv0X=}t< zLZ!8C(NDt&r}*_8o!!Y40}0wKh75z5GFa>l6`@LU3hPRqIOb^PZp8*=WQN_PLk0;N zv#)4>bUmXlvfLogcU~mPuJREnzGmz=|5|{fH4rZ-r!Tzyw8bg06#7Ja=`Yg`BAy*@Zuwy((hPh##W;{TE=iqtNL}3WvuL0Ah)c3E~0Z9mgP4uXU|wQH|a7 zSX(LC{c@__CA3O*OfeqPzG}@NvK)(yYQN5xD_2Ql)LgHv{a_gxl#$iK6^iWQz=Ot> z*s2)-F(w1%6;Y2^N0;KF%Q}7NdTiM=%QI+%cNA&O{L4_nxCV5hPW=S(ehQD1E>|hbn9LEaB_omSX0n& z!Z2`cUrD@~J^WCw5zaM z(wo;238@6D(zGQ}OP<^vC&pxL0~rI89}R@`6H&r(blZsul3uIVazJ9ecIJLRn6>|} zA-4@~O=SNir{R}+bYf!j5VuG)Sh>2}OkkW|d(V+Fn>`d=$vjD+mqTYz(wGo^bu6CuZqmEh#u!x zb*CpSlOYU05_*u{iOm6C+JP>7bf{GVxtC00%<*yACHzHiU-fiK6*tz!lU@>&(AeB+ z_1S@rH(iCZdqdSaAA9zpD3#c@3Q^6hrtTl^m^-u0dU#H$aL2&U4S!q6444iueo&n@q zzEO!>2T98%uBkQDWGCpEsDo@ANNYSwFVxv{C5-py{5(N4JiE-Rm0(u=xigO3H;Idr zO%u#!OgKB=qdt9Z^K6h?>|if+3SN)buG_yTY7S9M5)<-x z-%4zN5NET`;31o9Ch@6YM~j>-iJm%^w+>#6gA;3$N;SR?_RM~Pa4KVH^w=g|2E!>j zzX9wsK?f@O_WV7-MfNJX1zk>9VjKQK*K`i>gkcgr1^qB&>iUiPWk0as4s&+7gAmj< zQHnCyhvn2Wq5U~9Rlu9GeqJHq4{1jDPO7j{vUD3BOIf*&k8XsI?`3S&kH3PA4XO`| z&}*S)m!krne97XRRruH>-zQ-65-Px7OdniXz3ZHjl6CN2o0BjlI_nhkr_uoZr$S zkIyqbVEyc#R;?>gwN-O<-VfAqJho?(Y85*d^|UyWrs`sgE-xi6!vP{954i>M!XaG^ zZvywwwibc5Vf3{#i6mJiy4o2sYR+3wvh_`JTJ0gUs11O@gC#0(S~YA;6s;ue#MZ@XC)e(JJiiS^dOPQEx;{1|Ni84K!7ZVWE?$SNsSycAj`myJG86Qkjx~L+jgQ}@w~bQ zjmG+{8rBBmM8$9W7c(E?o+n>ou!(c~3LBaKtD;Xcl+{L%QkVIe2?8C)YV05uwrpn_ zq@J1MBSo3oWxoct?&lf+^?>p1>CIHf3|PSXZZJhxf@3}|)^AY)`OGT=JBDf5!V?jV z-z%1(6OOMRk3K=m3Ld~B`QTT;MPaoROh?V~w#bGe+sd!;>>)t3@r^}(@w!_7-u9O< zdSsCWl<6E+aPX&C=Ra38-eP44j!HlvHM|Fo>`IgpT~ewOJp#!#T-n|(9G~y!mi`MH z=g~EYef?+HfcJTZK~vl*e~2}AzaMJQzM5-2MYj+m^9z}f_rPM6s z{u_nc!X_Gf{g%p1S`r)m2)2ld$=GA_kJs8)fi`P*scRTHsqV)=`l~fWzmqvE)Ad8hjC7)Ilu@=Q|h zPrI={&KSo;tnVe`#;2qr5Cy9dzeBW-SjzHa=a@nT9T>>wIBq!Q0q+6G83sno$4j~H zWvZ^Oahqfb?JYJ-xNknFOKA_6dSX!Q7tiNei>GMdawoVA7cjbueR_8RF5Uj&DW;#M zZ#xwAv^K1D+tVF)+D)icjnHX8sov;Gk&Q{lq=dMhzzUwLh8nQyIF-V1ku~qB#e2B;nlG zskw<;vVi7g$j``EJ4$F`i0w%0oi&o49T1@n3Gmu*$!0<_b!yv{zmu_utkpmw1#{G< zVof#>`NiDZAO&b5lr~j$V7|zmu_F^K<4xhQ=D7Ymau)y$2iO^&T&(28XqgO>w89x( zR(qJX__N_3-NI-WelDPX#zouzM?A|0aHM5%_J4Fa!rWP?%;pj0j?tME+Y+v5PRM-m z;FZYE)z9Ly;>JhU>dBlPmZ{$_@R|Mw#Qlj_u35mXk3fGLucWC< z!t=dg7imSG360ra4R5Ih9$Clu*hJP_F6UEY1okb1y2Un^EY7_9k;^oDQx6S9nKMU9 zpK$+nyEe-`7HElGQ!XA+U5v~vdm2Z29r7z&_}|rNY0M)k_O{I>x8863S^?-`6}OTj zDS~G*|NC_WAvJmPPmTp}-TAaWB!yf2R?(akYx#R09r#My zudS-uH3yyj$25v9Hb~C$orj@G|5P5xqXoQli&&woJb$^5Eg1Nvjk4BzswHBuYfUGM zC)c~#`;wyrp7ftr1N_!AqRafWKzn3u!TI5#c=}vM6uY|Ozwfdj{wh7D5`9CO@vD8) zI`_EWl&)ElB965hUG!0d0872Tn0#(q_ML8mtgjxMMI9gi?uDLSD;?Rj{1sy$y9T%- zn{|S&`nwotlX5GL1jOe>J@MO^)Ll1*HnVBB4Laxq)<$90jmc4+@8O}C!)45a!n&}; zaB189bD_SU<)D&gZ_`|^hPpzC{V z*TviOoHyg2&{KfWGPM;S1Rn8!qnKVc(iT3-cDL}h%ru0va%@mKc$aYXj$7u^$N))q z9ZP)lBCV?=Bl-fhWEf6eUPic`Jn+KBZpHSlWZuy-QnJ4fOaanJCP#16I7D@9$cvqx zj@}N+fs-6;*Idljb*#TPCVqX7?W&rTXW!aa(%k?3t=ghnJ|1fwaUASYA)WelPFepq zv{D?`TkZ6V283mIr6OgE1gjeDTmKMY;x)S*3oVcocuB4+_OlEU?1t{rrV8q1=-=|; z_alrzRCDvP-*g36rM8UXzh(y@eMVlWXv4C3w$y2z=CMVH#sBYd0ykj z#f{b|#b@qmJkA)rdR^j{e2bofB+qdA3h0sFZz6|T*)o<}M$WTo&{CF0-};y?t*xtv zK*iK$EKuL(zZHyT)JevCJT2dU{ZQXMruu%=sm%OU6yc9_ReWT^GtLyutMWvbVXIiD zb8y@b;BLwh-5=?XSL)%pjELzYWl2HYUIB~@q(8yJS=I0w{7hW+N@-esi{~P20DPmI z&avdC@K{1-v&^3OKxp1!6FXpE5vrICoaKV}VA8Q=Uhnl%00Y>zI;~X6&hSUtizPRC zp4>yR&XD0a;_;W5e*OzCRAQW?&YQ~J>oHjb*fK*KdgU0n=SmPt1&Dl#LX#~6IwANq z2r@59Z_I+yJ&K~b7yLPhXD*O^mlLIyYz*iyI%SnoubX4Y2wOv?e~_YOTtFTZFwHyJ zbNAo26Iqa)zZ!!XUe=xjX{oUgrv}i6No4}(NxXIvy}db$bHz(ovP#g!C|FSy}&JCU&uarqe9^4#E%oH7STdhb518|cBT1p zG3n}>noal}1z!QZJAIW|UoVu*Yv~FMvv$gg34_rzqdM(|>Rk3t1V^rFhPq>^f_#K- zUYhs4?YfVtfm@tE8JWZ1Ty+x^Jme_>=bCn%p~@oDG2q`C?r5$=7hN9W`te9>6Li-AxU7;-zkF?RzW7xlk%pO3uwvFo?V`jLA1{hy$k)U6$4l!p-_;P@n_ zX5OaOy2!!nla8Jb|DND|tPsf%;y*t0zNf3?St3sL&l@f-i?Y=j{ELRn2RCj4hWk=J z?`K(|Vn&>Fn14yqGB3~!N#vxvAyV>yn;X}Es(PuBuf=?Q&#BR&Nh<=A+W(+sqbe>s z(j?IGomEtC^~s%X3s18ssaCKRDyb^6sBxIRNKWplm-$J^setqCD2YE|t$8$okJC^S znprnS9`%r`i}b!`LD9A4ZL|QNscR1=yxSL7F`#6SJsy z$};Eyn!!4tfT-IQ^S|`9!AFt1m(%Cak4dMf9TK!L{uwyk-0~F{#&>g@gt+K&8HPV%x&PPILHZ~01G^p0CxS*~bh`fPEYpYKRPyO1DAFDb> z_2PDlCBSD@5FOaTuy-3FD<;dl89V`uVyky_YB8^ilTqrn;+KPYe7lHk>Ft^T!pWlFB8Hg>fa@`@@Snz?i?UzE|T~h8ZCMa4W>#6n1IWm zg|8Mu%=TqOoGM+8^B;mQMIn_{{@QqLvc1Z!yW7+ODT9JH?}w^u=P0@Oyyfd_70^v4 zRK#C@#K=%p%%=~*z0PN-hpcV1HyN-S|wZdAt z1dS-E0$K+xy5@PRwPOgUJJ0c?D4$|dq_*M}-Y9G6A`XtdDQ;s{bDTan6nxVDosu7Z zl2McbLwP2{+SYYzHmcR{_f4C0K{a;fA<;r9s|R)lZ_7LE8mr;~ca^UXx_&v!Y-mp< zcKj>*TG5Y(%-vy=x7*^{>{PmS0`qLgQ)Ejua7c{^R+y2j4lpHi2{X~e^CDk0qeVGJ z)EQda{L#IL@7Rte`q!ov-eb%bO3A5amoWPR9!u0BCL;Q_n~GG`w6#@g=n9{6(tR*Z z93i`{q^sZwyhF+qS9@8wVEfy;@o?36gQNLvlz)iX;JHgd0Jo0Y=)5r+6SW!s6&gSC zxV!ze>8bRBthVK$a_ubhdA^!@uc;9hePbN{7XMt%is#7ZbhB_R)TqVRGDk+0gH!@5I6X^^fNQvP;^!qRZ4aL0yMCD%L4KHeK zljeCeIAkAJiv}1`z2Gtj%(BJK@b({o!|tch_V$n*(7sWgxqh4U1M3lm(M3rmaCIbe z5BI6}`Tnx-Wz$bF!#50#BOcl(WGJ1XJqV=O|CUoWxRXg{8DV`E;f@PWC|N%5zdV4I zNjZLe`{2_bi)l;2MSl(wWJ5>=a2ru=%bQo>2eFycyb;LXOB;Ym1MJv+k~h>o*x z?CTEKhJvJy8^-bFDZTIY@?pRn$sH=&Rg{~35d-crtfIGp{7!F~YWA2xv`~82COL!I z^lwZ7x7FI&cj2<{B;i2rm6up=JzP4wer<1^>->RZ2d`s9aj&YWheOtUrq6l|Fr_Z- z$SH~oU=)EuEBF}hSLCqVP-|4wiSgqbV=GFQIVI|qG_4^fD5LX-OSj8q2jf=(_F%fg z^Y;Nuaknp(B;Jg^hm<9iv+sSC?RCF+~KgS@Nfj;8{&*9_Fl4bw0Z9-w^w z(O$)H+Ubxf$#HA086sdOSpX2@4N;kDdrOoKPA#PvT9Y14$d{3{XC? zeI9`qd>9xjIR>K^c6OYDpyaR?M5SSNsi!!m+crVGmwrQ?tmC-t_k(2Qruj?F59L9Q@WF# zvi$JQ;Xc_`y^I+rIk$J>_<|RjhIj*>sKBz+E9n158GoY!z+W6aw6?Wn2d}N5r)#2f zbD35~UuXn>c>8n3|NrOzUnZR& zFyIiFjjbYatzI>)fiKI!CCobQ+`pP7N7J;A#O%Ax1Kq&{fl>uQk8f{~21%L#^WIlN z3)nvb)6}sZtgK0x1A`Vo$Wfy-o zrt+vWm;&kl2KX)L-$KuF1a8fxGVtZ~xN#D|u(F_$7%^acFe_y+FdUP4+M%&Oi-Wr* z(|(55;_nyHpuZ@Os{lxa-U(JD0=@{h$DW}V6Y%uCC2~`AYEmFd#|ob+xTXn=_g?vF-6T%&rD}5|Pp*r`L+@m>i$+F{CeYROx!KCIQ$ya^s$8`5MiKAW0PZL4TWBZflV1QLe*G`?Ba+^HI}BfGK8TUf?-%tQo5r zN+T2_0ahXqXt+simEFw(hNwRCc=82JDD--umri{DTMv}R)asKBtowjH1lVc!ODAst zowvpaS&J$?-=`Y-E=MiWt8?`w27mBkhV$^>L6(UDOIYWi+K-+KNh%Fc{`sh0o;vP< zuTyr7=xG?>*!l!!?1$*&uIPMMej>BT)BOwk6H8%h5s8*4?ECg485{?f96T}zxCaC+ z!7>bTep9?*ru%bluT28K+&JxvFXZMAh)2_4%4oH|k02;RBxYuncbJ&(GbLKj<(GFo z=6|%qB%58{Nz5;0@$-Firs=-1x>R#eK3^{4=sF{zeqbPd%G2v?Z|`bg{kZIf)j(hB z#lYSJ>n`HHJ0`W3z=t z&{Y5-aMfN?*ll|_Oq3e?fZMaHXIU=AHcW<^N#z0%CCJ0B@=}Yu0mlonhQ?jb%cvPk zL^HfCl9PB(XR2LcKcqq=G5v|)#E)sptBVtR*RdLRsuCORj`oOpZ9@)@o`?A>F71!f zR}hc7qEg{WnqP7P2YT`kaNV_6_aXu>m^CKMgX5|`h>$KDHZeX@tC5_Jp}aRC4-`nCeQDtX6Ts(Aya%jD3v$atonG~gK-wRT^ZA72RcJ4-!CXiLA?Z4Y{59@(ekG-7%JKaiSnW&4l|V1X-HgE9Hwi&Z$m^{0 zkR=8z1qnJvwH?>QxridN30CwksuicBDc5FiiNtu*y?8XY5(TVaFCg1EE#iW&89KyO zqCD>zwH%#MLK}>0<`@MQ$x@$pxDj%L+;{dELQ6%KNbEpZ;toW`jD}R{Ts@Xt4_s8XG7pJpCUqc< z*CAp>)R`G8A3-9QWfujdW3NLe(k~w+?o?uq>f#|8)UmOc^n+!py^$8`aZ5%rR#>@Y zn8WU~&*o$=`+vG*3)4J~4H$EI$Ay!lvp~p_o>;l-)N+*ZiFRaF6az z#f*T1Yha9O8gB<`Ge)j4oTjcz&`<|%xqdTd>^t`ji^NL*h0U)A6+9aiaO=&R6OwN^ z%T^fyPt&xVX9xU5Z~8RhOzUatWhK?f^@Jo+dvdXp$q`lx?2s8eSQnx z-gk-(EP)Xk6?747yAIDAJ{3HIJ&!#bgq>-rGEGffHfF2<{}iJ2RPa;%mjE~C+59=| z@Eq`Iu|5f?fV51>Dcf>3Mqx)!nkFRZ-E>TtyI>j4kAc+Da5Ax5gSEr-!J z_48D2@3+hTywX=@QAz#G@0d4{;nm6JI6YdRf13Dp7LhsM(0lC?2e}FrHEZF6+$ z`bOWRpi`U`YDFMM-rX`i)695d;F1yVI$P$*jB4(1VYo@5v$?slQ{B~y^{=koR=BQS z61O>74jU2}c6ty^Ifg3xd{R^@XeUkU0Xl1q3Vmeq(yB4=YB4-jxRHELus!VE*nZQD zN$GyvU3lV*{r>y6iA+lZbM9`4gBLs^Db(EU;R5x@%h`veJrp%Lrd5;8cWC@}Rkv9Rx zon|D)Drr7JJt85zCi+p4PtgRa;IOflt$>~(c)MXblXAIF1&bjHfle;7zi*i3rzLKt zH3bvif_L{_0U0Wbp+MD{s6ab;7$ySS~8-7=ZuI)cf# zAg~|eg%xg6(M7PVatRogPE{w{Xvz}A;@sObvKKcK>V$i0lVG~Y zW^jh_*)s#Ff~FuQaHN>eyVU8HlF7ZY>==(`p60@%=7JF>*V*52U=T6ocp;#!jQ+C& z+REU5ruFni$L2$dnS&CtyFR{9bv0mVrFwAmaqQd0getov)amibGOB_&VEpW@u_I-3 zlR(pb%9>tR!j~t%i?OXIEh{|n{E%m7kn44G#Lxc{{U3-{nYInCO_?RZUp!2|!C)HA z!j%xwEK_S6Of>5Ti9lRh-BiQLH%+|Hx>IxJHDkn56Amh$1T>=t%5f!9=4u=at&&J$ z02kdi;#X3thL*O`@c1|T`MXz^A7`c&cDYzfILg9wRFA6hkeOeX!#o%^_qn1eFT6a5 zuP-Lj8w$>J!^}wn!YmNP`s4RlOV~}Vu1jVM#pJttC{OFm8liu!)ipLRQrGKrVvypY zBrO(bNXgtGjzzWS8h&+}6ynC{33tm#6$W?sQeM#)O{cpe`^%WEl6J#-MSR(vt0uw5 zy<8!%$MG+=hq}^IHOY0&x_hjLovh=;ym=ZYnRa;KCDuPw}4Src&jv z#cNa|N@v?6m9vMHRDW4VZ5e(Je>wwjXX;kPBBVDo)ha?fLx& z+R|t1h~Su!07HO*W99@Ozv(B9*(HGyfy-Fh4qe|bYx znYpUW_mz3A>cu*`515K)%872errj;aWITN-ZxtjI+dxsiv(IX7-6_K&;d`q?MwBS4 z7G02}C6*uI?ncwbl0L_iOAk*_{~qFx9Xz38I-d6k9soQ)X zC5$X?vP?7F6;tnXX>a&?iw@hI-ZP@`p<>lsYqq^g3fH-h3dsaSlXvVwxpTY{fa8{l zP2WNut(zCZ;8Wdhv@j}z+}8SBLL_eZtm4Rx?aSAM8=uy)#h%!u>#YTq2pTbOeWx6% zsG=s-a4g3T_e1Oo>R0kKUg7C4cYNZ^g%F4JejQ>+6YCZ<%CfqYS;wvA@~WdiX3nodv#AC9{^`^>3q3@P5mh1fSQ_X>!1oh6 zcN3IJ+6+^guuSar^$rtD@SN6a#LIQH9OKGo6s*sSnRIm`Bw&)tbk1;$UF< zfnvn2Bvm{HO{QuE${~v$JCohYsW0h@c2_56Q~6E$@&3?uC&bjai9YBKNIY00no=O}7TNkiHrE?+P=O{S(&(5B zoH-OjSu=KvSi)}nQ{Qqaz!*LB1wd?%9*b9X!`;?Pgg}rTNT#81?5_%0IK6^|QfD*o z!A0tYp+@;D1hszUO!K`A|D&Pe1`S!Ajr6pWl;;*<+Y^YnEb^iC`P!AL-SS~}ArIpu zWA41YDHfXEf@AHbi|O7LTPI`wvtX|dE%XtISpk1#{SQ}-zd_@wZxMGuHstc{F70P7 zf0>U`1x~k>QYni`VFK)-vzoypzgjfqH;DEh6UX`=YpW)!QZFN z2w1-Z8kh7%t)y`9nIf2)su21E)Cx4Zz)qIE0nyc$f&sHJ`pTY{{ppS<0?50uso#6Z zrwhWIRcbn@A|3)~|GnR0n$N6H){1z52%}1OV72|H`@9{%5vS%+z>oN18Mw|qtNs_( zIx*jdwKBkkJ-nRVIx}S5KV*?7fShppi!3r#FyHm3uX5^>{mM}wNrT5Z0#WrlVmGS{ z&-XKqBd2hG|Gg8(p&F6Bt!S~$!8se9sRB(auOsk4_qTvyng?FZgQEPEbEzMX*>`y1 za+lYGR5kmhj%n1!vm`MmrvlZm*xma1pF$%lVrO1^TfIDe_2CPIz7)V7!qmO9X)`y( z>cZd)+^PeyJB^(6@gkRXac+rTy{Ed35*Y`9jz>8PLL;&7HmUK%mQ#8U9JGDuzqFw1WfJ^`D+ z@8ScX@>#<_;)ML)#E~UgsQZG1{2v1Akg^4h<)>HE1g#ecHpd8`y+%ynvqRWylpQQT zrd`Xde>k+=M9{Nre)uA##3|uBw7*AvEf3eR60C#mV-w;<1`06e}BjUrxpOP zI8Ywtc4)Kcv$%sX0a(c-tMbg8>C9z$jn!_8>H}xWv)P=V0wq`dHYLkpr!Q~O>;Pas zZz_j|g#`7jWKe)W@|EL8!cwrS@p?@za)*LY+-XuG08r*+ZD1{SE)H zQ*=(uO!avH^j!wG5aPbqcGScqd#%oWdn;*D^geoA49KsmO<~CHZ;7Yi(WRMcyLIlC zql`VmaGK9xC7hgOfdE=7o;wsJ-WJ#~$J161OGB|!~dbADWT;zs2I zzLa5d=#<$KcjFo}f+da1I*IZ_r128+B2$(3VQI{ReaIgt__t=BC>^UPXvv55&2^)V z(z<5|``;f)IvcIhHu|Q1V~4mrI=C8!RKJ7YUP1#^){B^7cYj#y|R(h zV?MLvj6IbfES}u&G|Cm=NZ)4PC@&Wks9i2OEL`MoZxLD@(y?H6*LloNa%P}F%8p6o z9M4a`1RMX;ilUNAVIl*aU4FavQhX1@gST(LbZzb zE=#+iLx-(+OUp|~r{V0~!t>Q7XphRe@j@tmM%2|Fj$2SlPM-2PM3h3$?mqK~HBvEe>OuyhOtW%IBFq7iR`k3vaRUoMqHjp z$ibnQ2zblBvg27hI4R7Ysh59k-^rEvGr}<;fU7^cBV%3P(+LP9bzaN1Gd4tlJxT=@`Hr(9R5JY#FnzzZbbtlwN5TT*FY8 z&8$#Q=feN|k27yK?0gfya9mfVBw-`s%=l;rNN+kD%-?!OWXjk2LO}hzaMX@Pe#HxM|rP@nPcUJ209f%0aTN?sGmQf`lvA_K6gYU8&c zdBptQLO#`%a$CM2ccZU_)Mp%CpXVSSrZKiq+0lq}pm zI=NX%wsH9+DNgSCJ9MmLBFBP`2r?{;gKedpr*fhF202es^D&i4lAj~u+I?Bp>n??? z=(~|956z^Sh%9&4pihW~0ELS;ZhKir0r{OU*R9iJ3iW#<4k+Wp4d|qEOc+k&s^_$cCy{ZYjrofQJE-* zrdHT1AAiq2P}$(@TCXr%SLty?5Wzu}=EVW2pYLmwwmE0VcbW*jb9u6ymyCaZc{Ap; zsAI87%zpS2R#g#_qS~DYJvw2Gelp%DSdk;;Q245_Q{Aeqx8un=IRJAPi$4U;3J;8? z!aJ@^1A@SOxc93+S<=T@$*q+?$cqA-f#vFx88h`@l`kjX`!sRbv!bAXjo~R0I|vD3 z5b%5lof(W_cp5cw4gidhpI)g|HBg(#Hm^N*lzY5$&bOmM;gU_up*7>s7Yu%)RPF~6 zC~1|1a7H#F3AJ%Q_lgO62Szy|;{IEGRkKz9DgjO zn#px}XChGBr((7aZ^i~^m|SnPizhSgZK*FRbsjs|#)@Q*`W;V6N-Dv;@uojqMC?Sj z`T@vKtN07={Z>EtCZX#AaZBzd=lx}aQ>)@Wu%Q!@Z!PivpDwxNk5Un z*-8%O_>s9n1H#1z(f|!}flRB9^G>ZM)|mz_0ydSckfb$7g%l~BQW zY#^oZlhA+IylL?EnlGW~zyy6JbBRo1m~Ol%+qR;51>cW@S&WSs&a*ih@Q&tmCMl3x5mU3@igmVZvm3T5~56aZy%<9=RK z`g+RP{CZTP2hL^ugE(RNR0Xpi1^Gtx4Bd7-(@qM%nu~S-UAwvM!%03|%e#}^;)K1! zqFoC3*!-0`DS%FBFW>RXL6&XDHByR*IgYHp>bp!rEW6VEB#ytj)8vV0AeJ$-L}iqM zRNttf>q6!63I^g%!t)b?DjYVM`c9JC%1;Wp&OS2AEtf)8IAB^59Mr_b({BR&>_)P@ zu%LJI5Nq~)^P92QiR6?oPmgep59ggfG`K4lGd3rACNkFWg#AHT879CcUbT0zCjwCzfy%r&6 zUytob&%dw|EXtB_^&U}udKiuR7jW?Ed$NbKvKQ0Qv~bfIHN4$<}fz0452udu)34S zIa<~&toPDq@)<(#3|aFbd^F&DhHN6m{al!nxNF-x$8d=kN8={;19_c*k(Jl4oQekI z3_bt-UAbqxa?5oexCQwUlU+)`cevES%Gv8havyXn z0#_8D6w}zLsW-{>$Hq0D8YNt>-S%Z)pue~ZZ|ElBvvaO72O9o)^m^}1pbLlR3~FTQ z7IvPW4LpYD>xPgk0^{X6#?xJ*vsKkVE9_E#Y(HF_R)bafiUapaC|4;)EOWTbMnlJI z9wqU7^K`l};H!KtA1q+G1=t2s5`HnKHYz1)svDCjKU$^Jirt#1q*8o%cEllod$p37 zP*gWQhXG)IFfl(;qVdp4kTK{42@n0{U1BBV?2YaEqj4tg4t}2)GS*(5LlFjAv#Wl| zq};39aptXAMJW5DdZc5ror;a&^TbWV{Vl?s2LL0-lWkxolknRq`!i~%k$`af?AYNz zUT;S$&y^)4@-!ua3{NS0q`{3KV*4GbRtM54?;%^UZFz-Vql}@o-$#W>+h}&COI0w{ z*~#AyA-&a(Yu`GwYL{)*APPl^WO52YzU+s1uJpt}A#coKl9*G1nEduh-A0TjkZOKYFKJ(RsQR>C1TU=;1aj=EylD4G`h=gmpO)a)CsCNL z_<8&KYUEP6Q-To$+v-sE)ylE)!nOSPmw>T#saOLiNu2*zO1FNQ)BRh8s}F z8xEaqrpJ@lZ5ebpf}UqilLQb?`bA3ky)XMJa*KOmktEICCv{HiysT^o5T%&khihQP3Onla$HH>er>%%>P50y}Z1n-FH2y+q1`_D_( zdoK71o*kJfzo0c@GOev5K#C4KLE;#4E=gy^GBF&4w?9uoV&=ESFskh0J3S0%r#XgN zk?*ye#yTV6pcx5&&wPjpHR#+5aHx&V(wK@7jMa)9T}b8f?CLu)r-Kb(r=Ksf=ugq z@JW*p1+}QAq%}cB>0=EDaQy!s|AWE*Uvy9;#puNI{CNbQNg!&DI#@1z21|hO$rWSGsO99u_Qik5T+eHAO0xgW2sr|N zY*8@jCY)WIy)Kwn;e{KFXP_&$On|j>4h#1R$WWC?+)HjbEWk^ATi4Q4i4HvWj8)A} zimhn;W-33qOY^DcJvB>8rVV5nltdghG~h!0Rjc*_B;;pTb`>wj0+u`QTA3l>LARgR zBl+c9YsyXfvCxN6wOH^NLh8Cu?^~z0 zJTaH|LZw2F%$w0`ErEf<*v^!*AmeJ_(rSIWD zZPWJ;91LndOZ{Y%$&YFOrxr`owH>d>4+TDn+=#0q6r+KS{PwRazr2Ws=xL*yxW zJm>@JV(?~yb9#FR0 z{P1rC|A!yj(gMBxmM23oGog3nhPCSFJa&OSk7z2RtWck{yE10v{tucXg?cRyvU?s! zEEIV}o4pB1*|ASwJQwam)p2)uFj8=8LHNKtL;1EXd9Ag9(u&?f;e1~4XU#HY_X9Cy zNoli1p7Q+6EBJ+u=(}h6`b7>>$M6M@KJMJ-RV>TFLolbR^ zDc&T$EX{eTwHx_Bx$*OtJU%tkeTYv$qBN~gn}{QNP(kf+3F#s&h0=>zgDj`9v+*}Q zh2wI$)V-MMha-p8-$lBAEM+F-bAb$QDaLKvl`lIAw7gT_a&o6yw9a@3izPBrD0z-K z-&IuDyO!z^tkB?80Gaw&Bo|LJwHeKSUw6GQ_ca~XO$Rkw@ok;f*bP85YTHprqJ7HY zDG+S=Es%~sr2rXj$q%6S8>RjV8}jZbC5}J3nuSbbeC59LSbDviTc+jiS&t9Qz^0Ea zJ&SaiJE&^q*0%&ZjgER};$r}$&X2^oz2`-J{;I71^|EXkWk3s|19hGzsx5Z7%PSZ( z%SIILZ^8>`=5#kd;bUI_E37_fzm_E&eda=2Im0bMl{@{CL(lLZhn-iw-DVB6*@61T zont&i9dZX5U6K25s zpwz$q9xZgon$i1Oo=rChPd$pFz;2yh_sUp^mdbz1IrNG5hPRs8vWF4{nKv9YmYLTp ziXhiLf6Tw|(`sb;^@33X3`OnCrU3iuw(h>}@6-?qi@ z+7661doyc5qXWvvI&rPl-EScSMxBlK{Wf*FtxJK4twwszOa}r$|(_2VYbu38fv8|6bWmr!MlQF z%Y32*+jSHbC}NY)o^p-U9Y&Ot$;8OUlK!BX=C>hmGzww*~yyZg*m z;|c7!bzDWC-3z1l2VSGLxtkcx`8tDz?zQ_5jQ>if039$WH*7zIycX_*$EAcEGW8aCDFl>IC>i!5Fa4+}caykkBzYh1PiONwtiHkLcJ|aWEQ%ty;pkmlY-DME&U7U zQmkioB4H?IG*3aPOk*TjL*c;2yeD_>YB0$l^XW8Ogh&S4;xh ziUzLZtY$Fc0xgNNmC4x!MQxEruV{NWiJyk6I%=vue|^g1R87)8F5jQ-UFw4TT&cR| zLEBx6MRWnQv4_bgli3&4cHNDPX%wX&Y@kfqb?^X~w}O)H!}q~$J(z^b{ydwK_83&8 zrW2EP{(Gp?tPK?U7@bl>Xl=tB)+K6p3t!bZxROurcS6BW#%1bl7-zW?ujwaLR;1>H$Og`OUTz$Dh^Q63DsrE z9ygDrwHVjHghzV#2wkbQ{hS-BVVolAignEKPBy zdMCseHATJcmF;~Y{#Wd++F=7)o@G8% zXUn#`Ȫ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 Date: Thu, 14 Nov 2024 22:41:44 +0800 Subject: [PATCH 3/6] add link in readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a13ba57e..8c75feb9 100644 --- a/README.md +++ b/README.md @@ -54,10 +54,11 @@ python -m llumnix.entrypoints.vllm.api_server \ During the serving deployment execution, Llumnix will automatically configure itself and serve as the request scheduling layer on top of the multiple vLLM engine instances. Visit our [documentation](./docs/) to get started: -- [QuickStart](./docs/Quickstart.md) +- [Quick Start](./docs/Quickstart.md) - [Supported Models](./docs/Supported_Models.md) - [Fault Tolerance](./docs/Fault_Tolerance.md) - [Simulator](./docs/Simulator.md) +- [Prefill-decoding Disaggregation](./docs/Prefill-decoding_Disaggregation.md) ## Performance We evaluate the performance of the KV-cache-aware load-balancing scheduler and migration mechanism of Llumnix with 16 Llama2-7B/Qwen1.5-7B instances, each using an A10 GPU (24GB). From 298dfa4f1dee6a3f5704dae71a20281f6a061e5d Mon Sep 17 00:00:00 2001 From: Hanyu Zhao Date: Wed, 4 Dec 2024 14:15:17 +0800 Subject: [PATCH 4/6] explain failover --- docs/Prefill-decoding_Disaggregation.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/Prefill-decoding_Disaggregation.md b/docs/Prefill-decoding_Disaggregation.md index 1cdc402b..24be089f 100644 --- a/docs/Prefill-decoding_Disaggregation.md +++ b/docs/Prefill-decoding_Disaggregation.md @@ -1,8 +1,8 @@ # Prefill-decoding Disaggregation (Experimental) -Prefill-decoding disaggregation is a technique that computes the prefill and decoding phases on separate instances, designed for reducing the inteference between the two phases and better utilizing heterogeneous hardware. For each request, following the prefill phase, the system migrates the generated key-value (KV) cache to the decoding instance and continues the computation. +Prefill-decoding disaggregation is a technique that computes the prefill and decoding phases on separate instances, designed mainly for reducing the inteference between the two phases and better utilizing heterogeneous hardware. For each request, following the prefill phase, the system migrates the generated key-value (KV) cache to the decoding instance and continues the computation. -We find Llumnix well-suited for implementing P-D disaggregation, because this technique is inherently a special request scheduling policy and fits well in Llumnix's modeling for request scheduling. Specifically, P-D disaggregation can be decomposed into two rules (shown as below): (1) a special dispatching rule, i.e., P-instances-only; and (2) a special migration rule, i.e., migrate to D instances after one step. Llumnix provides an implementation of P-D disaggregation following this principle. +We find Llumnix well-suited for implementing P-D disaggregation, because this technique is inherently a special request scheduling policy and fits well in Llumnix's modeling for request scheduling. Specifically, P-D disaggregation can be decomposed into two rules (shown below): (1) a special dispatching rule, i.e., P-instances-only; and (2) a special migration rule, i.e., migrate to D instances after one step. Llumnix provides an implementation of P-D disaggregation following this principle.
@@ -35,14 +35,15 @@ Currently P-D disaggregation is an experimental feature, mainly to demonstrate t 1. Per-layer KV cache transfer (currently we use a simple blocking transfer); 2. Explicit or automatic assignment of P/D instances (currently we only allow users to specify the instance numbers, with simple assignment rules); -3. Heterogeneous instances, e.g., different device types, sizes, or parallelisms; -4. Fine tuning of the scheduling policies. +3. Smarter fault tolerance (currently, due to the simple P/D assignment, if one of the instance types has all of its instances gone, the service will hang; we will implement better P/D assignment and fault tolerance strategies to ensure high availability); +4. Heterogeneous instances, e.g., different device types, sizes, or parallelisms; +5. Fine tuning of the scheduling policies. We are actively working on these items. Stay tuned :) ## How to use -Llumnix only uses two arguments to enable prefill-decoding disaggregation for simplicity. +Llumnix uses two simple arguments to enable prefill-decoding disaggregation in the current version. - `--enable-pd-disagg True` is used to enable prefill-decoding disaggregation. -- `--num-available-dispatch-instances` is used to configure the number of prefill instances. +- `--num-available-dispatch-instances` is used to configure the initial number of prefill instances. -Note that `num-available-dispatch-instances` < `initial_instance-num` especially when `--enable-scaling` is not set, as it determines the number of decoding instances. \ No newline at end of file +Note that one should make sure that `num-available-dispatch-instances` is smaller than `initial_instance-num` (especially when `--enable-scaling` is not set), otherwise there would be no instances for decoding. \ No newline at end of file From c37fa99e97f0dcaf3f2fbc5e5acfa90825bbb907 Mon Sep 17 00:00:00 2001 From: Hanyu Zhao Date: Wed, 4 Dec 2024 14:28:46 +0800 Subject: [PATCH 5/6] fix typo --- docs/Prefill-decoding_Disaggregation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Prefill-decoding_Disaggregation.md b/docs/Prefill-decoding_Disaggregation.md index 24be089f..0a8f2768 100644 --- a/docs/Prefill-decoding_Disaggregation.md +++ b/docs/Prefill-decoding_Disaggregation.md @@ -46,4 +46,4 @@ Llumnix uses two simple arguments to enable prefill-decoding disaggregation in t - `--enable-pd-disagg True` is used to enable prefill-decoding disaggregation. - `--num-available-dispatch-instances` is used to configure the initial number of prefill instances. -Note that one should make sure that `num-available-dispatch-instances` is smaller than `initial_instance-num` (especially when `--enable-scaling` is not set), otherwise there would be no instances for decoding. \ No newline at end of file +Note that one should make sure that `num-available-dispatch-instances` is smaller than `initial_instances` (especially when `--enable-scaling` is not set), otherwise there would be no instances for decoding. \ No newline at end of file From 18ad118b7f6b452c86425385eddd7ba95a21c7da Mon Sep 17 00:00:00 2001 From: Hanyu Zhao Date: Thu, 5 Dec 2024 15:12:05 +0800 Subject: [PATCH 6/6] update figure names --- docs/Prefill-decoding_Disaggregation.md | 4 ++-- docs/{pdd_2.png => pdd_design.png} | Bin docs/{pdd_1.png => pdd_rationale.png} | Bin 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/{pdd_2.png => pdd_design.png} (100%) rename docs/{pdd_1.png => pdd_rationale.png} (100%) diff --git a/docs/Prefill-decoding_Disaggregation.md b/docs/Prefill-decoding_Disaggregation.md index 0a8f2768..e6471653 100644 --- a/docs/Prefill-decoding_Disaggregation.md +++ b/docs/Prefill-decoding_Disaggregation.md @@ -5,7 +5,7 @@ Prefill-decoding disaggregation is a technique that computes the prefill and dec We find Llumnix well-suited for implementing P-D disaggregation, because this technique is inherently a special request scheduling policy and fits well in Llumnix's modeling for request scheduling. Specifically, P-D disaggregation can be decomposed into two rules (shown below): (1) a special dispatching rule, i.e., P-instances-only; and (2) a special migration rule, i.e., migrate to D instances after one step. Llumnix provides an implementation of P-D disaggregation following this principle.
- +
## Benefits @@ -17,7 +17,7 @@ Implementing P-D disaggregation in Llumnix has the following benefits. 3. **Seamlessly integrates with Llumnix's native scheduling capabilities**. In the P-D disaggregation scheme, we still have scheduling decisions to make: which P instance to dispatch, which D instance to migrate. Llumnix's scheduling policies are readily available for them. Moreover, the migration between D instances is still helpful, e.g., for load balancing. The graph below shows the three scheduling behaviors and how Llumnix combines them.
- +
## Supported Features diff --git a/docs/pdd_2.png b/docs/pdd_design.png similarity index 100% rename from docs/pdd_2.png rename to docs/pdd_design.png diff --git a/docs/pdd_1.png b/docs/pdd_rationale.png similarity index 100% rename from docs/pdd_1.png rename to docs/pdd_rationale.png