o
    id                     @   s   d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
mZ d dlmZ eeZG dd dZG dd deZG dd	 d	eZG d
d deZdd eeefD ZdefddZdS )   )is_optuna_availableis_ray_tune_availableis_wandb_availablerun_hp_search_optunarun_hp_search_rayrun_hp_search_wandb)HPSearchBackenddefault_hp_space_optunadefault_hp_space_raydefault_hp_space_wandb)loggingc                   @   s`   e Zd ZU eed< dZedB ed< edd Zdedefdd	Z	d
d Z
dd Zedd ZdS )HyperParamSearchBackendBasenameNpip_packagec                   C      t NNotImplementedError r   r   d/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/transformers/hyperparameter_search.pyis_available'   s   z(HyperParamSearchBackendBase.is_availablen_trials	directionc                 K   r   r   r   selftrainerr   r   kwargsr   r   r   run+      zHyperParamSearchBackendBase.runc                 C   r   r   r   r   trialr   r   r   default_hp_space.   r   z,HyperParamSearchBackendBase.default_hp_spacec                 C   s(   |   std| j d|   dd S )NzYou picked the z' backend, but it is not installed. Run .)r   RuntimeErrorr   pip_install)r   r   r   r   ensure_available1   s
   z,HyperParamSearchBackendBase.ensure_availablec                 C   s   d| j p| j dS )Nz`pip install `)r   r   )clsr   r   r   r$   7   s   z'HyperParamSearchBackendBase.pip_install)__name__
__module____qualname__str__annotations__r   staticmethodr   intr   r!   r%   classmethodr$   r   r   r   r   r   #   s   
 
r   c                   @   6   e Zd ZdZedd ZdedefddZdd	 Z	d
S )OptunaBackendoptunac                   C      t  S r   )r   r   r   r   r   r   ?      zOptunaBackend.is_availabler   r   c                 K      t |||fi |S r   )r   r   r   r   r   r   C      zOptunaBackend.runc                 C      t |S r   )r	   r   r   r   r   r!   F      zOptunaBackend.default_hp_spaceN
r(   r)   r*   r   r-   r   r.   r+   r   r!   r   r   r   r   r1   <       
r1   c                   @   s:   e Zd ZdZdZedd ZdedefddZ	d	d
 Z
dS )RayTuneBackendrayz'ray[tune]'c                   C   r3   r   )r   r   r   r   r   r   N   r4   zRayTuneBackend.is_availabler   r   c                 K   r5   r   )r   r   r   r   r   r   R   r6   zRayTuneBackend.runc                 C   r7   r   )r
   r   r   r   r   r!   U   r8   zRayTuneBackend.default_hp_spaceN)r(   r)   r*   r   r   r-   r   r.   r+   r   r!   r   r   r   r   r;   J   s    
r;   c                   @   r0   )WandbBackendwandbc                   C   r3   r   )r   r   r   r   r   r   \   r4   zWandbBackend.is_availabler   r   c                 K   r5   r   )r   r   r   r   r   r   `   r6   zWandbBackend.runc                 C   r7   r   )r   r   r   r   r   r!   c   r8   zWandbBackend.default_hp_spaceNr9   r   r   r   r   r=   Y   r:   r=   c                 C   s   i | ]}t |j|qS r   )r   r   .0backendr   r   r   
<dictcomp>g   s    rB   returnc                  C   sr   dd t  D } t| dkr)| d j}t| dkr'tt|  d| d |S tddd	d
 t  D  )Nc                 S   s   g | ]}|  r|qS r   )r   r?   r   r   r   
<listcomp>m   s    z-default_hp_search_backend.<locals>.<listcomp>    r   z1 hyperparameter search backends available. Using z as the default.z,No hyperparameter search backend available.

c                 s   s&    | ]}d |j  d|  V  qdS )z - To install z run N)r   r$   r?   r   r   r   	<genexpr>w   s
    
z,default_hp_search_backend.<locals>.<genexpr>)"ALL_HYPERPARAMETER_SEARCH_BACKENDSvalueslenr   loggerinfor#   join)available_backendsr   r   r   r   default_hp_search_backendl   s   

rO   N)integrationsr   r   r   r   r   r   trainer_utilsr   r	   r
   r   utilsr   
get_loggerr(   rK   r   r1   r;   r=   rH   r+   rO   r   r   r   r   <module>   s    
