o
    "jM                     @   s   d dl Z d dlmZmZ ddlmZ ddlmZmZm	Z	m
Z
 G dd deZG dd	 d	eZG d
d deZG dd deZG dd deZdS )    N)ABCabstractmethod   _PRUNE_HISTORY_FUNC)gbs_search_allload_configs_from_csv
search_allsearch_by_dp_estimationc                   @   s(   e Zd Zdd Zedd Zdd ZdS )
SearchAlgoc                 C   s
   || _ d S N)	tuner_cfgselfr    r   e/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/auto_tuner/search.py__init__   s   
zSearchAlgo.__init__c                 C   s   d S r   r   )r   history_cfgsr   r   r   search_once    s   zSearchAlgo.search_oncec                 C   s$   t D ]}||||}|r dS qdS )NTFr   )r   r   Zcur_cfgr   funcresultr   r   r   prune$   s   zSearchAlgo.pruneN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r      s
    
r   c                       $   e Zd Z fddZdd Z  ZS )
GridSearchc                        t  | d| _t|| _d S Nr   )superr   idxr	   	all_tasksr   	__class__r   r   r   -      zGridSearch.__init__c                 C   V   d }d}|s)| j t| jk r%| j| j  }|  j d7  _ | | j|| }nd S |r|S NFr   r    lenr!   r   r   r   r   new_cfgstopr   r   r   r   2      zGridSearch.search_oncer   r   r   r   r   __classcell__r   r   r"   r   r   ,       r   c                       r   )DpEstimationSearchc                    s6   t  | d| _t|| _t| jdksJ dd S )Nr   z.Unable to perform single dp estimation search.)r   r   r    r
   r!   r(   r   r"   r   r   r   @   s   
zDpEstimationSearch.__init__c                 C   r%   r&   r'   r)   r   r   r   r   H   r,   zDpEstimationSearch.search_oncer-   r   r   r"   r   r0   ?   s    r0   c                       r   )	GBSSearchc                    r   r   )r   r   r    r   r!   r   r"   r   r   r   V   r$   zGBSSearch.__init__c                 C   sp   d }d}|s6| j t| jk r2| j| j  }|  j d7  _ |dd }|| jd d< | | j|| }nd S |r|S )NFr   Zglobal_batch_sizeZ	model_cfg)r    r(   r!   getr   r   )r   r   r*   r+   Zglbr   r   r   r   [   s   	zGBSSearch.search_oncer-   r   r   r"   r   r1   U   r/   r1   c                       r   )CustomizeSearchc                    sF   t  | d| _|dd | _tj| jsJ dt| j| _	d S )Nr   configs_csvz7configs_csv file is neccessary in CustomizeSearch mode.)
r   r   r    r2   r4   ospathexistsr   r!   r   r"   r   r   r   k   s   zCustomizeSearch.__init__c                 C   s   | j | j }|  jd7  _|S )Nr   )r!   r    )r   r   r*   r   r   r   r   t   s   zCustomizeSearch.search_oncer-   r   r   r"   r   r3   j   s    	r3   )r5   abcr   r   r   r   utilsr   r   r	   r
   r   r   r0   r1   r3   r   r   r   r   <module>   s   