
    j              
           d dl Z d dlmZ d dlmZmZmZ d dlmZmZm	Z	 d dl
mZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Ze	d         du reeeeeeeeed	ni ZdS )    N)time)HUB_WEB_ROOTPREFIXHUBTrainingSession)LOGGERRANKSETTINGS)eventsc                     t           dv rNt          d         du rAt          d         r6| j        1t          j        | j        j        | j                  | _        dS dS dS dS dS )zDCreate a remote Ultralytics HUB session to log local model training.>   r   hubTapi_keyN)r   r	   hub_sessionr   create_sessionargsmodeltrainers    d/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/ultralytics/utils/callbacks/hub.pyon_pretrain_routine_startr      sh    w8E?d22x	7J2wObOj0?@RT[T`aa 2222OjOj    c                 t    t          | dd          x}r$t                      t                      d|_        dS dS )zBInitialize timers for upload rate limiting before training begins.r   N)metricsckpt)getattrr   timersr   sessions     r   on_pretrain_routine_endr      s@    '=$777w =%)VVTVV<<= =r   c                    t          | dd          x}ri |                     | j        d          | j        }| j        dk    rddlm} i | ||           }t          j        |          |j	        | j        <   |j
        r|j	                            |j
                   t                      |j        d         z
  |j        d         k    r5|                                 t                      |j        d<   i |_	        dS dS dS )zMUpload training progress metrics to Ultralytics HUB at the end of each epoch.r   Ntrain)prefixr   )model_info_for_loggersr   )r   label_loss_itemstlossr   epochultralytics.utils.torch_utilsr#   jsondumpsmetrics_queuemetrics_upload_failed_queueupdater   r   rate_limitsupload_metrics)r   r   	all_plotsr#   s       r   on_fit_epoch_endr0      s,   '=$777w '
&&w}W&EE
o
	 =ALLLLLLH9H(>(>w(G(GHI/3z)/D/Dgm, . 	N!(()LMMM66GN9--0CI0NNN""$$$(,GN9%$&G!!!)' '" ONr   c                 x   t          | dd          x}r| j        | j        k    }t                      |j        d         z
  |j        d         k    rkt          j        t           dt           d|j
        j                    |                    | j        | j        |           t                      |j        d<   dS dS dS )z?Upload model checkpoints to Ultralytics HUB with rate limiting.r   Nr   zUploading checkpoint z/models/)r   best_fitnessfitnessr   r   r-   r   infor   r   r   idupload_modelr&   last)r   r   is_bests      r   on_model_saver9   1   s    '=$777w ,&'/966GN6**W-@-HHHK6````gmN^``aaa  gFFF%)VVGN6""", , IHr   c                 F   t          | dd          x}rt          j        t           d           |                    | j        | j        | j                            dd          d           d|_	        t          j        t           d	t           d
|j
         d           dS dS )zIUpload final model and metrics to Ultralytics HUB at the end of training.r   NzSyncing final model...zmetrics/mAP50-95(B)r   T)mapfinalFu	   Done ✅
zView model at u    🚀)r   r   r4   r   r6   r&   bestr   getalive	model_urlr   s     r   on_train_endrA   <   s    '=$777w 
Yv555666ML##$91==	 	 	
 	
 	
 vWWWWw?PWWWXXXXX
Y 
Yr   c                 :    t          | j        | j                   dS )zRun events on train start.Nr
   r   devicer   s    r   on_train_startrE   K   s    
7<(((((r   c                 L    | j         st          | j        | j                   dS dS )zRun events on validation start.N)trainingr
   r   rD   )	validators    r   on_val_startrI   P   s2     1y~y/000001 1r   c                 ~    t          t          | dd          dd          }t          | j        | j        |           dS )zRun events on predict start.r   Nbackend)rK   )r   r
   r   rD   )	predictorrK   s     r   on_predict_startrM   V   s?    gi$77DIIG
9>9+W======r   c                 :    t          | j        | j                   dS )zRun events on export start.NrC   )exporters    r   on_export_startrP   \   s    
8=(/*****r   r   T)	r   r   r0   r9   rA   rE   rI   rM   rP   )r(   r   ultralytics.hubr   r   r   ultralytics.utilsr   r   r	   ultralytics.utils.eventsr
   r   r   r0   r9   rA   rE   rI   rM   rP   	callbacks r   r   <module>rV      sH          D D D D D D D D D D 4 4 4 4 4 4 4 4 4 4 + + + + + +b b b= = =' ' '2, , ,Y Y Y) ) )
1 1 1> > >+ + +" $ &?#:,&$($,*
 
 
 
 
		r   