
    9i                     D    S SK r S SKr   SS jrS rSS jr   SS jrg)    Nc           	          [        U UUUUUS9u  pgU(       a(  U R                  5       (       a  Ub  U R                  XUS9  Xg4$ )a  Load training checkpoint

Arguments:
    load_dir: Required. Directory to load the checkpoint from
    tag: Required. Checkpoint tag used as a unique identifier for the checkpoint. Ex. Global Step.
    load_module_strict: Optional. Boolean to strictly enforce that the keys in state_dict of module and
     checkpoint match.
    load_optimizer_states: Optional. Boolean to load the training optimizer states from Checkpoint.
     Ex. ADAM's momentum and variance
    load_lr_scheduler_states: Optional. Boolean to add the learning rate scheduler states from Checkpoint.
Return:
    load_path: Path of the loaded checkpoint. None if loading the checkpoint failed
    client_state: State dictionary used for loading required training states in the client code.
)load_module_strictload_optimizer_statesload_lr_scheduler_statesr   )_load_checkpointzero_optimization_load_zero_checkpoint)modelload_dirtagr   r   r   	load_pathclient_statess           d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/utils/nlp/load_checkpoint.pyload_checkpointr      sa    *  0-3!9 ;I ""$$)>''5J ( L ##    c                 ~    [         R                  R                  U[        U5      SR	                  U 5      S-   5      nU$ )Nzmp_rank_{:02d}z_model_states.pt)ospathjoinstrformat)mp_rankcheckpoints_pathr   	ckpt_names       r   _get_ckpt_namer   :   s9    #c((+==?I r   c                 b    [        XU5      n[        R                  " US SS9nSU;   a  US   $ U$ )Nc                     U $ N storagelocs     r   <lambda>pre_load.<locals>.<lambda>E       'r   Tmap_locationweights_onlymodule)r   torchload)r   r   r   r   
checkpoints        r   pre_loadr.   A   s>    w#6I1J $,z#9:hIzIr   c                 F   U R                  X5      n[        R                  R                  U5      (       d  g[        R
                  " US SS9nU R                  US   US9  U R                  5       (       d_  U(       aX  U R                  5       (       a  U R                  R                  US   US9  O%U(       a  U R                  R                  US   5        U(       a+  U R                  b  U R                  R                  US	   5        US
   U l        US   U l        UR                  SU R                  U R                  5       -  5      U l        US   U l        US   U l        US   U l        / SQnUR)                  5        V	V
s0 s H  u  pX;  d  M  X_M     nn	n
Xk4$ s  sn
n	f )N)NNc                     U $ r   r    r!   s     r   r$   "_load_checkpoint.<locals>.<lambda>X   r&   r   Tr'   r*   )
state_dictstrict	optimizerr   lr_schedulercsr_tensor_module_namesglobal_stepsglobal_samplesskipped_stepsmp_world_sizedp_world_size)r*   r4   r5   r6   r9   r7   r;   r:   )r   r   r   existsr+   r,   load_module_state_dictr	   fp16_enabledr4   load_state_dictr5   r6   r7   gettrain_batch_sizer8   r9   loaded_checkpoint_mp_world_sizeloaded_checkpoint_dp_world_sizeitems)r   r   r   r   r   r   r   r-   deepspeed_stateskeyvalueclient_states               r   r   r   J   s    $$X3I77>>)$$1J
 
  h'0B ! D""$$)>OO++;'&; , = #OO++J{,CDE$6$6$B**:n+EF$./H$IE!#N3E%>>%,,u/E/E/GGIE$_5E,6,GE),6,GE) %**,,JC0K 	
,  
 ""s   FF)TTT) )r   r+   r   r   r.   r   r    r   r   <module>rJ      s9     
  (,*.-1"$JJ )-+/.2.#r   