
    9ij                         S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S S	KJr   " S
 S\5      r\R*                  " \R,                  S9 " S S\5      5       rg)    N)Hooks)EpochBasedTrainer)HOOKS)BestCkptSaverHookCheckpointHookCheckpointProcessor)LoadCheckpointHook)Hook)save_configuration)is_swift_availablec                   F    \ rS rSrSrSr\S 5       rS rS r	  S
S jr
S	rg)SwiftCheckpointProcessor   model_swiftc                 z   U R                  U R                  5      n " S S5      nS Hp  nUR                  SU-   5       b   UR                  S5      R                  U5        UR                  SU-   5      c  MP  UR                  S5      R                  U5        Mr     U" X5      n[	        US	5      (       a  [        5       (       d  [        S
5      eSSKJn  [        XH5      (       aE  U[        R                  -   n	UR                  U	UR                  SS5      UR                  SS5      S9  OUR                  UUS UR                  US9  U R                  b%  U R                  R                  UUR                  US9  U R                  b%  U R                  R                  UUR                  US9  UR!                  5         g)z[Copy useful files to target output folder and dumps the target configuration.json.
        c                   &    \ rS rSrS rS rS rSrg)GSwiftCheckpointProcessor.copy_files_and_dump_config.<locals>.SaveConfig   c                     Xl         X l        g N)
output_dirconfig)selfr   r   s      j/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/trainers/hooks/swift/swift_hook.py__init__PSwiftCheckpointProcessor.copy_files_and_dump_config.<locals>.SaveConfig.__init__   s    ",$    c                     X l         g r   )r   )r   _output_dir_configs      r   __call__PSwiftCheckpointProcessor.copy_files_and_dump_config.<locals>.SaveConfig.__call__!   s    %r   c                 D    [        U R                  U R                  5        g r   )r   r   r   r   s    r   save_configSSwiftCheckpointProcessor.copy_files_and_dump_config.<locals>.SaveConfig.save_config$   s    "4??DKK@r   )r   r   N)__name__
__module____qualname____firstlineno__r   r"   r&   __static_attributes__ r   r   
SaveConfigr      s    %&Ar   r.   )push_to_hubhub_repo_id	hub_tokenprivate_hubztrain.checkpoint.period.Nztrain.checkpoint.periodztrain.checkpoint.best.ztrain.checkpoint.bestsave_pretrainedz@Please install swift by `pip install ms-swift` to use SwiftHook.r   )
SwiftModelz#train.checkpoint.safe_serializationFztrain.checkpoint.adapter_namedefault)save_directorysafe_serializationadapter_namec                      g r   r-   )argskwargss     r   <lambda>ESwiftCheckpointProcessor.copy_files_and_dump_config.<locals>.<lambda>D   s    $r   )save_functionr   save_config_function)r?   )unwrap_moduler   safe_getpophasattrr   
ValueErrorswiftr4   
isinstancer   SWIFT_SAVE_SUFFIXr3   r   train_preprocessoreval_preprocessorr&   )
trainerr   r   bin_filer   r.   pop_keysave_config_fnr4   _swift_output_dirs
             r   copy_files_and_dump_config3SwiftCheckpointProcessor.copy_files_and_dump_config   s    %%gmm4
	A 
	A
G 9!( ) *156 9:>>wG7'ABN 78<<WE
 $J75+,,%'' V  )%,,$.1I1[1[$[!%%#4'-=u(F!'7"D	 & E %%">)00)7 & 9 %%1&&66%%%3 7 5 $$0%%55%%%3 6 5 	""$r   c                     [         R                  R                  U5      (       a  [        R                  " U5        [        R
                  " X5        g r   )ospathexistsshutilrmtreecopytree)r   
source_dirr   s      r   link_dir!SwiftCheckpointProcessor.link_dirT   s-    77>>*%%MM*%
/r   c                 &    UR                  U5        g r   )r3   )r   r   filenames      r   save_swift_model_state/SwiftCheckpointProcessor.save_swift_model_stateY   s    h'r   Nc                 \   UR                  UR                  5      nU R                  U5      u  pxU[        R                  -   n	U[        R                  -   n
U R                  XXU5        U R                  Xg5        U R                  XgU5        U R                  Xi5        U R                  X5        g r   )
r@   r   _get_state_file_namer   rG   save_trainer_statesave_model_statelinkr]   rY   )r   rJ   checkpoint_path_prefixr   metasave_optimizersr   _model_file_train_state_file_swift_save_dirrN   s              r   save_checkpoints)SwiftCheckpointProcessor.save_checkpoints\   s     %%gmm4)-)B)B"*$&03K3]3]]&)A)S)SS0A /	1e1		%j1##E;o9r   r-   )NT)r(   r)   r*   r+   _BIN_FILE_DIRrG   staticmethodrO   rY   r]   rj   r,   r-   r   r   r   r      s7    M <% <%|0
( #)-:r   r   )module_namec                   ,    \ rS rSrSrS rS\4S jrSrg)	SwiftHooko   r   c                     g r   r-   r%   s    r   r   SwiftHook.__init__t   s    r   rJ   c                 8   [        5       nUR                  [        5      n[        U5      S:  a6  [	        US   R
                  [         5      (       d  US   R                  U5        UR                  [        5      n[        U5      S:  a6  [	        US   R
                  [         5      (       d  US   R                  U5        UR                  [        5      n[        U5      S:  a8  [	        US   R
                  [         5      (       d  US   R                  U5        g g g )Nr   )	r   get_hookr   lenrF   	processorset_processorr   r	   )r   rJ   rw   	ckpt_hookbest_ckpt_hookload_ckpt_hooks         r   register_processorSwiftHook.register_processorw   s    ,.	$$^4	y>Aj11G1G1I'K 'KaL&&y1 ))*;<~":q!++-E,G ,G1++I6 ))*<=~":q!++-E,G ,G1++I6,G"r   r-   N)	r(   r)   r*   r+   rl   r   r   r|   r,   r-   r   r   rp   rp   o   s     M7*; 7r   rp   )rR   rU   modelscope.metainfor   modelscope.trainersr   !modelscope.trainers.hooks.builderr   4modelscope.trainers.hooks.checkpoint.checkpoint_hookr   r   r   9modelscope.trainers.hooks.checkpoint.load_checkpoint_hookr	   modelscope.trainers.hooks.hookr
   modelscope.utils.checkpointr   modelscope.utils.import_utilsr   r   register_modulerp   r-   r   r   <module>r      sf    	  % 1 3< < / : <\:2 \:~ 5??37 7 47r   