o
    * iI                     @   s   d dl Z 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 e d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_estimationZ
auto_tunerc                   @   s(   e Zd Zdd Zedd Zdd ZdS )
SearchAlgoc                 C   s   || _ g | _d S N)	tuner_cfgpruned_cfgsselfr    r   p/home/app/PaddleOCR-VL-test/.venv_paddleocr/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   r   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                    sX   t  | d| _t|| _| jdd}d | _|r'ddlm	} | jj
|d d | _d S )Nr   need_baselineFr   )memory_sortkey)superr   idxr	   	all_tasksr   getbaselineutilsr   sortZprevious_cfg)r   r   r   r   	__class__r   r   r   1   s   

zGridSearch.__init__c                 C   s  d }d}|r[|d  dddkr[| jd u r[| j ddr[ddlm} |d | _t| j| jt| j |d| j| jd < | j d	dr[dd
lm	} || j| jd  | j| j| jd < |s| jt| jk r| j| j }|  jd7  _| 
| j||| j }| j| nd S |r]|S )NFtimer   r   r   )performance_sortr    Zschedule_prior)sort_by_special)r%   r&   r   r'   r-   sortedr$   r#   lenr.   r   r   append)r   r   new_cfgstopr-   r.   r   r   r   r   =   s:   
zGridSearch.search_oncer   r   r   r   r   __classcell__r   r   r)   r   r   0   s    r   c                       r   )DpEstimationSearchc                    s`   t  | d| _|d d dgkrtd dg|d d< t|| _t| jdks.J dd S )Nr   
candidatesZ	dp_degreer   zUdp_degree should be [1] in dp estimation search mode. Modify it to [1] automatically.z.Unable to perform single dp estimation search.)r"   r   r#   loggerwarningr
   r$   r0   r   r)   r   r   r   a   s   
zDpEstimationSearch.__init__c                 C   sV   d }d}|s)| j t| jk r%| j| j  }|  j d7  _ | | j|| }nd S |r|S )NFr   )r#   r0   r$   r   r   )r   r   r2   r3   r   r   r   r   n   s   zDpEstimationSearch.search_oncer4   r   r   r)   r   r6   `   s    r6   c                       r   )	GBSSearchc                    s    t  | d| _t|| _d S )Nr   )r"   r   r#   r   r$   r   r)   r   r   r   |   s   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#   r0   r$   r%   r   r   )r   r   r2   r3   Zglbr   r   r   r      s   	zGBSSearch.search_oncer4   r   r   r)   r   r:   {   s    r:   c                       r   )CustomizeSearchc                    sF   t  | d| _|dd | _tj| jsJ dt| j| _	d S )Nr   configs_csvz6configs_csv file is necessary in CustomizeSearch mode.)
r"   r   r#   r%   r<   ospathexistsr   r$   r   r)   r   r   r      s   zCustomizeSearch.__init__c                 C   s   | j | j }|  jd7  _|S )Nr   )r$   r#   )r   r   r2   r   r   r   r      s   zCustomizeSearch.search_oncer4   r   r   r)   r   r;      s    	r;   )loggingr=   abcr   r   r   r   r'   r   r   r	   r
   	getLoggerr8   r   r   r6   r:   r;   r   r   r   r   <module>   s   
0