
    x-j                         d dl Z d dlZd dlZd dlmZmZmZmZmZ ddl	m
Z
mZ 	 	 	 	 	 	 	 	 	 	 	 	 ddZ G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          ZdS )    N)CallbackCallbackListLRSchedulerModelCheckpointProgBarLogger   )CollectionNamesget_collection   trainc                 
   | pg }t          |t          t          f          r|n|g}t          d |D                       s|rt	          ||          g|}t          d |D                       st                      g|}t          d |D                       sg |t          ||          }t          d |D                       s|dk    rg |t          d          }t          d	 |D                       sg |t                      }t          |          D ]\  }}t          |t                    rt	          |j        |j                  ||<   t          |t                    rt          |j        |j                  ||<   t          |t                     rt          |j        |j                  ||<   t'          |          }|                    |           |d
k    r|	pg ng }	|||||	|
d}|                    |           |S )Nc              3   @   K   | ]}t          |t                    V  d S N)
isinstancer   .0ks     q/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/auto_parallel/static/callbacks.py	<genexpr>z#config_callbacks.<locals>.<genexpr>/   s,      ::z!]++::::::    )verbosec              3   @   K   | ]}t          |t                    V  d S r   )r   r   r   s     r   r   z#config_callbacks.<locals>.<genexpr>2   s,      88az![))888888r   c              3   @   K   | ]}t          |t                    V  d S r   )r   r   r   s     r   r   z#config_callbacks.<locals>.<genexpr>5   s,      <<!z!_--<<<<<<r   c              3   @   K   | ]}t          |t                    V  d S r   )r   Profilerr   s     r   r   z#config_callbacks.<locals>.<genexpr>8   s,      551z!X&&555555r      T)
timer_onlyc              3   @   K   | ]}t          |t                    V  d S r   )r   Historyr   s     r   r   z#config_callbacks.<locals>.<genexpr>;   s,      44!z!W%%444444r   test)
batch_sizeepochsstepsr   metricsacc_step)r   listtupleanyProgBarLoggerAutoLRSchedulerAutoModelCheckpointAutor   r   	enumerater   log_freqr   r   by_stepby_epochr   	save_freqsave_dirr   	set_model
set_params)	callbacksenginer!   r"   r#   r-   r   r0   r1   r$   r%   modecbksir   cbk_listparamss                    r   config_callbacksr;      sR    ?DdT5M22>44D::T::::: Ew E!(G<<<DtD88488888 *!!)D)<<t<<<<< A@@*9h??@5555555 2'Q,,11x4000144t44444 "!!wyy!$ C C1a'' 	?'
AI>>DGa%% 	=%ai<<DGa)) 	C)!+qzBBDGD!!Hv#v~~gm2G  F Or   c                   4     e Zd Zd fd	Zd Zd Zd	dZ xZS )
r)   r   r   c                 L    t                                          ||           d S r   super__init__)selfr-   r   	__class__s      r   r@   zProgBarLoggerAuto.__init__V   s#    7+++++r   c                     dS )NT rA   s    r   	_is_printzProgBarLoggerAuto._is_printY   s    tr   c                 2   g }t          | | d          }t          | | d          }t          | | d          }|D ]#}||v r|                    |||         f           $d|v r|                    d|d         f           |                    di           }t          t          j                  }	|	D ]/\  }
}|
p|j        }||v r|                    |||         f           0|                    di           }|D ]}|                    |||         f            | j        dk    rt          | d| d	          rt          | d| d	          }|d
         dk    r|d
         nd}|d         dk    r|d         nd}|                    dd|d         |z  z  f           |                    dd|d         |z  z  f           |                    dd||d         |d         z   z  z  f           d|d
<   d|d<   d|d<   d|d<   |	                    ||           d S )N_metrics_progbar_steplrfetchesoutputsr   __timercountr   g      ?samplesavg_reader_costz%.5f sec	data_timeavg_batch_cost
batch_timeipsz%.5f samples/secg        )
getattrappendgetr
   r	   LOGGINGnamer   hasattrupdate)rA   logsr6   valuesr$   progbarr#   r   fetches_logscollect_loggingr[   varout_logstimercntrQ   s                   r   _updateszProgBarLoggerAuto._updates\   s   $4 1 1 122$4 1 1 122nnn-- 	, 	,ADyyq$q'l+++4<<MM4d,---xx	2..()@AA( 	4 	4ID# AL  q,q/233388Ir** 	, 	,AMM1hqk*++++<1/?4/?/?/?!@!@D"2d"2"2"233E$)'NQ$6$6%..CC*/	*:Q*>*>eI&&CGMM"J%2Ds2J$KL   MM!:|1Ds1J#KL   MM&%"4u\7J"JKM   E'N E)!$E+"%E,uf%%%%%r   Nc                    |pi }| xj         dz  c_         | j        d         }| xj        |z  c_        | j        dxx         t	          j                    | j        d         z
  z  cc<   | j        dxx         dz  cc<   | j        d         }| j        dxx         |z  cc<   |                                 r@| j         | j        z  dk    r-| j        | j         | j        k     r|                     |d           t	          j                    | j        d	<   d S )
