Ë
    ÿÍ:jO2  ã                   ó<  — d dl Z d dlZ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 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dl m!Z!m"Z"  e jF                  e$«      Z%dddedededef
d„Z&ddde'ddfd„Z(d)d„Z)d)d„Z*d)d„Z+ddœddde,deded   dedefd„Z-ddde,dededef
d„Z.dd œddde,ded!ee/   deddfd"„Z0ddde1e,e1f   fd#„Z2ddd$e1e,ef   ddfd%„Z3ddd$e1e,ef   ddfd&„Z4ddd$e1e,ef   ddfd'„Z5ddde,dededef
d(„Z6y)*é    N)Údeepcopy)ÚAnyÚCallableÚOptionalÚUnion)ÚVersion)Ú_DeviceDtypeModuleMixin)Ú
CheckpointÚEarlyStopping)ÚWandbLogger)Ú_SubprocessScriptLauncher)Ú_get_sigkill_signal)ÚTrainerStatus)Ú_TunerExitException)Úis_overridden)Úrank_zero_infoÚrank_zero_warnÚtrainerú
pl.TrainerÚ
trainer_fnÚargsÚkwargsÚreturnc                 ó<  — 	 | j                   j                  �, | j                   j                  j                  |g|¢­d| i|¤ŽS  ||i |¤ŽS # t        $ rN t	        | «       | j                  «        t        j                  | j                  _	        d| j                  _
        Y yt        $ r·}t        d«       t        j                  t        j                  t        j                  «       t!        | |«       | j                  «        | j                   j                  }t#        |t$        «      r|j'                  t)        «       «       t+        j,                  d«       Y d}~yd}~wt.        $ r3}t!        | |«       | j                  «        d| j                  _
        ‚ d}~ww xY w)am  Error handling, intended to be used only for main trainer function entry points (fit, validate, test, predict)
    as all errors should funnel through them.

    Args:
        trainer_fn: one of (fit, validate, test, predict)
        *args: positional arguments to be passed to the `trainer_fn`
        **kwargs: keyword arguments to be passed to `trainer_fn`

    Nr   z=
Detected KeyboardInterrupt, attempting graceful shutdown ...é   )ÚstrategyÚlauncherÚlaunchr   Ú_call_teardown_hookÚ	_teardownr   ÚFINISHEDÚstateÚstatusÚstageÚKeyboardInterruptr   ÚsignalÚSIGINTÚSIG_IGNÚ
_interruptÚ
isinstancer   Úkillr   ÚsysÚexitÚBaseException)r   r   r   r   Ú	exceptionr   s         ús/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/lightning/pytorch/trainer/call.pyÚ_call_and_handle_interruptr1   $   s>  € ðØ×Ñ×$Ñ$Ð0Ø3�7×#Ñ#×,Ñ,×3Ñ3°JÐaÀÒaÈwÐaÐZ`ÑaÐaÙ˜4Ð* 6Ñ*Ð*øäò #Ü˜GÔ$Ø×ÑÔÜ,×5Ñ5ˆ�‰ÔØ"ˆ�‰Öäò 	ÜÐWÔXä�‰”f—m‘m¤V§^¡^Ô4Ü�7˜IÔ&Ø×ÑÔØ×#Ñ#×,Ñ,ˆÜ�hÔ 9Ô:Ø�M‰MÔ-Ó/Ô0Ü�‰��‰ûäò Ü�7˜IÔ&Ø×ÑÔà"ˆ�‰ÔØûðús2   ‚AA ÁA ÁAFÂ"FÂ*B-EÅFÅ(.FÆFr/   c                 ó  — t         j                  | j                  _        t	        | d|«       | j
                  �t        | d|«       | j                  j                  |«       | j                  D ]  }|j                  d«       Œ y )NÚon_exceptionÚfailed)r   ÚINTERRUPTEDr"   r#   Ú_call_callback_hooksÚ
