From 60456ba8261a88a219aa8747ebaf229f3b4d62ae Mon Sep 17 00:00:00 2001 From: huan <3174348550@qq.com> Date: Mon, 4 Aug 2025 14:05:57 +0800 Subject: [PATCH] add new file in features --- .../source_en/faq/operators_compile.md | 10 +-- .../features/images/fp16_vs_fp32.png | Bin 0 -> 38727 bytes docs/mindspore/source_zh_cn/features/amp.md | 81 ++++++++++++++++++ .../features/images/fp16_vs_fp32.png | Bin 0 -> 36113 bytes .../features/images/mix_precision_fp16.png | Bin 0 -> 47705 bytes .../mindspore/source_zh_cn/features/index.rst | 1 + 6 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 docs/mindspore/source_en/features/images/fp16_vs_fp32.png create mode 100644 docs/mindspore/source_zh_cn/features/amp.md create mode 100644 docs/mindspore/source_zh_cn/features/images/fp16_vs_fp32.png create mode 100644 docs/mindspore/source_zh_cn/features/images/mix_precision_fp16.png diff --git a/docs/mindspore/source_en/faq/operators_compile.md b/docs/mindspore/source_en/faq/operators_compile.md index 92ea306de6..831a345d1b 100644 --- a/docs/mindspore/source_en/faq/operators_compile.md +++ b/docs/mindspore/source_en/faq/operators_compile.md @@ -2,7 +2,7 @@ [![View Source On Gitee](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindspore/source_en/faq/operators_compile.md) -## Q: When the `ops.concat` operator is used, the error message `Error:Input and (output + workspace) num should <=192!` is displayed, which indicating that the data volume is large. What can I do? +## Q: When the `ops.concat` operator is used, the error message `Error:Input and (output + workspace) num should <=192!` is displayed, which indicates that the data volume is large. What can I do? A: The `shape` of the [ops.concat](https://www.mindspore.cn/docs/en/master/api_python/ops/mindspore.ops.concat.html) operator is too large. You are advised to set the output to `numpy` when creating an iterator for the `dataset` object. The setting is as follows: @@ -34,7 +34,7 @@ A: The number of tensors to be concatenated at a time cannot exceed 192 accordin ## Q: When `Conv2D` is used to define convolution, the `group` parameter is used. Is it necessary to ensure that the value of `group` can be exactly divided by the input and output dimensions? How is the `group` parameter transferred? -A: The `Conv2d` operator has the following constraint: When the value of `group` is greater than 1, the value must be the same as the number of input and output channels. Do not use [ops.Conv2D](https://www.mindspore.cn/docs/en/master/api_python/ops/mindspore.ops.Conv2D.html). Currently, this operator does not support a value of `group` that is greater than 1. Currently, only the [nn.Conv2D](https://www.mindspore.cn/docs/en/master/api_python/nn/mindspore.nn.Conv2d.html) API of MindSpore supports group convolution. However, the number of `group` must be the same as the number of input and output channels. +A: The `Conv2d` operator has the following constraint: When the value of `group` is greater than 1, the value must be the same as the number of input and output channels. Do not use [ops.Conv2D](https://www.mindspore.cn/docs/en/master/api_python/ops/mindspore.ops.Conv2D.html). Currently, this operator does not support a value of `group` that is greater than 1. Only the [nn.Conv2D](https://www.mindspore.cn/docs/en/master/api_python/nn/mindspore.nn.Conv2d.html) API of MindSpore supports group convolution. However, the number of `group` must be the same as the number of input and output channels.
@@ -59,7 +59,7 @@ In MindSpore, you can manually initialize the weight corresponding to the `paddi ## Q: When the `Tile` operator in operations executes `__infer__`, the `value` is `None`. Why is the value lost? -A: The `multiples input` of the `Tile` operator must be a constant (The value cannot directly or indirectly come from the input of the graph). Otherwise, the `None` data will be obtained during graph composition because the graph input is transferred only during graph execution and the input data cannot be obtained during graph composition. For the detailed imformation, refer to [Static Graph Syntax Support](https://www.mindspore.cn/tutorials/en/master/compile/static_graph.html). +A: The `multiples input` of the `Tile` operator must be a constant (The value cannot directly or indirectly come from the input of the graph). Otherwise, the `None` data will be obtained during graph composition because the graph input is transferred only during graph execution and the input data cannot be obtained during graph composition. For the detailed information, refer to [Static Graph Syntax Support](https://www.mindspore.cn/tutorials/en/master/compile/static_graph.html).
@@ -87,8 +87,6 @@ A: In this case, ## Q: What can I do if the error message `Pynative run op ExpandDims failed` is displayed when the ExpandDims operator is used? The code is as follows: -The code is as follows: - ```python set_context(mode=GRAPH_MODE) mindspore.set_device("Ascend") @@ -115,7 +113,7 @@ You can select a proper mode and writing method to complete the training by refe
-## Q: What are the type conversion rules for the inputs of MindSpore's operator? If there is a zero-dimensional Tensor in the inputs, do we follow the rulues? +## Q: What are the type conversion rules for the inputs of MindSpore's operator? If there is a zero-dimensional Tensor in the inputs, do we follow the rules? A: For the type conversion rules for the inputs of MindSpore's operator, please refer to [Type Conversion Rules](https://www.mindspore.cn/docs/en/master/api_python/mindspore/mindspore.dtype.html#mindspore.dtype). Different from PyTorch, MindSpore also follows this rule when there is a zero-dimensional Tensor in the inputs. The sample code is as follows. diff --git a/docs/mindspore/source_en/features/images/fp16_vs_fp32.png b/docs/mindspore/source_en/features/images/fp16_vs_fp32.png new file mode 100644 index 0000000000000000000000000000000000000000..83f965ddfa7b2bfed024e774d554f8fe15e6ab3f GIT binary patch literal 38727 zcmdqJbx>9B+dc}?pdcV6unFnz-XMZ>35Xy_3QBHLx)G#7kS=Ki3F%fE>5!1vAl=Od zHgO(4@xI@AXU-q*nR8}-bJmRR#o}4dUh9cFuIs)C)lieahx-s01qJ1vqJpd@3JTgf z3JNMJHYT{T=x_g_ ze)%)^5nPNh*HyGoRYhR~=h!HisF)~d;0zVz4)~AgpL0}j{t)H13vh;_gG%{d=Z2^( z|J^>s5(WLAHWuI$1vUC66$SPA^M5~4(6UhfyT`0M|F*t|k%ji}IhxMxomA{{4^U9< z;8|+xI_s*ch?&7`xlCTeOwGC6Z0&Cwph&ohfm2&^XA@dCTN^tkF*hjvUoFJI`R!$H zdfLC5I9o&MbyYQJWnhlxv_f1wTs-uWxU{si5{|De#585){<$6e1f_rL>})T_&F$*y z%H_(>1#^7E%_}M@%FV;a&BwMJ}m;d|Q{=Q4y(b60|@9k}py#L(tpV$6pdl{Imy`#C4(`|dff7<`& zwg1^(<1Ne?2FBXa(oE6L+1wG_{Li=j`+)!VE&l0Cg8O#3{$u$5o}0g}g2|D@mEiub ziI&72$K7N>L5XKol$F+YGu)ZO@O$u!25TSg;^0a}%UVSHk)HmuE-ec^or%A*u!54X zLWnc=hj>3)+7DTp0nVXHfzD2^kiPI*{_bzH{;suszW#ey-RV;^8_9@N#41!coL=_t zSifetu%7 zlsV3=^G4QGS^ZKHvYUMyQNQ%vA8j;GnT%DpJPT6#yf~q*zJ6{jd2I1LnPCi{`A_i7 z$lb=hT<49^!=oW7N;BC8mn|lKi~iv&My2?e^P{ysKUB119;o5~ zzFGg=#qmbYP{myeJ_URGa&%10d6L&ls91wJ1F6E4W*-xze0^9A>dJW;#L8jQ-|`F^ zoD~T|f`WRGd#zR<_Xrn94>;r^ZCItUirrTqum7gTkL6Ucq_RbELBI($v%G@4raNJxTMVA=V zA7;#2E{9279gj88tOYcKsZqYUzG8gU;QZ}%FA)Xb>knKG0kq;05(d8ALqqDm7iVYd zLr7Nrnvz|WR3Y1sig8T6@A1fv?OT1Wj^D&FsU95^xPa*U#Qx^4o{2%Gq;~|Jhk=02l*Zmn z$h{-4o$ASm&mlQp=ZCIe*`wavop}dlMIe9PM6I&gc|#M5KSQwZNent?g3XN&>~woN&#>8}D~80;zNxvH_9q4w)I8hJ6p3b633oz=6y_)Wk!kM1sFkR zhMSlCE#@R-WXvRN+6rg*j@iB!8_Z^3dV=p!c8rZ_4W@}c`o#8J>CA9Qi&ilg&ISxHsa}RVd>1;!Z7mA`=lv)jM7JCcLrHv(0NKnsYhL z^xS@1C5cCxZ1KI3@743Nz7K?tj`zd4Tascb<)bB+9~P*l>a@0?h|D`sb$4{EA31>e z$qvx)?q8tt^S!xxk+{nn&FCy>JuyCJ^BHn)<_L50^Iq$Xp*p4bJDWD%8uLCDd}LBh34*s>4rNNgRH}a_@#b)GMN_#SdG_=Q8IAFLHEO*s-P-Bn zZY?Pzq!xcS-iag*G;r1Mue%ml{Dh+0l9Z$Z@&S)TYT}JKnC(TA@bDLm5y` zQOD)sb~bXJ7W0+8y|V6NzmCxsZ_hrbA!y=$ZNARemy8kZLR|=LQ$qqWE`zDFiF5;) zv!K;@xq$Tqhlwr*!-cqV0*4}bNU8hLDk;fbhP!B8$=v};!}^D7L$K*uSY}4BgRWfM zxo032K}}(nA!4mJZY?8Cie!AMI-i~A^B=f)7+&kHW8%4j6PJ!gh&j53E!W*(giL90lB}#Z%ZMAVg?t_?fJz*A0 zD=^0Qy*%hnfIvMM(#$@wznB=4#+bu_w+mvgMTth3*^XpC#pxy=w52i|D^Q>G4R@%U zPu_1_h1b|jYZ?g;Eau2ZKZJj~PRH#zSp$a8cT&Q2cebcCC%_3R;d|``wHay({+%fg ze97bzSU^@0_3aXw-}|M7#h3krt;ShQ$VGSav$ANtp;!i689o=5SJbmu)f}NN$TBp5@aw{xC|n6viVCndMHh_5+XTru{?<24`-Blwo8v`skXF|{ zLnsvqNnS|n<)Je4F3Vw<1NMUISN+t%MgdJ@kMa+zo}{tp7_VlGMqIqfpkTEOxii%?2I`dgYs;i6vV!o4E5~{C=!gtK}PqD}9KFZW);wtPnTs;ElDx zbp9^gMG_Ju{L!sB?V#U{rmZC6df+Q}ud6^kbE5t2ONAY+IoMt*tYsvV4Yfc@wXhs} z`=-=-vQ#dUBzwA;!`jWSsc&cQd+ZdfLt1QQknZp(bllkQlIXx^{QzBuu zsr@Mh1Ai8nK21$zuELTt!$~&irFj*v_bP=nXk-(H1!hlXWqRL~^A zZG1L>T^r7P`xEEs0qQ{Rw8zna@JT^EOk)7d-_hKpJz zjbd1aN>wHz33p$k_EwwvUHK-uG;1Ki9m3dUqj~@9-Kn->YLPW<9?ut%M=YAa!46T% zeAG~G)H_IVpH1o9ies;^b~atI$N$}SDT&A-oFeyxUT%#XlL$0L*F*hs=DN*)Z1Fu?mec3ByTYB%#Kl7}@*$btS@-cu3 z6W63ts3c3@PZ$z1=1rcNl&HC8=P&=!czk?T30uY6(|m-|jT{r{8fiZ0qVz~{Z^`Nv zD!=zf)vZ-bbU+>={!Ya=Wv!X>=(5&!O{&5=mop9NhnS9Q_d2^zK~W@SJ1sfOGqlt( zF-H}$CGD8BMm2AJ8}Lqcph~&r z`&9t+MIgEq?c~EbFh0&9J_3QSQ#~U)E_UY{U2dYN#hoil*bFz;8SAm|QV8bDH?itoD$ly#t~TJg%S5Y^(-dItvFh!)lu}P5R`3CuewQnI5%dm zFnCv)tK=AEa%7;id8rtd9G1#Tjp8Saa zHk`_4C=e_C&8mYZNDQvdjp){BwrAA31JRsU1v>>?cMWp(@Q;2a$7eWMP;P>CDCRoiBrO6K5j+KdwN`e zoadOws-gCIi7qd+1qN^N(8V}vm=-+R8_QQs9R{h&t1D`)K+JnY`R*PbOvkB5=;N0W z4kjihV0N5t-iL%xnsK-aj#UFVE&{fNkfPqK4?oh1rm9I%hx$;GfGvHV#aM zT;7WLT-HJ4;-YFi5WDI2DpQcPx_67jYYbC04aV?kzSOreAqkWyS2b&kwQ!%*ed?LP zQx6>S7cE}yX6yJ7!upSZsU2>w;iR5=QcRc>WgP{r6vRN{t9B&!TYth`-8+Xg9IXve z!mD&ag5dI|t-9^BF)QHRT=Y@Yt&z?Q!Bx5Vk}3=})lej|5|JBZa}0bILHu;?`JchF z;OeOYrCg>5>9V|P+jh&jSu~z>q~gblIQXI=WbNCuk8Zc>@(Rdx^m-PMir)=L4WF5cEhuq z&mc7pkq-rr9aEnU9L%$d^^<+-N$x+Gnxvzn^GL%DKJls;)RohA48ccIK3#L@H_eA#7n2?{dPv<|Iz3TF^|Q?MIt=Bqi?9ta!=FL_)bFxB{NpUaMbyj7>)0`?%j@w5 z=A};WN5(vhfs_mHWsvi2nSFa2PI@7J?DpLSqqB8@6xTj&!KvMS^e^twLL@tvTEz+g^y)-;x zsZLlK`?Ks_rJ@A``CW-9sRz}y+;UMHBCXrXq$U!j^(;>Vwy;Vc6}H})H1Kp|MBj=! z5rV%EHhER9CK7EgnN5100rg}W7a*v!F!pvRH5Jbq#9VHA)J;>Cxge}khi~k;ba|&l zyoOupaDnQnl%e$#R;sFnSdflg0i2EA@s%ChqJP2GanekqYnd8PHY*=Pkg6LNH7e~L zo=VmlW(uN7>|tAL7oRj*7T9dv0d$}R%E2-p?&|RD^Jl%FjP+-MOJq;So(ZEt`0Ds1 z(7(IP*W|nX)$`rqOj-;4U68jqM{xzbTmFf{#-hAEcfx$nv2uhVMbCYH$pQqNqa}L$ zuf%I?6$3&rW=QKpPWSSNp;r4`B932dw_NN6-G)Cjh-$E{eyyG7>jKzPEW4TCHF~|* z`8Tc$+f?z0KYc86wmM$NxiSaO;#nT&DMhnCkdm)3Mc*PIW~+PBX)l65@GdzN^1RT7 z`02cQhD5RkPEN73eH4|?@)IE@wHQ7u{pTgfT){W7BAX78a|4;C$lFln$ zVj3E52n5nK+`eq#B}TkT$i4fg=$hsY^@^;Wl^Q9OMxxts*V1%wYw>GpYKl?Qrqgvp zGE#MRe6781wyyZRqxjsoCVJ-AfI)3{Y`vX&o0z0p|Is#GsXj2EQ#IlMrKkap#bPjB zoO$}2c^rrl!lR?3@u$)|;c%mT^;EhwSbBVPgHB9O`CGHFCAu0Xgma=ObV4clAqL}~ z@-(B+Z+HKag4z(OX$Q?3ZgKiZ`DSLq+Vna*HWNx>>PL83Hu1HT%?x^nxrueUYdgZ+ zM(XEg116%!eXN#z4c~&`VSM=_A-*xuDqH)3O-2hCMJJ|;p&vqd^F=ah3qrQVyfv9@ zE)?^}?XqgVHi{e(C3a1|xF|JXsIVeMD;`f6?oj~Gb?)Zg`@0>vGBY=`oI3PU>23Vc zD#i~VA5GUm2G+PEJbfMRfl@t%I5h$9n*e70^t^K1zJoo1~h)d|J%|-mJa|d#_dq^ z>3E+FDt|}j9mHa^Pxk%f)i>{r^mkku1+a`$?f^N9;Mi%r^e1cOXaY&XP;6oF&bUnz zyK{7VDpX7fI7fu%p(4D)ao=fKClOAe32xKluJIpm`O?7@ z>;KBp{qRm~s&E93nqNVd{h~Jh7xp+qW=^RZ0xJ!qJge3 zJWMcv<`>QN{nZd6krB6^kaNaEYIzr4k5?t#if$2Nh%^bQ67`6e+^^btdS`f_TuH8C zdE7vQTx7UT+eMgiBH$s|)$l)QEq1Z4gQ#GsbU*mtVA}uRAm#t3_lmeT41fSOJ3G6Z z`ankI1O~Bz7UV)8!7}ir7qHy|fd3x0;c+Yc2*6kY0c+QkC$)(E<1jLApGgU&Pi%}K z_|$wY(tjK6<%V6#EG!HR3h$frva+%fSKqz_&NzTH_kjQ|k~fr+-y&jrrdA!FMv|kV zqM~c6F_K2gFzf*Ds{Op)8@)^Zw_FJHY(LA0+t`IWn&TG-Fg8FP!@Qg zUu(B4PrTP^qerTKSm%Blm3;-kL+d`pI2RV zMN-PasaZVitidQ;99^CteX|&N2w=Vs5T6(j2WhpnwMEcvd9K&&+h;kg4UQIRF}ojh zl0{bhJ({wm%zCI|cMg`n4fU!;BqJeYWCc<;#Q@!-@TNaMTp7y*q3uTydnlC|HZy4D ztMGZ9*;4?Z-0OHm-b3u~;frNg((!8n78dt6B|vOk86 z7smR?H-T}&dG+hdbC<+;F!UQQC*&g^GNNJLjd7iKmj|hqxk|OwL`m|9Yb};w`@7YC ziX8RV06cfx7-a-ubQ99fXqxKpUSo^FBxMl2{d2dvWC?1oJzn!}=cQTLug1L=_Ijr^ zq2Q0q5)!lPl}{>dZ+VA7Zx9Ss@J@U&>yDD6`KOE9d5%KV#fHy=XAdd`2)*K}pOnJU z>VP=_@c>CMT|4G;erWD~I{n7w2B1eo^U5J0O(6IFk1@aKPv$oV{LIDJwnmi~$k4ik zci(6E08)hSbqj|9;Q4So~oVu$BR~##Snmbqxrjhi0-$ ziCml{>^cI$f3NBf21DLx$1}AsN^c#oVdacQ=^s6clq?3jCx`nyJ0~YnlKp{MZ6c?> z&^Z8T0U@{OjQ}X+Lz#bvbE5@S>^CPI;N;u$&H5nsWYYWgnm3=}>y!7mhv1g2*69}S zM(r}gxulO?h3JE)wZnt%riZHo#n$iTDYpt)Ata-b)Z#jmvr!M1{-rACywRMO)e>2r zJ$X^C^F^EW;P_Y|pW&WuTq1{_=FI@u$Q&RS>55;L8Q7|6J)w0I@k{wLlB+*cV;gsO z{oh^&9^K&ovr9&n{80bhFnGp(YX6Ms9rCPyR(w4Q=K4Rc#Pz>w3a|n|$cz@Ka{~+8 zMNY`g&D|SA*ZwLUM2WnDE?#49;YP-PT32=#nfy1dI{UiY$>YQ_<{?B$gK+Y1hx?9` zN7z1Wk6l|(=ey#^j|dK*wXT`p)jL1)RJO<5Y6=+lf;LlC+U@SzT_9$myHIba#2h0_ zVC(OKE^Ms*0|e2Hv5{F1?hIL9)}-p!oM`ym)~w+ z^aq%yk}@xj-_1Ih4oT4tq@VCLem8b-UB<8Sho2B&Ya_J=u+o2*4(6_zH`-Zw(_s2a z`BvKvrjnfwLc4PtkD?U02?zwEv&4^%PWbah5)I{H-3B*trqEW~K{S^Lk*zZj#d|#9 zdF*?Kjz>LJ=<95Qi?ZX|Ag8pnw1-5%5x^(qfr)Z?foLa?%4JhPoSwwrRmbW(9(tj) zr!>Y$yE7N6jJ~$7ck2Jm>?HF~UQ4DXgbiD6;cO57V!4tE&E+vZHcQ#Hr&fxDu*&9Z z%B;rcakWZ*uNIOG=Gk}#lK5pYC(d3nRT<vE*|_DM|CcZtZ~rG%eHG!YyA7mI#T^qN2Vy0u2lapDEFd?)*& zcdV%QKG(vU4FZoFem&o+v+exBK+}?oNwnv~MqVW7o?9pQrL-~ITWk~S{vh@!VZ^1q zeRRqYR@bFu%qOI4cxxa;bNb1CT)kFY(8-gvsG%+z1#O#>_P__18D)vJ@sL^7*@s`w z3wM`_a?(fzkXV?CKjwFKU$&;bO5HG?NWKh|S#CZEWGu9O)qHnwq2SKX=z=IU-Lfa% zzm;ta(zF7c(bp#1o-oRsz>XLdMt7jK<^K))n=Ay>md6K zYA0K_^P;sdH)Lgxb4~rOgQV@R5pdtWa+CJu>Pf?~rG6@B^mRb%gbY5vIq0S_2OJI` z;9^*{@*_F`2e`*T7H~A6eA-v8zS>u_65^a?$8Fp7cthVje^*{3Y4kNkz>%5f;Llk} z>pb6Ty@}W}-d}Vfh;ZC72G~KtO0jo(?vG)mZ_djw$HN7T^vVn(>@eTtR{e_>DXjrS zTF~onOi6@6H1m#6TByqnQ=-1mFS)wLq`l`;-a}Zd`$;n1PcyngBydn(r3!GLlust4YCPEVXTjOpJh4Xtz)v6u!$MSSMD9i5%x62>1Q!#+NZoasr?dG*?M%kEp_46S>?<7d5v z0Y8mNygKzcx`e6QUtn~VMelNpt7pcrx99h?KxE8+l)}w7yJ*sNlos~i`ZO+y;jz>LmD}wirR7U0!V8`n}debw?v}1mzF4fZp_jUT|(@six(-*B- zqb@G$aPsXnu8MW~0=h`6IM>BX9qQRfAs+aNIahLhup6q_hRRkVBW4@rTjUVbMKDK% zgoNAzFW+3YbllHZ5+f^gu;*R(=5HO!_z&?0P{ z{i<4sXgm>nv{;_KA0pYxk7AsYe|c@^Gh+qFp#Qwt7Grl0v*7Le5@>)?j1BqxtAn6} zdsu%Sb`l1;ezQga-HU&Wxx2@Xzu|-4ci=GLhx=nE81_zCVU^ascsIO(1-gp27X6A4 z@c_M|hqcvfwPE{wgT}q|HNIJii%-%!9gOu5q0E@eyxoihO_r!u*LEq#mF;`IF`ObM zt;Ux>2D)8*Q+oxE8+@j6(jfCqZmp1aEF^yYv!~$^7g# zE@pJo4PUa~jT#_YHyaR)uFSnmxqO^q$ak7Zvw~OMio5KglksfEQ6;j0Z!da4mwZVX zI7)R=%yspo!a|lJov$e+hRrYKA|IMZR6oJL0Oa@U_TYQBWha14P5{x8Vu}DOw-SX9 zyJmyWQPHu{FI_{H#248)rje`@#svOHu142vkA$i}@|?_#2YnhL03=I_+xLvu9~?(NLu^XI!e#oXK244wR!bfJ+gl`6f2l+@hK2@{Fe#gx7LPb-yd zA_Vt8X!bp;H>a=^&kLTdBmV+loWI%Pg>rf)&{mN9dpUNS$_Q=48O>X^IYpoF^&E*F zi7=MS#z5YWvRXlv?(Q)zS$XHH-Bk}&T|}$Mr8S;+xd_@d@^&k88!uw8q|`|ye!<$Y2W z7eCjoY)+M#dtB)_p2GRRnQqB#G;WGhXs$eR;S+n8alj^W>Wqka&MBr`Ue=1A@vD~w zYbZ0ejVu>l8EN9KYKCr$7}IqQIrs~prhx^}>T!O4 z@np<$F%S>v6H{&4#K(D!`;sn+!c2-e-0WKh7R!%w?g-RsFF&DEAZR8mMN`o~+p%7Q zg*PTP9+!#f3vvEtPCm*dCV-J}4D)LKG+__FCt}Dq z2BDug@^m&9TMY+&BZ+L)lE9xY-$Y*=x5i{W61!Q|Hkm-6-@qkY$=DO=zV&!+al?|N zX@d12%=zU-SMA)j2C?tZdmj#8@F z7Jd3u4nJ*dZa?bk`ySc)wGhb{g&^WEzemicZC@!HT03j`U#o7}jV`5s8C5wMnl0}- zAn`9c-x2rJ#L|_j*<~xhj39v#sQ3OVPRB*jx_+pvslht?Ldu7m3=0ic!wFMlg_^_~NCiNdgtL-g*422C zmKd#iB3JtOm*>io*JoyW<;MQ)R*u5w7-u~ZrNxZi6UM9uc0TFIF!Y%n>qR0G$X6Ot z5uz}|N4in?(XsV!JbU}i=2i|jDETT@T-CnJstkhY%Q)zgGs$jf(qV4h!bweg~lWz$WcsY};pz07VBXeyAH+;iGEw{wAVer;{- z5VsG;)-1UCrbD`O{Yvea^3h0TLSN{$*)sB~@%8Kl$)B~Lus;GM2B#M$70&LB-|#P} zns5X!nH;MZGh1@%!yiE6>#VAR_XZAUZ7mhoEF!oh7`N-ThE8%2~bF zsQIh^w$a*9SV09xlpo6JpGfObt3{6KQ+MBb@7;*m57=WrY?2=CMTE_0G`2q7Db_pD z4>Lc-r7&2LaYqy{S|LPR9Hq9!U2jm5o81G?YKobs17sNN+JuRSDR=fga3M?__3r7> znltwZX7&jP=24J4Bd^4PmyI{`Q+pUDNdFi%S(+{@UmTRFH2a5mFEb=KSWLorVlR9T zT5PQYGkhCV#U=D|?Yqwyf;m}gVa+pzL-`*1ns3Rq)-4QrXAHR!g2M97@U%VKadY@- z2w9&T4oZnp`we@ z3UG(x5B*;Y?tB(4?%=zTcV{<3g>t@9@UV_Gl7F`LeV3n^LCd&&`DdyTeVNfGgQ3;Q zr?UiU&~Rp=E;8!wnK7+*)bnM?nI^+$rfD&caHrJV`7I`{^u~e}O2lfP4zPPFh}DNu zd3I;aUzo_Z?zMi(MC@p<1vYYlXhmY74$%B)yz&PcNOQzSTtn;nf*sL#QLHo4$A3^& zeXQd1*;#IB9;PSu;Iqb?=nw>5quw7F{G-|m+lJ+hLBqm6)}6wg*6udFQRDdsdLcj2 zvDC*W-^jOO9+cA+%+C#7WFT8A3pxk-lqIxlZ)RDcgK%!z&b&yl6(Ht!hZSX>VDF`I z8?_ja*%E*{u+BM9eZ&T8v4(*e_`L4i`YH1D;6?`Dnu@v}shF!ib6gp{+|MSUxGA2)nEHXA0H6CNcVEXW)B=c4cjH36oaoh>I}ZO-!Q z3Qy?W=#e~hs@0pAcTW#a>C5!tgje}+F`Ql^hE&qsPg8{=tk1v3a9Qms7_!xER$7JT zZjEYF3)DU>HHuR*@@9ptaYr0hbk$O|6Hz|;ghx8&KbJ3669&_GIo;$`oYvy=^b09x zX}w zD?4|du5@)CIkNLT8Ne!w7dh+w*`6PThz?JT&0r@h@^SGgI&bT<8p|mVe&a9V}D-_$JIePR^*scL=%3>W^rBWT&4< zInZpYS7XH8UZ8iOyhSFj+(=}WC)4Y2@dItXQvF`jkuB1aovRBQpDO8FCtt{ytH4az zVA7~KQsOUtU9i)hkPXki+?u|XxqL>(Xw|3gQA8w!bbYDs;%SYH9IVe{>#8qgrIvL^ zn&MJcr@rGowT63Exdx z-B~tI&%25u!BjW|v~4o5jg-x&E^Dy)n99krB4YmWMQKB4whS5*PBwL5ykY2bTk@eg*B#+Ey`M!t*sbK8o9W?8vzQ_<_YNe<|H6ve+q2^2H?3wRDw&Y3kMprs#(5F8SeB4s* zOI6RCxDL!D7(JxXGacusmY)51mBAG@@n?@K``)^lXP37yVW|71eNO+ zA2AIAg2o%4$H&|R;e0q4iS2)u? zn8>UA#mc1H!H<4SaaXu{H}Z{2j5(HT->(BFhRX?6v!A|!i1}u;JB%-P(5T{m&}}dp z4zTmZy0kBeNJ)X^fBl)Ga8gs!>-;&6dROsXkIbT#Uu0}Ea}TIl7oQ=nqgr2<9=3b- zRu?Kv&msFBP{%RZFo#B}I=aWU(~wdyZZryg;@t66?0u7=?0hpH?e3GhCSXVhl7zIW z^GGM-@dlF7lY%`)rg&5dup~2*0yL!AHeum}_jGwxea$Eut}R0&9k7U}+B4nos)M1pmbkQHTn<8*<$z zq{Y(?%bz7+qKZvKT1#CK!#yehiA_41bPw8d;TP5zYfBr zTf3aVp}^V-ZgqhK82+D)rRyc++R2GB?zYX+ZD3hKHNG zLbvA9O5FU)$_fHk!8!LR#pa1PT)!309gcZLABXS!ai&30Xf2Hm+w@UePVS5M8>5bY zunxDwrx}FAR%{{go+BsVwr zI`z@#fpx)8i4xaDoX1CJT8N{jXTHz-9s7FivI?w6yV6Ahe9#|+<^+5wl4H-o@q zuo>s5CnQ`Qf4Q2eM9iY@V#_5M-o#)gS;AfWaoWe*(e2B^F1+|f?%4;!Z+T`k?m}i3 zp`lJHap9pjhbM75M+JSGkFZu|7jPU!No?OseZY-l{NDXy)Ms8d-+M|!lEqL-7;TM1 zgb7Y5rEMoG|8qjkJKaO&k3ZVrTGN%-&rRT&l#-_xMe{Qn-1&5lQ z;KMEAhY#6MQBk|d*V>AJtNFaPwmpWv^$vMz`-*MRB<&-Mp1&D-9tWhW0jQ2b0i9VV z1v1JcBR~*Be%3@pMNMq2udJ9yIAnylt9<$NQ9+Qqge;6pe5PFz%YNs{+Sb}y)hI7h z31#Uk5%}<)jR@0^nHhawvABA;eGBw%-8)d@I7kjC9*@ia&|{U@z6T2k9RF{qwEj=$ zp8uo7=l>5xeRc>F6O-Ka`5KMc`eJBAMEqYuH~^%Jh&ucUnr(6)BX@*$N7Ez@4{HGR z!TL1_PrE>E;L4mUTrl_p1mM(HF92t0b$5=Fg+<}Z^J0s;p&WYOWDPxc1bcxJrs?vq zkMGSOm08$xAn)lI7#JW|dPrn(W(d?)k-YSY+(r|9cUoFn4nfs8TrmB^y2Hu5=iY`j zeFG?$d1#it)%G5*q4JZYx5r?KOLANEw3bsz5oY$gxDafg6sRF0*8nhSVU zkEZ50W_6|axFiffTXM?-Q;67S@pf8)FZ4hTqzLwr$5jCactaqORZQ%qTBaoDvuDpd z$PpRezdxQ+mp!JvRpj-2?YQ@0-Q-F3`fUMO@Gd#jqiV2s9#p$QuD2_Pa)Gwxo8=f& zZ!&)Ykc-f0mKj1VM{`3n@N4bn_%3z{TJaLOUX5mIRK0!H%#jb`cqJh4>M*S!2ZIQa zf_oiB-kMmfu1vrnz4FiDHy=oOj@4KL3gDUKqalL9X=q!akCA}=92fnyF`5?#SZ~GO zRhBM;V!O~&0*_joX?nmfCuI6uDEj&$cIQTmUvOWQPd%WaDU%wYMf%*z{nA(Yu0W;1 zMN5s>xg%7<^VH@l)crmo6dM>B@;kAB&L1PE_i&3@s0cBL2qR$+OH52ulO0GGf8n^? z^Ep}zeeF#44h)dWIMP)BC%^WJQAy_8XierZ3E=HYaWX3gNy$a!tHyU1abVhBOD4e^ zT#CH_icUmClpT_OZ_*(C;ay70AhRk(LG9`@m49IxPhjB6f*6=J_iLP$3pt8KFz#3$M2{BW6ojNG(~Rq9x(zW zY6%)%`0BsAqo|9KKw45->v?r?vNs*Vw9K_+>2+IKiU1Y#Kq2?!K&(;$QPz6>g_s72 z$l`nBn715GuP?T^EywaBGq|G&8EjNUATi}4zSm7@P*0r{LF@eJ&puZd6!81huhmlo z6cL%CPI6ek#ouiYx37M4*_(gmoAQ*9S4#ihLxEvHxtE6oG1YK8PW#?!NJ~hFUdROB z9eGL=OP(g?V)Z2Zez#DR!*_Tzs8T@?6GH7k;c|YU)_1{?y9N&GykppP++JYCHqiK- zuaH@S!f&6eLWiX;u@|Dex1y7$-9WqYbkA~(cG(1kK^Goak>Fhqo5XW`=7P70%c{BYnJ(_$vnW$+j_|y z!++e?Los*j0k&@*PpqJ$Y zg2(YIT?BZ%jlEQa)b=C#Y~;7$M~WD$ZrYye1$G`?!pAuVeR$kW#-Q4JGuV9yF@k}C zq1V*ZbnL1m~!m8OpZuSXiks4cGlp2Ua z)0k8rURlmGAO2*&E%^pouq_88uY>nb8HM)F?Lei;38H`JR%r-Tkv*={kY0dJN;>-u zalLAob>Vyus$7_X8Wd>thR0MzomN$jJpq*Stq=tXP;i9_-w>ap3p`*})}ZjGZ}O#8 z$Pg(&vgbgS%28*j)Iad_fO0E(S*yZx^a!&jgb0%y$7>)gMx!M z!!K{86A=}BFm$Hl8O(R9&PS`5tM_=ER{K5NfTjuuu3usL9)e{N6M~YlySloXUpo-{ zNIrs>v=1mC^Se2L_aHE;v!^p@e6ly+?BWaRB~N&o&R0`$;5Y;X!d)*phNNzqAi|Ez z3Q#W~-wfKLLpAxLTagVxjL6e$EUxq=GJC;pb+=TsBHbeVKm07oxt?VQL4tvMV7%l6 zf(=fSDFghsK%@*o0QQg4tfYII64qpLE5r@HOA$d=d@D*j0EV{`2y%!2vS$Ofn4sgy zrQyXoVGD2izXJgf;WW9s;eqMa>m+ey!QQhS9c%J9FJ?M>y75CT7w7h099*|pT%37-40C6 zB06scl~69<>&q_kaQrD=e1u?Ja<3m&i?O8rD*$9e)P4d%`w8Nqpw;V$dNjnCr1u5G ztW>P12_KrXbB(mruIs9s7I=}phx6qofe^!6^Vs!8yGYa3JNg3)ZB;8iz@ZI47HShZ@m&9{YvIK(nzmQ(JZr zDK5GW>i+n;X8jK=OnE9$=Df;H2$q1aczzq29E`U5`g*6!^fG@44N44$Af>+e4wWPlM6&7wOpQ8XK9#)FWi< z1c5PnOpwahOa!t9h3(n};HVXoqIRzkaN+z}oZ%g159yuX)hAVOAEYV)P!qCHge(G` z@I1NMuUti9==`jOtZe9__${cye_>+ligY@(oxBT#=en(60C@m!;<+oXBld;EKpnI6V^1F0#G zuRO;1#n=SU^fCjGYWV6VkBCO!O+Mq+N_;z-XiTP`^?8`~JAastU>cP^-Io+g zF>FU}SukdY{(`0i$}Ph zVrbX9RPPAi(GEK4qJ$}cR3`#9J79zL>uwbU@b=y7m3%OvQ`Ju~BmsuLzBfVmGdQZP zS>GP&*N~Kfve57Ao;>KKOqHe(q&NEN0F87-eVGmW4^*VLB@*g%J`$ZW6;8sQPb|EO zmWFkuW7==I>Wcbl6@@LF--Q*zjm zja)5^zvnN+#^w$FWCM7x`ZtR{F)vpGXFKkA93k4<+K!nS-bJGwd1OvCW9<8pA$SEU zf^qG3*b`))I)+x;2P)0q-_E&X$m1(ju_8G3ausd;=BG;F0Yp|7(SECyqg-wAMmmcR z6^foreAT~T@}Je4oz-wEZhn*DF6T=xEWmp@pf?TQXK}EI<5IZ4;E!WPC@fwjW34|U zVr3(b{{;AsV;;v6+vHGG2FNyDVp~vtFN$jW6u))R04UUaqH&ew4Jb3|tI#yOnH71} z%|g8vm#qn$(3p5CGK;84y<)M2Bn)H_0R+=ebZ(Z(Vgps*LJeu_LW+N zCG{g|_oQW=r9c=jjXkj+G*dH05pR{?+5U`Y^^j14CiPR+dylwOroT9qB#<#4v%>Eh`2&t7EuWiMJhbN+5^Uk6+CFV}194YDvi;F+}9 zqMS59`i+wscA_Eacd^UYhBC{LwoZFA9UO$lp0FR*Ub==&U9VdP&C9@kxu^tg=wd8r zfg+iF6`qWU0Tm1LaZ9#B$)~r@QQdPDj){)Gu1=hii+1z_>+e81;C_6TF3)daP9P#5 zwpaKundxMk*y70oPz;I(2%D!1L?R4KOU z!L@*6&wznh<-Ma4y~@p@_7H+CbqN+$?ZOxz8tOb+n?>0F#oT*FH5t8KpNb$V3W^kw zCcT4#^d=&`_Z~z*dMA`Xs0t#|dzapO4^2S2^b$JKON7uuAfe37^FIG)-uX5&Yt34d zPkhRqJDeov+I#=@0bW}ELRil*E$YcHAXS56S!U~N36hWhcK(X6(Q zP7${EOC|CcV-{Y1)91^fUG&rKGA1o>rRN_0>nN5uZ{u0X$G;%i-y}gjcf@`*0YJ|I zer=mORjEEX=RJwx4^bCYzc@#tCLVa{2UvCqND)3v-cMs`p!$3urpTV0Pxi++>i2RX zBRzy_c4agUrV6x;EMT6)b;YQ9>Zb+Ji}vJH%@YCcxDzjn+=zM)h|{{`Ngkxb!h;Ku=;MJebwm9=$6)-(F-%lci| z+$!A%;O7qIzL<6xO(ruJL%26t7}Z|*stTXaYUyk_%v}oz$DTsWmZ}M7$+qlF&(N|b zV7|PT*OImIcjrB<4uqeHN5h;a83yf*=KrZr7CpKXQB1bf-u&pp4>}Ig^PR1V!z=r_ z8UyWUtAQAXP$nQ%4H2=G?x}O?xY8v``!lcnytF)>GqJKAvsZCusq>yWJ7O9bns;5; z@8*T7SPMLM$jsdWs|Pk-F9+VkCq8>7GL;_rdH!E^u>eml+e>%rljR1J8DN^(Ibzob zBJU|G)5-NsY5$^F5}bJp7Ht}VInJP#%rn9IO|QOPl-|Rq;xzS_UAH`cmBSNMQO`_+ zjj+45_&X;0+foTyzw_)03NK(B_jGtpg=kp#ZA|Fq7f`SU;P-`%<37l?!oC!TdSG^` z7$ae>aNFY7#H)h|j{(Epo|(}Z{A#s3l*PDmJY_6a3D|}_@5RT*HzMOUwpOlxFG2^9 zTA0j&ATx1pVAqd++Y*Llx?a942XIvbZFL|k|33BiHS!(ag=c+NpunIDEnc3}<>jS2 zfnZ=@peNWGG}6GP@y_9Ri}$DWWcn>AP+;f|d9+@gY27|`N#i$Uzc%@0eq}!`S-RHo z^GP;PcdD>l$OY1tYodn3t85tzQ+ zhl>C0Qh>ABvOMHJTlLsW=OeH>dI3!hqMe;d694VJ3v^?wr3Uy%>`mYoar8@2%YLv3 zms!ku%3AVu&E&JC3p0t#J(6j9SLRkvCo-u^|JUI**GVte!hk$~_5P)NSg{0}DTIRp;f43>+ zm31Rke?Sb-ZR-F)I*E#zZCE+5g?a3kNNQ+FJR1+L`i6aeU#66d2UNCzFT=!KB>(kp zxZOL4CSb-;F8a6c0>l-@KKwMmUUdhhh6w^y3*oasmS!C}e z>}>nd=#$@wgi4iTqti+vAnz285{z+6L_VwQ!@Qn(QjUL)!F+GQc6&2_yU16F+oH2q z5)6xM$g~52K)piS-pPG=hHPQlCtVP4FRvF28QW%A_qOVX*g+G+b@$s!54}7hKy@tDvl%{$~2f_g<^z z=7vg*U$0||dsW;bjM!1xB@#&Y=6QEMJN8@9)T|g80^&91$}VC&v_uzHXq%KN+pmv7 zE6PNDeZolMBFP_6^+f5jaX$!d?jZFhi-y;y-G$;-=vbCFht*0jh3Yk`-9k&mNv|7?Mn1F&$|hCTUO~3 zU)Es|7mL}rMlVU<3HmHictKDp6uC86zdFe%#ynUotg(A6s;wRu5bptuGrt76FWnL$AkD^GhXgo6dWbe7CIz-4fapG*!Dqy-DXnOR(H9dt!hkE zoa^t3A)nu7YQw_Zm;Fu%PGfo){1bK7{gd#LFoURY;5pyRZ@s(NDVESI#UhSDlX{Hw zQ{J6njg^I$%~wr7ifZL=gV&kMBTvSHC$LIzK^6sPS^wR$eJf(flD8Bm%}WPRgWhMq zc3DooM8zMETGPEzXN0O8Qp1w*qu-MfAEJyDfKSYRg1J*-esyM@1)EgaF9n3_MR=pKJUOtNf)lixMQ zvyu9U+4GE=ZM-ofDFFQ;pkjvU{6zNHr>|Y}cy8PM2x4`l`>->nv^{QAkMrpeTvGlt z!Vc(xJ5;5lcSJ2Gbt0$Z4|F8scOGnKtSqzBou9X_>fXq%U4?+QFezq|9u+{ zPEWZ8IOW_7YIC8>6z1^>XL+Gd?z6-4t0&tk&xYcAh$%_4iJN;rupAOTip4QWRchx{ z8*(LmD<^tHmyi@1Y7Fx>;q@OkJUe?qFH^hej;SwQKCNcAp5?fS%tB1rk>i{OTd69p zW{Yo3j19!nsk{X2IZ!~P9ULJIkvDd)vp*2+Du#0tfz2Xy@Utr)oeDG@a66H3(vOdi z0E=oc4=gD^gxvaO842?+@fU(ufSfvbuI#3Pgz0wvXxo*Ji1qbjiVK8cSVpsPj*|#_ zHMrSvQqrC^Vj0rc4Ce+@g8-XBJN+{McSKfUms>cDTNJtW)$OM{l2G$F_hlL5fy-CV z7k@lCGp1M3>(hbXU(s<3fbia{{`<6k%JMODB+Il_|3}=@6W6WFwJN}(z1x}BT%n5i zH^ViK6lw|%tzJ1rQX)c7QzrlA!d|RWu!vZVD&4eKJKBC30d6a61Q1y(;2f%1f5ZIy z%rdT_2$vu=MAeCiy`&f(e6(=CKo~a3ba#x+g{(eu1SE*U>I+`QuMC{LCnPyb00~Z4 zA_)X0sh7-5nHVGg6$t0@q0=Og>8*}OC4Bc>t!QsNspFCh-KDfB{{JHk>HizJ>Hp`? z8i2jOJX9-~|AXo_f++05T%4)3TVs zt!uG$4b)az0$3x)$q&0PXwLZ`zOcn9KmyQlZ2d8KB)A_N0$##w-2KLOYb8WF*ZG`i1wmmF8xxq#PmyPqmH zZmzjb1EhMB8``_*AkaOm4e4vG`A3G6D^R@GEto|Ad0y zHoo9WZWIvw-#A?D_5{mC zQvH`-c0RL|D(J)wzyNW8WIYHd>L@f&{%4_F|5DH~{ko3p7}Vhhz1S_x$^+iU8ap`m zZDZsc84Cb8!aQ%@7WF)sx*97`p#)qqQ}>GItKcA@+=907V3b8DBi-*5x`<4(&x zsg`n}QEpESXg~xiUmQ*i_^ro&?K}^Qh?vge(5slrV&)qYT)pz1+?_0p_}}48YGkNr z@U3gN2yl!eTq_L@X&WOMMp1lo_y27UCQN1lrY_L@)eJ@?jwjWicmJC(q)D{E+j;Qg zcI;kxBG}Tn3{isDWX4BFKLyH(rs^C^fh{Md7U<2xKu>@bvTH`-d>#@8J^KStIeoA=vLC&++41Z-$tO1*bzunS7q#UR*)U2^k zFyUOL`QEaC0py|xi5P&rRl3!b>FK*(FibSNSv7l~6acNPFaNWOjrD-5)QM&q_xGF~ z9gQdSWRsoe;e00Xm(y^c+K>PUIP-th4~`vD_S2o_>vk&yChiJj0O>~Xe@NP_$rY)n z@NhoN0kRFf%!eua#}Qcyw9t-Q=>SbpR~PekmAh)s=S@0HBPIU(+lIpx5^!w_fZ7YG za2Dm{SGQJ;@9_W&F%?yr+n@^GBa&!9tQhEzVTgF6dvI_7Yjc|-$1P+cp#()OR>F@{4)mk@J>^HEDN2oeWa z*w@%72~7VBH^9`JUqWHS_!kmMoSgnQ>U~l0o!m25+~1!=KW!2Li#Va>`o7Fm96|He z`2r9+7(80<13n=f5U)SUZ+ZpGB7rVQcnp6{{MB6vHyE-AD>$SEl(j%R!m$xqS_O%C=k1ZtITWbNTzEk z3CyI*6PDKn7kGw+W)g5BKRU#u*-2{Bru+cRqd16if}yM_r(N?&M*~f1B#RS}>)1PR8}Fk-SRSKM z(+iV{`@#VzHxeq^^QGT^h1@qhaQ(r5fUOV8w8AbjCyKhh*qM3iI zMg9|F;DcShBEWZw{$|+XiGuV{N>ZYCX zx|4miY^&C>m(YL@+;S9sf7s~q=BUPfs*<;U9bMzpt?^JBOK|w=<75uB1~Q1WrS?yvZJ%dv zfnQ}DzcSg+dTVQX3Hune>|{6HaH6v?a~=5P4BonIxA`ZFT&teib3nLzoaN)dg=%)7uO_gL$5GE-NSF$%h3~uao?%46ld#4mc(K z&|T$e6K3P~HaT19g>i;8+Gtrdr6-I*ucK1qWEboIo$uF&q7hd!Hb-zEuQNsW(9XVv zmhfK;Tbln&N2s^CCfcr^c{STWC_65TlgWDhnJXZOGSX2NM{ zIv2X|9WXBDgQjz?G-{PQ?a>l4{1pLTeXrA77+Ope0=Zm1zH(`PY})cZr2GnWzs!)m z+VuMkve5BQ9y3dw7HP)t}gv+=PdBb3m1dZD>CytI@0%*Qd)2oaFe9qv?J=&6) z-8dU_i{k>+Ui(31qmS*5+dC6Mk+k6uc#46l_Gs20EPQxEKT`gAy}sxYdG?ult`o-RZ^4eT6$Uwv{u3+ z_*}W{>Tu!_$*kT$|X4CmK*u8P$g@k zc9nkP%p~+7btH}6s?yYL@Xe>L24kpo)>N9X6s*+eowofSf5^|>RwnwS4FDnqw#uV*3xlL!hZC+z(C`@86!6fttyEAh~M<*p+6O+rviq;X5nu& z5clqOwjVEjGqrHlI^G^x%B*X#vPP%d zJ44AfuI*EdhDU`keap;sx#Z2fi(!PCK~(@g(Y{h-f;V(#cORyYH=;uDSTC@y(60%{ zOZ{~6pQJ_Zd?vZtviwmn)#cLHb@-Ia8x6v159Kb$4};%E$#(Wb-OO)#b0;bXIh!#^ z6>vHz?%FnOeHAy6gDHB}KF1M9hdFAB=x2e$+$*V!mjkG8ufcqZ9GfAiSQz`eu3_t+ zk4nVnr^fx0Vkzma?_*bTQHAX9Za`03l*CEP+C`dL2q)eUF^c(%*U3SEI@t$seAz)g&tY1$Dd}+$1oFduxS(B?nQKKk=Xac(t|9d|%^ZL5ca~m0yY;(@s7BcG zjK;$pvN)@B_E2S=W>RhooQC{O6Wam!M`d3Nb?{r}#7s@BCao9FH&G`esDrO_t^Z zZ5P5a^&#>1c=Y6sC3e{`P}=r8M{uNr_)%keyN6DOPn+d&FMqKp{*FT_n03YEKQGG5kQ;N@gj^t(nxTVQkQFQG@iB{VxMJv^-CU+PK=qX;(M zHX8Bjy%%|_9{O#4^zJVa04*9^G=-PEosey&pg3s7r{0@Iz?>VjGf(qB^z`(XIdmvE z7xs#*Z%AQBgq1#U6Lg}1qbz{BNTeLx&8vw_eul`jpOwmh%o+8mrqb3Mr7INnAUo}$~^X7y5|N|~X$0?}Hb z+=IhI*=&zKY3%(i6&Tvc_dFT;o0U5F7d*U?@bc>>CFyyoOtcxLVZU{~L*Icli>ae6 zlg8?srw6q<`=QyRY*F4uv!E zBPSAx#r_`S&A)y8FrqRtbYuW;Hd=VK}+T+Tu#?3H!qYEFLw;QzqIx*iJM z`_G!g^m<0qXsQp$urDdp1 z1IH#CaGb8FXi6nJJtA)DFGqCji7wHKK#Tv_j2n1(QZgDv-f#hGO@dORW0+Cg%i|Em z+4m)Gq}n-mA65bo>_F;)v}NDefaY~`(B5YWIYtMOiw`Px$Af7#72D2p=uK_5bpDpN zR~{i==ZqljGr#C)asLw-=o;Slcx*lT1owb_)!2OgMX}+A%$$gG>*cI@(Wze}tWHf1+LaDAcXosD4T}kTQ zohfv^++%uJ&4pJG*=c%np+)xAmceN1=p=OBKU9ajD3O7N{KTS5I(MA?fwP^aR!CWG zrrO!XwuDsY@o_XwtT^M9cux^9+y)1-)1}GcIcKxW6A9oDrFVokT$Rj7F?!4sr_AI9 zQ|*f?o@I%0J$q*Ma6weq-R2$&EregP7khW+C+_0(S&6t?dh3brvkT}LE_4L!bz*X* zerMZ8@fDqs!-V`T(B}8i0{X(j#PQ!G`F)RPjk;Nb<3r?3ChTr|)#A=h?skSsnfq{! zC_bgUbBNE-d4!$2|DPY0yp1|~7v<7C1}@Hx#?2lwrj%58*!>pjH0_^YBhEcT@fI8W zYF||O;`blXO#b!?`pj}ix*dWxlWMS=sXQmk&*7t+2-vV??~JLo2puTOlO$cG+NIjn zu1gSO=<2)icrI_mNr?Yr`iIc3yMA(=(1R5va*K=W3|Egauat?J+7HTxKMVIo&XT(C zDaAA1qQUL=FAHWILSd0q+S~67kCD5GBEG+L2Z`O-Q*jziSI`a1o*%H)Fon*(BP;e9 z>8!40nuVM8ULTu(M+z%+^1Jk$skk!G8?Q0{iKEz?Cw=p|0Wd9-RQ#zYD(i%aX=W=W zUDa2jB(RWJn(ZH;(X$hMs0cwP<0p!C=VIAz?nv#w|!*FsTShSTHQI00jw29wL_G!elb@(wSSU@ zg{y7kknQ{nCvqboBV@MCcLGV{^e%`uBb(>hb^Q426|s1@6m6Un$YEMV?%cwzDLBy zA|-i7lLpw{>>)Mj*F54ayhQYQOQAs@r~iycgoh_(NM7e-m9z(WhGee_XtjOaDw0|O z$M^eI=ojM1IM1}i2_pNhDcBc_hAr)n9W)CkmAI0mKZEDP$`c1cq#p|lgv4n;8|>*a z$V#K6?$hAAZel?$RMOO@6g&RsAFcLjeL z?`Fmtr_?HZc_h&@1XJs#*ZD**BM1pst!m^n0?Bw}6VpPBhDFOWgN(=jbauM>_3M3l zL#)6moBs01_Tt3y4}DgGuga$iQ;ic~5tGU|H z5SM8FH0?L^!V7)empoKS{CV4HDVkjdq)DEEAgLnTjlF@@i-32!E@KN~PPivVlv$E|N(Ps7^IjN015nWwxeN1}Lg8 zKWvR@dfWk3a+qYjkiuhskSGYIcohRU+$-{#MaeI`8~+lx+Uzif(Fpdvuv2GQ3^G}; z_?%Ht<8pF8<@gGx-hXJ2B0-%%PYSTsLqZ2+6N(<|g|!AI*bNOoKvZWJJ9ul98xm5k*z%!ZS{F zAEGiCRHl8MC_6&kIDl#zgRhxI$@xbS+weEaO8`Gs^4!y)_?PQXVZj+zJMt8 z^zPXy48fNhGM)A=M`K1HHw}Jt7xX&nBDIcM&E-KEPLy?t*8Kj@&vr2l;*7qh_7sMj z(oim?CuR7q>nNB?I?u&4m`RfwKQ**)Fzhnj@nk@p_lxTc@J-UC&a zOtGHTNWgV~{>~J>RsJZFJQW&TbgkgA1kZtlA94NxU%TH-Xo=SYo10&J_0eu7XDOGS zCUDKzWem^ZYvk_)CD_d*aiu&-MS_``X62M!&1z*g#?TGOTV}m>*`uFshx!a8a;3Eb zjr#w^WdY|zown>e7=!xyx^FrcbIlXFR3C|KAGU4fZ_c*6X^KLfC>AWjrl{35Caj+5 z2D&B#EyX`^UfIzmXRz3H|^l|2b@b-&~~9dfx! z(g~waIp%R~D|Z5IgXt3TG;1ep`*T*nH#G;o0~)X5xbOQ}EU-b#?9&^SMyT3ZyAgkq zdZY#Seo8by#U=L>k2*D(`vr5H3$l3cX2*R<;3Uq`epiCGc7ffSUGAH2N_vHieD)(IbKazM&DgghWo>-{ve1m zg3`yGNq?dIDnpbn^Q!fqZs6v{2=)S0WE&Om%~uAS`SNo%FJ>rd-slzanEw+h7Q9-E z=RBx1IiMttf?aB+dC`X$s)F}V5%V?>BKk^@HQdmji&W5bVN*^2Zav7G*CJk_@mhmL@bJKnl^ImnV$Z1>}H4o2v!Ej7yEM2GV63%`i`2xQ(USdRh3cJ<)h$KKNLZP+p^$EDvv|g$|%(3e7 zlRnhY#Cude)m*hZdT&j)FxFQD%VDrsl;KshskqxNO{i|T;Py*D*f~MJPdaUo-5HEN zO-w6_l5!X#vm7c;Ge53m3b6d(Xz`Mt2b;eB1zIw*Acyyf&4kwI{0RbPumV<@6?8ms zHOS~wD^w{Q1&hykJ@wGYT8UH=Fw&03XhtqVZcIdPD$h$1$Ea{}@W&k5_d?E~0OHqK zttJNFtwy<)9T4A*_FXa1L-8ei1isEl5S$aknNo^fXxCB!f-kGid%mKjIIpfi9%*Wp zry=~Bj*A}$=JN`?gqqIVw^p-F^SipKrif}Ve?e?QRi&JB)dsYEks(;`Vkwh+$1pu6 zz4jm=H}|XgP1BxS>>CFN+k8t~6Mq@A_k>maGVP4okvI#RS6k6cIFsf2_7x*Dy|V9w zRrKET&|MoO87up^3)_%|;-e9())03zcv#rkq}gi$^KoHxVFA*nyX`Ab&*KuIVLCP$ z+jZyap?NzcISoxkcry_N?+5M@%J;yz9gF~@O8f4?TFlAzg9o!uN%DuNSoaI2weNz= zQWosWFKZEHBMA|5&W>@fYnX+8P+Ib?s&zZb?WQ)e)SFZUXTHo>iKcfF%MCtWBRv^7 zRNDshxc1nP(Z}P+5QdMcbBkqCA`L9AHEpMKQ$t--N8?s5rWGF6tWpP|jqNSo^X<>aE|tfa&H%sJ7#ty*YQLD(@rl;M z2PV%zE2K}{GjLdEZcfrocp*lVQ2S4&X01`CgW+Jaj_e|=2Uz(n$9et+YqG+;YH@KN z192CuV<9j8Ev1%B7LUnFdfrN#+C#>_>kJG%l%3Q4?V3&pBtXG_3du-}9R8HN7(?KN zYo*78&or?C9M)o?`A}oyMd6og6;j;nHLk_qH_h%++)vUt$IY@atzDv%B66crIodg- zVdWA^9Wel2uQ;i<9G}SE8A^;3@bOP;YI2}K*EbS*`-^pL=bAhh9}_m+kGZz7^*w#O za}UOz#pj;}1$}tNt~7b__T%`H&L`xY1hxA?&-~1ig>m_)`&+umMU06X)P9BWQ14iw&@;!AS~3zgT9UE`3GhgAF4%2ueDvS$o+u%Nb8XV$e~ zh*Oc`ed`v-9XZv_FY_oSk7N1^RcdS^TR5sN2H`(eX`hFSBigp|XI-Te=8eTFRV?pY z%(JL4s*G5$qEpd$_Udp==29b%m?$76X2{n&cywZ=snZIF z5H5=IeAC{}NfWs)xM@(`{*kC9)vcFRAN@^x!_k~J+rqG`*=~JAqRrD#aTlxw_r~(w z!6GZ{axU<&JO!Fx=1mh!*||n72kCcP-X^SxFUZ5VRZgWfwTz@k zo3Y>NE>-vD70X8)|7x{Is5+Bm+$)*MzuC*@-CUR5qaoSc8Me;<{Ji8q&a00`W+y5t zg=;m}Y8T(7*53ee_;Ze!luevnHz8O&bO7TRyzwnnuT9f(T3Aq(saMnEMime<(oErd z#8hrDLUq1IM=7y)XWDR5IX+t5-V!K3Xvrx$(KxiqKGnUNYKU zILY;%_0 zXe4+Y-)_Gt%I;C~Bg+z_zSD>-^Uu&)ta29cf+V9^+I&7^fB#v(%gg>ifThC z+*c-nhPGx#G`e9nVgW)q#GIs$NaF;6;3Lm+F?+5+Sp%83=lz6VAA&G#K|QAp?y~d` z!+7|{7Y~L#Wv2Xow7DwGw`yoawfJHSQtQ`aS({X|*NPG=6ZFtw&JX2ALKGLt1`?$u z?KQ~ntfv)+o;Y_0ii^N~w;D|ItkYlkb4!iA=7O2&>STtTzPj42CEe2N1Z=#xm#1GfDio6|AbW-(Ebshn7Rn}TpV2` zr2}8@mR7k?eO8ByV(}S@Nr5_L2J`KmP9BU}J_E&8Z};z7Jmg?`aGZYy^vMvmD}-&F6o(D6P{D2xxT;?zOJ z6dMt+rHEEmgwpYVM5X>-Kj?bf*C>C`5OriqKIuqgO2s6xJM^!t60q{XG7C2Oq(mF>5=O}yVn8D2#_s9lZ+ znzt3lyYX9FB6DUREVj4stLt%wIDFB(6X4O^$SqogbtC&z=60m@DA3F}T?Wp2t$;j+ z@z&Sb-t4CSnMURJQ;zN-Gp?{TxcNltLw|GK+H1w)Kx^i4lBV{2Z=Z*5WVN^_#Fzc7prm@CAIPCx@BPGDAUwPH{QAan(Wi7LEAGp=tR5uZJ}dHk!+>w&jQucF>Un0 zEd$A^V9S-+N+wpJjCO;(xuJb6d~7-e8A*YmE9Pbn>mC8fWVOkUy1jL~|#xEw>;w>P6E`%wAaYSbJZ zRI~Xkq=MgbMIX`p+MST2ZR0{Fa&oju+OpCGO1bV_8We--zRc%EaxI6i-+{-SU{-@+ z2c_%xWxD8macHs<@6Gt)6cq>6l6za{1Z@o9U zY@+Z}6@w=#5fFN+i+5DJdW-k&Uo{z@Wr?%VG&Pn$ziAq!-lI*$QOq#WyvxB3k_n4U zXltK3>E>5XlK1&Smqb%ZhGY2rsMn5fkLq1*M5Sb!sVN^a6e!-s?U~^NGXG9(sKnc| zL15o}0NfhKP@fL!C!Gz9JxmgggYa$D49?2%iu^Z>3p*M&E{BPu*wXzVia5j zMCbWJcwYwOFN?1<5SVU6q9#iy!Y+ikJ|m&fwu^jRA}lwfx>6B7%aByJG-PfGDNJ}c zq)~k|1QCuKGQvyfzxpyA*Em2W7;|NPTWeP;_c(V=p$(5OoHLb?t%Iy3NIHK<@#2*XRR^)4)S+=l zQK|)~DtR-_@wgbp&#mU0B=gwZcd`RIjN$H3^VmNJ?S_UV6vb};>^yl2!y{P8my1n> z+=B@}vosoTLzmO&q$M+1x)Hv)O1QoPf2o&rg=ak943hr3HEc?X6@9=@v+tQk7Ny17o$lcS)bhpO7{lKZ# zt3i7Q-K_m$P7kDWBCR2feMOy6n@92;32O0EX~+`cw()JvKfc3XnQhviW_u-)P3Bo& zUEn{VuSa}3cTT72@{wHF>)?knrYP`t@w=X9IqPNchpkRgA10=TDf4>&9%#DB6H&Ce zL~vS<$&#-qmy33$$*{CelzdsS+xvWNd^4Jlg2&}u28_U(D|W%D-hci(OR^_ z_qFlt@fmQqZr^!wYSykfi(1QQ-bvTo+DsKJb0+uG9(?%A=8TNMbhG#g+7vu|suPNi zeIyN2YJLUEyUxL1_p1p6Mx zA72nCY(1u+e)%{%Gm_kOYrN5363po*;geJGe3gPfOOJqLy04O96;&8UD-aEqBb49e zF;v2@ccf?$fNx*8jTFg05fii6U%jU(CP!1>H8S)}#xkBXygd(L?QD0H?c4q_He_{0i-CuJpbG_HXtmL%a*;ULl*e;CK-t$j~=bsl^)_ZPC9ldxE|#7A8;( zS!Ekn`4oQ{s2P2Fj>!il1=+3$9|zJ_n50Y{g`zvcORz>jwMwk#ea}hc>F7n-S4@yO znhw;5{nSIhBx#P2EuL*@Q^)3~A9lkJco@2P44Q(A*J}f~qf)i2K=O zd-R`sct%g?5bUNOd%jGHSHKt94d6Y6H2t`4E7!KcmN+Vw+P2j2LVPHj!CV(7A4CY% zuG#r{xS9#9V*Xw5?WS97>n#}jT9%+i{6%f%1z4G zzwnLaLTb%`IpPg6N0OwrJ^G4PxUz$83^PpO$hU>}ZEZ*6IX#O|?c*qqEqtm0r;@3Clwt)GSZQUUzHDYNX za%r`&sPM%acTaEqMg^FzW}OZm?&fZ4H zrmncLGCh699WkYH*f+Cu8r)xIBW+=draN}cY%NyXDA|-7kr^=d*1-|b#g|R^PLi}D zidHKcb1-k=$&(G^Ep`O4=w|p7r9V;`$R-1Sdq9w2I^Ftt+JQMq+DVD9{^qO%>~r&# z7XHKE_vl04^@}c; zw*+pTHQZCCR&}Cqo`pE`yJrfW?!M=gx@6s+9D7hbz-Ua(R^~6Ik%GB5x1IE6df0NO zUGtc&i1M|@{CJ2zeQP-Ucy~J&0Igxkhw5yJ;)N2Cj9=?l7rtv@srflQ*>2joR|9@N zBYm7Ba6vTX;&M7DLvilMb@lRo(66bow1P7ka_|9NBcYVBwpX$*=vw^Zut!t#or&FP zb248e$#9}Hm+@XCdAfO%AFB9N3SfS|YhX`NR#{1_I+7m!-LF-sDZP@K49C|n$(;>d z)f6JO1ykP5WmH-VuEzV2W3A9-_O|GnM7-FbHsY`AzyXbsn;ZkBFz{Dq|k|?vryl9R8ei z%HX}z?#VM!t+meF+^?nUzF=%7Z*3$hGZ_2pz%e-AF-5QpH6rws#%o<9qCnBb$w#A* z!4;uPQso!9?BuD@hZi}-DP=P)jQkR+^$5g6b))e7qQH;iYJSPiJ1fZ_UnTlgg09b4 zw}c>=!DVfJvODC_O0?1~`>?bn%nW)d-41WKH$#!^->>LC)LYUAOdj&|e1tvGX<~xL zFCY7;ksrw(lyF_%x8-dNUG#E4f5M4RL-^`h<#xh{XEr2&*}I>UO=)qEk{LGhE%H38JKJR>Edxmf@517lzPV`UC>lL39> zTd5K&YNm1P zbxECqnfW+f`(^z(IL_5C;L;Tw_d!$Qtp8pXl<9gN{x_z-#rDnK{Ve^Funw3FUc;sS z-v4R<&VJ5#b}ITijKn+qn|9cPG|JKrSmN*BMOTTxRh|w(&jv{cCOdMe_Job~+$~Lg zI9xZN(@z#MWw=@>igIS#TB;+f_fiwJpHyA5zq1!J58@PUGOCEoVpt`5ka~LDSF+hS zr^*Wco84HS1{~DN@^;b!e}S45@e>q)hcX-t<>`Q|;8H0PoEQD3A^yaCML9cTE7}Q# zbG=d@BtkO5r&f>$SNW>;OGG$I>2?i6QEQlG{Sf>O+-wEmx06Zjc3N{2?Md;zTg~_q zPdl+8*197C*2=SqwzNjtRq0c~_?P>KIzxE~B7z=XgwMkcm*M1Cp}Ks4oc4yFovELU z?T@ZC>GYZB!ETsHe_?W)yt-|950_pZ%On`0%Pa4qc_mRT&-O&au2Llg_Y->({VX^7 zrHX~jiWaFPRJd}{P&bdNVfB@u{f3$Y!S!_QKH!MxIAcL@dJ}(nF$cB%$ySRewNscB zp1FoCNS_%hRswY);^(SHb%Svn1O+cXr#d#gE_Se(Kx9XT{!ZMLT6lJOFL>j^k&6ky zJoV~!ff_9|h{J)d>HVjfjDVsoiH$c4Q;&VOcUV(9|p>0`2Tb{&{*KCe8 zUk=1LJMf*QW$I~SRZLp;MqaQ;(k}CC_m24et><`yX$7!WxC)n@CL#nzLYOJc)Dwb^ zcME1w#00!0ddyB7jIgq|U%Y3xA)CQ$8G1GapX6!_kvyDFc!6m6E&Q`0!Pa2ElAqZa z|I;*7NTu(7O}nL@ckR2?FPbC+fj}A8sd!(`#G^e}`tNo)>1nwslSASNRt;W(--%p8 zUkX&1h!5%|O8p;|oqIUb?H|YM7tgNwh44fP(KB;MR-}bk`-GATrb=}u>AFlhpuJ`BlG7(gK zy;IrNP7;wNwIoJ+Qd>a5Lvdtnx3j{`A;y)B0SmYfREf*kB7m!1rO~Y^T{KQ|A?_nMyZ!e@Ao2f0+NSsyE9jnaE z+o40TeWmW9AQ7O)WYo*Eci%}0kL!)p`g*R;Fiu*5JoejLI{1oj7wvboO{mmnQFhWb z<-+$af9MXZxy|OvuzwvLii<+PxV#3xXsKd~H+p@S!xVxmm1`z8$)7J^g zty_4meYA@O^(Ex)T3(+i6%Uq+aB8hBc^Rdv5YWD5mx9ne?V`76ERk~VYTPUDV079A zOe>E({6R~rB3m6`;RYcUFQ<2|tGAPes0-MCsz&y3KM^i_i%74c?4_W3_jtxite^4S ziHqi-+ER2jL~$Z(GHYKJ2pxWl)5Z9PbK}G3`SfE6)D#Tq70)f-b5s6Dg2I(gy-dMx zbb{GxF%B^jc`%I36QMC`vizr(wlRK<=BZ?6KmSHxOax>cOQuKBLE64n5e$jN)9b%m z9M*}x&|zX5?O@XW%SS)+|3Ojzuhi8TlT8F*igp0IW)8spSX=Km7eUm z@8yW#nGHk6MCi41O1_~P-)0@R%igAZTm6}4vs?}4_V=9}k@t_x2a5Wl8dx}-nA^!G0w)1I<5T&pL`9BT!smeS-CXgR(bF0J4R&k zwUrf7fxogahgs`+|LRWmkt?TpEBcfocd^w2RA`>B&zMlXWPji-Y)Rc$C2pz4a(lrLx_-C11kbQz8zXafSRSIME62GjO*qqc`kW%i#|nkzU)sFE$`^L-c(;ms$YJ z^W^m?ux4bBP$H_o-WjM+YVwI@ehn|Rlc<);aJp}(!lK6rq13#eubaG}gqo4z3w@4x z*s35S%}jcdn`_8On7*vOyMq0*k?U#SSMu+*zsS!H$x>mFJwoH8h9?gxm1rLK%AnQ2 z#PuPCHYJj3%$IGFx5IuwiA*OrZJC?o{3A9qHeEd}QoA@>R{>Zv5E`HVsH{AOUus|t zIygT$1AQaG<=sEw{~$VGUvcFLs2O0m&R^!*&pdm6b#@BOZpAOmugw6t$7AB>C`1A! z=7a*MQ8QNlFoM_`LOi*NXE5-Q?xS@z@1%6jp@JJ&%%{l1cG)hfH3Hh&0Cc8u0D*V@<<$I@?6F389_F zlcl(oIg|9Zu*beI%kn^J{wdi%H&`x9Z3ct|3y4)C&3PgkFj6w~8Znh!+L&{=yKdYO z3jcOf8kvK&DYW_MYOStw0$_>6IHKFHUp^1BX4Q zhrdhTT~9(9*wl3QPqO&sF{uWOo{Kd2H-pd%;*R#pFOAyHALrw3kCYIPqb|W{<}F_q z!OVOpkbFx~sw1*zY88jMy=p3p#{{u6EdiZ3g|9!b|9x#v{HPLQr#(b|!#gvKKNBm? z@x3ooI66eY2IoekpXj~waFVd<_|8#L&<&aly&ixi3Vg0um4Gycs2eh6MO z3#su}WfGnJn#u8w&uYKd!|RyDmzUk<7shRK?*ZM!RoGpE`R70VKR)47oUErg`=7I4 zSroGEJAV)%nc0kFb1|pE#jm*wAkmNU;hZt~%#24?fYs{(@%6%5FHwZ@ZEmD&r<&%u z3Y3L&7?lv(>{b|4g^V81vSOw8+?-ZBja$zkKiHd8HCne9ZJ7f@c~(xg$2w}f`A+qH zkV()Lp=hKXl223R_8#q9b~gcVNsM1xoTO2$73YKu>7isNOG1Lx!Tb(ooE$A`FcsK8 zRY0&@u_nsy=f8gJ(@Yy+{l%rIM8%+VkY&gsvAEh=)3A(9F5z6a)3mX*$)Ex%53XbK zzB7quFBk9Z?50HBklcy!rF%nc{j6Ipk~F#q*xafjyA@ZsjKxu%W%!vQnQV9Nz@KiXa_?`tE9B+U#2uopdEBJp01bx!Fp@|@tcc${6> z!eLSTCX)39>x@Dwc8}L_s^5}+%*(0Uv8%Cxt@wNC(PwX?9FF-=uxGas%A+CCu*%Xs zUQN0e~D&Lb&HWk>3AdVHeQsZJe#^&IkPYHxl;}g#Z8m literal 0 HcmV?d00001 diff --git a/docs/mindspore/source_zh_cn/features/amp.md b/docs/mindspore/source_zh_cn/features/amp.md new file mode 100644 index 0000000000..5e51462526 --- /dev/null +++ b/docs/mindspore/source_zh_cn/features/amp.md @@ -0,0 +1,81 @@ +# 自动混合精度 + +[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindspore/source_zh_cn/features/amp.md) + +混合精度(Mix Precision)训练是指在训练时,对神经网络不同的运算采用不同的数值精度的运算策略。在神经网络运算中,部分运算对数值精度不敏感,此时使用较低精度可以达到明显的加速效果(如conv、matmul等);而部分运算由于输入和输出的数值差异大,通常需要保留较高精度以保证结果的正确性(如log、softmax等)。 + +## 原理 + +浮点数据类型主要分为双精度(FP64)、单精度(FP32)、半精度(FP16)、brain floating point(BF16),每一种都有符号位、指数位、浮点位三个不同的部分来表示。FP64表示采用8个字节共64位;FP32表示采用4个字节共32位;FP16、BF16表示采用2字节共16位。如图所示: + +![fp16-vs-fp32](./images/fp16_vs_fp32.png) + +从图中可以看出,与FP32相比,FP16的存储空间是FP32的一半。类似地,FP32则是FP64的一半。因此使用低精度进行运算具备以下优势: + +- 减少内存占用:FP16、BF16的位宽是FP32的一半,因此权重等参数所占用的内存也是原来的一半,节省下来的内存可以放更大的网络模型或者使用更多的数据进行训练。 +- 计算效率更高:在特殊的AI加速芯片如华为Atlas训练系列产品和Atlas 200/300/500推理产品系列,或者NVIDIA VOLTA架构的GPU上,使用FP16、BF16的执行运算性能比FP32更加快。 +- 加快通讯效率:针对分布式训练,特别是在大模型训练的过程中,通讯的开销制约了网络模型训练的整体性能,通讯的位宽少了意味着可以提升通讯性能,减少等待时间,加快数据的流通。 + +但是使用低精度计算同样会带来一些问题: + +- 数据溢出:FP16的有效数据表示范围为 $[5.9\\times10^{-8}, 65504]$,FP32的有效数据表示范围为 $[1.4\\times10^{-45}, 1.7\\times10^{38}]$。可见FP16相比FP32的有效范围要窄很多,使用FP16替换FP32会出现上溢(Overflow)和下溢(Underflow)的情况。而在深度学习中,需要计算网络模型中权重的梯度(一阶导数),因此梯度会比权重值更加小,往往容易出现下溢情况。 +- 舍入误差:Rounding Error是指当网络模型的反向梯度很小,一般FP32能够表示,但是转换到FP16会小于当前区间内的最小间隔,会导致数据溢出。如`0.00006666666`在FP32中能正常表示,转换到FP16后会表示成为`0.000067`,不满足FP16最小间隔的数会强制舍入。 + +因此,在使用混合精度获得训练加速和内存节省的同时,需要考虑低精度引入问题的解决。一般的,混合精度会配套损失缩放(Loss Scale)一起使用,其主要思想是在计算损失值loss的时候,将loss扩大一定的倍数。根据链式法则,梯度也会相应扩大,然后在优化器更新权重时再缩小相应的倍数,从而避免了数据下溢。 + +根据上述原理介绍,典型的混合精度计算流程如下图所示: + +![mix precision](./images/mix_precision_fp16.png) + +## 混合精度使用示例 + +```python +import mindspore +from mindspore import amp + +loss_scaler = amp.DynamicLossScaler(scale_value=1024, scale_factor=2, scale_window=1000) +ori_model = Net() +# 使能自动混合精度 +model = amp.auto_mixed_precision(ori_model, amp_level="auto", dtype=mindspore.float16) +loss_fn = Loss() +optimizer = Opimizer() + +# 构建前向网络 +def forward_fn(data, label): + logits = model(data) + loss = loss_fn(logits, label) + # 对loss做scale + loss = loss_scaler.scale(loss) + return loss, logits + +# 生成求导函数,用于计算给定函数的前向计算结果和梯度 +grad_fn = mindspore.value_and_grad(forward_fn, None, model.trainable_params(), has_aux=True) + +# 构建训练函数 +def train_step(data, label): + (loss, _), grads = grad_fn(data, label) + # unscale loss到真实的loss值 + loss = loss_scaler.unscale(loss) + # 检查梯度是否没有溢出 + is_finite = amp.all_finite(grads) + if is_finite: + # 梯度没有溢出,unscale梯度到真实的梯度值 + # 在unscale梯度之后可以对梯度做一些梯度裁剪、梯度惩罚等操作 + grads = loss_scaler.unscale(grads) + # 优化器更新模型参数 + optimizer(grads) + # 动态更新loss_scaler的值 + loss_scaler.adjust(is_finite) + return loss + +# 构建数据迭代器 +train_dataset = Dataset() +train_dataset_iter = train_dataset.create_tuple_iterator() + +for epoch in range(epochs): + for data, label in train_dataset_iter: + # 执行训练并获取loss + loss = train_step(data, label) +``` + +关于自动混合精度,更多细节可以参考[amp.auto_mixed_precision](https://www.mindspore.cn/docs/zh-CN/master/api_python/amp/mindspore.amp.auto_mixed_precision.html)。 diff --git a/docs/mindspore/source_zh_cn/features/images/fp16_vs_fp32.png b/docs/mindspore/source_zh_cn/features/images/fp16_vs_fp32.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8e07801600a15f3fe20010f59f5669afad34d5 GIT binary patch literal 36113 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 P00000NkvXXu0mjf6UtlA literal 0 HcmV?d00001 diff --git a/docs/mindspore/source_zh_cn/features/images/mix_precision_fp16.png b/docs/mindspore/source_zh_cn/features/images/mix_precision_fp16.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8771445dfaaf320ace866cb14f5ae581164560 GIT binary patch literal 47705 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≦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 Y5$qR`w4CGbD8ThvSxc!_!6M@S08w!FJ^%m! literal 0 HcmV?d00001 diff --git a/docs/mindspore/source_zh_cn/features/index.rst b/docs/mindspore/source_zh_cn/features/index.rst index 383f4cad09..520a78bb20 100644 --- a/docs/mindspore/source_zh_cn/features/index.rst +++ b/docs/mindspore/source_zh_cn/features/index.rst @@ -19,4 +19,5 @@ Developer Notes runtime/multistream_concurrency runtime/pluggable_backend runtime/pluggable_device + amp data_engine -- Gitee