+
    QV-jš  ã                   ó�   € ^ RI t ^ RIt^ RIt^RIHt ^RIHt ^RIHt ]P                  ! ]
4      t ! R R4      t ! R R]4      tR# )	é    N)ÚTrainerCallback)ÚPREFIX_CHECKPOINT_DIR)Úloggingc                   óN   a € ] tR t^t o R	V 3R lR lltR tR tR tR tRt	V t
R# )
ÚCheckpointManagerc                ó    <€ V ^8„  d   QhRS[ /# )é   Ú	kill_wait)Úint)ÚformatÚ__classdict__s   "€Út/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/trainer_jit_checkpoint.pyÚ__annotate__ÚCheckpointManager.__annotate__   s   ø€ ÷ #ñ #©3ñ #ó    c                ó:   € Wn         RV n        RV n        W n        R# )a  
Initialize the CheckpointManager for Just-In-Time checkpoint handling.

Args:
    trainer: The Trainer instance that will be used to save checkpoints when SIGTERM is received.
    kill_wait (`int`, *optional*, defaults to 3): Grace period to distinguish between SIGTERM and SIGKILL.
FN)ÚtrainerÚis_checkpoint_requestedÚ_original_sigterm_handlerr
   )Úselfr   r
   s   &&&r   Ú__init__ÚCheckpointManager.__init__   s   € ð ŒØ',ˆÔ$Ø)-ˆÔ&Ø"Žr   c                ó˜   € \         P                   ! \         P                  V P                  4      V n        \        P                  R 4       R# )z4JIT checkpoint signal handler registered for SIGTERMN)ÚsignalÚSIGTERMÚ_sigterm_handlerr   ÚloggerÚinfo©r   s   &r   Úsetup_signal_handlerÚ&CheckpointManager.setup_signal_handler   s,   € Ü)/¯ª´v·~±~Àt×G\ÑG\Ó)]ˆÔ&Ü�‰ÐJÖKr   c                óæ   € V P                   '       d   R # \        P                  RV P                   R24       \        P
                  ! V P                  V P                  4      P                  4        R # )Nz4SIGTERM received, will request JIT checkpoint after Ús)r   r   r   r
   Ú	threadingÚTimerÚ_enable_checkpointÚstart)r   ÚsignumÚframes   &&&r   r   Ú"CheckpointManager._sigterm_handler   sN   € Ø×'×'Ð'Ùä�‰ÐJÈ4Ï>É>ÐJZÐZ[Ð\Ô]Ü�Š˜Ÿ™¨×(?Ñ(?Ó@×FÑFÖHr   c                ó>   € \         P                  R 4       RV n        R# )z/Kill wait period elapsed, requesting checkpointTN)r   r   r   r   s   &r   r&   Ú$CheckpointManager._enable_checkpoint&   s   € Ü�‰ÐEÔFØ'+ˆÖ$r   c                óê  €  R V n         \        P                  R4       V P                  P                  P
                  p\        P                  RV 24       V P                  P                  RR7      p\         RV 2p\        P                  P                  W#4      p\        P                  ! VRR7       \        P                  P                  W#R4      p\        VR	4      ;_uu_ 4       pVP                  R