datamoduleÚ_call_lightning_datamodule_hookr   r3   ÚloggersÚfinalize)r   r/   Úloggers      r0   r)   r)   L   sk   € Ü(×4Ñ4€G‡M�MÔÜ˜ .°)Ô<Ø×ÑÐ%Ü'¨°ÀÔKØ×Ñ×!Ñ! )Ô,Ø—/‘/ò "ˆØ�‰˜Õ!ñ"ó    c                 ó>  — | j                   j                  €J ‚| j                   j                  }| j                  j                  «       D ].  }t	        |t
        «      sŒ| j                  j                  |_        Œ0 t        | j                  d„ ¬«      }|D ]  }t        |d«      sŒ|j                  }Œ | j                  j                  d«       | j                  �t        | d|¬«       t!        | d|¬«       t#        | d|¬«       | j                  j                  d«       y )Nc                 ó$   — t        | t        «       S )N)r*   r   )r;   s    r0   ú<lambda>z"_call_setup_hook.<locals>.<lambda>b   s   € ¼ZÈÔP[Ó=\Ð9\€ r<   )ÚkeyÚ
experimentÚ	pre_setupÚsetup©r$   Ú
post_setup)r"   ÚfnÚlightning_moduleÚmodulesr*   r	   r   Úroot_deviceÚ_deviceÚsortedr9   ÚhasattrrA   Úbarrierr7   r8   r6   Ú_call_lightning_module_hook)r   rF   Úmoduler9   r;   Ú_s         r0   Ú_call_setup_hookrQ   V   sø   € Ø�=‰=×ÑÐ'Ð'Ð'Ø	�‰×	Ñ	€Bð ×*Ñ*×2Ñ2Ó4ò :ˆÜ�fÔ5Õ6Ø$×-Ñ-×9Ñ9ˆF�Nð:ô �W—_‘_Ñ*\Ô]€Gð ò "ˆÜ�6˜<Õ(Ø×!Ñ!‰Að"ð ×Ñ×Ñ˜[Ô)à×ÑÐ%Ü'¨°ÀÕCÜ˜ '°Õ4Ü ¨¸Õ;à×Ñ×Ñ˜\Õ*r<   c                 ó  — t        d| j                  «      r/| j                  j                  «       5  t	        | d«       d d d «       t        d| j                  «      rv| j                  j                  «       5  | j                  j                  «       5  | j                  j                  «       5  t	        | d«       d d d «       d d d «       d d d «       y y # 1 sw Y   Œ–xY w# 1 sw Y   Œ'xY w# 1 sw Y   Œ+xY w# 1 sw Y   y xY w)NÚconfigure_sharded_modelÚconfigure_model)r   rG   r   Úmodel_sharded_contextrN   Útensor_init_contextÚprecision_pluginÚmodule_init_context)r   s    r0   Ú_call_configure_modelrY   s   sø   € äÐ.°×0HÑ0HÔIØ×Ñ×3Ñ3Ó5ñ 	LÜ'¨Ð1JÔK÷	Lô
 Ð&¨×(@Ñ(@ÔAà×Ñ×0Ñ0Ó2ñ	Dà×Ñ×2Ñ2Ó4ñ	Dð ×$Ñ$×8Ñ8Ó:ñ	Dô
 (¨Ð1BÔC÷	D÷ 	D÷ 	Dð 	Dð B÷	Lð 	Lú÷	Dð 	Dú÷ 	Dð 	Dú÷ 	Dð 	DúsG   ±CÁ6C7ÂC+Â,CÂ9C+ÃC7ÃCÃC(Ã$C+Ã+C4	Ã0C7Ã7D c                 óˆ  — | j                   j                  €J ‚| j                   j                  }| j                  �t        | d|¬«       t	        | d|¬«       t        | d|¬«       d | j                  _        d | j                  _        | j                  D ]  }|j                  d«       Œ | j                  j                  «        y )NÚteardownrD   Úsuccess)r"   rF   r7   r8   r6   rN   rG   Ú_current_fx_nameÚ_metric_attributesr9   r:   ÚprofilerÚdescribe)r   rF   r;   s      r0   r   r   „   s¨   € Ø�=‰=×ÑÐ'Ð'Ð'Ø	�‰×	Ñ	€Bà×ÑÐ%Ü'¨°À2ÕFä˜ *°BÕ7Ü ¨¸2Õ>à04€G×ÑÔ-à26€G×ÑÔ/ð —/‘/ò #ˆØ�‰˜	Õ"ð#ð ×Ñ×ÑÕr<   )Ú	pl_moduleÚ	hook_namera   zpl.LightningModulec                ó¤  — t         j                  | j                  j                  › d|› �«       |xs | j                  }|€t        d«      ‚t        ||«      }t        |«      sy |j                  }||_        | j                  j                  d|j                  j                  › d|› �«      5   ||i |¤Ž}d d d «       ||_        S # 1 sw Y   ŒxY w)Nz!: calling lightning module hook: z3No `LightningModule` is available to call hooks on.z[LightningModule]ú.)ÚlogÚdebugÚ	__class__Ú__name__rG   Ú	TypeErrorÚgetattrÚcallabler]   r_   Úprofile)r   rb   ra   r   r   rF   Úprev_fx_nameÚoutputs           r0   rN   rN   ›   sÙ   € ô ‡I�I�×"Ñ"×+Ñ+Ð,Ð,MÈiÈ[ÐYÔZàÒ5˜W×5Ñ5€IàÐÜÐMÓNÐNä	�˜IÓ	&€BÜ�BŒ<Øà×-Ñ-€LØ!*€IÔà	×	Ñ	×	!Ñ	!Ð$5°i×6IÑ6I×6RÑ6RÐ5SÐSTÐU^ÐT_Ð"`Ó	añ %Ù�TÐ$˜VÑ$ˆ÷%ð ".€IÔà€M÷%ð %ús   Â,	CÃCc                 óŠ  — t         j                  | j                  j                  › d|› �«       | j                  €t        d«      ‚t        | j                  |«      }t        |«      rQ| j                  j                  d| j                  j                  j                  › d|› �«      5   ||i |¤Žcd d d «       S y # 1 sw Y   y xY w)Nz%: calling lightning datamodule hook: z7No `LightningDataModule` is available to call hooks on.z[LightningDataModule]rd   )
