Ë
    Fêñiš  ã            
       ó®   — 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œ	Zyi Zy)é    N)Útime)ÚHUB_WEB_ROOTÚPREFIXÚHUBTrainingSession)ÚLOGGERÚRANKÚSETTINGS)Úeventsc                 óÎ   — t         dv r]t        d   du rQt        d   rG| j                  €:t        j                  | j
                  j                  | j
                  «      | _        yyyyy)zDCreate a remote Ultralytics HUB session to log local model training.>   r   éÿÿÿÿÚhubTÚapi_keyN)r   r	   Úhub_sessionr   Úcreate_sessionÚargsÚmodel©Útrainers    úa/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/utils/callbacks/hub.pyÚon_pretrain_routine_startr      s[   € äˆw�œ8 E™?¨dÑ2´xÀ	Ò7JÈw×ObÑObÐOjÜ0×?Ñ?ÀÇÁ×@RÑ@RÐT[×T`ÑT`ÓaˆÕð PkÐ7JÐ2€ó    c                 óX   — t        | dd«      x}rt        «       t        «       dœ|_        yy)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€wÐ7ä%)£V´T³VÑ<ˆ�ð 8r   c                 ó*  — t        | dd«      x}�ri | j                  | j                  d¬«      ¥| j                  ¥}| j                  dk(  rddlm} i |¥ || «      ¥}t        j                  |«      |j                  | j                  <   |j                  r%|j                  j                  |j                  «       t        «       |j                  d   z
  |j                  d   kD  r/|j                  «        t        «       |j                  d<   i |_	        yyy)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€wÑ7ð
Ø×&Ñ& w§}¡}¸WÐ&ÓEð
à�o‰oð
ˆ	ð �=‰=˜AÒÝLàH˜9ÐHÑ(>¸wÓ(GÐHˆIä/3¯z©z¸)Ó/Dˆ×Ñ˜gŸm™mÑ,ð ×.Ò.Ø×!Ñ!×(Ñ(¨×)LÑ)LÔMä‹6�G—N‘N 9Ñ-Ñ-°×0CÑ0CÀIÑ0NÒNØ×"Ñ"Ô$Ü(,«ˆG�N‰N˜9Ñ%Ø$&ˆGÕ!ð Oð# 8r   c                 óš  — t        | dd«      x}r¼| j                  | j                  k(  }t        «       |j                  d   z
  |j
                  d   kD  rxt        j                  t        › dt        › d|j                  j                  › �«       |j                  | j                  | j                  |«       t        «       |j                  d<   yyy)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€wÐ7à×&Ñ&¨'¯/©/Ñ9ˆÜ‹6�G—N‘N 6Ñ*Ñ*¨W×-@Ñ-@ÀÑ-HÒHÜ�K‰Kœ6˜(Ð"7¼°~ÀXÈgÏmÉm×N^ÑN^ÐM_Ð`ÔaØ× Ñ  §¡°·±¸gÔFÜ%)£VˆG�N‰N˜6Ò"ð Ið 8r   c                 óP  — t        | dd«      x}r—t        j                  t        › d�«       |j	                  | j
                  | j                  | j                  j                  dd«      d¬«       d|_	        t        j                  t        › d	t        › d
|j                  › d�«       yy)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€wÐ7ä�‰”v�hÐ4Ð5Ô6Ø×ÑØ�M‰MØ�L‰LØ—‘×#Ñ#Ð$9¸1Ó=Øð	 	ô 	
ð ˆŒÜ�‰”v�h˜j¬¨°¸w×?PÑ?PÐ>QÐQVÐWÕXð 8r   c                 óD   — t        | j                  | j                  «       y)zRun events on train start.N©r
   r   Údevicer   s    r   Úon_train_startrE   K   s   € ä
ˆ7�<‰<˜Ÿ™Õ(r   c                 ó^   — | j                   s!t        | j                  | j                  «       yy)zRun events on validation start.N)Útrainingr
   r   rD   )Ú	validators    r   Úon_val_startrI   P   s$   € à×ÒÜˆy�~‰~˜y×/Ñ/Õ0ð r   c                 óx   — t        t        | dd«      dd«      }t        | j                  | j                  |¬«       y)zRun events on predict start.r   NÚbackend)rK   )r   r
   r   rD   )Ú	predictorrK   s     r   Úon_predict_startrM   V   s/   € ä”g˜i¨°$Ó7¸ÀDÓI€GÜ
ˆ9�>‰>˜9×+Ñ+°WÖ=r   c                 óD   — t        | j                  | j                  «       y)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      sŠ   ðó Ý ç DÑ Dß 4Ñ 4Ý +òbò=ò'ò2,òYò)ò
1ò>ò+ð" ��˜$Ñð &?Ø#:Ø,Ø&Ø$Ø(Ø$Ø,Ø*ñ
ñ 
ð 
ñ 
r   