Nr   r!   rU   batch_data_end_timerP   rQ   r   evalbatch_start_time)		eval_stepr:   evaled_samples_eval_timertimerF   r-   
eval_stepsrg   )rA   stepr^   rQ   s       r   on_eval_batch_endz#ProgBarLoggerAuto.on_eval_batch_end   s&   zr!+l+w&&&&IKK$*+@AA	
&&& 	!!!Q&!!!+l+###w.###>> 	, >! C C&$.4?*J*JdF+++/3y{{+,,,r   )r   r   r   )__name__
__module____qualname__r@   rF   rg   rr   __classcell__rB   s   @r   r)   r)   U   sp        , , , , , ,  .& .& .&`; ; ; ; ; ; ; ;r   r)   c                   0     e Zd Zd fd	ZddZd	dZ xZS )
r*   TFc                 L    t                                          ||           d S r   r>   )rA   r.   r/   rB   s      r   r@   zLRSchedulerAuto.__init__   s#    (+++++r   Nc                 F    | j         d         | _        || _        d| _        d S )Nr%   r   )r:   r%   epoch
train_steprA   r{   r^   s      r   on_epoch_beginzLRSchedulerAuto.on_epoch_begin   s"    J/
r   c                 f   | xj         dz  c_         | j        r| j         | j        z  dk    r| j        j        rvt          | j        j        d          r^t          | j        j        j        t          j        j	        j
                  r-| j        j        j                                         d S d S d S d S d S d S )Nr   r   _learning_rate)r|   r.   r%   model	optimizerr\   r   r   paddlerK   r   rq   rA   rq   r^   s      r   on_train_batch_endz"LRSchedulerAuto.on_train_batch_end   s    1< 		;DOdm;q@@
$;DJ02BCC; J(7$'3 ; 
$388:::::		; 		;@@; ; ; ; ; ;r   )TFNNr   )rs   rt   ru   r@   r~   r   rv   rw   s   @r   r*   r*      se        , , , , , ,   
; ; ; ; ; ; ; ;r   r*   c                   $    e Zd Zd ZddZddZdS )r   c                     i | _         d S r   )historyrE   s    r   r@   zHistory.__init__   s    r   Nc                     g | _         d S r   )r{   rA   r^   s     r   on_train_beginzHistory.on_train_begin   s    


r   c                     |pi }| j                             |           |                                D ]3\  }}| j                            |g                               |           4| | j        _        d S r   )r{   rX   itemsr   
setdefaultr   )rA   r{   r^   r   vs        r   on_epoch_endzHistory.on_epoch_end   su    zr
%   JJLL 	5 	5DAqL##Ar**11!4444!
r   r   )rs   rt   ru   r@   r   r   rD   r   r   r   r      sK             " " " " " "r   r   c                   4    e Zd Zd ZddZddZddZddZdS )	r   c                 <    t          j        j        |i || _        d S r   )r   profilerr   prof)rA   argskwargss      r   r@   zProfiler.__init__   s    O,d=f==			r   Nc                 j    || _         d| _        | j        d         | _        | j        d         | _        d S )Nr   r!   r#   )r{   r|   r:   r!   r#   r}   s      r   r~   zProfiler.on_epoch_begin   s0    
+l3[)


r   c                 8    | j                                          d S r   )r   startr   s     r   r   zProfiler.on_train_begin   s    	r   c                     | xj         dz  c_         | j                            | j                   t	          d                    | j         | j                            d                               d S )Nr   )num_samplesz
step {}:{}rQ   )unit)r|   r   rq   r!   printformat	step_infor   s      r   r   zProfiler.on_train_batch_end   ss    1	4?333!4!4)!4!D!D 	
 	
 	
 	
 	
r   c                 j    | j                                          | j                                          d S r   )r   stopsummaryr   s     r   on_train_endzProfiler.on_train_end   s.    		r   r   r   )rs   rt   ru   r@   r~   r   r   r   rD   r   r   r   r      ss        > > >* * * *   
 
 
 
     r   r   c                   4     e Zd Z fdZd ZddZddZ xZS )r+   c                 :     t                      j        |i | d S r   r>   )rA   r   r   rB   s      r   r@   zModelCheckpointAuto.__init__   s%    $)&)))))r   c                     | j         o| j        S r   )r   r1   rE   s    r   _is_savezModelCheckpointAuto._is_save   s    z+dm+r   Nc                    |                                  rm| j        dz   | j        z  dk    rY| j         d| }t	          dt
          j                            |                      | j        	                    |           d S d S d S )Nr   r   z/epochsave checkpoint at )
r   r{   r0   r1   r   ospathabspathr   save)rA   r{   r^   r   s       r   r   z ModelCheckpointAuto.on_epoch_end   s    ==?? 	"
Q$.@AEEm22522D?(=(=??@@@JOOD!!!!!	" 	"EEr   c                     |                                  rU| j         d}t          dt          j                            |                      | j                            |           d S d S )Nz/finalr   )r   r1   r   r   r   r   r   r   )rA   r^   r   s      r   r   z ModelCheckpointAuto.on_train_end   sk    ==?? 	"m+++D?(=(=??@@@JOOD!!!!!	" 	"r   r   )rs   rt   ru   r@   r   r   r   rv   rw   s   @r   r+   r+      so        * * * * *, , ," " " "" " " " " " " "r   r+   )NNNNNr   r   r   NNr   r   )r   ro   r   paddle.hapi.callbacksr   r   r   r   r   	interfacer	   r
   r;   r)   r*   r   r   r+   rD   r   r   <module>r      s   
			                8 7 7 7 7 7 7 7 
	4 4 4 4nH; H; H; H; H; H; H; H;V; ; ; ; ;k ; ; ;0" " " " "h " " "     x   6" " " " "/ " " " " "r   