re   rf   rg   rh   r7   ri   rj   rk   r_   rl   )r   rb   r   r   rF   s        r0   r8   r8   ¹   s¼   € ô ‡I�I�×"Ñ"×+Ñ+Ð,Ð,QÐR[ÐQ\Ð]Ô^à×ÑÐ!ÜÐQÓRÐRä	�×#Ñ# YÓ	/€BÜ�„|Ø×Ñ×%Ñ%Ð(=¸g×>PÑ>P×>ZÑ>Z×>cÑ>cÐ=dÐdeÐfoÐepÐ&qÓrñ 	'Ù�tÐ&˜vÑ&÷	'ñ 	'à÷	'àús   Â&B9Â9C)Úmonitoring_callbacksrp   c                óx  — t         j                  | j                  j                  › d|› �«       | j                  }|r|j
                  }||_        | j                  }|du r'|D �cg c]  }t        |t        t        f«      sŒ|‘Œ }}n*|du r&|D �cg c]  }t        |t        t        f«      rŒ|‘Œ }}|D ]e  }	t        |	|«      }
t        |
«      sŒ| j                  j                  d|	j                  › d|› �«      5   |
| | j                  g|¢­i |¤Ž d d d «       Œg |r|_        y y c c}w c c}w # 1 sw Y   Œ†xY w)Nz: calling callback hook: TFú
[Callback]rd   )re   rf   rg   rh   rG   r]   Ú	callbacksr*   r   r
   rj   rk   r_   rl   Ú	state_key)r   rb   rp   r   r   ra   rm   rs   ÚcbÚcallbackrF   s              r0   r6   r6   Ë   sH  € ô ‡I�I�×"Ñ"×+Ñ+Ð,Ð,EÀiÀ[ÐQÔRà×(Ñ(€IÙØ ×1Ñ1ˆØ%.ˆ	Ô"à×!Ñ!€IØ˜tÑ#à"+Ö[˜B¬z¸"¼}ÌjÐ>YÕ/Z’RÐ[ˆ	Ñ[Ø	 Ñ	&Ø"+Ö_˜B´:¸bÄ=ÔR\ÐB]Õ3^’RÐ_ˆ	Ð_àò GˆÜ�X˜yÓ)ˆÜ�B�<Ø×!Ñ!×)Ñ)¨J°x×7IÑ7IÐ6JÈ!ÈIÈ;Ð*WÓXñ GÙ�7˜G×4Ñ4ÐF°tÒF¸vÒF÷Gð GðGñ à%1ˆ	Õ"ð ùò \ùâ_÷
