
    Αi                     8    S SK r S SKrSSKJrJr   " S S5      rg)    N   )default_candidatesgbs_default_candidatesc                   :    \ rS rSrSrS rS rS rS
S jrS r	Sr
g	)	AutoTuner   z
The AutoTuner can automatically provide running task based on user-defined settings
and the task will be launched for execution.

Args:
    tuner_cfg (dict): The configuration of auto tuner user defined.
c                    SU l         UR                  SS5      U l        UR                  SSS05      S   nUS:X  a"  SSKJn  [        U5      US'   U" U5      U l        OpUS	:X  a"  SS
KJn  [        U5      US'   U" U5      U l        OHUS:X  a"  SSKJn  [        U5      US'   U" U5      U l        O US:X  a  SSKJ
n  U" U5      U l        O[        e/ U l        / U l        Xl        g )Nr   
task_limitd   search_algonamegrid)
GridSearch
candidatesdp_estimation)DpEstimationSearchgbs)	GBSSearch	customize)CustomizeSearch)cur_task_idgetr
   searchr   r   algor   r   r   r   NotImplementedErrorhistory_cfgsresume_cfgs	tuner_cfg)selfr   r   r   r   r   r   s          c/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/auto_tuner/tuner.py__init__AutoTuner.__init__   s    #--c:mmMFF3CDVL& *&8&CIl#"9-DIO+2&8&CIl#*95DIE!)&<Y&GIl#!),DIK'/'	2DI%%"    c                     U R                   U R                  :  a  gU R                  R                  U R                  5      nU =R                   S-  sl         U$ )zReturn a new task config.Nr   )r   r
   r   search_oncer   )r   new_cfgs     r    r%   AutoTuner.search_once>   sG    doo-))''(9(9:Ar#   c                 :    U R                   R                  U5        g)zAdd cfg into history cfgsN)r   append)r   cfgs     r    add_cfgAutoTuner.add_cfgG   s      %r#   c                    [         R                  R                  U5      (       d  g[         R                  R                  [         R                  R	                  U5      [         R                  R                  U5      R                  S5      S    S35      n[        US5       n[        R                  " U5      n[        U5      n[        US5       n[        R                  " U5      nU H  nUR                  U5        M     SSS5        SSS5        W H%  n[        U5       H  u  p [        U
5      X'   M     M'     / nUS   nUSS nU H  nU Vs/ s H  oS:w  a  UOSPM     nnU Vs/ s H  oS	:X  a  S
OUPM     nnU Vs/ s H  oS:X  a  SOUPM     nn[#        [%        X5      5      nSnU R&                  S   S   nUU   (       a  UU   nUUS'   UR)                  U5        M     Xl        g! , (       d  f       N= f! , (       d  f       N= f! [         a&     [!        U
5      X'    GM  ! [         a      GM  f = ff = fs  snf s  snf s  snf )zResume form history csv fileN.r   z	_copy.csvrwr    TrueTFalseF
metric_cfgr   time)ospathexistsjoindirnamebasenamesplitopencsvreaderlistwriterwriterow	enumerateint
ValueErrorfloatdictzipr   r)   r   )r   history_csv_pathresume_csv_pathfreadr@   	data_listfwriterB   rowivalue	data_dictkeysvaluesvalx
dictionarytime_val
target_keys                      r    resume_form_historyAutoTuner.resume_form_historyK   s    ww~~.//'',,GGOO,-ww 0177<Q?@	J
 "C(EZZ&FVIos+vF+$COOC( % , ) C%cN ZCF +  	|12C3673aR1T)3C77:;s!;4A-sC;9<=AL5a/C=c$n-JH5f=J*%%j1!)JvZ(  %; ,+ )( " !&u%  8;=s`   !.H 1G/ H &HI)I	I/
G=	9H  
H
IH--
H=	7I<H=	=Ic                 Z   / SQnU R                   R                  SS5      (       a'  U R                   S    H  nUR                  U5        M     U R                   R                  SS5      (       a'  U R                   S    H  nUR                  U5        M     U R                   H  nSnU Hq  nUR                  U5      (       d  UR                  U5      (       d  M1  [	        UR                  U5      5      [	        UR                  U5      5      :H  nU=(       a    UnMs     U(       d  M  Us  $    g)zGet cfg from resume cfgs)	mp_degreesharding_degree	pp_degree	dp_degreesharding_stagemicro_batch_size
vpp_degreeuse_recomputerecompute_granularitynum_gpusnodesglobal_batch_sizesharding_overlap	acc_stepsrefined_recomputeNcustom_search_dimT)r   r   r)   r   str)r   cur_cfgkeys_to_comparerrkeyr*   ret_is_sameis_sames           r    get_cfg_from_resumeAutoTuner.get_cfg_from_resumev   s    
" >>1488nn%89&&r* : >>1488~~&9:&&s+ ; ##CK&wws||GKK,<,<!#''#,/3w{{37G3HHG)5g ' {
 $ r#   )r   r   r   r   r
   r   N)z./history.csv)__name__
__module____qualname____firstlineno____doc__r!   r%   r+   rZ   rt   __static_attributes__ r#   r    r   r      s"    #@&)%V%r#   r   )r?   r7   utilsr   r   r   r|   r#   r    <module>r~      s     	 =F Fr#   