o
    `۷i                     @   s   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ dd Zeeeeee	eeeeedZedddd Zg dZdS )    N)get_function_args)ASHASchedulerAsyncHyperBandScheduler)HyperBandForBOHB)HyperBandScheduler)MedianStoppingRule)PopulationBasedTrainingPopulationBasedTrainingReplay)ResourceChangingScheduler)FIFOSchedulerTrialScheduler)	PublicAPIc                  C   s   ddl m}  | S )Nr   PB2)ray.tune.schedulers.pb2r   r    r   R/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/tune/schedulers/__init__.py_pb2_importer   s   r   )fifoasync_hyperbandasynchyperbandmedian_stopping_rulemedianstopping	hyperbandhb_bohbpbt
pbt_replaypb2resource_changingbeta)	stabilityc                    sl   |   } | tvrtdtt d|  t|  }t|r | }t|  fdd| D }|di |S )a?  Instantiate a scheduler based on the given string.

    This is useful for swapping between different schedulers.

    Args:
        scheduler: The scheduler to use.
        **kwargs: Scheduler parameters.
            These keyword arguments will be passed to the initialization
            function of the chosen scheduler.
    Returns:
        ray.tune.schedulers.trial_scheduler.TrialScheduler: The scheduler.
    Example:
        >>> from ray import tune
        >>> pbt_kwargs = {}
        >>> scheduler = tune.create_scheduler('pbt', **pbt_kwargs) # doctest: +SKIP
    z(The `scheduler` argument must be one of z. Got: c                    s   i | ]\}}| v r||qS r   r   ).0kvscheduler_argsr   r   
<dictcomp>O   s    z$create_scheduler.<locals>.<dictcomp>Nr   )lowerSCHEDULER_IMPORT
ValueErrorlistinspect
isfunctionr   items)	schedulerkwargsSchedulerClasstrimmed_kwargsr   r$   r   create_scheduler*   s   
r2   )
r   r   r   r   r   r   r   r	   r   r
   )r+   ray._common.utilsr   #ray.tune.schedulers.async_hyperbandr   r   ray.tune.schedulers.hb_bohbr   ray.tune.schedulers.hyperbandr   (ray.tune.schedulers.median_stopping_ruler   ray.tune.schedulers.pbtr   r	   /ray.tune.schedulers.resource_changing_schedulerr
   #ray.tune.schedulers.trial_schedulerr   r   ray.utilr   r   r(   r2   __all__r   r   r   r   <module>   s4    
)