Gð Gús$   Á$D&Â D&ÂD+Â+D+Ã9D0Ä0D9	c                 óp   — i }| j                   D ]$  }|j                  «       }|sŒ|||j                  <   Œ& |S )zzCalled when saving a model checkpoint, calls and returns every callback's `state_dict`, keyed by
    `Callback.state_key`.)rs   Ú
state_dictrt   )r   Úcallback_state_dictsrv   rx   s       r0   Ú_call_callbacks_state_dictrz   ë   sK   € ð ÐØ×%Ñ%ò BˆØ×(Ñ(Ó*ˆ
ÚØ7AÐ  ×!3Ñ!3Ò4ðBð  Ðr<   Ú
checkpointc                 ó2  — | j                   }|r|j                  }d|_        | j                  D ]Q  }| j                  j	                  d|j
                  › d�«      5  |j                  | | j                   |«       ddd«       ŒS |r|_        yy# 1 sw Y   ŒhxY w)zXCalled when saving a model checkpoint, calls every callback's `on_save_checkpoint` hook.Úon_save_checkpointrr   z.on_save_checkpointN)rG   r]   rs   r_   rl   rt   r}   )r   r{   ra   rm   rv   s        r0   Ú"_call_callbacks_on_save_checkpointr~   ö   s¨   € à×(Ñ(€IÙØ ×1Ñ1ˆØ%9ˆ	Ô"à×%Ñ%ò WˆØ×Ñ×%Ñ%¨
°8×3EÑ3EÐ2FÐFYÐ&ZÓ[ñ 	WØ×'Ñ'¨°×1IÑ1IÈ:ÔV÷	Wð 	WðWñ à%1ˆ	Õ"ð ÷	Wð 	Wús   ÁBÂB	c                 óT  — | j                   }|r|j                  }d|_        |j                  d«      }|€yt        |d   «      t        d«      k  }| j                  D �ch c]  }|r|j
                  n|j                  ’Œ }}|j                  «       |z
  }|rt        dt        |«      › d�«       | j                  D ]Q  }	| j                  j                  d|	j                  › d	�«      5  |	j                  | | j                   |«       ddd«       ŒS |r|_        yyc c}w # 1 sw Y   ŒmxY w)
zòCalled when loading a model checkpoint.

    Calls every callback's `on_load_checkpoint` hook. We have a dedicated function for this rather than using
    `_call_callback_hooks` because we have special logic for getting callback_states.

    Úon_load_checkpointrs   Nzpytorch-lightning_versionz1.5.0devz¦Be aware that when using `ckpt_path`, callbacks used to create the checkpoint need to be provided during `Trainer` instantiation. Please add the following callbacks: rd   rr   z.on_load_checkpoint)rG   r]   Úgetr   rs   Ú_legacy_state_keyrt   Úkeysr   Úlistr_   rl   r€   )
