a
    yf                  
   @   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 reeeeeeeeed	ni ZdS )    N)time)HUB_WEB_ROOTPREFIXHUBTrainingSessionevents)LOGGERRANKSETTINGSc                 C   s>   t dv r:td du r:td r:| jdu r:t| jj| j| _dS )zDCreate a remote Ultralytics HUB session to log local model training.>   r   hubTZapi_keyN)r   r	   hub_sessionr   Zcreate_sessionargsmodeltrainer r   [/var/www/html/django/DPS/env/lib/python3.9/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 )z6Logs info before starting timer for upload rate limit.r   N)metricsckpt)getattrr   timersr   sessionr   r   r   on_pretrain_routine_end   s    r   c                 C   s   t | dd}|ri | j| jdd| j}| jdkrPddlm} i ||| }t||j	| j< |j
rv|j	|j
 t |jd  |jd kr|  t |jd< i |_	dS )z;Uploads training progress metrics at the end of each epoch.r   Ntrain)prefixr   )model_info_for_loggersr   )r   Zlabel_loss_itemsZtlossr   epochZultralytics.utils.torch_utilsr   jsondumpsZmetrics_queueZmetrics_upload_failed_queueupdater   r   rate_limitsZupload_metrics)r   r   Z	all_plotsr   r   r   r   on_fit_epoch_end   s"    
r#   c                 C   sv   t | dd}|rr| j| jk}t |jd  |jd krrtt dt	 d|j
j  || j| j| t |jd< dS )z8Saves checkpoints to Ultralytics HUB with rate limiting.r   Nr   zUploading checkpoint z/models/)r   Zbest_fitnessZfitnessr   r   r"   r   infor   r   r   idupload_modelr   last)r   r   Zis_bestr   r   r   on_model_save2   s    r(   c                 C   sh   t | dd}|rdtt d |j| j| j| jdddd d|_	tt d	t d
|j
 d 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   r&   r   bestr   getaliveZ	model_urlr   r   r   r   on_train_end>   s    r.   c                 C   s   t | j dS )zRun events on train start.Nr   r   r   r   r   r   on_train_startN   s    r0   c                 C   s   t | j dS )z Runs events on validation start.Nr/   )	validatorr   r   r   on_val_startS   s    r2   c                 C   s   t | j dS )zRun events on predict start.Nr/   )Z	predictorr   r   r   on_predict_startX   s    r3   c                 C   s   t | j dS )zRun events on export start.Nr/   )Zexporterr   r   r   on_export_start]   s    r4   r   T)	r   r   r#   r(   r.   r0   r2   r3   r4   )r   r   Zultralytics.hubr   r   r   r   Zultralytics.utilsr   r   r	   r   r   r#   r(   r.   r0   r2   r3   r4   	callbacksr   r   r   r   <module>   s4   
