o
    "jj                     @   s<   d dl mZ G dd dZG dd deZG dd dZdS )	   )CompiledProgramc                   @   s   e Zd Zdd Zdd ZdS )SerializableBasec                 C      t NNotImplementedErrorselfpath r   q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/base/incubate/checkpoint/checkpoint_saver.py	serialize      zSerializableBase.serializec                 C   r   r   r   r   r   r   r   deserialize   r   zSerializableBase.deserializeN)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )PaddleModelc                 C   s.   || _ || _|| _t|tr|j| _d| _d S )NZ_paddle_fleet_param__)_exeZ_origin_program_program
isinstancer   
_file_name)r	   exeprogramr   r   r   __init__   s   

zPaddleModel.__init__c                 C   &   ddl m} || j|| j| jd d S )N    )save_persistablesexecutordirnameZmain_programfilename)paddle.distributed.ior   r   r   r   )r	   r
   r   r   r   r   r   $      
zPaddleModel.serializec                 C   r   )Nr   )load_persistablesr   )r"   r$   r   r   r   )r	   r
   r$   r   r   r   r   .   r#   zPaddleModel.deserializeN)r   r   r   r   r   r   r   r   r   r   r      s    	
r   c                   @   sL   e Zd Zdd Z	dddZ			ddd	Zd
d Zdd Zg fddZdS )CheckpointSaverc                 C   s   || _ d| _d S )NZ__paddle_checkpoint__)_fs_checkpoint_prefix)r	   fsr   r   r   r   :   s   
zCheckpointSaver.__init__N.cachec                 C   sJ  | j |s| j | n| j |sJ d| d| |}|dk r&d}|d7 }| d| j d| }| d}|}dd	lm}	 |	 }
d
}| j  ryd	|| j|}|d
ur_| d| }|
|sj|
| n|
|swJ d| d|}|D ]}|
| q{| j  r| j | | j || |
| | j || ||fS )zh
        Serialize objects in slists to path
        Return really saved path and checkpoint_no
        zpath:z must be a directoryr      /.z.tmpLocalFSNz{}/{}.{}.saved_cachezcache path:)r&   is_existmkdirsis_dir_get_last_checkpoint_nor'   !paddle.distributed.fleet.utils.fsr/   need_upload_downloadformatr   deleteZuploadmv)r	   r
   slists
trainer_idlocal_cache_pathmax_no	real_pathZtmp_pathZ
saved_pathr/   local_fs
cache_pathsr   r   r   save_checkpoint>   sF   






zCheckpointSaver.save_checkpointTc                 C   s"  |du r|  |}|s|dksJ d|dk rdS |}nt|ts#J |dks)J ddlm} | }	| j r^d|| j|}
|durJ|
 d| }
|		|sT|	
| |		|
r^|	|
 | d| j d| }|}| j ry| j||
 |
}|D ]}|| q{| j r|
r|	|
 |S )zY
        Deserialize objects in slists from path
        Return really load path
        Nr   zCan't find checkpointr.   z{}/{}.{}.load_cacher-   r,   )r3   r   intr4   r/   r&   r5   r6   r'   r0   r1   r7   downloadr   )r	   r
   r9   r:   r;   Zcheckpoint_noZignore_emptyr<   r/   r>   r?   r=   Z	load_pathr@   r   r   r   load_checkpointt   s>   







zCheckpointSaver.load_checkpointc                 C   sr   g }| j |}|D ](}|d}t|dkrq
|d | jkr q
zt|d }|| W q
   Y q
|  |S )Nr-      r   r+   )r&   	list_dirssplitlenr'   rB   appendsort)r	   	root_pathadirsdgnr   r   r   get_checkpoint_no   s   
z!CheckpointSaver.get_checkpoint_noc                 C   s"   |  |}t|dkr|d S dS )z*
        only get the first depth
        r   r*   )rQ   rH   )r	   rK   rL   r   r   r   r3      s   
z'CheckpointSaver._get_last_checkpoint_noc                 C   s   |  |}|dk rd S t|}t|dkr|| | j|}|D ]I}|d}t|dkr0q"|d | jkr8q"zt|d }||vrT| d| j d| }	| j	|	 W q" t
yk }
 z
t|
 W Y d }
~
q"d }
~
ww d S )Nr   r-   rE   r+   r,   )r3   setrH   addr&   rF   rG   r'   rB   r7   	Exceptionprint)r	   rK   reservedr<   r@   rM   rN   rO   rP   r
   er   r   r   clean_redundant_checkpoints   s2   


z+CheckpointSaver.clean_redundant_checkpoints)Nr)   )r)   NT)	r   r   r   r   rA   rD   rQ   r3   rX   r   r   r   r   r%   9   s    
;
9
r%   N)compilerr   r   r   r%   r   r   r   r   <module>   s   