r   r{   ra   rm   Úcallback_statesÚis_legacy_ckptru   Úcurrent_callbacks_keysÚ
differencerv   s
             r0   Ú"_call_callbacks_on_load_checkpointr‰     sG  € ð ×(Ñ(€IÙØ ×1Ñ1ˆØ%9ˆ	Ô"à>H¿n¹nÈ[Ó>Y€OàÐØä˜ZÐ(CÑDÓEÌÐPZÓH[Ñ[€NØah×arÑarÖsÐ[]±n˜b×2Ò2È"Ï,É,ÑVÐsÐÐsØ ×%Ñ%Ó'Ð*@Ñ@€JÙÜð4ä48¸Ó4DÐ3EÀQðHô	
ð ×%Ñ%ò WˆØ×Ñ×%Ñ%¨
°8×3EÑ3EÐ2FÐFYÐ&ZÓ[ñ 	WØ×'Ñ'¨°×1IÑ1IÈ:ÔV÷	Wð 	WðWñ à%1ˆ	Õ"ð ùò t÷	Wð 	Wús   Á!DÃ&DÄD'	c                 óö   — |j                  d«      }|€y| j                  D ]V  }|j                  |j                  |j                  |j                  «      «      }|sŒ;t	        |«      }|j                  |«       ŒX y)zQCalled when loading a model checkpoint, calls every callback's `load_state_dict`.rs   N)r�   rs   rt   r‚   r   Úload_state_dict)r   r{   r…   rv   r"   s        r0   Ú_call_callbacks_load_state_dictrŒ   *  sq   € à>H¿n¹nÈ[Ó>Y€OàÐØà×%Ñ%ò ,ˆØ×#Ñ# H×$6Ñ$6¸×8KÑ8KÈH×LfÑLfÓ8gÓhˆÚÜ˜U“OˆEØ×$Ñ$ UÕ+ñ	,r<   c                 óª  — t         j                  | j                  j                  › d|› �«       | j                  }|j
                  }||_        t        | j                  |«      }t        |«      sy | j                  j                  d| j                  j                  j                  › d|› �«      5   ||i |¤Ž}d d d «       ||_        S # 1 sw Y   ŒxY w)Nz: calling strategy hook: z
[Strategy]rd   )re   rf   rg   rh   rG   r]   rj   r   rk   r_   rl   )r   rb   r   r   ra   rm   rF   rn   s           r0   Ú_call_strategy_hookrŽ   8  sÍ   € ô ‡I�I�×"Ñ"×+Ñ+Ð,Ð,EÀiÀ[ÐQÔRà×(Ñ(€IØ×-Ñ-€LØ!*€IÔä	�×!Ñ! 9Ó	-€BÜ�BŒ<Øà	×	Ñ	×	!Ñ	! J¨w×/?Ñ/?×/IÑ/I×/RÑ/RÐ.SÐSTÐU^ÐT_Ð"`Ó	añ %Ù�TÐ$˜VÑ$ˆ÷%ð ".€IÔà€M÷%ð %ús   Â/	C	Ã	C)r   r   r   N)7Úloggingr&   r,   Úcopyr   Útypingr   r   r   r   Úpackaging.versionr   Úlightning.pytorchÚpytorchÚplÚ-lightning.fabric.utilities.device_dtype_mixinr	   Úlightning.pytorch.callbacksr
   r   Úlightning.pytorch.loggersr   Ú&lightning.pytorch.strategies.launchersr   Ú5lightning.pytorch.trainer.connectors.signal_connectorr   Ú lightning.pytorch.trainer.statesr   Ú&lightning.pytorch.utilities.exceptionsr   Ú)lightning.pytorch.utilities.model_helpersr   Ú%lightning.pytorch.utilities.rank_zeror   r   Ú	getLoggerrh   re   r1   r.   r)   rQ   rY   r   ÚstrrN   r8   Úboolr6   Údictrz   r~   r‰   rŒ   rŽ   © r<   r0   ú<module>r¤      s  ðó Û Û 
Ý ß 1Ó 1å %å Ý Qß AÝ 1Ý LÝ UÝ :Ý FÝ Cß Pà€g×Ñ˜Ó!€ð%¨ð %À(ð %ÐSVð %Ðbeð %Ðjmó %ðP"˜ð "°ð "À4ó "ó+ó:Dó" ð6 15ò	Øðàðð ðð Ð,Ñ-ð	ð
 ðð 	óð<Øðàðð ðð ð	ð
 	óð, ,0ò	2Øð2àð2ð ð2ð # 4™.ð	2ð
 ð2ð 
ó2ð@ ¨ð  ¸¸cÀ4¸i¹ó  ð2°ð 2È$ÈsÐTWÈxÉ.ð 2Ð]aó 2ð !2°ð !2È$ÈsÐTWÈxÉ.ð !2Ð]aó !2ðH,¨\ð ,ÀtÈCÐQTÈHÁ~ð ,ÐZ^ó ,ðØðàðð ðð ð	ð
 	ôr<   