From 54ec4227264251801b0eabde960349bf852c6344 Mon Sep 17 00:00:00 2001 From: yuximiao Date: Mon, 17 Aug 2020 17:20:02 +0800 Subject: [PATCH] add profiler design docs. --- docs/source_zh_cn/design.rst | 27 +-- .../images/analyser_class_profiler.png | Bin 0 -> 32202 bytes .../mindinsight/images/context_profiler.png | Bin 0 -> 31326 bytes .../mindinsight/images/module_profiler.png | Bin 0 -> 57501 bytes .../images/parser_module_profiler.png | Bin 0 -> 8988 bytes .../images/proposer_class_profiler.png | Bin 0 -> 22338 bytes .../images/proposer_module_profiler.png | Bin 0 -> 10311 bytes .../images/time_order_profiler.png | Bin 0 -> 28664 bytes .../design/mindinsight/profiler_design.md | 172 ++++++++++++++++++ 9 files changed, 186 insertions(+), 13 deletions(-) create mode 100644 docs/source_zh_cn/design/mindinsight/images/analyser_class_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/context_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/module_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/parser_module_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/proposer_class_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/proposer_module_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/images/time_order_profiler.png create mode 100644 docs/source_zh_cn/design/mindinsight/profiler_design.md diff --git a/docs/source_zh_cn/design.rst b/docs/source_zh_cn/design.rst index e90702b4..e9758265 100644 --- a/docs/source_zh_cn/design.rst +++ b/docs/source_zh_cn/design.rst @@ -1,13 +1,14 @@ -设计文档 -=========== - -.. toctree:: - :maxdepth: 1 - - architecture - technical_white_paper - design/mindspore/distributed_training_design - design/mindinsight/training_visual_design - design/mindinsight/graph_visual_design - design/mindinsight/tensor_visual_design - design/mindarmour/differential_privacy_design +设计文档 +=========== + +.. toctree:: + :maxdepth: 1 + + architecture + technical_white_paper + design/mindspore/distributed_training_design + design/mindinsight/profiler_design + design/mindinsight/training_visual_design + design/mindinsight/graph_visual_design + design/mindinsight/tensor_visual_design + design/mindarmour/differential_privacy_design diff --git a/docs/source_zh_cn/design/mindinsight/images/analyser_class_profiler.png b/docs/source_zh_cn/design/mindinsight/images/analyser_class_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..3ece3c9f06b7f2c5f18bec0c490c42aeecdc40c3 GIT binary patch literal 32202 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 literal 0 HcmV?d00001 diff --git a/docs/source_zh_cn/design/mindinsight/images/context_profiler.png b/docs/source_zh_cn/design/mindinsight/images/context_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..ea927428eeb5c975ab405fa80ce0163e7bd2242c GIT binary patch literal 31326 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 f23g3G5VWTIZ;1Zkmj>Fw)&A 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 WY;W{h_96H`0)&dTa+#9V)BghkI`yCc literal 0 HcmV?d00001 diff --git a/docs/source_zh_cn/design/mindinsight/images/parser_module_profiler.png b/docs/source_zh_cn/design/mindinsight/images/parser_module_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef3c927013517e341fbe44c7f96f0be05536b80 GIT binary patch literal 8988 zcmZ{K1yGdT7x%Itp-3%AcXz0Zf^>HaNV=530@6r_AWKPiNC?s_-JmSeDV-{vDyii6 zEWYpi{pXwcW}ewuhUcC=_ndQoCw>>9sjhJMHq~tq2y|CTQC1rS0z-lCfwcdww!iCR;fSHJFu%*R6xZW^EpcY4AOy*{M>jfsf@!9aq66q5K1*me5Yp?G96JLM?uJ@DWp@**DYO`xmZ^d_RN{-yh)yN-BWeJ_hnSfPX%p zy9zmGW`Ft0Y@I1Fp%-i8WKurF9x=2(@V0xsPC?G&$5RW&Ob`YUt_mm%W{@p2flW^! zMJrOI9O#lbRQeXT-*9(G5njzNPBQPAL-zgrjuFAK6bQ?kB~Try&=^+|M#vl#Mn$BF zMQ7Zf8R|mr#|@$G_qNo|&*>Hi6d?s~lIEN5>*4v%aGUB9fTOWEJjWCq`%z(z63+_? zI^){mmM^w5TsdFw-_D$PtU9DD7Jgl3F$qJBSGDX8=X;_bT_!H(dvB zJct;;M*-m|Y$OQG%pjmx)My$xX{UE?RH*=Bk%D0VdLEoOFdJ$0+ z=os^&;86SD8Ij$$DP!K;Sxd@$`@|CP%_oQ?43f=hhZXb`D@+}}ei&-Nv+3l>A`+=r zx~^J1${?P}V*7v!D;+@4hu>#4y+=5`?ZLHXtg0HMIkMO`DZV}OlA!VL^OC}AtET<^>;p5BV)ll&bd6#^4>PVr!G(^*2 z;8FAOyxB9_v+yxEpHo~Cv*LZ_Ns|>&n&CeQOUg&lXm%X@+3N}vTzgm zw#xuY)SFA;J5-VkoM1(GybF1hm^E5QtN7fv?Jv%|9X?p^>s1Su3NiB{omu!#UJS-N zKDEv8@NYLDbA5I23aaw(EPqyyRg1vnS)HH<&adZDVNy7_EV6)8rH6xyd(_Nh)sce8 zv^#0K6ur|hTQNbaCtUlg@WFZclIEoRZ0(%n8H(dlBMTQ(4QC(K&3qY06J?vI5x^n& z&qp!9c*K&hgxDJMZD$A&9TOzfy!_6AQ%;0h<28fi$3}LLh`QS)T8ZnH7Hux71cf3G zGL*&Y@Z)F-;%UJ|Agk0QVg1eq2GQhrMkd4Y7Oza7m0CgfohFc&BVuo^h;X&1dZvv4de~p!3X|6Xa zb494K(l%eON_bY2S?KUW(9y3v-Q|H|4R?-Bf&{E$eId~$)ner*89`8IEfCFV_19x( z#KaVyFy{NX_tWC;9NOk{FQBa7m)jYu<7P+x(KgEpleeaEeHl@pOy515AuD(C0|=4@ z`45;uNZ{Dq_aOY(-bbWZsDppf48F3boZzPUOo!k1`{gdfb9!7ihCoyy<`dFeL9qbT zgcUqiHTn5XU?Gw$&APl^BIy6N743j^fGsJ$t#u6ctgnhxFiwKrf1n@v+ zoTiZP_e+ZX(c54V3>K)!-QAGRKtL7&u0*WeZvi4jT}&`75UpDvLOCf0764-yZ3%S9 zeIMa_zPN>v1tOu&!ak8QmjquRakLP>JJXkxT|k;s6?pbjoNE;VPN?tUQ*wj{U8Yg7Jrl z8aJ@B3J`}sKtBh7iR8@#CIKLYh^+(wM<7=K4@EMFB;)xX8BxIJH;<$wAP@XWR*wM$ z{`+(RYwq&|yukT)4Xz>(>5{1*ZvP_`4UvlQurT%C}^d=8kAf0nOF4Q$eWB z>%8@5+vZ{C`x>Z|6piqqI{NUTc?ncWi-pmvR9}}poNd;2UG*wCCHQ8KozGd+ zO!lSf?v;np?$w`AqU$U29`Rlj8<2K)hb72?^n8fUyrw+w=s)ib}rW^{~URE7yx#Z0D-C;qRTvr;t^hAc|h;?6_tP=&I>hOzzmq_+sPT zf-9{W)wPCGuGv8>c1n%2$ARUo0kC&KTo!YtjfzWw0Nq(P5oqd+b&+?% zcdsYC!J3TZRRasLRfw_lrZ7Sy%7^UVGOMdfq&lQV;Rrs`9<5~mof;#4cPO^t80EJ|T(}cXwYI8G2(^=s592P^rXAqYX>la) z2tMrf-Zfd&Q3&5_#MR83^H>doDX~553AG$A&t3LC+jDARWSfhpc533gl%Ick96z($ ze$|r6urS4uNX;4agMXDb1Ufag$8Ma|z$knmL<(7*zem03FRfY&5kk(#Z_f39MX3F)Jhtt~``@MpzJ0qk z$L^^izd)6GFIe(q1JbmPU&QCF9iI&8^k~KUK=^JM@Ba}nbaI&!xyT-{c_X27KVt-S z(nfB0Z~VKDiyBGtgV)-u3>M$@HL3@TZZQx;cy#-2Ytc*kVR*`@zEpb8z467#&B5w7 zDojM^Ss>y3FOtSblEnQ_;>1j0JIiTqgMicZ z60U3Gg%~>s(DbzNV@xgP*2mdr|wrp5aJ`&HJ4E9oEMH=2wUfrcg<9`b4rC~n}5_L=}@1f|B zx;{O&v|2@ z9y`%|op{jptfX!tP+`YM`8hlKOZQH}BgdCYvxj)asHKmXbKNV#$|0$2%vpCu-h! zy5)aiEF1#(w%GM!941yHMt_p%JAxtzLnqolla{4jo=JV8IOzgLi`DUq>dq?C9dc3) zSVu7e8sPPVr=iVR$atkr)hTu-`d%X%Irb7(u2+an`Jt|pc~+jttY zAGPE{qg3N>FA6DDlOz;+Y&eu0oy1MVrlECr|I@f-u=G?cx0ZD}Sj01JqIg~}w3qQZ zF0~{;J^>kNWMZfOHkp1_x%|f)k_-=|(c6SN1Kt#v-l}otiD8(>)m%!BLzf~U33bNp zc6yf1yP6dXQlUf?Vt-=;I|U(mwW86da;5LSP;&Uq?SV&;nZGb!=OQzPb#RqNVO6=J zn_G+GvaeMBle104(l0V*F>gk^l8VaWMXQX}a2;`Nozj?F0UfdEBXMe9H{YylfbsnTV5Io^U_8{cfGN4S3{QWIyJKv4*!TA z(N?L-TDmkgQ1*_U!E&8<LU10Gbc zyw7U>3I<6AlWpuV-#ys#3&RFX-5xos2){+^S7hY_gA0A(es$&3xy*eKY6nv-osA-L zJLC_vZubgx<)%t~9TUWv)*~1TuhS{!+dtsH+^bWB_dgc9i!_>9POTN1->9x1K%&t~ z5#H=&muJ-kglPuH=X^UT8maEl=oeX%xp|7evdLR-`M~7yrnVCPI4|$^PCcnUDw;Nu zi+SyUn5I~TEY@8s*eZHyw^%<};?Z1zqtmL$;Yl-u)e1JRK`(LMTVGeiqwltT+g+So zE;^4)+vicr@h+tn(l0lq_{TXLG-^i7@;dj>ojHUCv1T(Kf?^9FDAdD4Bhi;U&&={Q z01$if3fLicZ)Nr=brJehq2wDybD9xc&W8O82?N9R932Mh_L(z1d#}qfb#moBo`{%q zs5dSJ7c$=f=Xj6!uo67=%JuWT8n{)Z4Xi6-QRbKDrmvMrZ`)r3NP9anxjO?8BTNie zSX4!0ACG|pgu48&ZzF2_g6jB%N1&0`nyjj~n~~Ue-c=^&+SqsPYgx>T*ri9~f1Z4M zXC%Mw{IFkpvUD9gEuUatU4OE4+R)AAnRdbaw8wJKhm>aOda(07dK;%W-dJL?Zt+e=vzWRypB=wR9t4F??gOH z6-z78=Ch)fIkfG^>teg+BF>$gN;d9ZkG*zD)>~BDq1Vm>m5);c!(IV2K;fW@auZ>^l>DrZ%^_Tv>{SmvFX)=oQ zDcRBT$NPThES6atL4Wd@-iRA|B(fV?G(kupCdSNP5z&0OB1bbine`{q^XD%G&z>S9 zp)5bNmyo^1+()LzeMS1-qmsubnhxPyeiysU^TYKQV4DELc-z<)KXZOvFEf16w219m zm`NgEKYt)!-4-CR5zQi|#0s?=%jNo`xx^Kwlcn-v;}p3S(YrxQ%cZ4#$F=Wk)$;wk z360$Z>UYLXBJH1SjuInQBINpoS)kio1xsC2)6sJ7GMyWCdqOY9n(B+GOt z`qgEflR4vwRuIzV={9uytLE))s^qupM+g{t?sGQ9RY5?gy#Ys?}kCZ;MCuGewk zL0`D2~I61xTtBRW=85k*GZ$h#CfFG6qZj~8O&_A%0YsrWm(f0K4I47Y#J_@|f zq?(QEGvdHmqW|QluZC1@eP-frLLJm^(^9GxnyGOpYR9pDI1DxOZ!eo($q7PhrBk<+ z@_F@>vh)N8H8*8>(hzTz`|PrsD4D{JTv+lb>Gz=YL9|w%!YdKPKLLNhVHD;S@(js2 zN+Y-=)Tb;ogSwW+MCKjkq~?Qy&i#cwf;mGc!=7)n=vc;&_88YvS-ovrk*W1c#_%>b zl~j#s@C(RV>xS>OP|E&{xvDX6YO$<3(eSU5~oM zS*@Z@wrW*GHCoh!4jQ33MLfyoPh$7b`AL~>Mk)TrkqNIc@>zq>QI)Re9yKGf%{)DG!qw4x;4A+yRxczKCatRHyTjQ$i_9~02qZ+VJBbqy`NO3P*!IQ#i(E$5Cu*bLcN z^F}L0@=c+dpL%}!CAo*r3q|)){@z%=z=_YG!!szmF`beSvY76CH~~__UmBlPsLqPB zmo}rB%j7I@%-KLz*PK15t)%=aG<(N-QOISOP+MfOB)>aB@|kuKi*e3*Q=@Wf54vL0 zsZ(irk>}3K$;~FS^K}m;ul8VRpmbE1yOc*j;&8Q#PO!}K5lx2WL465vYwb!<_)EW` zq*4wGe!0J{jJpLN#zVVO={{2H&|-bPoSICsT83+B%4oP-i+x}u6%jq@{E&s=M9){J z$N(y}uZy7Z1oKv!>O@{eqY>0yj)x26+2rTQPHK5n`!c6FEMa%TlaqZ2e#Hij}rf8?s;??_aXG(VwB z$dP_R#Dhk`_n1`)EEwo&fDI2*UImN>!FV-z34yWMA2~VAxJQW%{u9oZt{SlXN?9XS zp7%wy>xXvP5vB?4l_H32%6hX;RhL27-j-4Rd za0yK9@8vtu33}{t?=t1ywJG14R=}mQTMLOU1%OpHGblE^jaB_iW1Z*%sThh~{yx8D zh4N(BgFFvoiO$i=NY_(z2(N4(r*O-|FYYv}yi7G>Eg~YEutabDp1iMG)XnM1x6mZl z#4+t4S**Y!`wT>e6b$l6GAf4W<)TG#4BF$!+EPN%LLx#`G*Gx2)3-}z{lZ1#In?yd zZ8a{WR@dU%bEOBe8)UQ!VuG~j?+%ylQ#80l~y0sCrV%rrRbZ(Q{8 zt?UT@IECJyAY9n(0SmM)R2$+i7c;g**MSaCK#7?+9j^dfbioy5B2cmoD1em-D6l}J zo`{IflyPpYltFY)qD3Hg`Huk+Cy+9xZ~Ci=4tuZI0RSZ=$;i%n6*Y-AzGqZa;S?Ks z<1#}N*hCu_5o2 z-DR__r0YW~G!I3+R${r4O`RatE{KcHh&`HkadD8F23gkCN?}#ee3zi4wmel;oe(tI zn<>8W$t1=5nQP;8Zesmu>k7IS&K|1J=Z9om6o2rmG~>L(#HLJoqRu0c05qjgKVJ#O zK(yIIZZisaqnrMPCMXy|T?qewc~(S$jp%N#h*xr$gBDs26E z@hkng1&DFblo)LcYvdFr=6B8XmJ{ta$b@fI`sP=zn;ko7>*CsY{ueXtN-z&&rZ_A z!>U#=2o<*WDMT6&xqSUc>M^Upda5S$dkr;4j(>hep)c9dyN0~#mLjH>!>9T!n*J!P z>K1n359q+BJtu!A4z?;<;h^1-AK`n^*RY2|0DsDK{!>H+T0g358ZaiTzm4g8^`nOd z;#ZTdd?|h@ug~^T0q&8rNIXwyy8n0R*4lj5?>*@d(uST8`y3YCwQ>G!fD3mL=dbqZ zuz6?$@Uk$U6R^rXXkbBDY+IJt5w&uhn{nq*Q_!z&z3+QtdMdEbms6GkNYE%5;q} zYZ=wrTH1v7Nw}wj1DhjSQ3h+`gQbv?nowlj62mj=s6+oQYJ2XD_PRRzP~Wqh$>tN zQJKZCGV`72D;P3!!rjL0{-1g8tAFObLQPVtZXX{-R3902v>j{P7!g6Th-31DB`@VO zJ|Cse#7aGw_w%`#PuEBLaoiWcXckuP>T*!9gCA~f`yckpq?$bsQQB;YLf8}5(G?>z zl#z9>_Owv1@3JNRSoY%%SlMb2p9o9Em2*k;mOiC!FW(dcjQ`^E`T7wh(&SS0%4@Iv zPtObT&4XKBZU^KW2Um~8(i_BDzKdz44utG?4Y1o@`7(Jd`?8_BA2)EU!XTQ0Qg7Xs zecKz1B3uqQx)&C8P_l6P^Uao4evgf7qC&10Eg%qh8hsaF_IfeCV{874&8kzY2AQ!T z3M*xz(`8#YZ^J)izMli3<~XRndv&ESt2Mrd`^+{zS)UE_r!WEbIK9&oKJw*!cRPk_PTZNWJoUF}5#01_#*Mds z*Ls>~yhznS4DXj;^b;gR$n77N281ii7>HuKZOwu4FDnx+1+X&s{Q!UX4+}#S3Q#*7 zskvDHN@2hTm?}XI8Jz#P9#Vj}$ukcl`G*Vw1yKNm5$YX2?SDj$7H%&p?B2{r?0=<# zz{QYvnbz{9pvZyq;)Yu%A^%c5s%f3wO~!S;$yp}EEr%mTQDBGvC?mzp&ix&YHTxjz zqo-55T{{S2ob~@%2x{w0TXKJtpAzLTVwx&+r}qESM9$y?f(d8|CLB(DT> z;6B3N-|QsCvpjX|GY*^MgHX@Sww{F(5%LxFVme^|YZS$#&X9p8Z#Z{>xGcHn6u>cYkfnf|r^fsBR@KoR{AwCgiIL1F$N5Y9Qg-*RzoSS~r kmFv`;+byO}j3Taang=x!Ff*X&yDuOmId$0zY4hO!19Q{Wa{vGU literal 0 HcmV?d00001 diff --git a/docs/source_zh_cn/design/mindinsight/images/proposer_class_profiler.png b/docs/source_zh_cn/design/mindinsight/images/proposer_class_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..e5eb10df1fe3c67aff1b04d288eb7537113b6041 GIT binary patch literal 22338 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/source_zh_cn/design/mindinsight/profiler_design.md b/docs/source_zh_cn/design/mindinsight/profiler_design.md new file mode 100644 index 00000000..cc13bf9e --- /dev/null +++ b/docs/source_zh_cn/design/mindinsight/profiler_design.md @@ -0,0 +1,172 @@ +# Profiler设计文档 + + + +- [Profiler设计文档](#profiler设计文档) + - [背景](#背景) + - [Profiler框架设计](#profiler架构设计) + - [上下文](#上下文) + - [模块层级结构](#模块层级结构) + - [内部模块交互](#内部模块交互) + - [子模块设计](#准备训练脚本) + - [ProfilerAPI和Controller](#profiler-api-controller) + - [ProfilerAPI和Controller模块介绍](#profiler-api-controller模块介绍) + - [Analyser](#analyser) + - [Analyser模块介绍](#analyser模块介绍) + - [Analyser模块设计](#analyser模块设计) + - [Parser](#parser) + - [Parser模块介绍](#parser模块介绍) + - [Parser模块设计](#parser模块设计) + - [Proposer](#proposer) + - [Proposer模块介绍](#proposer模块介绍) + - [Proposer模块设计](#proposer模块设计) + + + + + +## 背景 + +为了支持用户在MindSpore进行模型开发性能调试,需要提供易用的Profile工具,直观地展现网络模型各维度的性能信息,为用户提供易用、丰富的性能分析功能,帮助用户快速定位网络中性能问题。 + +## Profiler架构设计 +这一章将介绍Profiler的架构设计,第一节从整体Profiler的角度出发介绍其上下文交互关系,第二节将打开Profiler内部,介绍模块层架结构以及模块划分,第三节将介绍模块间的交互调用关系。 + +### 上下文 + +Profiler是MindSpore调试调优工具的一部分,在整个使用过程中的上下文环境如下图所示: + +![context_profiler.png](./images/context_profiler.png) + +图1:上下文关系图 + +如上图所示,Profiler与其他部分的交互包括: + +1. 在训练脚本中调用MindSpore的Profiler向MindSpore的ada通信模块发送启动收集性能数据的命令,最终由ada生成性能原始数据; + +2. MindSpore侧Profiler将在用户脚本中对原始数据进行解析,并在用户指定的文件夹下面生成中间数据结果; + +3. Mindinsight侧Profiler对接中间数据,提供可视化Profiler功能供用户使用。 +### 模块层级结构 + +模块层级划分如下: + +![module_profiler.png](./images/module_profiler.png) + +图2:层级模块关系图 + + +如上图所示,各个模块功能介绍如下: +1. ProfilerAPI是代码侧对用户提供的调用入口,为用户提供了性能收集启动接口以及分析接口; +2. Controller是ProfilerAPI下层的模块,被ProfilerAPI中的启动接口调用,负责控制下方性能收集功能的启动停止,原始数据会被ada写入固定位置; +3. Parser是性能原始数据解析模块,由于性能原始数据是在设备侧收集的信息,所以信息不能直接被用户所理解,该模块负责将信息进行解析、组合、转换,最终形成用户可理解、上层可分析的中间结果; +4. Analyser获取下层Parser解析出的中间结果,负责对中间结果的封装、筛选、排序,最终按照信息分类,返回各个类别对应的信息,提供给上层的表现层Profiler API、RESTful使用; +5. 通过RESTful调用后端Analyser提供的common API,获取目标数据,以RESTful接口对接前端。 + +### 内部模块交互 +从用户角度,有两种使用形式API、RESTful,我们以API为例,阐述一个完整的内部模块交互流程: + +![time_order_profiler.png](./images/time_order_profiler.png) + +图3:模块交互图 + +如上图所示,各个模块交互流程如下: + +1. ProfilerAPI会调用下层Controller的控制函数,控制下层收集模块进行收集,目前收集模块(ada)是以常驻进程的方式接受命令,并独立工作收集性能信息的; + +2. 用户在训练结束后会调用ProfilerAPI的分析接口; + +3. Profiler API分析接口首先使用Parser模块对性能数据进行解析,产生中间结果,再调用Aalayser进行中间结果分析,最终将各类信息返回至用户侧。 + +## 子模块设计 +### ProfilerAPI和Controller + +#### ProfilerAPI和Controller模块说明 +ProfilerAPI为用户在训练脚本侧提供入口API,用户通过ProfilerAPI启动性能收集以及对性能数据进行分析。 +ProfilerAPI通过Controller下发命令,完成对ada启动的控制。 + +#### ProfilerAPI和Controller模块设计 +ProfilerAPI模块,属于上层应用接口层,由训练脚本集成。功能分为两部分: + +- 训练前调用底层Controller接口,下发命令,启动profiling统计任务。 + +- 训练完成后,调用底层Controller接口,下发命令,停止性能统计任务,再调用Analyser、Parser模块接口解析数据文件,生成算子性能统计、training trace统计等结果数据。 + + +Controller模块提供对上层接口,并调用底层性能收集模块接口,下发启动和停止性能收集的命令。 + +最终生成的性能原始数据主要包含: + +- `hwts.log.data.45.dev.profiler_default_tag`文件:存储算子执行信息,包括task的开始/结束,stream id的信息等; +- `DATA_PREPROCESS.dev.AICPU`文件:AI CPU算子的执行各阶段的执行时间信息; +- `Framework.host.task_desc_info`文件:存储算子id与算子名称的对应关系,以及每个算子的输入输出信息; +- `training_trace.46.dev.profiler_default_tag`文件:存储每个step的开始结束时刻,迭代间隙、迭代前向反向、迭代拖尾的时刻信息。 + +### Parser +#### Parser模块介绍 +Parser是原始性能数据解析模块,由于原始性能数据是在设备侧收集的信息,所以信息不能直接被用户所理解,该模块负责将信息进行解析、组合、转换,最终形成用户可理解、上层可分析的中间结果。 +#### Parser模块设计 +![parser_module_profiler.png](./images/parser_module_profiler.png) + +图4:Parser模块图 + +如上图所示,Parser模块主要由HWTS Parser、AI CPU Parser、Framework Parser、Training Trace Parser组成,每个模块对应解析一种原始数据,通过解析原始数据得到用户能读懂的中间文件。 + +- HWTS Parser:解析`hwts.log.data.45.dev.profiler_default_tag`文件,获得Device基于task的统计信息,如每个task的开始/结束,stream id等数据,用于算子执行时间的计算。 +- AI CPU Parser:解析`DATA_PREPROCESS.dev.AICPU`文件,获得AI CPU算子的执行各阶段的执行时间信息。 +- Framework Parser:解析`Framework.host.task_desc_info`文件,用于获取AI Core算子与task的对应关系,算子关键信息等内容。 +- Training Trace Parser:解析`training_trace.46.dev.profiler_default_tag`文件,用于分析训练各阶段的时间。 + +### Analyser + +#### Analyser模块介绍 +分析器的作用是对解析阶段生成的中间结果,进行筛选、排序、查询、分页等相关操作。 + +#### Analyser模块设计 + +该模块负责解析Parser生成的中间文件,为上层数据分析提供通用接口,将分析后的数据返回给上层展示给用户,由于各种中间文件有一定的共同点,可以抽象出公共内容,所以Analyser类设计如下图所示: + +![analyser_class_profiler.png](./images/analyser_class_profiler.png) + +图5:Analyser类图 + +如上图所示,针对期望查询的不同内容,实现多个Analyser,每个Analyser可以定义筛选、排序、分页条件。每个Analyser知道自己需要哪些中间文件来进行数据的合并、筛选、排序。Analyser与Parser是通过Parser生成的中间文件关联起来的,本身不存在函数调用的情况,这样对两个模块进行了解耦。 + +针对算子信息的Analyser,目前存在两种: + +- 针对算子类型平均信息的筛选。 +- 针对每个算子详细平均信息的筛选,分别在两个Analyser中实现(AicoreTypeAnalyser、AicoreDetailAnalyser)。 + +为了隐藏Analyser内部实现,方便调用,使用简单工厂模式,通过AnalyserFactory获取指定的Analyser。 + + +### Proposer +#### Proposer模块介绍 +Proposer是Profiler性能优化建议模块,Proposer调用Analyser模块获取性能数据,通过调优规则对性能数据进行分析,输出调优建议由UI、API接口展示给用户。 + +#### Proposer模块设计 + +模块划分如下所示: + +![proposer_module_profiler.png](./images/proposer_module_profiler.png) + +图6:Proposer模块图 + +模块设计如上图所示: + +- Proposer提供接口用于API、RESTful调用以获取优化建议。 +- Proposer调用Analyser接口,获取性能数据并根据优化规则,获得优化建议。 +- Proposer调用Analyser工厂获得Analyser对象。 + +调用Analyser对象的query接口获取信息,包括:按时间排序TOP N的AICore、AICoreType、AICpu算子信息、traning trace各阶段的时间信息。 + +模块类设计如下所示: + +![proposer_class_profiler.png](./images/proposer_class_profiler.png) + +图7:Proposer类图 + +如上模块类图所示: + +- 各类型Proposer继承抽象类Proposer并实现analyze方法; +- API、CLI通过调用工厂ProposerFactory获取Proposer,并调用Proposer.analyze函数获取各类型的Proposer分析的优化建议。 \ No newline at end of file -- GitLab