Ë
    ‡\;j½  ã                   óf   — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ d	„ Zy)
é    )Ú
MethodTypeN)Ú_C_opsÚ_legacy_C_ops)Úto_variable)Úfleet)Úcoreé   )ÚParallelModec                 ó¢   — d„ }t         j                   }|j                  j                  «       t        j                  urt        || «      | _        | S )Nc                 óL
  — | j                   sy g }g }g }g }t        |dd «      �r t        |j                  d   t        «      �r|j                  D ]ñ  }|d   D ]ç  }d }t        |d«      r|j                  �|j                  }n|j                  �|j                  }|€ŒE|j                  |«       |j                  t        j                  j                  j                  t        j                  fv r|j                  |«       Œ¨|j                  t        j                   fv r|j                  |«       Œ×|j                  |«       Œé Œó �n˜t"        j"                  j$                  }	|	j&                  d   j(                  }
|
rkt        |d«      sJ ‚t        |d«      sJ ‚|j*                  rd|_        |j,                  D ]  }|j/                  «        Œ t        |d	«      sJ ‚|j0                  }n|j2                  }|D ]ç  }d }t        |d«      r|j                  �|j                  }n|j                  �|j                  }|€ŒE|j                  |«       |j                  t        j                  j                  j                  t        j                  fv r|j                  |«       Œ¨|j                  t        j                   fv r|j                  |«       Œ×|j                  |«       Œé t5        t7        j8                  dg«      j;                  t6        j<                  «      «      }t5        t7        j8                  dg«      j;                  t6        j<                  «      «      }t5        t7        j8                  dg«      j;                  t6        j<                  «      «      }| j>                  | _         tC        |«      rGtE        jF                  || jH                  ||«       tK        jL                  | j@                  |«      | _         tC        |«      rGtE        jF                  || jH                  ||«       tK        jL                  | j@                  |«      | _         tC        |«      rGtE        jF                  || jH                  ||«       tK        jL                  | j@                  |«      | _         | j@                  jO                  d
«      | _         t        jP                  jS                  | j@                  t        jP                  jT                  jV                  d ¬«       | j@                  jO                  d«      | _         y )NÚ_param_groupsr   ÚparamsÚ	main_gradÚsharding_configsÚ_comm_buffersÚ_sharding_enableFÚ_local_parameter_listÚint32)ÚopÚgroupÚbool),Ú_enableÚgetattrÚ
isinstancer   ÚdictÚhasattrr   ÚgradÚappendÚdtyper   ÚVarDescÚVarTypeÚFP16ÚpaddleÚfloat16Úbfloat16r   Ú_user_defined_strategyÚhybrid_configsÚcomm_overlapr   r   Úscale_gradsr   Ú_parameter_listr   ÚnpÚarrayÚastypeÚbool_Ú_temp_found_inf_value_falseÚ
_found_infÚlenr   Úcheck_finite_and_unscaleÚ_scaler   Ú
bitwise_orÚcastÚdistributedÚ
all_reduceÚReduceOpÚMAX)ÚselfÚ	optimizerÚparam_gradsÚparam_grads_bf16Úparam_grads_fp16Úparam_grads_fp32r   ÚparamÚtgt_gradÚstrategyÚsharding_stage_1_overlapÚbufferÚ
parametersÚtemp_found_inf_fp16Útemp_found_inf_bf16Útemp_found_inf_fp32s                   úhG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/distributed/fleet/scaler.pyÚunscale_methodz*distributed_scaler.<locals>.unscale_method   sC  € Ø�|Š|ØàˆØÐØÐØÐÜ�9˜o¨tÕ4¼Ø×#Ñ# AÑ&¬õ:
ð #×0Ô0�Ø" 8œ_�EØ#�Hä  {Ô3Ø!ŸO™OÐ7à#(§?¡?™ØŸ™Ð/Ø#(§:¡:˜ØÑ+Ø#×*Ñ*¨8Ô4Ø#Ÿ>™>Ü ŸL™L×0Ñ0×5Ñ5Ü"ŸN™Nð.ñ ð -×3Ñ3°HÕ=Ø%Ÿ^™^Ü"ŸO™Oð0ñ ð -×3Ñ3°HÕ=à,×3Ñ3°HÕ=ñ+ -ò 1ô0 —{‘{×9Ñ9ˆHØ'/×'>Ñ'>Ø"ñ(ç‰lð %ñ (ô ˜y¨/Ô:Ð:Ð:Ü˜yÐ*<Ô=Ð=Ð=Ø×-Ò-à16�IÔ.Ø'×5Ô5�FØ×&Ñ&Õ(ð 6ô ˜yÐ*AÔBÐBÐBØ&×<Ñ<‘
à&×6Ñ6�
ã#�Ø�Ü˜5 +Ô.°5·?±?Ð3NØ$Ÿ™‘HØ—Z‘ZÐ+Ø$Ÿz™z�HØÑ'Ø×&Ñ& xÔ0Ø—~‘~ÜŸ™×,Ñ,×1Ñ1ÜŸ™ð*ñ ð )×/Ñ/°Õ9Ø!Ÿ™ÜŸ™ð,ñ ð )×/Ñ/°Õ9à(×/Ñ/°Õ9ð% $ô( *¬"¯(©(°A°3«-×*>Ñ*>¼r¿x¹xÓ*HÓIÐÜ)¬"¯(©(°A°3«-×*>Ñ*>¼r¿x¹xÓ*HÓIÐÜ)¬"¯(©(°A°3«-×*>Ñ*>¼r¿x¹xÓ*HÓIÐØ×:Ñ:ˆŒÜÐÔ Ü×2Ñ2Ø Ø—‘Ø Ø#ô	ô %×/Ñ/Ø—‘Ð!4óˆDŒOô ÐÔ Ü×2Ñ2Ø Ø—‘Ø Ø#ô	ô %×/Ñ/Ø—‘Ð!4óˆDŒOô ÐÔ Ü×2Ñ2Ø Ø—‘Ø Ø#ô	ô %×/Ñ/Ø—‘Ð!4óˆDŒOð Ÿ/™/×.Ñ.¨wÓ7ˆŒô
 	×Ñ×%Ñ%Ø�O‰O¤× 2Ñ 2× ;Ñ ;× ?Ñ ?Àtð 	&ô 	
ð Ÿ/™/×.Ñ.¨vÓ6ˆ�ó    )r   Ú_hcgÚget_parallel_moder
   ÚDATA_PARALLELr   Ú_unscale)ÚscalerrJ   Ú	fleet_envs      rI   Údistributed_scalerrR      sB   € òw7ôt —‘€IØ‡~�~×'Ñ'Ó)´×1KÑ1KÑKÜ$ ^°VÓ<ˆŒà€MrK   )Útypesr   Únumpyr+   r#   r   r   Úpaddle.base.dygraphr   Úpaddle.distributedr   Úpaddle.frameworkr   Úbase.topologyr
   rR   © rK   rI   Ú<module>rZ      s%   ðõ ã ã ß (Ý +Ý $Ý !å 'órK   