
    Αi7#                        S SK r S SKrS SKJrJrJrJrJrJrJ	r	J
r
  SSKJrJrJrJr  SSKJrJr  \" S5       " S S	\5      5       r\" S
5       " S S\5      5       r\" S5       " S S\5      5       r\" S5       " S S\5      5       r\" S5       " S S\5      5       r\" S5       " S S\5      5       r\" S5       " S S\5      5       rg)    N)ExponentialDecayInverseTimeDecayLRSchedulerNaturalExpDecay	NoamDecayexponential_decayinverse_time_decay
noam_decay   )get_optimize_opsget_ps_endpointget_role_idget_trainers   )PassBaseregister_passadd_lr_decay_table_passc                   R   ^  \ rS rSrU 4S jrS rS r    S	S jrS rS r	Sr
U =r$ )
AddLrDecayTablePass&   c                 "   > [         TU ]  5         g Nsuper__init__self	__class__s    h/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/passes/ps_server_pass.pyr   AddLrDecayTablePass.__init__(           c                     gNT r   s    r   _check_selfAddLrDecayTablePass._check_self+       r"   c                     gr$   r%   r   
other_passs     r   _check_conflict#AddLrDecayTablePass._check_conflict.   r)   r"   c                 ^    0 n0 Xr'   X'U   S'   X7U   S'   XGU   S'   XWU   S'   UXr   S'   XqS'   g )Nfeed_var_namefetch_var_namestartup_programmain_programtensor_table_classtensor_tabler%   )r   attrsr0   r1   r2   r3   r4   tensor_table_dicts           r   _add_tensor_table%AddLrDecayTablePass._add_tensor_table1   sd     +-(<I-(9=K-()9:>M-():;;G-(8 	()=> !2nr"   c                    / SQn[         R                  R                  5       n[         R                  R                  5       nSn[        U[        5      (       ag  [         R                  R                  XE5         [        SX!R                  S5      nUR                  n[        R                  " SU S35        S S S 5        GO[        U[        5      (       a{  [         R                  R                  XE5         [        UR                  UR                  S5      nUR                  n[        R                  " SUR                   S35        S S S 5        GO/[        U[        5      (       a  [         R                  R                  XE5         [         R                   R"                  R                  SUR                  5      R%                  5       nUR                  n[        R                  " S	U S35        S S S 5        O[        U[&        5      (       af  [         R                  R                  XE5         [)        SX!R                  S5      nUR                  n[        R                  " S
U S35        S S S 5        O[+        SU 35      eXEU4$ ! , (       d  f       N= f! , (       d  f       N#= f! , (       d  f       N4= f! , (       d  f       NE= f)N)r   r   r   r    g      ?TzPExponentialDecay is set, staircase = True, global learning rate decay step is [ z ], Change decay steps as follow: 
	 strategy = paddle.distributed.fleet.DistributedStrategy() 
 	 strategy.a_sync = True 
	 strategy.a_sync_configs= { 'lr_decay_steps' : YOUR_DECAY_STEP } 
z$NoamDecay is set, warmup steps is [ z ]zONaturalExpDecay is set, staircase = True, global learning rate decay step is [ zPInverseTimeDecay is set, staircase = True, global learning rate decay step is [ zONot supported current LearningRate strategy, please use follow decay strategy: )paddlestaticProgram
isinstancer   program_guardr   gammanameloggingwarningr   r
   d_modelwarmup_stepsr   	optimizerlrget_lrr   r	   
ValueError)r   lr_schedulerlr_decay_stepsscheduler_decaydecay_main_programdecay_startup_programlr_namerH   s           r   _get_lr_scheduler_program-AddLrDecayTablePass._get_lr_scheduler_programE   sy   
 $]]224 & 5 5 7l$455,," '););T ''fgufv w\ \  i00,,"   ((,*C*CS '':<;T;T:UUWX  o66,," %%((88++&(  ''efteu v\ \  &677,," (););T ''fgufv w\ \  abqars  "'AAs    s2   7>J3AJA)J$)>J5
J
J!$
J25
Kc                 ,   UR                   n[        US   S5      (       d  g [        US   R                  [        5      (       d   S5       e[        US   5      nU R                  US   R                  US   5      u  nnnU R                  USUUUS5        g )Norigin_main_programrK   zmust be LRSchedulerrL   z@LR_DECAY_COUNTER@GlobalStepTable)_attrshasattrr?   rK   r   r   rQ   r8   )	r   r3   r2   pass_ctxr6   opslr_decay_main_programlr_decay_startup_programrP   s	            r   _apply_single_impl&AddLrDecayTablePass._apply_single_impl   s    u23^DD'(55{
 
 	! 	! 
 u%:;<
 **'(55u=M7N
		
!$ 	 $!	
 	r"   r%   )r;   NNr;   )__name__
__module____qualname____firstlineno__r   r'   r-   r8   rQ   r\   __static_attributes____classcell__r   s   @r   r   r   &   s7     2(FBP r"   r   add_listen_and_serv_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )AddListenAndServPass   c                 "   > [         TU ]  5         g r   r   r   s    r   r   AddListenAndServPass.__init__   r!   r"   c                     gr$   r%   r&   s    r   r'    AddListenAndServPass._check_self   r)   r"   c                     gr$   r%   r+   s     r   r-   $AddListenAndServPass._check_conflict   r)   r"   c                     UR                   nS S S S S [        US   5      [        US   5      [        US   5      US   SSSS.nUR	                  5       R                  SS/ 00 US9  g )N
role_makerps_mode)grad_to_block_idsparse_grad_to_paramlr_decay_block_iddense_optimize_blockssparse_optimize_blocksendpoint
pserver_idFanindistributed_moderpc_get_thread_numrpc_send_thread_numrpc_prefetch_thread_numlisten_and_servX)typeinputsoutputsr6   )rV   r   r   r   global_block	append_op)r   r3   r2   rX   r6   opts         r   r\   'AddListenAndServPass._apply_single_impl   s     $$(!%%)&*'l(;<%eL&9:!%"56 %i 0"$#%')
 	!!#--"C9b 	. 	
r"   r%   
r^   r_   r`   ra   r   r'   r-   r\   rb   rc   rd   s   @r   rg   rg      s    
 
r"   rg   add_rpc_global_flags_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )AddRpcGlobalFlagsPass   c                 "   > [         TU ]  5         g r   r   r   s    r   r   AddRpcGlobalFlagsPass.__init__   r!   r"   c                     gr$   r%   r&   s    r   r'   !AddRpcGlobalFlagsPass._check_self   r)   r"   c                     gr$   r%   r+   s     r   r-   %AddRpcGlobalFlagsPass._check_conflict   r)   r"   c                     g r   r%   r   r3   r2   rX   s       r   r\   (AddRpcGlobalFlagsPass._apply_single_impl       r"   r%   r   rd   s   @r   r   r           r"   r   add_optimizer_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )AddOptimizerPass   c                 "   > [         TU ]  5         g r   r   r   s    r   r   AddOptimizerPass.__init__   r!   r"   c                     gr$   r%   r&   s    r   r'   AddOptimizerPass._check_self   r)   r"   c                     gr$   r%   r+   s     r   r-    AddOptimizerPass._check_conflict   r)   r"   c                     g r   r%   r   s       r   r\   #AddOptimizerPass._apply_single_impl   r   r"   r%   r   rd   s   @r   r   r      r   r"   r   add_geo_optimizer_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )AddGeoOptimizerPass   c                 "   > [         TU ]  5         g r   r   r   s    r   r   AddGeoOptimizerPass.__init__   r!   r"   c                     gr$   r%   r&   s    r   r'   AddGeoOptimizerPass._check_self   r)   r"   c                     gr$   r%   r+   s     r   r-   #AddGeoOptimizerPass._check_conflict   r)   r"   c                     g r   r%   r   s       r   r\   &AddGeoOptimizerPass._apply_single_impl   r   r"   r%   r   rd   s   @r   r   r      r   r"   r   "build_pserver_startup_program_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )BuildPserverStartupProgramPass   c                 "   > [         TU ]  5         g r   r   r   s    r   r   'BuildPserverStartupProgramPass.__init__   r!   r"   c                     gr$   r%   r&   s    r   r'   *BuildPserverStartupProgramPass._check_self   r)   r"   c                     gr$   r%   r+   s     r   r-   .BuildPserverStartupProgramPass._check_conflict   r)   r"   c                     g r   r%   r   s       r   r\   1BuildPserverStartupProgramPass._apply_single_impl  r   r"   r%   r   rd   s   @r   r   r      r   r"   r   delete_unused_in_startup_passc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )DeleteUnusedInStartupPassi  c                 "   > [         TU ]  5         g r   r   r   s    r   r   "DeleteUnusedInStartupPass.__init__  r!   r"   c                     gr$   r%   r&   s    r   r'   %DeleteUnusedInStartupPass._check_self  r)   r"   c                     gr$   r%   r+   s     r   r-   )DeleteUnusedInStartupPass._check_conflict  r)   r"   c                     g r   r%   r   s       r   r\   ,DeleteUnusedInStartupPass._apply_single_impl  r   r"   r%   r   rd   s   @r   r   r     r   r"   r   )rC   r<   paddle.optimizer.lrr   r   r   r   r   r   r	   r
   ps.utils.publicr   r   r   r   	pass_baser   r   r   rg   r   r   r   r   r   r%   r"   r   <module>r      s    	 	 	  / ()(  *D )*
8 
 +
@ *+H  , #$x  % '((  ) 34X  5 ./  0r"   