o
    Wh                  
   @   s   d dl Z d dlmZ d dlmZmZmZmZ d dlmZm	Z	m
Z
 dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Ze
d du rXeeeeeeeeed	ZdS i ZdS )    N)time)HUB_WEB_ROOTPREFIXHUBTrainingSessionevents)LOGGERRANKSETTINGSc                 C   sN   t dv rtd du r!td r#| jdu r%t| 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trainer r   S/var/www/vscode/kcb/lib/python3.10/site-packages/ultralytics/utils/callbacks/hub.pyon_pretrain_routine_start
   s   &r   c                 C   s(   t | dd }rt t d|_dS dS )zBInitialize timers for upload rate limiting before training begins.r   N)metricsckpt)getattrr   timersr   sessionr   r   r   on_pretrain_routine_end   s   r   c                 C   s   t | dd }rWi | j| jdd| j}| jdkr(ddlm} i ||| }t||j	| j< |j
r;|j	|j
 t |jd  |jd krY|  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   r   r   r   on_fit_epoch_end   s$   

r,   c                 C   s~   t | dd }r;| j| jk}t |jd  |jd kr=t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_bestr   r   r   on_model_save0   s   r4   c                 C   sl   t | dd }r4tt d |j| j| j| jdddd d|_	t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   r/   r   r1   r"   bestr   getalive	model_urlr   r   r   r   on_train_end;   s   "r;   c                 C      t | j dS )zRun events on train start.Nr   r   r   r   r   r   on_train_startJ      r>   c                 C   r<   )zRun events on validation start.Nr=   )	validatorr   r   r   on_val_startO   r?   rA   c                 C   r<   )zRun events on predict start.Nr=   )	predictorr   r   r   on_predict_startT   r?   rC   c                 C   r<   )zRun events on export start.Nr=   )exporterr   r   r   on_export_startY   r?   rE   r   T)	r   r   r,   r4   r;   r>   rA   rC   rE   )r$   r   ultralytics.hubr   r   r   r   ultralytics.utilsr   r   r	   r   r   r,   r4   r;   r>   rA   rC   rE   	callbacksr   r   r   r   <module>   s6   