V R24       RRR4       \        P                  RV 24       V P                  P                  V P                  P                  RR7       \        P                  P!                  V4      '       d,   \        P"                  ! V4       \        P                  R4       \        P                  R4       R#   + '       g   i     LÀ; i  \$         d   p\        P'                  RT 24       h Rp?ii ; i)FzStarting JIT checkpointing...zSaving JIT checkpoint at step N)ÚtrialÚ-T)Úexist_okzcheckpoint-is-incomplete.txtÚwzCheckpoint started at step z and in progress...z2Created checkpoint progress sentinel marker file: zSentinel marker file removedz/Immediate JIT checkpoint completed successfullyzFailed to save JIT checkpoint: )r   r   r   r   ÚstateÚglobal_stepÚ_get_output_dirr   ÚosÚpathÚjoinÚmakedirsÚopenÚwriteÚ_save_checkpointÚmodelÚexistsÚremoveÚ	ExceptionÚerror)r   Úcurrent_stepÚ
output_dirÚcheckpoint_folderÚcheckpoint_pathÚsentinel_fileÚfÚes   &       r   Úexecute_jit_checkpointÚ(CheckpointManager.execute_jit_checkpoint*   su  € ð!	à+0ˆDÔ(ä�K‰KÐ7Ô8ØŸ<™<×-Ñ-×9Ñ9ˆLÜ�K‰KÐ8¸¸ÐGÔHàŸ™×5Ñ5¸DÐ5ÓAˆJÜ#8Ð"9¸¸<¸.Ð IÐÜ Ÿg™gŸl™l¨:ÓIˆOô �KŠK˜°$Õ7ô ŸG™GŸL™L¨ÐHfÓgˆMÜ�m S×)Ô)¨QØ—‘Ð5°l°^ÐCVÐWÔX÷ *ä�K‰KÐLÈ]ÈOÐ\Ô]ð �L‰L×)Ñ)¨$¯,©,×*<Ñ*<ÀDÐ)ÔIô �w‰w�~‰~˜m×,Ò,Ü—	’	˜-Ô(Ü—‘Ð:Ô;ä�K‰KÐIÖJ÷ *×)ûô ô 	Ü�L‰LÐ:¸1¸#Ð>Ô?Øûð	ús8   ‚C&G	 Ã(F6Ã>A5G	 Å4A G	 Æ6G	ÇG	 Ç	G2ÇG-Ç-G2)r   r   r
   r   N)é   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r    r   r&   rH   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s*   ø‡ € ÷#ò #òLòIò,÷"ð "r   r   c                   óN   a € ] tR t^Ot o RtR tR tR tR tR t	R t
R tR	tV tR
# )ÚJITCheckpointCallbacka:  
Callback for Just-In-Time checkpointing on SIGTERM signals.

When SIGTERM is received, the checkpoint manager sets `is_checkpoint_requested=True`.
The callbacks detect this flag and set `control.should_training_stop=True`, which signals
the Trainer's training loop to exit gracefully after saving the checkpoint.
c                ó"   € R V n         R V n        R # )N)r   Újit_managerr   s   &r   r   ÚJITCheckpointCallback.__init__X   s   € ØˆŒØ59ˆÖr   c                óÎ   € Wn         VP                  P                  '       dC   \        VR 7      V n        V P                  P                  4        \        P                  R4       R# R# ))r   zJIT checkpointing enabledN)r   ÚargsÚenable_jit_checkpointr   rU   r    r   r   )r   r   s   &&r   Úset_trainerÚ!JITCheckpointCallback.set_trainer\   sH   € ØŒØ�<‰<×-×-Ð-Ü0¸ÔAˆDÔØ×Ñ×1Ñ1Ô3Ü�K‰KÐ3Ö4ñ .r   c                ó¬   € V P                   '       dB   V P                   P                  '       d$   R Vn        V P                   P                  4        R# R# R# ©TN©rU   r   Úshould_training_stoprH   ©r   rX   r2   ÚcontrolÚkwargss   &&&&,r   Úon_pre_optimizer_stepÚ+JITCheckpointCallback.on_pre_optimizer_stepc   óB   € Ø××Ð × 0Ñ 0× H× HÐ HØ+/ˆGÔ(Ø×Ñ×3Ñ3Ö5ñ !IÑr   c                ó¬   € V P                   '       dB   V P                   P                  '       d$   R Vn        V P                   P                  4        R# R# R# r]   r^   r`   s   &&&&,r   Úon_step_beginÚ#JITCheckpointCallback.on_step_beginh   re   r   c                óº   € V P                   '       dI   V P                   P                  '       d+   R Vn        RVn        V P                   P	                  4        R# R# R# ©FTN©rU   r   Úshould_saver_   rH   r`   s   &&&&,r   Úon_step_endÚ!JITCheckpointCallback.on_step_endm   óJ   € Ø××Ð × 0Ñ 0× H× HÐ HØ"'ˆGÔØ+/ˆGÔ(Ø×Ñ×3Ñ3Ö5ñ !IÑr   c                óº   € V P                   '       dI   V P                   P                  '       d+   R Vn        RVn        V P                   P	                  4        R# R# R# rj   rk   r`   s   &&&&,r   Úon_epoch_endÚ"JITCheckpointCallback.on_epoch_ends   ro   r   c                óþ   € V P                   '       dk   V P                   P                  eQ   \        P                  ! \        P                  V P                   P                  4       \        P                  R4       R # R # R # )Nz;Restored original SIGTERM handler after training completion)rU   r   r   r   r   r   r`   s   &&&&,r   Úon_train_endÚ"JITCheckpointCallback.on_train_endy   sS   € à××Ð × 0Ñ 0× JÑ JÒ VÜ�MŠMœ&Ÿ.™.¨$×*:Ñ*:×*TÑ*TÔUÜ�K‰KÐUÖVñ !WÑr   )rU   r   N)rK   rL   rM   rN   Ú__doc__r   rZ   rc   rg   rm   rq   rt   rO   rP   rQ   s   @r   rS   rS   O   s4   ø‡ € ñò:ò5ò6ò
6ò
6ò6÷Wð Wr   rS   )r5   r   r$   Útrainer_callbackr   Útrainer_utilsr   Úutilsr   Ú
get_loggerrK   r   r   rS   © r   r   Ú<module>r|      sB   ðÛ 	Û Û å -Ý 0Ý ð 
×	Ò	˜HÓ	%€÷?ñ ?ôD.W˜Oö .Wr   