From d2828fb1f8be083f43a92b95fac2df1cb8079d1c Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 10:57:34 +0800 Subject: [PATCH 01/13] =?UTF-8?q?docs(report):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=AE=AD=E7=BB=83=E5=89=8D=E5=90=8E=E7=9A=84=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新了报告中的训练前和训练后的对比图片,以更准确地反映模型效果 --- report/pic/after_train.png | Bin 57328 -> 47051 bytes report/pic/before_train.png | Bin 74509 -> 58759 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/report/pic/after_train.png b/report/pic/after_train.png index a6cc1631b5102b8a08a0c4f686dc40fcc618e974..955ae1361139655ca99fb863d0643c6f276e786c 100644 GIT binary patch literal 47051 zcmc$__dA>K8$Pa!PP$Z4v=p@~YOku=tEj!&5-WBPv0E=yyD^g5t(DrfSI|}wVw8|r z32Hg^kU7S4f9v|cb&4n82C4KBK<8K^NZR3~3MdVA??e8orG3e3R3 z-1)!fT#xs6CkBSbH##rXUI*E)60U^a-8nwpWO0#ue3kKKtX34;n@e@9bsTj!>locx zPflLGW-f~~f4;cEp!8fMCT=|LwR{~f?t|93syD1kR~v-u&fEVHd6Ieg_Mp!RNlLMn zp3}SP42E5YDnt9D2)*m84`wo;Ly&eUQ&5M-*=!@}I?7_>Xap^(=f- z3p$(YbJv^p=NK4na{OPWMkl>}?Jf93oZjJmQ|3{iV|oUlz^H{LZb?Kv8adsxCE3Yl zY#eHnS5akyaaXTB_FmJqYX7G$zYXCl>X97e(e0HwuApPGJGNmj!J_3f5$#_!?0|sY zLv)rxj?+)Bi4lb@aUBqljM}LY;Zs*=@Deu|$<&UcA>K7qrD;gq)9r@l6nbKs@`Ter z$QJjG%D$Y;9y7OYTz}ZZGyHPI1S7Ya&nr}##VZt$y=PY98ov;>`%Uzi#M=u}*41=D z%11oOk(L;Q9p&x8#M$}#Q`I^&R=roQi0M)`6*Wc%ZIT@$Xv0 z>=7*i+ev{fh0^D66@Y=C%reD1McV(ff9%O;dG58vt=1478+rh+8gBFJ-UP725GG(y zu_N*QXr*P(uw@&)H2}K-;&&-B1c{J?)UqNE(gow!>G7fA9`1W8`G8`Q$a&gxS`-l8?-S*#i$4iyP z>219%aG%N4>hL7nk${?VUt-@Smfq45!gOGC_QwLKM|P&#hB7m6hi!!8;`xB*PG zW$qdK9CwM8!gTfPT(W6j&ID1cW@}>8j~*7!zjzqEHC@j>$W!hx{`#TKu7dXiMcHy# zJ+%9FeIJ^MO42QSww{J!vCts~Qh>LaUZ~-eMoh&smbf2SC2>6-YE!7&e&kBO&3=e^ zyOk+@BGeO@@+h?!GrN0Euh=y@fvWIo>7E=Fdx)0O>(P#hySh0XnU-zN)ndgYJD61n zZ43blW0;2&e24uHg5EhV1ia4eZ{H8iaE&NTObGXEzy66^E^Gc4N=*8K@yL1gIzYsb zs(7VXjlVw&`}Vu{g}@oHq3J2T5yHET?kDn4^gD`1_S(sA7ht>2cq{W*K(9FTsaf!T zsD+GB~id zz?h>9=f+xK(rCO@@1K^*%#F28e-At57! z4{B~s4c#-z0J}M<{JBvT0$v;@Dg#S*kadQ~i%Fa6{FE=O#2oj}t1%1nbR(I-Per%r zVcv;8p;q$_i66VSKH~GcI*X16s<+3(R+s>5AAT+igXw{=O{$_d#i_URG*{TFNXd0` z9JJPCRKHZgDUNy8&kJ%1Dz2CEXF-n?Qm2amyW40*Fv%>~_q>`;djs?37EY#%BQFnC zs%^Ui{fGj+wH_50O0QH6rQ`~Abv9WayGpQcr)Ak!Y=vW9WQ_2QLD}vo{}q)<@^#JN zXwht$I48tT1_Ygy0gmpHJV%7(QTIeswUA=f@5+SJq^lOt93k`Amy`B??Itx{%yLB| z0;6fo{^U?M{TJq}c6?+OzdN^XDadMVD5yUm8 ziHmET|Dy4L0sIq)omff$wVl6t_aX^XmMVzm6^wv19X@J4B*E~;gC~;BGf5Dia}O-X z1W<7ABC+>XOW$~9w8Mc{t3oW$`%+AO)2_i{Q_S|4nB+u86DZ8$DbMG%pr_$bg? zR_#Vb&*UY5Gf|k7Xf($GT}!X;KBvz~4p*}g;%-L8<(!DvimDGi0ODUwjs*86;Md{e zIRCUN6x)myzXc~Sxn>p=&=IS>Rjs3n!Qww7FkxqKa`CT>3Qj~gT+6N8I zATHr%!vmk5fPp9yhF^-;SZO_Qvg4$VT{xb^l9DFBXa(W@5RT1`Sen5!^7uCvI9CMU z&fbDed*87)R=#O3^2y~w`jhhgg|^z~a8CJ$J87b1?y~c-oimzZYLPV0G;HM;5$|O3 zY!=g?=1|AEWSmLR)Wg=R*R~4(maK|6{CJ`s)E4n=yYi0wz*_`&>C$1flzayc{eQHBff&kN7(I_It{ z3da^rK~33jM;{`s7Ek!grjg=VZw9co?EN5CMd1m(q0LO!n zx4T3;?3;kd$6PHjXNO{i`4V-T9hq<1S?Jxd*ILp$t=7xtKG#6fBMLMwDcW$`E9=zg z5}Y0>%}ECruSV1^e#{sI0C37f3eeyP=zd=kjH7*2qv&c?bXl>^DaHkzxvZ99#%y16 z-dz=WJ?*}I*Aof1kz;uE2-aipZFV}1yUAvz!|j`XrIfJwJjF1k0ByaLMTn}^EE&m% zwRVSq6qV_WT7Ws}=CJp@1aq_JK?ZKTWVaYidn!Q`$~nE{`JcsWma~FhiPp2pH`p*o z6I@z7(-KTyURgK}h_sdIR3>Een-aP2v@+-ziLtZ&yt`QW8JO2SnaOxCTh-~*5E5(& zS#{LxJ0OA$xSgMtCj9uvIuW^j1Teo~-n1kQUE_1fOkgNR9sp*joE1=?j;!=~mMTXe ze!$AF^PS86;FVRNBOj2_54mQ&dE-ZO!Bd$&4V^o2SiWSR#p~G&X$R=G82Gr@7AJ&-p|YuPy+-B633K91 zw_=ZV_izKdVTLb}e~8WAsJd_XXrZ&rif?^_`@xh>Fl6N07dD6VssT`%RYRg5&;8tV zt0mpbRb3xI+y3p6>-^F9a{ky0t@2(=N^TiK1=PI986r%7ewUGIiEhst#fVT&x=k!4 zQCd|qPtHn!@xRFt$;=z8$FH1;t1`dhrIEA;wil!EL74KpQ&+wMqW^uUa7ucv%t--I zmENJ|iqk|^&t0t|GH~=08Fmlkf`{Y9=#QY4YXyEf+pQB@8x9=kHN5zz+;*>!_#I_Z z{-tyza%df_;_W?-GPu|>bNXH%Gq~qf7h{Nc8?w~9CWS*E7DfW`$VZuknVlSqfYRbiq4rrQDgU(?0nNt{D~url6DsGGt!DthbJC z8~J8UY1G;|-RVWIKCUPL);!0dYD{>G1cXms5*9!WDtd>RFwy!< z-~a2&c{IUh7+)vpC9RzsqU<;9^mpqKidX-|EqlGHxK2uIYEc$6ZWuh-^)5H%N}cId z*}K}`IAzS-GYe&XjSijBk%CA)goW;;RhLZmt`IfD9E~~*WS2%yK2ZjSTafTUZpVF2 z?9YO8%N2i3mh8KS_9xmoeIZ)ow7+cOp35XO95#0{@P!Vx}_*M=#tYNA(w+gSQP7jt)+z{s6@ z`0BTpN8o0TLApF<@=3=@>99cx_Y$*AQH*}jz)@=zJ&Sd#f7ad8k4d$9bid!9Jf&Os z>x$I~eZ<}z!S6YcsZ?>JmcEy=F8GqyYKn6DsEk-E^HE*OvGL2MHf;M^H~QZmyl<*D zE(R8m*Ddq4B=FN<`q;2NIfdJY%ka>wz-gm;FssTL{iQ=QU+Y(Vtz-R9w(FmAapHY; zkL0UFbt-MJngS6&tW{2e>P6YzRzv+`Tz9Z1JP}8w2}vCeaq_-DlpOm{T^OMqX^n4c z1e@IHMD)h|ks&4F9gX@tjuC&M{QEAy9XG{K)`Mx;bs z$%{Jc$U!~5DM!afUem0``%Fl)x}&T-*^vqEq_lNsvyz6fIy%eeK*K6OCp};iS!MQE}8m7q7q=3&VZiU-zT~{j+&X(_k$`hK(sshl z>9vZSe)d7i@EOf!>%Hf=?>2BOcq)C@T&i+-gyr!!N|1rI zhrP3)kUAu-yzZ-r_IlNb#uHeDlFo}X$w^@PIcD56!S5BU07olMw|zt98*?NGE%2IF zv0q&;f~{M=KEE1j_f5POo|AncJ97PlOgA~a&CcYfOLirAI&+iPs?j4UVVPhxnMW`^ z*?8yi?b#DsK@2$O6{7a}y+Z`P4_H&~6JOq+!FNZCB@Gra)EEMhlMs=y4{6kXKWzJA zL_vpiCmVmS0ve#MUX#<n=xqqdEjc+yDZ^Ix6z?e1-&a7=6mMZ(r zoTKvr>il7AedBgYwhkog7(&uxql-cJS??^VdD)0Wwj9qB_nM9G=;-OC)~$hn(Xchs z@>$THcP8&io2BT6W{V4Bmx=eYZ3V)EnW#|QK=#d6YIQwfWvbKekhqm;BKT&e*)J)9 zT~>TV`NxxupSQm2N|#MMcUwRILXwp3#xxKHI{XqBM#Pet5qj zKBtyG9qov0!>-9M77H(rw)J8?9uB&ZzhXae1C_XzGgLhpduO-Vx4zq)bCF@$OhiEQ z-U5lg(US%}>xu5ubeVd$JFRWs%jn18qWSr-Hej_9^67D->b090$<4%?1-FK3^WwlY zv1A1%-L572uB}yje;C8dP-2K#*>!Rl^(j5jB^EkW9=tyCb;U`0#>xmYZfFpS`2$g1 zWq8llqLHQH2|wDg$(LSnw(&B;X1Pk0TxWl(VhT?bTMV-=7+}iY>-L=eMtgA@R+O)dmfCQ;T=i18hlM(zRk)Cy<>1e8X`veT!6ysX; zgv*O}^})K1y#CJEolM0SsEWXh98MI5ALAgz|6Di=#41DL-veESX^>)ueSS98W6 zr#&`I_p*FM%d`9Zn(bPpdwe;Re;<6})qLF4#gG%+ySOgozjLDQH^bQla=3O+pLWqA z%;fLS@{48{&lueYWN1%Uog)ceS+IW1IWPPFTar6 z2%UMpSJ%s@-k)bd(E#@(P*I-Jxmje7$}FZ-|JmEiX3{ZG*f9(6w&~G`L%uIAtjXb#cKqMKESX^ zB(CdAZ&X=2r%jE57i{;6PXYkIz7_4%gbpW8J*)!y{vvdNa?k3p$yD)m=K6%CkEP1| zxBq@gmp+`izjwDcZ1BO-!m=mqH4$UFdXn6NWGvspPE;P~PZ!DVR`jHZC}uH6;HEOz zY%0=`OZ&y>s}W$P-OrNV`|~v246Yz^K3vy&(>os!4|VNrIVi_z^|zdXxA>QZ?L6_Y zp%p%<>>*L#yy@NHzW*?92-(Kfv!!fai9AAn2yoyNFT93%Vb9>9D-?tEq*+jSe@&$L z>N`=e2Z0sM*^dcpkXTmFIBAX8`uN6W$996V@KVNycQ|W$tmT0z6nxmnt}LiMh*z7z z#*^L+6u~QF#X5gWd$Svq;50EV!}QdmA)W;KKkK&iKlV`0B2Gf~d~QcWU)A_iWs}0r zF;n1lx@VC_$}i7@|HJ|RSV;zTjFQcn8|!;Rh@|8_=5k+4w;Owad9qgE4Z9CL(ZQg_ z+YY0PC6XJX!H4eliNN^-Lmf7cFeM#@%1l1K7z21w%Y|pTKkpc~Wa57!r_=tR@`{W6 zrK{REMQ)tdS)!z?%s*$$XgX&#-jW&=4njBzW^C+=k}D#f{OCKJFtEEpBu1ws)5j8>DHX20Mkmv7n&8+3Lw^F|I zuS$khZco=5-XlI8Br+~H_^%pWcuYS>Fmgg~Anx_eE-O5+rBm{fNQMq3TaLa))yx7* zR_~_{GUaFD%E|IQnYlj~Qzx|!b7hT|g5B-gq)#^4T{z>*qtZDU(Lu^VfCe*SrdeB) zn0m|1Go6o$dx6B}Fyu4W1+Po(v(HPprK^@MF$Df^`4SS^+dJ5(N^F<4lM*(L zkJlkNs%GCtuQ7IszcIlvAMLinHDsKE-B(%Kx!kh80U9ihW=jpOb00dQW=rFo7W*G< z{f$f0&MJM}BA^zcQ=4OXeuuNG>Ue!40-*;Y)$4XV6!G#I`>|M(uGkinJ%iH5ReTXN z^}a9OEqxiT)EiJ{@_Hl$8r4wd4>BkpG%fgtrjt#y~^KqxHy)Z z{`dIzL>7~Lafgyc=Cx5_>m0)o%2mF?HdU=$Kge_j>3+R~h|@%zw!V<{CLC!8aW0l< z@^TPx{Mh_!EY1!=6j#?hZW{YzKA2&y)a3rRH11&EI0?BcvywgmP$f=ezq{(RUKcrA zN@+OGe-7_J{oW4&yRrEkM^4no)1E)8xRJg%C}igvOD4}DDJgM zA7W-G1T-5;?&aZ-t&n`X>s7`F_6vo$of-#>fRtHcIL+C2qh`?iWXyl?P!%g8s18@H-2`*$*;K%Ap-& zVl~iI+Q`3-tEl{CWsp|ZT*;g2>F{Lmtg&wE)eDA0h*4H}5aMrP`sj6Jp@7__nFAwl z8=9cVl3}x}0NPg(y}=zPyjab4Wi>$6xk28SZ@&&J7%FMR2C1aygXso%-%)P1D#%ij+ zQ2C(uNlJE46t(y(au=zZ`?`}+DA+MYX(4w>wvn@gLnNZ*_f>B5rxE1$+}*!kZbpSh zuqj`g$0~$GZu>Myy0ICgygiv3o-~LY;cb+p_qkQ3r-~@9sWzl+&#$t5ysP6mi_Q2W_79~%aaWqftQ+<%IMGYgn|W#0A@5op~}cj#8db3+vw(I;%xc0sO}r7OO3V6 z?m5YaPx017fEx&HX=j75{S!bx~qb{5AEG0B#J zZjDbh$fp}pYId;|v5~sw%D+KBS%>WmH;VId8N`l|7SVa*Y%) zo@ga}pSh^t@e6G8eS7Jh#bAB2E#rNbZ%>YTc#-C{QBIjm{-?IWn0R>a3!0LvIov6O zZRRdYpjMfpUfJK_nWmpz``r9u!!=R989Bi;xKPxErSwKAuTCeSaEl~4mCU!%XH;Y5 znTaMR#q5_UPR-^vQU%vO&#iAY6(uTlc?`kaD4yOZ=*;n}KHJ(ElV-uzH+}-a+}XRw z;}x7o#_hhXye>aXo`dmP?ft1ti5O~MBrt6eXEb#Y#e-Vq>PNJYi!+l#FL!A7p7Uv>?3 z;W;bWhvMNamOCTF2izLt$3JXP8P51_i0@lGkx45#gCW~vVj>T4@&%s6w~MpuYaaP_X^rL7g-g5nY^zhAr8=#(vQ z7y;NMtL5A>=e))-)WuEi-bjT{nz#I!Pz!p1btul*ORF!Z55?f>7W))v++PLF4cEMP zUOhZ;PK0ismlyG{b$Z>w-WWy6cC-CE7Sy(I5|$w<^y6)= zk#$vvOWrB9MQpCUZ}rm5`tpUqG~DX*UE84kRH`h#aV9L{egEJ={Ph*?o7`)aRr<2H zYX{rL&HV>9yIo<6HK+0Zi0y}lVIFetaqCF7o{E=iziQ-9lg*i=riRhSwFD( zeXT1pN^i$a=0~G8t_`3jE?--FJu{WF0tO1}^3Mp=DfRF*e>D_f*X@?1E)o2CY5ACe zi;~MFKp0#Wn$NSLgqfHHyb@FowsSbzOuc3PkjH!Nm7ZKtk;!CTwakj!2*foTo2PS~ zk6o{)KJ`q<@Zj-v*~6B77DN~9=CE$@tG0MHb{CD8{5)^vPk(B4*PwF3Z%B2CW9Kd00ys0y%N3aDB=u&F+YdCX zmpmF7uvAm_{1J+jKeYLVU-~H1wzAbg^y_w02I?p6)rF={)R{Q5ka=A!74v5$N6La) z(O=y#kE;qVkR5IGvdWDCqH`acQWK=Soa{{4{7tuTJp!dgpCr6@pR(Ulo~meUVi&P9 z!2*BYFEH=D%8{CnB*r_Hu<8~}d{3&!_SOa33>xe&k}|5}QSHIj_sY?!77ovLTRZ_p zwHZ-LY?(mxCa~#wfgI@QwC>e*gX#rC2^*VtZKls(4VeG-3T~jSZHXK`5e(er{R+;* zbGx=m8x1&f7$idfe$U!|h8dbPtFgxTSTm7*jRoC2Wk2uQCE$f@25-p4>2(CRqxP1{ zY8Jdr`CN?3pBJlrYpyrcs!PXpcU~=xJ}=TQFQMnegg*!9rWM|xJoitSTEbqH=L;Kn z4NpuBS6}LF37U$Q;VJ@W{Q~@)IT@{{)dpddduj;-A%e?NF!A*Y1`&;x?REu2QzkGW z(7S7AVRknDIi)UL#@WChnS}e+Fhq>(OsdOG4m>v>TsQ&iUQXOe4khfKzc1?L2~oK)dma&qSMtdOX!H=Qzfau`;RqDE>v;cSpTpt^Eo`B)_;{FiFw!fI1-lX^fltbQW@ExBNV0Y zvyRCK91dcKLtpS8Tl*JkdEG=OMmx*~At8X|?-u`XV}|Qqwi#7U@>2nFqF~W^!C|vEpF-`&{`$P(@B2 z&7^+dDJdw<$$2k@nJqDm{Tc#Ox_5TedUCM6bKA<*J^`YJ7=N#yM*H()XxsN!Ja9K` z-l_jaSdondg<;26klT9k$2<&%n5+zpoG_no>s)PcNz5khG-xG?7)8_u-7lF@3WU9T zMGA9Axbv;W-4+#>X^TWC4bW6+5Vm&&GPa>X31UAtcMe%aU96OW!lV=%i z`i&yV}-LFljF=*rsq^jW#!JW0$od*q3>+o~Vo9?jail)ir zr~8j~Q*eC=GDx_l`w!c!l;|Vf~>S5?kAf z(Ba~n_Ch0bEjlBuvya#vJuH=0p1~TF88M$lLbR8J+;FmSB7szc`B>wkTR}sk`C{gm z-EaH2oTCvx1$XVe>J{7lufks_2omkFKH58V_aB9|W;E`OU6LeY<_32Pdsryp@chVSC_vn!uZ^YDj!}wv_J4 z#!rCIhFE-Ef9ql_x$S)BHP7nqsu=0;lMD8gpF@-8hMW@vLC@9nf78obu3GesKDw|t zyq6=Es#5%#=lQ#28>f9KFS2>k1?d@OD5k{@Ky_TbUU2YlZiLv}5wJ&B{p@!5^coE; zg!|=g3=5b|5fj3ldsV&ryFElYWF3*?oGw^q+i2sVQqq5jB1Y_DQ`T9zBNSZ$nCyeS zpks^&RyQML#xi63UAa*1NYBJzv!ubjyEZCqkG+2{j+_dC9SYO0s{==O!cbG7uUE|q zdOBAwsqOHKiEZ}HO$_;OSI^4xdvT$h7>9Z+Ci|0Yd!PWYqq0xJhrQ_7QEb#P` zpz$GR?OkdyzXwZ3=CBT6hnVA1zr(f4U!W}`>n_nI)rcOYg<)$u~%X9_*`W2N$^PD|SL`lkP&7fUwYw{U;e*Z4ASr-Z-_@IH(`p zmGp>BMF^RkM#|OyJE;64_I;=P53T^m2qVQme^{=d(~FXgQa7c*3AGAtIF!TVc_-A~ zH->vu1#DfQz>eZ^y!@ zYVn>M2n~!=zr4Crd+i#_p)Fv}Z0LT%V4MYlqueaUYXm3Eq|uC7AhV|eOC{=7cJ8$y z2jN$&tWPdDRT7ssBU%zvhWKcwCCNxdqW z0l`c~2z8NjfAa(Kv#h|B)RafcUhER{;%hgXS@KJs82PPpiZ`le&AzBL)$IG%0fhvn z^VsWsv9L;Y8tYtJBm=}dUGIlPWI7r3r6+Z)Jhn6R5Z}QX!2`uO#}&!X_F&b`IKxtx z1^3xc&&Z09k_3ZITx9SlnP19$hO0u&z`c1YVS|Gzq|M!JT4fr(9zK2z2Ue8wB6xCXo6O?^^rNNbT?7yUmxov(Z15xkwHkZXr-`sZnXZo@4 zUvpGpz3;SxD2kZ#NH6a&zTbW$Q*>yDY3MH52NMeIZk`Pw)T$TGH2wS4bu#@W0-csW zSN+!F_K?zEG~T7sh7WJeB)j`hGItcQ?-n(9ZYYovNopT&g5({(*T-I47~QR}@l)p{ zzZv-WuG0^bu=x!AKTqTsvrjBbi!!COQxv@U8)UWYohb5v*Ck>1*@quR*?%31mEDL* zqP_z`-ws}@vABd}t$Hp+>b?qFmwBZznZr$5VMOHGw-h~FOA{?2I8DC<#Vnu_b}%`%&on5RD zL0k$fI4QdfVyR7i!c~BUizD`QOIh8>^>NdKZetzx>0MHSR=~O2C8xt9X{3fj=F?t-8t6Q4hnYmBO#TCr0RM* zPCp%#d*lUv2Nm1fA-a}(-!8nvYd$Nb_RrsSBSf^I_6`Xn6B!nVkssX<#X7;K6M%VM zm)|CI^rBUF0_g6QN)AnjkU`FqmORp`ph=AUP0kGnn-$ZC;^w5ucdWzMHswEgY(S<9ef zJ3&>%-a?m!>dMInvwhWox$cXe*6~-J4ovSj_19_B&NqI1<=reDpaZaYlAhy|%LbD9 ztB13i!c75DC?^AieBMrVJx!{+Z@C{W<9A?}Q*?UD7&7#l+@&qMmr~NBBCO|?kSDt4 z**}1jaSq|hpjAl@KYW135+~mBe6@UgF!Jx0jQv0vQWUOMc#yvHFAQW8W>e`zkkkA~ zQ4c-e({|T0rNF=du7~IlMO5>T9x$X=a75#yUcIdpJykGM=x#=r*2T%()iyqJBe!Ze zD?W1}*}-Q-_g!N{mvbRT)Q48MCJP(fkzK8F!Rv4MBH8_@&5yC9L&mL38_&O2F( zL#4}SS1K4T-}o(Z7G6YcoL#nv{QL0#OFjF4os#?X8+7LXZpujr>V$%91o#ZO`So%j zdRk1!Z8_Nw#>soz)HdKQ9;elj%ZIR4>N#XZ&v~ASdo6Qot)EIa|P82nz9tn3U4O0&gb~X9fb&rVi4Hjks zuQ6Q*i5#_UdjlaM+?Nt-C3(blQJ44iU$N11cWg8d#G&_3)?T|cX5Gs5wBp6p^|U+G z_Ptj&$n`Y(yKR}{-4Z~&N7qMHmQOVtGbMWO4jtM}9m}3#gAc}5kJ<7@15b5gTV@6t z+HY+R%(v}290e`pw5zy{n$UMnj`j9tLQSfUYujt=SDqHk#2%S%_*A^Tv@6>|xo$d> z(XlrK>n3eCYOP0L!|k|2>m&AfY*uG>-tTO+YVEQSrg?q$dbD<_v7x@Fxm_+)3F`+L zZ|FPy5B~RWc{+p;x_d&Hv62Y*(hcE_;6z0<(!{s2y6G&8oSl;7AcfAlpm3v(JI6O> zHp-^oi+1#h#o%04PrRT~#1Iu8+R_us-j1x&;@FVQU|Dujnc^VsRN=-h%3Q%apVmK= z%?#nbbmfcvam804+h2{IuHp{IZ9Ta>y*G%Wak(sDk@e*+zu~tRPmgB_M0$6RouLY= zS?=mV%IG$oWa>0Ajwwl-G7tj|`%0APk7MocVBSkr`WCB0i@WAB8gs*vt5In#lX|3C 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 literal 57328 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�ajijthPZ% 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 F{a=^2_LTqt diff --git a/report/pic/before_train.png b/report/pic/before_train.png index 68bc9cd9dbad607cfae0891ae6387136175a9f93..310773a2092fc254750dbb2d07d909f1461e471e 100644 GIT binary patch literal 58759 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 literal 74509 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 z Date: Thu, 29 May 2025 11:26:17 +0800 Subject: [PATCH 02/13] =?UTF-8?q?docs(paper):=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=AE=BA=E6=96=87=E4=B8=BB=E5=AD=97=E4=BD=93=E4=B8=BATimes=20N?= =?UTF-8?q?ew=20Roman?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在LaTeX文档中添加主字体设置,使用Times New Roman作为默认英文字体,以符合学术论文格式要求 --- paper/latex/main.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/paper/latex/main.tex b/paper/latex/main.tex index dc87643..f0a82c6 100644 --- a/paper/latex/main.tex +++ b/paper/latex/main.tex @@ -69,6 +69,7 @@ % 字体设置 \usepackage{fontspec} +\setmainfont{Times New Roman} % 设置方正楷体 \setCJKfamilyfont{fzkaiti}[ From 64de52a4282b4e6dc71059f58e8c171b9a923a55 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 11:33:45 +0800 Subject: [PATCH 03/13] =?UTF-8?q?docs(paper):=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E7=BB=93=E8=AE=BA=E7=AB=A0=E8=8A=82=E7=9A=84=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=B9=B6=E7=A7=BB=E9=99=A4=E5=86=97=E4=BD=99?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除了结论章节中多余的hypertarget标签和重复的标题格式,保持文档结构简洁一致。这些标签在最终PDF输出中并不需要,且重复的标题格式会影响文档的可读性和维护性。 --- paper/latex/chapters/conclusion.tex | 69 +++++++++-------------------- 1 file changed, 21 insertions(+), 48 deletions(-) diff --git a/paper/latex/chapters/conclusion.tex b/paper/latex/chapters/conclusion.tex index d990f93..6566e80 100644 --- a/paper/latex/chapters/conclusion.tex +++ b/paper/latex/chapters/conclusion.tex @@ -3,121 +3,94 @@ \section{总结与展望} -\hypertarget{ux7814ux7a76ux5de5ux4f5cux603bux7ed3}{% - \subsection{ - 研究工作总结}\label{ux7814ux7a76ux5de5ux4f5cux603bux7ed3}} +\subsection{研究工作总结} 本研究围绕基于大语言模型的自动化微调框架展开,旨在解决企业级软件开发中私有代码库智能辅助编码的挑战。通过系统化的设计与实现,本研究取得了以下主要成果: -\hypertarget{ux521bux65b0ux6027ux67b6ux6784ux8bbeux8ba1}{% - \subsubsection{ - 创新性架构设计}\label{ux521bux65b0ux6027ux67b6ux6784ux8bbeux8ba1}} +\subsubsection{创新性架构设计} 本研究提出了一种文档驱动的自适应编码大模型微调框架,采用三层架构设计(表现层、业务逻辑层和数据访问层)实现了系统的高内聚低耦合。特别是在数据存储方面,创新性地采用了SQLite与TinyDB相结合的双数据库架构,针对不同类型数据(结构化配置数据与半结构化训练数据)实现了最优化的存储方案。这种设计在保障事务完整性的同时,充分兼顾了半结构化数据处理的敏捷性需求,为系统的稳定运行和灵活扩展奠定了基础。 -\hypertarget{ux9ad8ux6548ux8bedux6599ux751fux6210ux6280ux672f}{% - \subsubsection{ - 高效语料生成技术}\label{ux9ad8ux6548ux8bedux6599ux751fux6210ux6280ux672f}} +\subsubsection{高效语料生成技术} 本研究开发了一套完整的技术文档处理与训练语料生成方案。通过基于栈结构的Markdown文档解析器,系统能够准确捕获文档的层级结构和内容关系;结合PromptTemplate动态模板技术,实现了提示词的参数化配置;采用基于异步IO架构的OpenAI API协程并发调用机制,显著提升了语料生成效率;同时,通过严格的JSON格式校验与数据验证流程,确保了生成语料的质量和一致性。这套技术方案有效解决了从技术文档到训练语料的自动化转换问题,为模型微调提供了高质量的数据基础。 -\hypertarget{ux53c2ux6570ux9ad8ux6548ux5faeux8c03ux5b9eux73b0}{% - \subsubsection{ - 参数高效微调实现}\label{ux53c2ux6570ux9ad8ux6548ux5faeux8c03ux5b9eux73b0}} +\subsubsection{参数高效微调实现} 在模型训练方面,本研究采用了LoRA(Low-Rank Adaptation)参数高效微调方法,并结合Unsloth优化算子,实现了在有限计算资源条件下的高效模型适配。系统构建了完整的监督式微调(SFT)流程,包括训练数据准备与格式化、LoRA微调方法应用、训练配置优化以及结果保存等环节。通过这种方法,成功将通用大语言模型定向优化为具备私有库代码生成能力的专用模型,在保持模型通用能力的同时,显著提升了其在特定领域的表现。 -\hypertarget{ux4ea4ux4e92ux5f0fux524dux7aefux7cfbux7edf}{% - \subsubsection{ - 交互式前端系统}\label{ux4ea4ux4e92ux5f0fux524dux7aefux7cfbux7edf}} +\subsubsection{交互式前端系统} 基于Gradio框架,本研究构建了一个功能完备的交互式前端系统,包含模型管理、模型推理、模型微调、数据集生成、数据集管理、提示词模板管理和系统设置等七个功能模块。系统实现了全局状态管理、前后端数据流控制、流式响应与实时反馈等关键功能,为用户提供了直观、易用的操作界面。这种设计不仅降低了系统使用门槛,还通过可视化配置和实时反馈机制,提升了整体用户体验。 -\hypertarget{ux7cfbux7edfux96c6ux6210ux4e0eux5de5ux7a0bux5b9eux8df5}{% - \subsubsection{ - 系统集成与工程实践}\label{ux7cfbux7edfux96c6ux6210ux4e0eux5de5ux7a0bux5b9eux8df5}} +\subsubsection{系统集成与工程实践} 本研究成功将文档解析、语料生成、模型微调和交互界面等多个模块集成为一个完整的自动化框架,实现了从技术文档输入到定制化模型输出的全流程自动化。在工程实践层面,系统采用了模块化设计、异常处理机制、数据持久化策略和性能优化措施,确保了系统的稳定性、可扩展性和高效性。这种全面的系统集成为企业级软件开发中的智能编码辅助提供了可行的技术路径。 总体而言,本研究不仅在技术层面实现了大语言模型微调框架的创新设计与实现,还在应用层面为解决企业私有库代码生成问题提供了系统化解决方案。通过文档驱动的自适应微调方法,成功提升了大语言模型在特定领域的代码生成能力,为企业级软件开发的智能化与高效化提供了有力支持。 -\hypertarget{ux4e0dux8db3ux4e0eux5c40ux9650}{% - \subsection{不足与局限}\label{ux4e0dux8db3ux4e0eux5c40ux9650}} +\subsection{不足与局限} 基于对项目代码库和论文内容的深入分析,本项目虽然在大语言模型微调框架方面取得了一定成果,但仍存在以下几个方面的不足与局限性。 -\hypertarget{ux6587ux6863ux5904ux7406ux80fdux529bux7684ux5c40ux9650ux6027}{% - \subsubsection{文档处理能力的局限性}\label{ux6587ux6863ux5904ux7406ux80fdux529bux7684ux5c40ux9650ux6027}} +\subsubsection{文档处理能力的局限性} 当前系统在文档处理方面主要支持Markdown格式的技术文档解析,对其他格式文档(如PDF、Word、HTML等)的支持有限。这种单一格式的依赖在实际企业环境中可能造成应用障碍,因为企业技术文档通常以多种格式存在。此外,文档解析过程中缺乏对复杂结构(如嵌套表格、图表等)的有效处理机制,可能导致关键信息的丢失或误解。 -\hypertarget{ux8badux7ec3ux8bedux6599ux8d28ux91cfux4e0dux7a33ux5b9a}{% - \subsubsection{训练语料质量不稳定}\label{ux8badux7ec3ux8bedux6599ux8d28ux91cfux4e0dux7a33ux5b9a}} +\subsubsection{训练语料质量不稳定} 生成的训练语料质量高度依赖于原始文档的质量和大模型的能力。在实际应用中,如果原始文档存在描述不清、术语不一致或结构混乱等问题,将直接影响生成的训练语料质量。同时,系统缺乏对生成语料的自动化质量评估机制,难以在大规模语料生成过程中保证数据质量的一致性,这可能导致微调效果的不稳定。 -\hypertarget{ux5faeux8c03ux6280ux672fux7684ux5355ux4e00ux6027}{% - \subsubsection{微调技术的单一性}\label{ux5faeux8c03ux6280ux672fux7684ux5355ux4e00ux6027}} +\subsubsection{微调技术的单一性} 当前系统主要采用LoRA微调方法,虽然该方法在参数效率上有显著优势,但在处理特定领域深度知识或复杂语义理解任务时可能存在效果不佳的情况。系统未能提供多种微调方法(如P-Tuning、Prefix-Tuning等)的集成支持,限制了用户根据具体需求选择最适合的微调策略的灵活性。 -\hypertarget{ux8d85ux53c2ux6570ux4f18ux5316ux673aux5236ux4e0dux8db3}{% - \subsubsection{超参数优化机制不足}\label{ux8d85ux53c2ux6570ux4f18ux5316ux673aux5236ux4e0dux8db3}} +\subsubsection{超参数优化机制不足} 微调过程中的超参数选择主要依靠经验设定,缺乏自动化优化机制。这种人工干预的方式不仅增加了用户的使用门槛,也难以保证在不同数据集和任务上获得最优的微调效果。系统未能实现如贝叶斯优化、网格搜索等自动化超参数调优方法,这在处理多样化的企业私有库时可能导致性能次优。 -\hypertarget{ux8bc4ux4f30ux4f53ux7cfbux4e0dux5b8cux5584}{% - \subsubsection{评估体系不完善}\label{ux8bc4ux4f30ux4f53ux7cfbux4e0dux5b8cux5584}} +\subsubsection{评估体系不完善} 当前系统缺乏对微调后模型效果的全面评估机制,难以客观量化模型在特定领域的提升程度。评估指标单一,主要关注生成代码的语法正确性,而对代码的功能正确性、安全性、可维护性等多维度评估不足。这种评估体系的不完善使得用户难以全面了解微调效果,也为系统的持续优化和迭代带来了挑战。 -\hypertarget{ux591aux6a21ux6001ux878dux5408ux80fdux529bux6b20ux7f3a}{% - \subsubsection{多模态融合能力欠缺}\label{ux591aux6a21ux6001ux878dux5408ux80fdux529bux6b20ux7f3a}} +\subsubsection{多模态融合能力欠缺} 系统主要处理文本形式的技术文档,缺乏对图表、UML图、流程图等非文本信息的理解和处理能力。在实际的软件开发文档中,这些非文本信息往往承载了重要的设计思想和架构信息,忽略这部分内容可能导致模型对代码结构和设计模式的理解不足,从而影响生成代码的质量。 -\hypertarget{ux5b89ux5168ux6027ux8003ux8651ux4e0dux5145ux5206}{% - \subsubsection{安全性考虑不充分}\label{ux5b89ux5168ux6027ux8003ux8651ux4e0dux5145ux5206}} +\subsubsection{安全性考虑不充分} 在处理企业私有库和敏感技术文档时,系统对数据安全和隐私保护的考虑不够全面。缺乏对训练数据的脱敏处理机制,以及对生成模型可能泄露原始训练数据的防护措施。这在处理包含商业机密或敏感信息的企业私有库时,可能带来潜在的安全风险。 通过识别和分析这些不足与局限性,为未来研究提供了明确的改进方向,包括扩展文档处理能力、提高训练语料质量、丰富微调方法、实现超参数自动优化、降低资源需求、完善评估体系、增强多模态融合能力以及加强安全性保障等方面。这些改进将有助于构建更加完善、实用的大语言模型微调框架,更好地满足企业级软件开发的智能辅助需求。 -\hypertarget{ux672aux6765ux5c55ux671b}{% - \subsection{未来展望}\label{ux672aux6765ux5c55ux671b}} +\subsection{未来展望} 基于当前研究基础和技术发展趋势,本研究框架的后续演进可从以下六个维度展开深度探索: -\hypertarget{ux8fb9ux7f18ux667aux80fdux96c6ux6210}{% - \subsubsection{边缘智能集成}\label{ux8fb9ux7f18ux667aux80fdux96c6ux6210}} +\subsubsection{边缘智能集成} 研究模型轻量化与边缘计算融合技术,探索基于TensorRT、ONNX Runtime等推理引擎的异构加速方案。通过开发自适应模型切片技术,实现大模型在边缘设备(如Jetson系列)的分布式推理,构建端云协同的智能编码辅助体系,有效降低服务延迟并提升隐私保护等级。 -\hypertarget{ux52a8ux6001ux81eaux9002ux5e94ux5b66ux4e60ux673aux5236}{% - \subsubsection{动态自适应学习机制}\label{ux52a8ux6001ux81eaux9002ux5e94ux5b66ux4e60ux673aux5236}} +\subsubsection{动态自适应学习机制} 设计基于强化学习的在线学习框架,建立代码评审反馈闭环系统。通过开发增量式微调算法(如AdaLoRA),使模型能够动态适应企业代码库的持续演进,形成``开发-训练-优化''的自我迭代生态,解决传统静态模型与动态代码库的版本错配问题。 -\hypertarget{ux667aux80fdux5316ux4f26ux7406ux5b89ux5168ux6846ux67b6}{% - \subsubsection{智能化伦理安全框架}\label{ux667aux80fdux5316ux4f26ux7406ux5b89ux5168ux6846ux67b6}} +\subsubsection{智能化伦理安全框架} 构建多层次安全防护体系,研发面向代码生成的差分隐私保护模块(DP-SGD)和模型水印技术。引入代码合规性验证层,集成SAST(静态应用安全测试)工具链,确保生成代码符合企业安全规范及行业监管要求,防范潜在的法律风险。 -\hypertarget{ux8de8ux5e73ux53f0ux751fux6001ux6784ux5efa}{% - \subsubsection{跨平台生态构建}\label{ux8de8ux5e73ux53f0ux751fux6001ux6784ux5efa}} +\subsubsection{跨平台生态构建} 开发统一的API网关和服务编排引擎,支持与主流IDE(VSCode/IntelliJ/PyCharm)深度集成。研究容器化微服务架构,实现模型服务在Kubernetes集群的弹性伸缩,构建跨Windows/Linux/macOS的多平台支持能力,提升框架的工程适用性。 -\hypertarget{ux5f00ux53d1ux8005ux77e5ux8bc6ux56feux8c31ux6784ux5efa}{% - \subsubsection{开发者知识图谱构建}\label{ux5f00ux53d1ux8005ux77e5ux8bc6ux56feux8c31ux6784ux5efa}} +\subsubsection{开发者知识图谱构建} 融合代码抽象语法树(AST)分析与文档实体识别技术,构建企业级开发知识图谱。通过图神经网络(GNN)实现编码规范、API调用关系、架构模式等隐性知识的可视化表达与推理,为开发者提供智能化的代码导航和架构决策支持。 -\hypertarget{cicdux6df1ux5165ux96c6ux6210}{% - \subsubsection{CI/CD深入集成}\label{cicdux6df1ux5165ux96c6ux6210}} +\subsubsection{CI/CD深入集成} 建立基于Git版本流的自动化训练数据采集管道,开发代码变更敏感度分析模型。结合主动学习策略(Active Learning)构建智能数据筛选机制,实现训练样本的按需获取和高效标注,形成可持续进化的模型优化体系。 From 71484745d15e4727fc5dcbe4a881fa62b00211e5 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 11:40:49 +0800 Subject: [PATCH 04/13] =?UTF-8?q?docs(paper):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=BB=93=E8=AE=BA=E7=AB=A0=E8=8A=82=E7=9A=84=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将结论章节中的\subsubsection改为\paragraph以保持文档结构简介 --- paper/latex/chapters/conclusion.tex | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/paper/latex/chapters/conclusion.tex b/paper/latex/chapters/conclusion.tex index 6566e80..c270d3d 100644 --- a/paper/latex/chapters/conclusion.tex +++ b/paper/latex/chapters/conclusion.tex @@ -7,25 +7,25 @@ 本研究围绕基于大语言模型的自动化微调框架展开,旨在解决企业级软件开发中私有代码库智能辅助编码的挑战。通过系统化的设计与实现,本研究取得了以下主要成果: -\subsubsection{创新性架构设计} +\paragraph{创新性架构设计} 本研究提出了一种文档驱动的自适应编码大模型微调框架,采用三层架构设计(表现层、业务逻辑层和数据访问层)实现了系统的高内聚低耦合。特别是在数据存储方面,创新性地采用了SQLite与TinyDB相结合的双数据库架构,针对不同类型数据(结构化配置数据与半结构化训练数据)实现了最优化的存储方案。这种设计在保障事务完整性的同时,充分兼顾了半结构化数据处理的敏捷性需求,为系统的稳定运行和灵活扩展奠定了基础。 -\subsubsection{高效语料生成技术} +\paragraph{高效语料生成技术} 本研究开发了一套完整的技术文档处理与训练语料生成方案。通过基于栈结构的Markdown文档解析器,系统能够准确捕获文档的层级结构和内容关系;结合PromptTemplate动态模板技术,实现了提示词的参数化配置;采用基于异步IO架构的OpenAI API协程并发调用机制,显著提升了语料生成效率;同时,通过严格的JSON格式校验与数据验证流程,确保了生成语料的质量和一致性。这套技术方案有效解决了从技术文档到训练语料的自动化转换问题,为模型微调提供了高质量的数据基础。 -\subsubsection{参数高效微调实现} +\paragraph{参数高效微调实现} 在模型训练方面,本研究采用了LoRA(Low-Rank Adaptation)参数高效微调方法,并结合Unsloth优化算子,实现了在有限计算资源条件下的高效模型适配。系统构建了完整的监督式微调(SFT)流程,包括训练数据准备与格式化、LoRA微调方法应用、训练配置优化以及结果保存等环节。通过这种方法,成功将通用大语言模型定向优化为具备私有库代码生成能力的专用模型,在保持模型通用能力的同时,显著提升了其在特定领域的表现。 -\subsubsection{交互式前端系统} +\paragraph{交互式前端系统} 基于Gradio框架,本研究构建了一个功能完备的交互式前端系统,包含模型管理、模型推理、模型微调、数据集生成、数据集管理、提示词模板管理和系统设置等七个功能模块。系统实现了全局状态管理、前后端数据流控制、流式响应与实时反馈等关键功能,为用户提供了直观、易用的操作界面。这种设计不仅降低了系统使用门槛,还通过可视化配置和实时反馈机制,提升了整体用户体验。 -\subsubsection{系统集成与工程实践} +\paragraph{系统集成与工程实践} 本研究成功将文档解析、语料生成、模型微调和交互界面等多个模块集成为一个完整的自动化框架,实现了从技术文档输入到定制化模型输出的全流程自动化。在工程实践层面,系统采用了模块化设计、异常处理机制、数据持久化策略和性能优化措施,确保了系统的稳定性、可扩展性和高效性。这种全面的系统集成为企业级软件开发中的智能编码辅助提供了可行的技术路径。 @@ -33,33 +33,33 @@ Adaptation)参数高效微调方法,并结合Unsloth优化算子,实现了 \subsection{不足与局限} -基于对项目代码库和论文内容的深入分析,本项目虽然在大语言模型微调框架方面取得了一定成果,但仍存在以下几个方面的不足与局限性。 +基于对项目代码库和论文内容的深入分析,本项目虽然在大语言模型微调框架方面取得了一定成果,但仍存在以下几个方面的不足与局限性: -\subsubsection{文档处理能力的局限性} +\paragraph{文档处理能力的局限性} 当前系统在文档处理方面主要支持Markdown格式的技术文档解析,对其他格式文档(如PDF、Word、HTML等)的支持有限。这种单一格式的依赖在实际企业环境中可能造成应用障碍,因为企业技术文档通常以多种格式存在。此外,文档解析过程中缺乏对复杂结构(如嵌套表格、图表等)的有效处理机制,可能导致关键信息的丢失或误解。 -\subsubsection{训练语料质量不稳定} +\paragraph{训练语料质量不稳定} 生成的训练语料质量高度依赖于原始文档的质量和大模型的能力。在实际应用中,如果原始文档存在描述不清、术语不一致或结构混乱等问题,将直接影响生成的训练语料质量。同时,系统缺乏对生成语料的自动化质量评估机制,难以在大规模语料生成过程中保证数据质量的一致性,这可能导致微调效果的不稳定。 -\subsubsection{微调技术的单一性} +\paragraph{微调技术的单一性} 当前系统主要采用LoRA微调方法,虽然该方法在参数效率上有显著优势,但在处理特定领域深度知识或复杂语义理解任务时可能存在效果不佳的情况。系统未能提供多种微调方法(如P-Tuning、Prefix-Tuning等)的集成支持,限制了用户根据具体需求选择最适合的微调策略的灵活性。 -\subsubsection{超参数优化机制不足} +\paragraph{超参数优化机制不足} 微调过程中的超参数选择主要依靠经验设定,缺乏自动化优化机制。这种人工干预的方式不仅增加了用户的使用门槛,也难以保证在不同数据集和任务上获得最优的微调效果。系统未能实现如贝叶斯优化、网格搜索等自动化超参数调优方法,这在处理多样化的企业私有库时可能导致性能次优。 -\subsubsection{评估体系不完善} +\paragraph{评估体系不完善} 当前系统缺乏对微调后模型效果的全面评估机制,难以客观量化模型在特定领域的提升程度。评估指标单一,主要关注生成代码的语法正确性,而对代码的功能正确性、安全性、可维护性等多维度评估不足。这种评估体系的不完善使得用户难以全面了解微调效果,也为系统的持续优化和迭代带来了挑战。 -\subsubsection{多模态融合能力欠缺} +\paragraph{多模态融合能力欠缺} 系统主要处理文本形式的技术文档,缺乏对图表、UML图、流程图等非文本信息的理解和处理能力。在实际的软件开发文档中,这些非文本信息往往承载了重要的设计思想和架构信息,忽略这部分内容可能导致模型对代码结构和设计模式的理解不足,从而影响生成代码的质量。 -\subsubsection{安全性考虑不充分} +\paragraph{安全性考虑不充分} 在处理企业私有库和敏感技术文档时,系统对数据安全和隐私保护的考虑不够全面。缺乏对训练数据的脱敏处理机制,以及对生成模型可能泄露原始训练数据的防护措施。这在处理包含商业机密或敏感信息的企业私有库时,可能带来潜在的安全风险。 @@ -69,28 +69,28 @@ Adaptation)参数高效微调方法,并结合Unsloth优化算子,实现了 基于当前研究基础和技术发展趋势,本研究框架的后续演进可从以下六个维度展开深度探索: -\subsubsection{边缘智能集成} +\paragraph{边缘智能集成} 研究模型轻量化与边缘计算融合技术,探索基于TensorRT、ONNX Runtime等推理引擎的异构加速方案。通过开发自适应模型切片技术,实现大模型在边缘设备(如Jetson系列)的分布式推理,构建端云协同的智能编码辅助体系,有效降低服务延迟并提升隐私保护等级。 -\subsubsection{动态自适应学习机制} +\paragraph{动态自适应学习机制} 设计基于强化学习的在线学习框架,建立代码评审反馈闭环系统。通过开发增量式微调算法(如AdaLoRA),使模型能够动态适应企业代码库的持续演进,形成``开发-训练-优化''的自我迭代生态,解决传统静态模型与动态代码库的版本错配问题。 -\subsubsection{智能化伦理安全框架} +\paragraph{智能化伦理安全框架} 构建多层次安全防护体系,研发面向代码生成的差分隐私保护模块(DP-SGD)和模型水印技术。引入代码合规性验证层,集成SAST(静态应用安全测试)工具链,确保生成代码符合企业安全规范及行业监管要求,防范潜在的法律风险。 -\subsubsection{跨平台生态构建} +\paragraph{跨平台生态构建} 开发统一的API网关和服务编排引擎,支持与主流IDE(VSCode/IntelliJ/PyCharm)深度集成。研究容器化微服务架构,实现模型服务在Kubernetes集群的弹性伸缩,构建跨Windows/Linux/macOS的多平台支持能力,提升框架的工程适用性。 -\subsubsection{开发者知识图谱构建} +\paragraph{开发者知识图谱构建} 融合代码抽象语法树(AST)分析与文档实体识别技术,构建企业级开发知识图谱。通过图神经网络(GNN)实现编码规范、API调用关系、架构模式等隐性知识的可视化表达与推理,为开发者提供智能化的代码导航和架构决策支持。 -\subsubsection{CI/CD深入集成} +\paragraph{CI/CD深入集成} 建立基于Git版本流的自动化训练数据采集管道,开发代码变更敏感度分析模型。结合主动学习策略(Active Learning)构建智能数据筛选机制,实现训练样本的按需获取和高效标注,形成可持续进化的模型优化体系。 From 6e62902867713d3215f0d00c2f97a55d6f38858f Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 12:42:50 +0800 Subject: [PATCH 05/13] =?UTF-8?q?docs(paper):=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E6=91=98=E8=A6=81=E5=92=8C=E5=85=B3=E9=94=AE=E8=AF=8D=E9=83=A8?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除关键词列表中冗余的术语,使内容更加简洁聚焦。主要保留了核心概念如大语言模型、代码生成等,去掉了QLoRA、Gradio等具体技术细节,以突出研究重点。 --- paper/latex/chapters/abstract.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paper/latex/chapters/abstract.tex b/paper/latex/chapters/abstract.tex index 88df8c8..c4ca9b2 100644 --- a/paper/latex/chapters/abstract.tex +++ b/paper/latex/chapters/abstract.tex @@ -9,7 +9,7 @@ \begin{onecolabstract} \noindent{}{\zihao{4}\textbf{摘要}}{\quad \songti \zihao{-4}大语言模型(LLMs)在通用代码生成任务中表现出色,但在处理包含专有知识的企业私有代码库时,其性能往往受限。针对此问题,本文提出并实现了一个基于文档驱动的自适应编码大模型微调框架。该框架的核心创新在于:首先,通过深度解析技术文档(Markdown格式),自动抽取信息并结合预设模板生成高质量的指令微调(SFT)训练语料;其次,利用参数高效微调技术(如Quantized Low-Rank Adaptation,QLoRA)对预训练的编码大模型(以qwen2.5为例)进行针对性优化,使其精准适配私有库特有的语法结构与编程范式;最后,整合了包括数据持久化(SQLite+TinyDB)、训练监控(TensorBoard)和交互式前端(Gradio)在内的完整工作流。实验结果表明,该框架能够有效提升大模型在私有库代码生成任务上的准确性和实用性,为实现企业级软件开发的智能化和高效化提供了一套自动化、可扩展的解决方案。 }\par - \noindent{}{\zihao{4}\textbf{关键词}}{\quad \zihao{-4}\songti 大语言模型; 代码生成; 模型微调; 参数高效微调; QLoRA; 文档驱动; 私有库; 自然语言处理; Gradio + \noindent{}{\zihao{4}\textbf{关键词}}{\quad \zihao{-4}\songti 大语言模型;代码生成;模型微调;文档驱动 }\par \end{onecolabstract} @@ -17,6 +17,6 @@ \begin{onecolabstract} \noindent{}{ \zihao{4} \textbf{ABSTRACT}}{\quad \zihao{-4}Large Language Models (LLMs) excel in general code generation tasks, but their performance is often limited when handling enterprise private code repositories containing proprietary knowledge. To address this issue, this paper proposes and implements a document-driven adaptive fine-tuning framework for large code models. The core innovations of this framework are: first, by deeply parsing technical documentation (Markdown format), it automatically extracts information and combines it with preset templates to generate high-quality instruction fine-tuning (SFT) training data; second, it utilizes parameter-efficient fine-tuning techniques (such as Quantized Low-Rank Adaptation (QLoRA)) to specifically optimize a pre-trained large code model (taking qwen2.5 as an example), enabling it to accurately adapt to the specific syntax, structure, and programming paradigms of the private library; finally, it integrates a complete workflow including data persistence (SQLite+TinyDB), training monitoring (TensorBoard), and an interactive frontend (Gradio). Experimental results demonstrate that this framework can effectively improve the accuracy and practicality of large models in private library code generation tasks, and provide an automated, scalable solution for intelligent and efficient enterprise software development. }\par - \noindent{}{ \zihao{4}\textbf{KEYWORDS}}{\quad \zihao{-4}Large Language Models; Code Generation; Model Fine-tuning; Parameter-Efficient Fine-tuning; QLoRA; Document-Driven; Private Library; Natural Language Processing; Gradio + \noindent{}{ \zihao{4}\textbf{KEYWORDS}}{\quad \zihao{-4}Large Language Models; Code Generation; Model Fine-tuning; Document-Driven }\par \end{onecolabstract} \ No newline at end of file From f91a80a124223e97011138f523f2ec55aa4c4337 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 12:47:22 +0800 Subject: [PATCH 06/13] =?UTF-8?q?docs(paper):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=BA=A7=E5=BA=94=E7=94=A8=E9=A2=86=E5=9F=9F?= =?UTF-8?q?=E7=9A=84=E6=9C=AF=E8=AF=AD=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将文档中的"2B领域"统一修改为"企业级应用领域",使术语更加规范和专业,提高文档的可读性和一致性 --- paper/latex/chapters/introduction.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper/latex/chapters/introduction.tex b/paper/latex/chapters/introduction.tex index b3d002d..423b9d2 100644 --- a/paper/latex/chapters/introduction.tex +++ b/paper/latex/chapters/introduction.tex @@ -23,10 +23,10 @@ 未来研究趋势包括:基于大模型的具身智能;提示工程和认知工程的深化应用;检索增强生成技术的进一步发展;通过量化和剪枝提高LLM效率;增强模型可解释性;以及探索Transformer之外的新型模型架构和训练范式。 -\subsubsection{微调后大语言模型在2B领域的应用现状} -微调后大语言模型在2B领域的应用正在国内外快速发展。在国内,企业主要在客户服务领域探索微调LLM,创建智能客服机器人以提高客户满意度和运营效率。内容生成是另一重要应用,通过对行业特定数据进行微调,模型可生成符合品牌风格的营销文案和产品描述。北京大学在古籍数字化领域的探索和智源研究院的Emu3多模态模型也展示了在特定2B领域的应用潜力。总体而言,微调LLM在中国2B领域应用尚处早期阶段,但潜力巨大。 +\subsubsection{微调后大语言模型在企业级应用领域的应用现状} +微调后大语言模型在企业级应用领域的应用正在国内外快速发展。在国内,企业主要在客户服务领域探索微调LLM,创建智能客服机器人以提高客户满意度和运营效率。内容生成是另一重要应用,通过对行业特定数据进行微调,模型可生成符合品牌风格的营销文案和产品描述。北京大学在古籍数字化领域的探索和智源研究院的Emu3多模态模型也展示了在特定企业级应用领域的潜力。总体而言,微调LLM在中国企业级应用领域尚处早期阶段,但潜力巨大。 -国际上,微调后大语言模型在2B领域应用更为成熟和广泛。客户服务领域的智能支持系统能提供全天候多语言帮助,处理各类咨询并将复杂问题上报人工客服。内容生成方面,微调LLM被广泛应用于营销、广告和媒体行业,快速生成各类文本内容。金融机构和咨询公司利用微调LLM协助撰写专业分析报告。此外,LLM在数据标注和合成方面的应用对需要大量高质量标注数据的2B应用至关重要,显著提高了数据标注效率和一致性。微调后大语言模型已广泛应用于国际2B领域,并不断扩展到更多行业和业务流程。 +国际上,微调后大语言模型在企业级应用领域更为成熟和广泛。客户服务领域的智能支持系统能提供全天候多语言帮助,处理各类咨询并将复杂问题上报人工客服。内容生成方面,微调LLM被广泛应用于营销、广告和媒体行业,快速生成各类文本内容。金融机构和咨询公司利用微调LLM协助撰写专业分析报告。此外,LLM在数据标注和合成方面的应用对需要大量高质量标注数据的企业级应用至关重要,显著提高了数据标注效率和一致性。微调后大语言模型已广泛应用于国际企业级应用领域,并不断扩展到更多行业和业务流程。 \subsubsection{AI辅助编码研究现状} AI辅助编码的研究和应用在中国尚处于起步阶段。虽然一些大型科技公司和研究机构已开始关注这一领域并推出了内部或限量使用的工具,但像GitHub Copilot这样具有广泛影响力的AI编码助手仍然相对稀少。可以推断,国内研究主要集中在使用机器学习和自然语言处理技术帮助开发者提高编码效率、减少错误以及学习新的编程语言或框架。这可能包括代码自动补全、语法错误检查、代码片段推荐以及基于自然语言描述生成代码等功能。然而,由于缺乏直接相关的公开研究信息,国内AI辅助编码工具的具体功能、性能以及对软件开发流程的影响仍需进一步调查和分析。尽管如此,随着中国软件产业的发展和对开发效率需求的日益增长,AI辅助编码在国内具有广阔的应用前景。 From 50a33561f4c70ed376aa6034677ecbbc505925aa Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 13:10:24 +0800 Subject: [PATCH 07/13] =?UTF-8?q?docs(paper):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=91=98=E8=A6=81=E4=B8=AD=E6=9C=AF=E8=AF=AD=E7=9A=84=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E8=A1=A8=E8=BF=B0=E5=92=8C=E8=8B=B1=E6=96=87=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改中文摘要中"LLMs"为全称"Large Language Models",并补充"SFT"的全称"Supervised Fine-Tuning"。英文摘要部分重写了开篇句式,使用更地道的学术表达,同时突出框架名称的强调格式。这些修改使论文摘要更加规范和专业。 --- paper/latex/chapters/abstract.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper/latex/chapters/abstract.tex b/paper/latex/chapters/abstract.tex index c4ca9b2..083eb87 100644 --- a/paper/latex/chapters/abstract.tex +++ b/paper/latex/chapters/abstract.tex @@ -7,7 +7,7 @@ % 中文摘要 \begin{onecolabstract} - \noindent{}{\zihao{4}\textbf{摘要}}{\quad \songti \zihao{-4}大语言模型(LLMs)在通用代码生成任务中表现出色,但在处理包含专有知识的企业私有代码库时,其性能往往受限。针对此问题,本文提出并实现了一个基于文档驱动的自适应编码大模型微调框架。该框架的核心创新在于:首先,通过深度解析技术文档(Markdown格式),自动抽取信息并结合预设模板生成高质量的指令微调(SFT)训练语料;其次,利用参数高效微调技术(如Quantized Low-Rank Adaptation,QLoRA)对预训练的编码大模型(以qwen2.5为例)进行针对性优化,使其精准适配私有库特有的语法结构与编程范式;最后,整合了包括数据持久化(SQLite+TinyDB)、训练监控(TensorBoard)和交互式前端(Gradio)在内的完整工作流。实验结果表明,该框架能够有效提升大模型在私有库代码生成任务上的准确性和实用性,为实现企业级软件开发的智能化和高效化提供了一套自动化、可扩展的解决方案。 + \noindent{}{\zihao{4}\textbf{摘要}}{\quad \songti \zihao{-4}大语言模型(Large Language Models,LLMs)在通用代码生成任务中表现出色,但在处理包含专有知识的企业私有代码库时,其性能往往受限。针对此问题,本文提出并实现了一个基于文档驱动的自适应编码大模型微调框架。该框架的核心创新在于:首先,通过深度解析技术文档(Markdown格式),自动抽取信息并结合预设模板生成高质量的指令微调(Supervised Fine-Tuning,SFT)训练语料;其次,利用参数高效微调技术(如量化低秩微调,Quantized Low-Rank Adaptation,QLoRA)对预训练的编码大模型(以qwen2.5为例)进行针对性优化,使其精准适配私有库特有的语法结构与编程范式;最后,整合了包括数据持久化(SQLite+TinyDB)、训练监控(TensorBoard)和交互式前端(Gradio)在内的完整工作流。实验结果表明,该框架能够有效提升大模型在私有库代码生成任务上的准确性和实用性,为实现企业级软件开发的智能化和高效化提供了一套自动化、可扩展的解决方案。 }\par \noindent{}{\zihao{4}\textbf{关键词}}{\quad \zihao{-4}\songti 大语言模型;代码生成;模型微调;文档驱动 }\par @@ -15,8 +15,8 @@ % 英文摘要 \begin{onecolabstract} - \noindent{}{ \zihao{4} \textbf{ABSTRACT}}{\quad \zihao{-4}Large Language Models (LLMs) excel in general code generation tasks, but their performance is often limited when handling enterprise private code repositories containing proprietary knowledge. To address this issue, this paper proposes and implements a document-driven adaptive fine-tuning framework for large code models. The core innovations of this framework are: first, by deeply parsing technical documentation (Markdown format), it automatically extracts information and combines it with preset templates to generate high-quality instruction fine-tuning (SFT) training data; second, it utilizes parameter-efficient fine-tuning techniques (such as Quantized Low-Rank Adaptation (QLoRA)) to specifically optimize a pre-trained large code model (taking qwen2.5 as an example), enabling it to accurately adapt to the specific syntax, structure, and programming paradigms of the private library; finally, it integrates a complete workflow including data persistence (SQLite+TinyDB), training monitoring (TensorBoard), and an interactive frontend (Gradio). Experimental results demonstrate that this framework can effectively improve the accuracy and practicality of large models in private library code generation tasks, and provide an automated, scalable solution for intelligent and efficient enterprise software development. + \noindent{}{ \zihao{4} \textbf{ABSTRACT}}{\quad \zihao{-4}While Large Language Models (LLMs) demonstrate impressive performance in general code generation, their efficacy often diminishes when dealing with enterprise private code repositories that contain proprietary knowledge. To address this challenge, this paper proposes and implements a **document-driven adaptive fine-tuning framework for large code models**. The framework introduces several key innovations: Firstly, it employs deep parsing techniques on technical documentation (in Markdown format) to automatically extract information and combine it with predefined templates, thereby generating high-quality Supervised Fine-Tuning (SFT) training data. Secondly, it leverages parameter-efficient fine-tuning techniques, such as Quantized Low-Rank Adaptation (QLoRA), to specifically optimize a pre-trained large code model (exemplified by Qwen2.5). This optimization enables the model to accurately adapt to the unique syntax, structures, and programming paradigms inherent in private libraries. Finally, the framework integrates a comprehensive workflow encompassing data persistence (using SQLite and TinyDB), training monitoring (via TensorBoard), and an interactive frontend (built with Gradio). Experimental results indicate that this framework significantly enhances the accuracy and practical utility of LLMs in private library code generation tasks, offering an automated and scalable solution for intelligent and efficient enterprise software development. }\par \noindent{}{ \zihao{4}\textbf{KEYWORDS}}{\quad \zihao{-4}Large Language Models; Code Generation; Model Fine-tuning; Document-Driven }\par -\end{onecolabstract} \ No newline at end of file +\end{onecolabstract} \ No newline at end of file From 9aff1875e25b56d9c88b3502ebf4ea204823d872 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 13:10:35 +0800 Subject: [PATCH 08/13] =?UTF-8?q?docs(paper):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=8A=80=E6=9C=AF=E6=9C=AF=E8=AF=AD=E7=9A=84=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E5=85=A8=E7=A7=B0=E5=92=8C=E7=BC=A9=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在介绍章节中补充了大语言模型相关技术术语的英文全称,包括RAG、SLM、DAPT等,提高论文的专业性和可读性 --- paper/latex/chapters/introduction.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper/latex/chapters/introduction.tex b/paper/latex/chapters/introduction.tex index 423b9d2..c2baa91 100644 --- a/paper/latex/chapters/introduction.tex +++ b/paper/latex/chapters/introduction.tex @@ -13,11 +13,11 @@ \subsection{国内外研究现状} \subsubsection{大语言模型微调研究现状} -大语言模型微调研究在国内外均呈现快速发展态势。在国内,智源研究院与TeleAI联合开发的"悟道·天鹰"系列模型代表了重要进展,其520亿参数版本的开源显著促进了国内AI社区发展。这些模型在部分中英文基准测试中表现出与Llama3-70B和GPT-4相当甚至更优的性能。为解决"幻觉"问题,智源研究院开发的BGE系列向量模型通过检索增强生成(RAG)技术有效提升了模型准确性。 +大语言模型微调研究在国内外均呈现快速发展态势。在国内,智源研究院与TeleAI联合开发的"悟道·天鹰"系列模型代表了重要进展,其520亿参数版本的开源显著促进了国内AI社区发展。这些模型在部分中英文基准测试中表现出与Llama3-70B和GPT-4相当甚至更优的性能。为解决"幻觉"问题,智源研究院开发的BGE系列向量模型通过检索增强生成(Retrieval-Augmented Generation,RAG)技术有效提升了模型准确性。 -国内外研究均呈现出对小型语言模型(SLM)的高度关注。SLM在计算资源需求和训练成本方面具有明显优势,表明经过领域特定微调的SLM在特定任务上可超越更大的通用模型。清华大学、北京大学和中国科学院等机构在LLM研究中发挥重要作用,其应用范围从古籍数字化到医学研究等多个领域。 +国内外研究均呈现出对小型语言模型(Small Language Model,SLM)的高度关注。SLM在计算资源需求和训练成本方面具有明显优势,表明经过领域特定微调的SLM在特定任务上可超越更大的通用模型。清华大学、北京大学和中国科学院等机构在LLM研究中发挥重要作用,其应用范围从古籍数字化到医学研究等多个领域。 -国际研究重点关注长输出大语言模型及其生成连贯长文本的能力。研究人员广泛探索了参数知识适应(如DAPT、IT、PL和模型编辑)和半参数知识适应(如RAG和基于Agent的系统)等技术,以在保留通用知识的同时提高特定任务性能。研究发现,即使少量监督微调数据也能有效激活预训练模型中的知识。 +国际研究重点关注长输出大语言模型及其生成连贯长文本的能力。研究人员广泛探索了参数知识适应(如Domain-Adaptive Pre-Training (DAPT)、Instruction Tuning (IT)、Prompt Learning (PL)和模型编辑)和半参数知识适应(如RAG和基于Agent的系统)等技术,以在保留通用知识的同时提高特定任务性能。研究发现,即使少量监督微调数据也能有效激活预训练模型中的知识。 尽管取得进展,微调研究仍面临诸多挑战。国内主要挑战包括模型创新不足、高质量训练数据稀缺以及"幻觉"问题限制了模型在高精度应用中的可靠性。国际上,长输出LLM面临高质量长序列数据缺乏和连贯性维持困难等问题,同时大模型的高计算成本也推动了对更高效模型的需求。 From a44102a8c20500d717eac7252707e145e7269427 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 16:22:00 +0800 Subject: [PATCH 09/13] =?UTF-8?q?docs(paper):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E9=87=8F=E5=8C=96=E7=AB=A0=E8=8A=82=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E5=AD=A6=E5=85=AC=E5=BC=8F=E5=92=8C=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E8=A1=A8=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化模型量化章节的数学公式展示方式,将equation环境改为equation*以去除编号 将列表形式的内存压缩数据改为更简洁的文本描述 保持技术内容的准确性和完整性,同时提高文档的可读性 --- paper/latex/chapters/technology.tex | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/paper/latex/chapters/technology.tex b/paper/latex/chapters/technology.tex index 75668db..6356598 100644 --- a/paper/latex/chapters/technology.tex +++ b/paper/latex/chapters/technology.tex @@ -83,22 +83,19 @@ LLM 可以分析代码,识别潜在的错误模式或问题,帮助开发者 模型量化的主要目的是减少模型的内存占用、提高推理速度并降低能耗,使其更易于部署在资源受限的设备上,如移动设备或边缘服务器。 该技术的数学本质是通过线性映射将浮点值域$[r_{\text{min}}, r_{\text{max}}]$映射到整数空间,其量化与反量化过程可表示为: -\begin{equation} +\begin{equation*} \begin{aligned} q &= \text{round}\left(\frac{r - r_{\text{min}}}{s}\right) \\ \hat{r} &= s \cdot q + r_{\text{min}} \end{aligned} -\end{equation} +\end{equation*} 其中$s=(r_{\text{max}}-r_{\text{min}})/(2^n-1)$为量化步长,$n$为量化位数,$\epsilon=r-\hat{r}$为量化误差。 这种转换显著降低了存储模型所需的内存空间,并且由于低精度运算通常比高精度运算更快,因此可以提高模型的推理速度。 此外,更快的计算和减少的内存访问通常会降低功耗,这对于电池供电的设备尤其重要,这些极端量化形式显著减小模型尺寸和计算复杂度的同时,精度下降也更明显。 不同的量化级别(如 INT8 和 INT4)对模型性能和资源消耗影响不同。一般来说,更低的量化级别(例如从 INT8 到 INT4)可以进一步减少模型大小并提高推理速度,但通常会导致更大精度损失。量化误差分析表明,当权重服从均匀分布时,误差方差$\text{Var}(\epsilon)\approx s_W^2/12$,与量化步长平方成正比。内存优化效果可通过压缩比$(32-n)/32$量化,例如: -\begin{itemize} -\item INT8:75\% 内存压缩 -\item INT4:87.5\% 内存压缩 -\end{itemize} +具体而言,INT8量化可实现75\%的内存压缩率,而更激进的INT4量化则能达到87.5\%的内存压缩率。 INT8 量化通常被认为是性能和精度之间的良好折衷方案,可在保持较高模型准确性的同时,显著降低内存占用和提高推理速度。INT4 量化更为激进,可实现更高压缩率和更快速度,但通常伴随更明显精度下降,更适用于对资源限制非常严格但对精度要求相对较低的场景。选择合适的量化技术和级别需要在模型大小、推理速度和精度之间进行权衡,通常取决于具体应用场景和硬件条件。 From db51abe0662bad2ed06656b7c6c20f3cd891e3dd Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 17:56:49 +0800 Subject: [PATCH 10/13] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E8=AE=BA?= =?UTF-8?q?=E6=96=87=E7=AB=A0=E8=8A=82=E5=86=85=E5=AE=B9=E5=B9=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8F=82=E8=80=83=E6=96=87=E7=8C=AE=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在verification.tex、technology.tex和introduction.tex章节中添加了多处文献引用,并更新了部分技术描述内容。同时更新了references.tex中的参考文献列表,新增了多篇相关文献。 主要修改包括: - 在技术描述部分补充了相关文献引用 - 更新了监督式微调等技术的描述内容 - 新增了多篇关于大语言模型微调、提示工程等领域的参考文献 - 对部分章节内容进行了优化和补充 --- paper/latex/chapters/introduction.tex | 109 +++++++++++++++++++++----- paper/latex/chapters/references.tex | 71 ++++++++++------- paper/latex/chapters/technology.tex | 23 +++--- paper/latex/chapters/verification.tex | 4 +- 4 files changed, 144 insertions(+), 63 deletions(-) diff --git a/paper/latex/chapters/introduction.tex b/paper/latex/chapters/introduction.tex index c2baa91..e8f932e 100644 --- a/paper/latex/chapters/introduction.tex +++ b/paper/latex/chapters/introduction.tex @@ -4,55 +4,124 @@ \subsection{研究背景与意义} -在现代软件开发领域,程序员的编码工作日益依赖于先进的大语言模型支持,这些模型凭借其强大的能力,显著自动化了代码生成流程,有效减轻了开发者的工作负担,并大幅度提升了开发效率。然而,尽管这些模型在公开数据集与广泛使用的开源项目中展现出非凡的性能,但在处理企业内部高度专业化的私有库时,其局限性便显露无遗。核心原因在于,大语言模型往往基于广泛的通用数据集进行训练,缺乏对特定企业或项目中私有库内专有函数、类及其交互细节的深度理解和应用适应性。 +在现代软件开发领域,程序员的编码工作日益依赖于先进的大语言模型支持,这些模型凭借其强大的能力,显著自动化了代码生成流程,有效减轻了开发者的工作负担,并大幅度提升了开发效率。 +然而,尽管这些模型在公开数据集与广泛使用的开源项目中展现出非凡的性能,但在处理企业内部高度专业化的私有库时,其局限性便显露无遗。 +核心原因在于,大语言模型往往基于广泛的通用数据集进行训练,缺乏对特定企业或项目中私有库内专有函数、类及其交互细节的深度理解和应用适应性。 -相较于广泛采用的公开编码模型,针对私有库设计的专有模型显得尤为必要。公开模型虽强大,但在面对包含企业核心业务逻辑、技术秘密及高度定制化功能的私有库时,往往捉襟见肘。由于缺乏对私有库具体实现细节的认知,生成的代码往往无法精准引用库中的类、方法或属性,这不仅增加了后续人工调整的工作量,还可能引入潜在的安全风险。此外,企业间的私有库差异巨大,从架构设计到API接口各不相同,要求任何自动化工具都必须具备高度的灵活性和可定制性,以适应这些多样化的环境。 +相较于广泛采用的公开编码模型,针对私有库设计的专有模型显得尤为必要。 +公开模型虽强大,但在面对包含企业核心业务逻辑、技术秘密及高度定制化功能的私有库时,往往捉襟见肘。 +由于缺乏对私有库具体实现细节的认知,生成的代码往往无法精准引用库中的类、方法或属性,这不仅增加了后续人工调整的工作量,还可能引入潜在的安全风险。 +此外,企业间的私有库差异巨大,从架构设计到API接口各不相同,要求任何自动化工具都必须具备高度的灵活性和可定制性,以适应这些多样化的环境。 -鉴于上述现状,本项目通过深度解析私有库的文档资源,精准提取关键信息,并以此为基础对大语言模型进行针对性的微调与优化。这一过程不仅增强了模型对私有库特定功能和用法的理解能力,还极大地提升了生成代码的准确性和实用性。通过本项目,我们期望能够让生成的代码片段无缝集成于企业的私有库生态中,真正实现企业级软件开发的智能化与高效化,满足企业对高质量、高安全性代码的迫切需求。 +鉴于上述现状,本项目通过深度解析私有库的文档资源,精准提取关键信息,并以此为基础对大语言模型进行针对性的微调与优化。 +这一过程不仅增强了模型对私有库特定功能和用法的理解能力,还极大地提升了生成代码的准确性和实用性。 +通过本项目,我们期望能够让生成的代码片段无缝集成于企业的私有库生态中,真正实现企业级软件开发的智能化与高效化,满足企业对高质量、高安全性代码的迫切需求。 \subsection{国内外研究现状} \subsubsection{大语言模型微调研究现状} -大语言模型微调研究在国内外均呈现快速发展态势。在国内,智源研究院与TeleAI联合开发的"悟道·天鹰"系列模型代表了重要进展,其520亿参数版本的开源显著促进了国内AI社区发展。这些模型在部分中英文基准测试中表现出与Llama3-70B和GPT-4相当甚至更优的性能。为解决"幻觉"问题,智源研究院开发的BGE系列向量模型通过检索增强生成(Retrieval-Augmented Generation,RAG)技术有效提升了模型准确性。 +大语言模型微调研究在国内外均呈现快速发展态势\cite{zhang2024}。 +在国内,智源研究院与TeleAI联合开发的"悟道·天鹰"系列模型代表了重要进展,其520亿参数版本的开源显著促进了国内AI社区发展。 +这些模型在部分中英文基准测试中表现出与Llama3-70B和GPT-4相当甚至更优的性能。 +为解决"幻觉"问题,智源研究院开发的BGE系列向量模型通过检索增强生成(Retrieval-Augmented Generation,RAG)技术有效提升了模型准确性。 -国内外研究均呈现出对小型语言模型(Small Language Model,SLM)的高度关注。SLM在计算资源需求和训练成本方面具有明显优势,表明经过领域特定微调的SLM在特定任务上可超越更大的通用模型。清华大学、北京大学和中国科学院等机构在LLM研究中发挥重要作用,其应用范围从古籍数字化到医学研究等多个领域。 +国内外研究均呈现出对小型语言模型(Small Language Model,SLM)的高度关注。 +SLM在计算资源需求和训练成本方面具有明显优势,表明经过领域特定微调的SLM在特定任务上可超越更大的通用模型。清华大学、北京大学和中国科学院等机构在LLM研究中发挥重要作用,其应用范围从古籍数字化到医学研究等多个领域。 -国际研究重点关注长输出大语言模型及其生成连贯长文本的能力。研究人员广泛探索了参数知识适应(如Domain-Adaptive Pre-Training (DAPT)、Instruction Tuning (IT)、Prompt Learning (PL)和模型编辑)和半参数知识适应(如RAG和基于Agent的系统)等技术,以在保留通用知识的同时提高特定任务性能。研究发现,即使少量监督微调数据也能有效激活预训练模型中的知识。 +国际研究重点关注长输出大语言模型及其生成连贯长文本的能力。 +研究人员广泛探索了参数知识适应(如Domain-Adaptive Pre-Training (DAPT)、Instruction Tuning (IT)、Prompt Learning (PL)和模型编辑)和半参数知识适应(如RAG和基于Agent的系统)等技术,以在保留通用知识的同时提高特定任务性能。 +研究发现,即使少量监督微调数据也能有效激活预训练模型中的知识。 -尽管取得进展,微调研究仍面临诸多挑战。国内主要挑战包括模型创新不足、高质量训练数据稀缺以及"幻觉"问题限制了模型在高精度应用中的可靠性。国际上,长输出LLM面临高质量长序列数据缺乏和连贯性维持困难等问题,同时大模型的高计算成本也推动了对更高效模型的需求。 +尽管取得进展,微调研究仍面临诸多挑战。 +国内主要挑战包括模型创新不足、高质量训练数据稀缺以及"幻觉"问题限制了模型在高精度应用中的可靠性。 +国际上,长输出LLM面临高质量长序列数据缺乏和连贯性维持困难等问题,同时大模型的高计算成本也推动了对更高效模型的需求。 未来研究趋势包括:基于大模型的具身智能;提示工程和认知工程的深化应用;检索增强生成技术的进一步发展;通过量化和剪枝提高LLM效率;增强模型可解释性;以及探索Transformer之外的新型模型架构和训练范式。 \subsubsection{微调后大语言模型在企业级应用领域的应用现状} -微调后大语言模型在企业级应用领域的应用正在国内外快速发展。在国内,企业主要在客户服务领域探索微调LLM,创建智能客服机器人以提高客户满意度和运营效率。内容生成是另一重要应用,通过对行业特定数据进行微调,模型可生成符合品牌风格的营销文案和产品描述。北京大学在古籍数字化领域的探索和智源研究院的Emu3多模态模型也展示了在特定企业级应用领域的潜力。总体而言,微调LLM在中国企业级应用领域尚处早期阶段,但潜力巨大。 +微调后大语言模型在企业级应用领域的应用正在国内外快速发展\cite{vmk2024}。 +在国内,企业主要在客户服务领域探索微调LLM,创建智能客服机器人以提高客户满意度和运营效率。 +内容生成是另一重要应用,通过对行业特定数据进行微调,模型可生成符合品牌风格的营销文案和产品描述。 +北京大学在古籍数字化领域的探索和智源研究院的Emu3多模态模型也展示了在特定企业级应用领域的潜力。 +总体而言,微调LLM在中国企业级应用领域尚处早期阶段,但潜力巨大。 -国际上,微调后大语言模型在企业级应用领域更为成熟和广泛。客户服务领域的智能支持系统能提供全天候多语言帮助,处理各类咨询并将复杂问题上报人工客服。内容生成方面,微调LLM被广泛应用于营销、广告和媒体行业,快速生成各类文本内容。金融机构和咨询公司利用微调LLM协助撰写专业分析报告。此外,LLM在数据标注和合成方面的应用对需要大量高质量标注数据的企业级应用至关重要,显著提高了数据标注效率和一致性。微调后大语言模型已广泛应用于国际企业级应用领域,并不断扩展到更多行业和业务流程。 +国际上,微调后大语言模型在企业级应用领域更为成熟和广泛。 +客户服务领域的智能支持系统能提供全天候多语言帮助,处理各类咨询并将复杂问题上报人工客服。 +内容生成方面,微调LLM被广泛应用于营销、广告和媒体行业,快速生成各类文本内容。 +金融机构和咨询公司利用微调LLM协助撰写专业分析报告。 +此外,LLM在数据标注和合成方面的应用对需要大量高质量标注数据的企业级应用至关重要,显著提高了数据标注效率和一致性。 +微调后大语言模型已广泛应用于国际企业级应用领域,并不断扩展到更多行业和业务流程。 \subsubsection{AI辅助编码研究现状} -AI辅助编码的研究和应用在中国尚处于起步阶段。虽然一些大型科技公司和研究机构已开始关注这一领域并推出了内部或限量使用的工具,但像GitHub Copilot这样具有广泛影响力的AI编码助手仍然相对稀少。可以推断,国内研究主要集中在使用机器学习和自然语言处理技术帮助开发者提高编码效率、减少错误以及学习新的编程语言或框架。这可能包括代码自动补全、语法错误检查、代码片段推荐以及基于自然语言描述生成代码等功能。然而,由于缺乏直接相关的公开研究信息,国内AI辅助编码工具的具体功能、性能以及对软件开发流程的影响仍需进一步调查和分析。尽管如此,随着中国软件产业的发展和对开发效率需求的日益增长,AI辅助编码在国内具有广阔的应用前景。 +AI辅助编码的研究和应用在中国尚处于起步阶段。 +虽然一些大型科技公司和研究机构已开始关注这一领域并推出了内部或限量使用的工具,但像GitHub Copilot这样具有广泛影响力的AI编码助手仍然相对稀少。 +可以推断,国内研究主要集中在使用机器学习和自然语言处理技术帮助开发者提高编码效率、减少错误以及学习新的编程语言或框架。 +这可能包括代码自动补全、语法错误检查、代码片段推荐以及基于自然语言描述生成代码等功能。 +然而,由于缺乏直接相关的公开研究信息,国内AI辅助编码工具的具体功能、性能以及对软件开发流程的影响仍需进一步调查和分析。 +尽管如此,随着中国软件产业的发展和对开发效率需求的日益增长,AI辅助编码在国内具有广阔的应用前景。 -在国际上,AI辅助编码的研究和应用已取得了显著进展。GitHub Copilot、Tabnine、IntelliCode等AI编码工具被开发者广泛使用。这些工具通常在大规模代码语料库上进行训练,能够提供智能代码补全、错误检测、代码建议和代码生成。研究表明,这些工具可以显著提高开发者的编码速度和效率,减少代码错误,并帮助开发者更好地理解和使用各种编程语言和框架。国际研究着重于进一步提升AI编码工具的智能化水平,例如使其能够理解更复杂的代码逻辑,更好地处理上下文信息,生成更符合开发者意图的代码,以及与各种开发环境和工作流程更深入地集成。此外,还在研究AI编码工具对软件开发流程、代码质量以及开发者学习曲线的影响。总的来说,AI辅助编码在国际上已成为一个成熟且持续发展的研究领域,正在深刻改变软件开发模式。 +在国际上,AI辅助编码的研究和应用已取得了显著进展。 +GitHub Copilot、Tabnine、IntelliCode等AI编码工具被开发者广泛使用。 +这些工具通常在大规模代码语料库上进行训练,能够提供智能代码补全、错误检测、代码建议和代码生成。 +研究表明,这些工具可以显著提高开发者的编码速度和效率,减少代码错误,并帮助开发者更好地理解和使用各种编程语言和框架。 +国际研究着重于进一步提升AI编码工具的智能化水平,例如使其能够理解更复杂的代码逻辑,更好地处理上下文信息,生成更符合开发者意图的代码,以及与各种开发环境和工作流程更深入地集成。 +此外,还在研究AI编码工具对软件开发流程、代码质量以及开发者学习曲线的影响。 +总的来说,AI辅助编码在国际上已成为一个成熟且持续发展的研究领域,正在深刻改变软件开发模式。 +\cite{haque2025} \subsubsection{提示工程研究现状} -提示工程是一门新兴技术,随着大语言模型的普及在中国受到越来越多的关注。上海交通大学的研究人员已经认识到提示工程在未来人工智能应用中的重要性。可以推断,国内的研究和实践主要集中在探索如何设计更有效、更精准的自然语言提示来引导大语言模型生成期望的输出。这可能包括研究不同的提示技巧,例如使用清晰具体的指令、提供相关的上下文信息以及利用少量样本提示。一些国内开发者和企业也开始在实际场景中应用提示工程,例如优化提示以提高智能客服系统的响应质量,增强内容生成的连贯性和相关性。然而,与国际研究相比,在中国提示工程方面的系统性研究和理论框架可能仍处于早期发展阶段。随着大语言模型技术的不断进步及其在中国应用范围的扩大,提示工程有望成为一个越来越重要的研究和实践领域。 +提示工程是一门新兴技术,随着大语言模型的普及在中国受到越来越多的关注。 +上海交通大学的研究人员已经认识到提示工程在未来人工智能应用中的重要性。 +可以推断,国内的研究和实践主要集中在探索如何设计更有效、更精准的自然语言提示来引导大语言模型生成期望的输出。 +这可能包括研究不同的提示技巧,例如使用清晰具体的指令、提供相关的上下文信息以及利用少量样本提示。 +一些国内开发者和企业也开始在实际场景中应用提示工程,例如优化提示以提高智能客服系统的响应质量,增强内容生成的连贯性和相关性。 +然而,与国际研究相比,在中国提示工程方面的系统性研究和理论框架可能仍处于早期发展阶段。 +随着大语言模型技术的不断进步及其在中国应用范围的扩大,提示工程有望成为一个越来越重要的研究和实践领域。 -在国际上,提示工程已成为一个热门研究领域。研究人员广泛探索了各种提示技巧和策略,例如零样本提示、少量样本提示和思维链提示,并研究了它们对大语言模型输出质量的影响。同时,出现了多个提示工程框架和工具,旨在帮助用户更有效地设计和管理提示。国际研究还侧重于理解为什么某些提示能产生更好的结果以及如何自动生成或优化提示。此外,还在进行一些关于提示压缩的研究以提高效率。总的来说,国际上在提示工程方面的研究已经形成一定的体系,并正在持续发展和完善,为更好地利用大语言模型提供了重要的理论基础和实践指导。 +在国际上,提示工程已成为一个热门研究领域。 +研究人员广泛探索了各种提示技巧和策略,例如零样本提示、少量样本提示和思维链提示,并研究了它们对大语言模型输出质量的影响。 +同时,出现了多个提示工程框架和工具,旨在帮助用户更有效地设计和管理提示。 +国际研究还侧重于理解为什么某些提示能产生更好的结果以及如何自动生成或优化提示。 +此外,还在进行一些关于提示压缩的研究以提高效率。 +总的来说,国际上在提示工程方面的研究已经形成一定的体系,并正在持续发展和完善,为更好地利用大语言模型提供了重要的理论基础和实践指导。 +\cite{Meskó2023} \subsection{本文结构安排} 本文围绕基于大语言模型的自动化微调框架展开研究与实现,全文共分为六章,具体结构安排如下: -第一章 前言:本章首先介绍了研究的背景与意义,阐述了大语言模型微调自动化的重要性和必要性。随后,对国内外相关的研究现状进行了回顾与分析,指出了现有方法的优势与不足。最后,概述了本文的主要研究内容,并介绍了论文的整体结构安排。 +第一章 前言:本章首先介绍了研究的背景与意义,阐述了大语言模型微调自动化的重要性和必要性。 +随后,对国内外相关的研究现状进行了回顾与分析,指出了现有方法的优势与不足。 +最后,概述了本文的主要研究内容,并介绍了论文的整体结构安排。 -第二章 相关技术介绍:本章详细介绍了本文研究所涉及的关键技术。包括大语言模型(LLM)的发展、应用及在辅助编码方面的潜力;提示工程技术在引导LLM生成高质量文本中的作用;模型量化技术及其在降低模型部署成本方面的意义;LoRA(Low-Rank Adaptation)等参数高效微调方法,特别是QLoRA的原理与优势;优化微调效率的unsloth算子;以及用于构建交互式界面的Gradio框架。 +第二章 相关技术介绍:本章详细介绍了本文研究所涉及的关键技术。 +包括大语言模型(LLM)的发展、应用及在辅助编码方面的潜力;提示工程技术在引导LLM生成高质量文本中的作用;模型量化技术及其在降低模型部署成本方面的意义;LoRA(Low-Rank Adaptation)等参数高效微调方法,特别是QLoRA的原理与优势;优化微调效率的unsloth算子;以及用于构建交互式界面的Gradio框架。 -第三章 需求分析:本章从项目整体出发,对基于大语言模型的自动化微调框架进行了需求分析。首先介绍了项目的整体目标和应用场景。然后,详细分析了系统的功能需求,包括训练语料生成、模型微调、自动化整合以及前端展示等核心功能。最后,阐述了系统的非功能需求,如性能要求和扩展性要求。 +第三章 需求分析:本章从项目整体出发,对基于大语言模型的自动化微调框架进行了需求分析。 +首先介绍了项目的整体目标和应用场景。 +然后,详细分析了系统的功能需求,包括训练语料生成、模型微调、自动化整合以及前端展示等核心功能。 +最后,阐述了系统的非功能需求,如性能要求和扩展性要求。 -第四章 关键技术实现:本章详细阐述了系统的具体实现过程。首先介绍了系统的整体架构设计、模块划分与交互流程。接着,描述了双数据库架构(SQLite+TinyDB)的设计与实现方案,以及数据模型定义和数据库管理。详细介绍了语料生成与处理技术,包括Markdown文档解析、Prompt模板应用、API协程并发调用以及数据校验与持久化。重点阐述了语言模型训练技术的实现,涵盖监督式微调(SFT)流程、训练数据准备、LoRA微调方法应用、训练配置、监控与结果保存。随后,介绍了基于Gradio框架的前端交互系统设计与实现,包括全局状态管理、前后端数据流、流式响应与实时反馈以及异常处理。最后,探讨了系统的扩展性实现方案。 +第四章 关键技术实现:本章详细阐述了系统的具体实现过程。 +首先介绍了系统的整体架构设计、模块划分与交互流程。 +接着,描述了双数据库架构(SQLite+TinyDB)的设计与实现方案,以及数据模型定义和数据库管理。 +详细介绍了语料生成与处理技术,包括Markdown文档解析、Prompt模板应用、API协程并发调用以及数据校验与持久化。 +重点阐述了语言模型训练技术的实现,涵盖监督式微调(SFT)流程、训练数据准备、LoRA微调方法应用、训练配置、监控与结果保存。 +随后,介绍了基于Gradio框架的前端交互系统设计与实现,包括全局状态管理、前后端数据流、流式响应与实时反馈以及异常处理。 +最后,探讨了系统的扩展性实现方案。 -第五章 结果验证:本章对基于文档驱动的自适应编码大模型微调框架的实验结果进行验证和分析。首先介绍了实验环境,包括硬件配置和软件环境。然后,详细描述了实验对象,包括基础模型选择、微调数据集和微调参数配置。接着,分析了微调过程中的资源占用和训练指标变化。最后,从代码生成能力、文档理解能力、通用能力保持和用户满意度等多个维度对微调效果进行了全面验证,证明了本框架的有效性和实用价值。 +第五章 结果验证:本章对基于文档驱动的自适应编码大模型微调框架的实验结果进行验证和分析。 +首先介绍了实验环境,包括硬件配置和软件环境。 +然后,详细描述了实验对象,包括基础模型选择、微调数据集和微调参数配置。 +接着,分析了微调过程中的资源占用和训练指标变化。 +最后,从代码生成能力、文档理解能力、通用能力保持和用户满意度等多个维度对微调效果进行了全面验证,证明了本框架的有效性和实用价值。 -第六章 总结与展望:本章对本文的研究工作进行了全面的总结,回顾了所取得的主要成果。同时,分析了当前研究存在的不足与局限性。最后,对未来的研究方向和可能的技术发展进行了展望。 +第六章 总结与展望:本章对本文的研究工作进行了全面的总结,回顾了所取得的主要成果。 +同时,分析了当前研究存在的不足与局限性。 +最后,对未来的研究方向和可能的技术发展进行了展望。 \subsection{小结} -本章作为全文的引言部分,首先阐明了在当前大语言模型蓬勃发展的背景下,构建自动化微调框架的研究背景和重要的现实意义。通过对国内外相关研究现状的梳理,我们认识到自动化、高效化微调工具的缺失是当前LLM应用落地的瓶颈之一,这进一步凸显了本研究的价值。本章还概述了本文的主要研究内容,旨在通过整合先进的语料生成、模型微调和前端交互技术,构建一个用户友好、高效灵活的LLM自动化微调框架。最后,详细介绍了本文的章节结构安排,为读者清晰地勾勒出后续内容的逻辑脉络,为深入理解本文的研究工作奠定了基础。 \ No newline at end of file +本章作为全文的引言部分,首先阐明了在当前大语言模型蓬勃发展的背景下,构建自动化微调框架的研究背景和重要的现实意义。 +通过对国内外相关研究现状的梳理,我们认识到自动化、高效化微调工具的缺失是当前LLM应用落地的瓶颈之一,这进一步凸显了本研究的价值。 +本章还概述了本文的主要研究内容,旨在通过整合先进的语料生成、模型微调和前端交互技术,构建一个用户友好、高效灵活的LLM自动化微调框架。 +最后,详细介绍了本文的章节结构安排,为读者清晰地勾勒出后续内容的逻辑脉络,为深入理解本文的研究工作奠定了基础。 diff --git a/paper/latex/chapters/references.tex b/paper/latex/chapters/references.tex index 562600b..4bfda64 100644 --- a/paper/latex/chapters/references.tex +++ b/paper/latex/chapters/references.tex @@ -3,34 +3,49 @@ \renewcommand\refname{参考文献} \begin{thebibliography}{99} \addcontentsline{toc}{section}{参考文献\tiny{\quad}} + \bibitem{zhang2024} + 张钦彤, 王昱超, 王鹤羲, 等. 大语言模型微调技术的研究综述[J]. Journal of Computer Engineering \& Applications, 2024, 60(17). + + \bibitem{haque2025} + Haque M Z, Afrin S, Mastropaolo A. A Systematic Literature Review of Parameter-Efficient Fine-Tuning for Large Code Models[J]. arXiv preprint arXiv:2504.21569, 2025. - \bibitem{Topsakal2023Creating}Topsakal, O., Akinci, T. C. Creating large language model applications utilizing langchain: A primer on developing llm apps fast[C]. International Conference on Applied Engineering and Natural Sciences, 2023, 1(1): 1050-1056. + \bibitem{vmk2024} + VM K, Warrier H, Gupta Y. Fine tuning llm for enterprise: Practical guidelines and recommendations[J]. arXiv preprint arXiv:2404.10779, 2024. + + \bibitem{Meskó2023} + Meskó B. Prompt engineering as an important emerging skill for medical professionals: tutorial[J]. Journal of medical Internet research, 2023, 25: e50638. + + \bibitem{wang2024} + 王耀祖, 李擎, 戴张杰, 等. 大语言模型研究现状与趋势[J]. 工程科学学报, 2024, 46(8): 1411-1425. + + \bibitem{Zhang2023Survey} + Zhang, Z., Chen, C., Liu, B., et al. A survey on language models for code[J]. arXiv preprint arXiv:2311.07989, 2023. + + \bibitem{Chen2023} + Chen B, Zhang Z, Langrené N, et al. Unleashing the potential of prompt engineering in large language models: a comprehensive review[J]. arXiv preprint arXiv:2310.14735, 2023. + + \bibitem{Lin2024Awq} + Lin J, Tang J, Tang H, et al. Awq: Activation-aware weight quantization for on-device llm compression and acceleration[J]. Proceedings of Machine Learning and Systems, 2024, 6: 87-100. + + \bibitem{Dong2023} + Dong G, Yuan H, Lu K, et al. How abilities in large language models are affected by supervised fine-tuning data composition[J]. arXiv preprint arXiv:2310.05492, 2023. + + \bibitem{Dettmers2024Qlora} + Dettmers, T., Pagnoni, A., Holtzman, A., et al. Qlora: Efficient finetuning of quantized llms[J]. Advances in Neural Information Processing Systems, 2024, 36. - \bibitem{Liu2015Topical}Liu, Y., Liu, Z., Chua, T. S., et al. Topical word embeddings[C]. Proceedings of the AAAI Conference on Artificial Intelligence, 2015, 29(1). - - \bibitem{Dettmers2024Qlora}Dettmers, T., Pagnoni, A., Holtzman, A., et al. Qlora: Efficient finetuning of quantized llms[J]. Advances in Neural Information Processing Systems, 2024, 36. - - \bibitem{Hu2021Lora}Hu, E. J., Shen, Y., Wallis, P., et al. Lora: Low-rank adaptation of large language models[J]. arXiv preprint arXiv:2106.09685, 2021. - - \bibitem{Yang2024Qwen2}Yang, A., Yang, B., Hui, B., et al. Qwen2 technical report[J]. arXiv preprint arXiv:2407.10671, 2024. - - \bibitem{Zan2022Large}Zan, D., Chen, B., Zhang, F., et al. Large language models meet nl2code: A survey[J]. arXiv preprint arXiv:2212.09420, 2022. - - \bibitem{Gunter2024Apple}Gunter, T., Wang, Z., Wang, C., et al. Apple Intelligence Foundation Language Models[J]. arXiv preprint arXiv:2407.21075, 2024. - - \bibitem{Zhang2023Survey}Zhang, Z., Chen, C., Liu, B., et al. A survey on language models for code[J]. arXiv preprint arXiv:2311.07989, 2023. - - \bibitem{Jeong2023Generative}Jeong, C. Generative AI service implementation using LLM application architecture: based on RAG model and LangChain framework[J]. Journal of Intelligence and Information Systems, 2023, 29(4): 129-164. - - \bibitem{Fan2024Survey}Fan, W., Ding, Y., Ning, L., et al. A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models[C]. Proceedings of the 30th ACM SIGKDD Conference on Knowledge Discovery and Data Mining, 2024: 6491-6501. - - \bibitem{Kusner2015From}Kusner, M., Sun, Y., Kolkin, N., et al. From word embeddings to document distances[C]. International conference on machine learning, PMLR, 2015: 957-966. - - \bibitem{Wu2024Qingbao}吴娜, 沈思, 王东波. 基于开源LLMs的中文学术文本标题生成研究—以人文社科领域为例[J]. 情报科学, 2024: 1-22. - - \bibitem{Li2024Qinghua}李佳沂, 黄瑞章, 陈艳平, et al. 结合提示学习和Qwen大语言模型的裁判文书摘要方法[J]. 清华大学学报(自然科学版), 2024: 1-12. - - \bibitem{Wei2024Shuju}韦一金, 樊景超. 基于ChatGLM2-6B的农业政策问答系统[J]. 数据与计算发展前沿(中英文), 2024, 6(04): 116-127. - - \bibitem{Xiang2024Jisuanji}向小伟, 申艳光, 胡明昊, et al. 大模型驱动的科技政策法规问答系统研究[J]. 计算机科学与探索, 2024: 1-13. + \bibitem{Hu2021Lora} + Hu, E. J., Shen, Y., Wallis, P., et al. Lora: Low-rank adaptation of large language models[J]. arXiv preprint arXiv:2106.09685, 2021. + + \bibitem{Han2024Unsloth} + Han D, Han M. Unsloth[J]. URL: https://github. com/unslothai/unsloth. git. The model overview web form is used to get the model architecture and information about the model The intent submission web form is for the LLMFed use case where task name, server IP address, client IPs, and intent for the FL task are taken as inputs, 2023. + + \bibitem{Zhang2024Gradio} + Abid A, Abdalla A, Abid A, et al. Gradio: Hassle-free sharing and testing of ml models in the wild[J]. arXiv preprint arXiv:1906.02569, 2019. + + \bibitem{Yang2024Qwen} + Yang A, Yang B, Zhang B, et al. \& Qiu, Z.(2024)[R]. Qwen2. 5 technical report. + + \bibitem{Liu2024Deepseek} + Liu A, Feng B, Xue B, et al. Deepseek-v3 technical report[J]. arXiv preprint arXiv:2412.19437, 2024. + \end{thebibliography} \ No newline at end of file diff --git a/paper/latex/chapters/technology.tex b/paper/latex/chapters/technology.tex index 6356598..d9fd6f1 100644 --- a/paper/latex/chapters/technology.tex +++ b/paper/latex/chapters/technology.tex @@ -9,7 +9,7 @@ 大语言模型(LLM)是一种能够理解、生成并与人类语言交互的人工智能技术。 这些模型通过在海量数据集上训练,能够应对科学、技术、艺术和文化等广泛领域的问题,成为信息检索、内容创作和自然语言理解的关键工具。 -LLM 主要基于 Transformer 架构,通过处理大规模文本数据来捕捉语言的复杂模式、语法规则和语义关系。 +LLM 主要基于 Transformer 架构,通过处理大规模文本数据来捕捉语言的复杂模式、语法规则和语义关系。\cite{wang2024} 自然语言处理(NLP)的发展为 LLM 奠定了基础。 1966 年,约瑟夫·魏泽鲍姆创建的 ELIZA 被认为是第一个使用 NLP 的程序,它能根据用户输入的关键词给出预设响应。 @@ -58,10 +58,10 @@ LLM 可以分析代码,识别潜在的错误模式或问题,帮助开发者 综上所述,大语言模型正日益成为软件开发过程中不可或缺的辅助工具。 它们通过代码生成、代码补全和错误检测与修复等功能,极大地提升了开发效率和代码质量。 -随着 LLM 技术的不断发展,其在软件开发领域的应用前景将更加广阔。 +随着 LLM 技术的不断发展,其在软件开发领域的应用前景将更加广阔。\cite{Zhang2023Survey} \subsection{提示工程技术} -提示工程(Prompt Engineering)是设计和优化输入提示(prompts)的系统方法,旨在精确引导大语言模型(LLMs)生成符合预期的输出。 +提示工程(Prompt Engineering)是设计和优化输入提示(prompts)的系统方法,旨在精确引导大语言模型(LLMs)生成符合预期的输出。\cite{Chen2023} 随着生成式人工智能技术的发展,提示工程已成为充分发挥模型能力的关键环节。通过精心构建提示的格式、结构、语言和上下文,提示工程能够显著提升模型理解用户意图的准确性,并引导其生成更加精确、相关且高质量的回应。 专业的提示工程师通过设计最优化的输入指令,使其与生成式 AI 系统的内部机制高效协同,从而获取更为精准和有用的输出结果。 @@ -80,7 +80,7 @@ LLM 可以分析代码,识别潜在的错误模式或问题,帮助开发者 \subsection{模型量化技术} 模型量化(Model Quantization)是大语言模型(LLMs)中使用的一种技术,旨在将高精度数据(通常是 32 位浮点数 (FP32) 或 16 位浮点数 (FP16))的权重和激活值转换为低精度数据类型,如 8 位整数 (INT8) 或 4 位整数 (INT4)。 -模型量化的主要目的是减少模型的内存占用、提高推理速度并降低能耗,使其更易于部署在资源受限的设备上,如移动设备或边缘服务器。 +模型量化的主要目的是减少模型的内存占用、提高推理速度并降低能耗,使其更易于部署在资源受限的设备上,如移动设备或边缘服务器。\cite{Lin2024Awq} 该技术的数学本质是通过线性映射将浮点值域$[r_{\text{min}}, r_{\text{max}}]$映射到整数空间,其量化与反量化过程可表示为: \begin{equation*} @@ -99,25 +99,22 @@ q &= \text{round}\left(\frac{r - r_{\text{min}}}{s}\right) \\ INT8 量化通常被认为是性能和精度之间的良好折衷方案,可在保持较高模型准确性的同时,显著降低内存占用和提高推理速度。INT4 量化更为激进,可实现更高压缩率和更快速度,但通常伴随更明显精度下降,更适用于对资源限制非常严格但对精度要求相对较低的场景。选择合适的量化技术和级别需要在模型大小、推理速度和精度之间进行权衡,通常取决于具体应用场景和硬件条件。 -\subsubsection{监督式微调(SFT)概述} +\subsubsection{监督式微调概述} -随着大规模预训练语言模型(Large Language Models, -LLMs)在自然语言处理领域展现出强大的通用能力,如何有效地将这些模型适配到特定的应用场景或下游任务中,成为了研究与实践的关键环节。监督式微调(Supervised -Fine-Tuning, -SFT)正是实现这一目标的核心技术之一。它指的是在一个已经经过大规模无标注数据预训练的基础语言模型上,利用一套有标注的、高质量的特定任务数据(通常表现为``指令-响应''或``输入-输出''对的形式)进行进一步训练的过程。 +随着大语言模型在自然语言处理领域展现出强大的通用能力,如何有效地将这些模型适配到特定的应用场景或下游任务中,成为了研究与实践的关键环节。监督式微调(Supervised Fine-Tuning,SFT)正是实现这一目标的核心技术之一\cite{Dong2023}。它指的是在一个已经经过大规模无标注数据预训练的基础语言模型上,利用一套有标注的、高质量的特定任务数据(通常表现为``指令-响应''或``输入-输出''对的形式)进行进一步训练的过程。 SFT的``监督''特性体现在其训练数据的形式上。与预训练阶段模型从海量文本中自主学习语言模式不同,SFT阶段向模型明确展示了在给定输入(如用户提问、指令)下,期望的、正确的输出(如恰当的回答、符合要求的文本)。模型在学习过程中,通过优化目标函数,不断调整自身参数,力求使其生成的响应尽可能地逼近标注数据中的目标响应。这种有指导的学习方式使得模型能够更精准地理解特定任务的格式要求、知识范畴以及交互模式。 采用SFT的主要目的在于提升模型在特定领域的性能表现和任务遵循能力。预训练模型虽然知识广博,但在特定专业领域或具体任务上的表现可能不够精确或不符合特定规范。通过在相关的高质量标注数据上进行微调,可以有效地向模型注入领域知识,提升其回答的准确性和相关性。同时,SFT也是引导模型学习遵循特定指令、模仿某种对话风格或角色的重要手段,使其行为更加符合人类预期,从而更好地服务于实际应用需求。因此,SFT是连接通用预训练模型与特定应用场景的关键桥梁,是使大模型``落地''不可或缺的技术步骤。在本研究中,我们采用SFT技术来定制化训练语言模型,以满足特定交互任务的需求。 \subsection{QLoRA 微调方法} -QLoRA是一种高效微调大语言模型(LLMs)的方法,它结合了量化和低秩自适应技术,旨在在资源受限的情况下实现与全精度微调相当的性能。QLoRA 的主要原理是在微调过程中冻结预训练 LLM 的权重并将其量化为 4 位精度,然后引入少量可训练的低秩适配器(Low-Rank Adapters, LoRA)。微调期间,梯度通过冻结的 4 位量化预训练语言模型反向传播到这些低秩适配器中。 +QLoRA是一种高效微调大语言模型(LLMs)的方法,它结合了量化和低秩自适应技术,旨在在资源受限的情况下实现与全精度微调相当的性能\cite{Dettmers2024Qlora}。QLoRA 的主要原理是在微调过程中冻结预训练 LLM 的权重并将其量化为 4 位精度,然后引入少量可训练的低秩适配器(Low-Rank Adapters, LoRA)。微调期间,梯度通过冻结的 4 位量化预训练语言模型反向传播到这些低秩适配器中。 QLoRA 引入了多项创新技术以在节省内存的同时不牺牲性能。首先是 4 位 NormalFloat (NF4) 数据类型,这是一种专为正态分布权重设计的新数据类型,在信息论上最优,并在实证研究中优于 4 位整数和 4 位浮点数。NF4 基于分位数化,确保每个量化区间分配相等数量的输入张量值,从而有效利用内存。其次是双重量化 (Double Quantization),通过对第一步量化的量化常数再次进行量化,进一步减少平均内存占用,在不显著损失性能的情况下节省额外内存。最后是分页优化器 (Paged Optimizers),利用 NVIDIA 统一内存特性管理训练期间的内存峰值,特别是在处理长序列的小批量数据时,从而避免内存不足错误。 QLoRA 的主要优势在于其能够在资源受限情况下实现高效微调。通过将预训练模型量化到 4 位并仅训练少量低秩适配器,QLoRA 显著降低了微调所需的 GPU 内存。例如,QLoRA 能够将微调一个 650 亿参数模型的平均 GPU 内存需求从超过 780GB 降低到低于 48GB,且不降低运行时或预测性能。这使得在单个消费级 GPU 上微调大型模型成为可能,从而大大降低了微调 LLM 的门槛。研究表明,使用 QLoRA 微调的 LLM 在各种任务上可以达到与全精度微调相当甚至更好的性能。 -低秩适配器(LoRA)是 QLoRA 的关键组成部分。LoRA 的核心思想是,大型预训练模型在适应下游任务时,其权重变化具有低秩特性。因此,LoRA 冻结原始预训练模型的权重,并在每个 Transformer 层的自注意力模块中注入两个小的低秩矩阵(A 和 B)。LoRA 的数学原理可以表示为: +低秩适配器(LoRA)是 QLoRA 的关键组成部分。LoRA 的核心思想是,大型预训练模型在适应下游任务时,其权重变化具有低秩特性\cite{Hu2021Lora}。因此,LoRA 冻结原始预训练模型的权重,并在每个 Transformer 层的自注意力模块中注入两个小的低秩矩阵(A 和 B)。LoRA 的数学原理可以表示为: \begin{equation} \begin{gathered} W = W_0 + \Delta W = W_0 + BA @@ -129,7 +126,7 @@ W = W_0 + \Delta W = W_0 + BA \subsection{Unsloth 算子} -Unsloth 是一个开源软件,旨在简化大语言模型(LLMs)的微调过程。它提供用户友好的界面和强大功能,可帮助 AI 开发初学者和专家轻松管理资源、优化性能并集成各种 AI 工具以提高模型准确性。 +Unsloth 是一个开源软件,旨在简化大语言模型(LLMs)的微调过程\cite{Han2024Unsloth}。它提供用户友好的界面和强大功能,可帮助 AI 开发初学者和专家轻松管理资源、优化性能并集成各种 AI 工具以提高模型准确性。 Unsloth 的核心优势在于其能够显著加速 LLM 的训练和推理过程,同时降低内存使用。 Unsloth 通过手动推导所有计算密集型数学步骤并编写自定义 GPU 内核来实现加速,而无需更改硬件。 @@ -154,7 +151,7 @@ Unsloth 通过优化内存使用和速度,使得在资源有限环境中进行 \subsection{Gradio 框架} -Gradio 是一个开源 Python 包,允许用户快速构建机器学习模型、API 或任何任意 Python 函数的演示或 Web 应用程序。用户可以使用 Gradio 的内置共享功能在几秒钟内分享其演示或 Web 应用程序的链接。该框架无需 JavaScript、CSS 或 Web 托管经验,使其成为机器学习从业者和研究人员的理想工具。 +Gradio 是一个开源 Python 包,允许用户快速构建机器学习模型、API 或任何任意 Python 函数的演示或 Web 应用程序\cite{Zhang2024Gradio}。用户可以使用 Gradio 的内置共享功能在几秒钟内分享其演示或 Web 应用程序的链接。该框架无需 JavaScript、CSS 或 Web 托管经验,使其成为机器学习从业者和研究人员的理想工具。 Gradio 提供了一系列核心特性,使其在机器学习应用开发中脱颖而出。通过简单的 pip 安装,用户只需在项目中添加几行代码即可创建功能完备的 Gradio 界面。Gradio 能够与任何 Python 库无缝集成,只要用户能够编写 Python 函数,就能利用 Gradio 构建交互式应用。在展示和共享方面,Gradio 界面可以轻松嵌入 Python 笔记本或作为独立网页呈现,并能自动生成公共链接,方便用户与同事共享,使他们能够远程与用户计算机上的模型进行交互。此外,创建的界面还可以永久托管在 Hugging Face Spaces 上,Hugging Face 将在其服务器上托管界面并提供持久的共享链接。 diff --git a/paper/latex/chapters/verification.tex b/paper/latex/chapters/verification.tex index a8e7531..fd9b260 100644 --- a/paper/latex/chapters/verification.tex +++ b/paper/latex/chapters/verification.tex @@ -43,7 +43,7 @@ \subsubsection{基础模型选择} -本实验选择qwen2.5-3B作为基础模型进行微调。该模型是阿里云开源的新一代大语言模型,具有以下特点: +本实验选择qwen2.5-3B作为基础模型进行微调。该模型是阿里云开源的新一代大语言模型,具有以下特点:\cite{Yang2024Qwen} \begin{itemize} \item 性能表现:在 MMLU、GSM8K、BBH 等权威测试中优于多数同参数级开源模型。 \item 参数规模:3.09B参数量(非嵌入参数2.77B),在保持较高性能的同时,对计算资源要求相对较低。 @@ -53,7 +53,7 @@ \subsubsection{数据集生成} -本实验采用DeepSeek V3作为数据集生成模型,该模型是深度求索公司开发的新一代大语言模型,具有以下特点: +本实验采用DeepSeek V3作为数据集生成模型,该模型是深度求索公司开发的新一代大语言模型,具有以下特点:\cite{Liu2024Deepseek} \begin{itemize} \item 性能表现:在 Codeforces 基准测试中,DeepSeek V3 取得了 51.6 分的成绩,刷新了该领域的 SOTA 水平。在 LiveCodeBench(Pass@1 - COT)测试中得分为 40.5,在 LiveCodeBench(Pass@1)测试中成绩为 37.6,均表现出色。 \item 上下文窗口:在理论上支持 128K tokens 的上下文长度。不过在实际应用中,部分服务商可能会出于硬件或性能优化等考虑,将其限制在 64K tokens。 From 9202135d3b2e16cb549ca6d7647308041aff0fc3 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 17:59:29 +0800 Subject: [PATCH 11/13] =?UTF-8?q?docs(paper):=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=8A=80=E6=9C=AF=E7=AB=A0=E8=8A=82=E4=B8=AD=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E5=AD=A6=E5=85=AC=E5=BC=8F=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将技术章节中的数学公式从 equation 环境改为 equation* 环境,以避免公式编号重复的问题 --- paper/latex/chapters/technology.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/paper/latex/chapters/technology.tex b/paper/latex/chapters/technology.tex index d9fd6f1..05247bd 100644 --- a/paper/latex/chapters/technology.tex +++ b/paper/latex/chapters/technology.tex @@ -115,11 +115,11 @@ QLoRA 引入了多项创新技术以在节省内存的同时不牺牲性能。 QLoRA 的主要优势在于其能够在资源受限情况下实现高效微调。通过将预训练模型量化到 4 位并仅训练少量低秩适配器,QLoRA 显著降低了微调所需的 GPU 内存。例如,QLoRA 能够将微调一个 650 亿参数模型的平均 GPU 内存需求从超过 780GB 降低到低于 48GB,且不降低运行时或预测性能。这使得在单个消费级 GPU 上微调大型模型成为可能,从而大大降低了微调 LLM 的门槛。研究表明,使用 QLoRA 微调的 LLM 在各种任务上可以达到与全精度微调相当甚至更好的性能。 低秩适配器(LoRA)是 QLoRA 的关键组成部分。LoRA 的核心思想是,大型预训练模型在适应下游任务时,其权重变化具有低秩特性\cite{Hu2021Lora}。因此,LoRA 冻结原始预训练模型的权重,并在每个 Transformer 层的自注意力模块中注入两个小的低秩矩阵(A 和 B)。LoRA 的数学原理可以表示为: -\begin{equation} +\begin{equation*} \begin{gathered} W = W_0 + \Delta W = W_0 + BA \end{gathered} -\end{equation} +\end{equation*} 其中,$W_0 \in \mathbb{R}^{d \times k}$ 是预训练模型中的原始权重矩阵,$\Delta W = BA$ 是低秩更新,$B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,且秩 $r \ll \min(d, k)$。通过这种方式,原本需要训练 $d \times k$ 个参数,现在只需要训练 $r \times (d + k)$ 个参数。例如,当 $d = k = 1000$ 且 $r = 8$ 时,可训练参数数量从 $10^6$ 减少到约 $1.6 \times 10^4$,减少了约 98.4\%。 微调过程中仅更新这些低秩矩阵的参数,原始模型的权重保持不变。这大大减少了需要训练的参数数量,从而降低了计算成本和内存需求。LoRA 的线性设计也确保与完全微调的模型相比,不会引入额外推理延迟。在推理阶段,可以将低秩更新与原始权重合并:$W = W_0 + BA$,从而不增加模型的推理延迟。QLoRA 通过结合量化和 LoRA,为在资源受限环境中高效微调大语言模型提供了有力方法,使得研究人员和从业人员能够更容易利用和定制最先进的 LLM,推动 NLP 领域进一步发展。 From 1d2583c128a1d269d9edad1a3be3c56c4c71c4b7 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 18:06:19 +0800 Subject: [PATCH 12/13] =?UTF-8?q?docs(paper):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=9E=B6=E6=9E=84=E5=9B=BE=E7=9A=84=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E5=92=8C=E9=97=B4=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改了LaTeX系统架构图中的元素间距和布局,移除了底部的说明文字以简化图表。主要变更包括: 1. 调整各层标题和模块的垂直间距 2. 统一各层标题的上边距为0.5cm 3. 下移业务逻辑层和数据访问层模块位置 4. 移除底部冗余的架构说明文字 --- paper/latex/figures/system_architecture.tex | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/paper/latex/figures/system_architecture.tex b/paper/latex/figures/system_architecture.tex index 1a08054..b60140f 100644 --- a/paper/latex/figures/system_architecture.tex +++ b/paper/latex/figures/system_architecture.tex @@ -10,13 +10,13 @@ % 定义三层架构 \node[layer, fill=blue!10, text height=5cm] (presentation) at (0,0) {}; - \node[title, above=0.1cm of presentation.north west, anchor=west] {表现层}; + \node[title, above=0.5cm of presentation.north west, anchor=west] {表现层}; - \node[layer, fill=green!10, below=0.5cm of presentation] (business) {}; - \node[title, above=0.1cm of business.north west, anchor=west] {业务逻辑层}; + \node[layer, fill=green!10, below=1cm of presentation] (business) {}; + \node[title, above=0.5cm of business.north west, anchor=west] {业务逻辑层}; - \node[layer, fill=orange!10, below=0.5cm of business] (data) {}; - \node[title, above=0.1cm of data.north west, anchor=west] {数据访问层}; + \node[layer, fill=orange!10, below=1cm of business] (data) {}; + \node[title, above=0.5cm of data.north west, anchor=west] {数据访问层}; % 表现层模块 \node[module, fill=blue!20] (ui1) at (-3.5, 1.5) {模型管理}; @@ -28,27 +28,27 @@ \node[module, fill=blue!20] (ui7) at (0, -1.5) {系统设置}; % 业务逻辑层模块 - \node[module, fill=green!20] (bl1) at (-3.5, -4.5) {模型训练模块\\(Unsloth/TRL)}; - \node[module, fill=green!20] (bl2) at (0, -4.5) {模型推理模块\\(流式生成)}; - \node[module, fill=green!20] (bl3) at (3.5, -4.5) {数据集生成模块\\(LangChain)}; - \node[module, fill=green!20] (bl4) at (-2, -6) {数据处理模块}; - \node[module, fill=green!20] (bl5) at (2, -6) {配置管理模块}; + \node[module, fill=green!20] (bl1) at (-3.5, -5) {模型训练模块\\(Unsloth/TRL)}; + \node[module, fill=green!20] (bl2) at (0, -5) {模型推理模块\\(流式生成)}; + \node[module, fill=green!20] (bl3) at (3.5, -5) {数据集生成模块\\(LangChain)}; + \node[module, fill=green!20] (bl4) at (-2, -6.5) {数据处理模块}; + \node[module, fill=green!20] (bl5) at (2, -6.5) {配置管理模块}; % 数据访问层模块 - \node[module, fill=orange!20] (dl1) at (-3.5, -10) {SQLite\\(系统配置)}; - \node[module, fill=orange!20] (dl2) at (0, -10) {TinyDB\\(数据集管理)}; - \node[module, fill=orange!20] (dl3) at (3.5, -10) {JSON文件\\(导入/导出)}; + \node[module, fill=orange!20] (dl1) at (-3.5, -10.5) {SQLite\\(系统配置)}; + \node[module, fill=orange!20] (dl2) at (0, -10.5) {TinyDB\\(数据集管理)}; + \node[module, fill=orange!20] (dl3) at (3.5, -10.5) {JSON文件\\(导入/导出)}; % 层间连接 \draw[arrow] (presentation.south) -- (business.north) node[midway, right] {函数调用}; \draw[arrow] (business.south) -- (data.north) node[midway, right] {数据操作}; % 添加Gradio框架标注 - \node[above=0.1cm of presentation.north east, anchor=east, font=\small\itshape] {基于Gradio框架}; + \node[above=0.2cm of presentation.north east, anchor=east, font=\small\itshape] {基于Gradio框架}; - % 添加说明 - \node[below=0.2cm of data.south, text width=12cm, text centered, font=\footnotesize] - {系统采用三层架构设计,实现了功能模块间的解耦与分层,提高了系统的可扩展性和可维护性}; + % % 添加说明 + % \node[below=0.2cm of data.south, text width=12cm, text centered, font=\footnotesize] + % {系统采用三层架构设计,实现了功能模块间的解耦与分层,提高了系统的可扩展性和可维护性}; \end{tikzpicture} \caption{系统三层架构设计图} From 0b2f1d6c9fa156ce0a20c44bdcc788c5243ae500 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Thu, 29 May 2025 18:11:09 +0800 Subject: [PATCH 13/13] =?UTF-8?q?docs(paper):=20=E6=B7=BB=E5=8A=A0enumitem?= =?UTF-8?q?=E5=8C=85=E5=B9=B6=E8=AE=BE=E7=BD=AE=E5=88=97=E8=A1=A8=E6=97=A0?= =?UTF-8?q?=E9=97=B4=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加enumitem包用于更好的列表控制,并设置itemize环境无间距以改善文档格式 --- paper/latex/main.tex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/paper/latex/main.tex b/paper/latex/main.tex index f0a82c6..d074697 100644 --- a/paper/latex/main.tex +++ b/paper/latex/main.tex @@ -11,6 +11,9 @@ \usepackage{amssymb} % 数学符号 \usepackage{pgfplots} % 绘图 \usepackage{fancyhdr} % 页眉页脚 +\usepackage{enumitem} + +\setlist[itemize]{nosep} % 页面样式设置 \pagestyle{fancy}