o
    `۷i;0                     @   s   d dl Z d dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
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 erDd d	lmZ e eZeeejejejej gZ!ee	j"d
ddddeG dd
 d
e
Z#eG dd deZ$dS )    N)TYPE_CHECKINGDict)TRAINING_ITERATION)_LOGGER_DEPRECATION_WARNINGLoggerLoggerCallback)TIME_TOTAL_STIMESTEPS_TOTAL)flatten_dict)
Deprecated	PublicAPI)log_once)Trial	TBXLoggerz'ray.tune.tensorboardx.TBXLoggerCallback)oldnewT)messagewarningc                   @   sj   e Zd ZdZeeeeee	dfZ
ejejejejejfZdd ZdefddZdd	 Zd
d Zdd ZdS )r   TensorBoardX Logger.

    Note that hparams will be written only after a trial has terminated.
    This logger automatically flattens nested dicts to show on TensorBoard:

        {"a": {"b": 1, "c": 2}} -> {"a/b": 1, "a/c": 2}
    Nc                 C   sN   zddl m} W n ty   tdrtd  w || jdd| _d | _d S )Nr   SummaryWritertbx-install1pip install "ray[tune]" to see TensorBoard files.   
flush_secs)	tensorboardXr   ImportErrorr   loggerinfologdir_file_writerlast_resultselfr    r%   R/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/tune/logger/tensorboardx.py_init(   s   

zTBXLogger._initresultc                 C   s  | tp|t }| }dddttfD ]	}||v r||= qt|dd}ddg}i }| D ]\}}	d||g }
t|	t	t
rTt|	sT|	||
< | jj|
|	|d q.t|	tr_t|	d	ksjt|	tjr|	jd	kr|	||
< t|	tjr|	jd
kr| jj|
|	|d q.t|	tjr|	jdkr| jj|
|	|d q.t|	tjr|	jdkr| jj|
|	|dd q.z| jj|
|	|d W q. ttfy   tdrtd|
|	t| j Y q.w q.|| _ | j!  d S Nconfigpid	timestamp/	delimiterraytune)global_stepr               )r2   fpsinvalid_tbx_valuez6You are trying to log an invalid value ({}={}) via {}!)"getr	   r   copyr   r
   itemsjoin
isinstancetupleVALID_SUMMARY_TYPESnpisnanr!   
add_scalarlistlenndarraysizendim	add_image
add_images	add_videoadd_histogram
ValueError	TypeErrorr   r   r   formattype__name__r"   flush)r$   r(   steptmpkflat_resultpathvalid_resultattrvalue	full_attrr%   r%   r&   	on_result2   sf   

zTBXLogger.on_resultc                 C   s   | j d ur| j   d S d S )N)r!   rQ   r$   r%   r%   r&   rQ   o   s   
zTBXLogger.flushc                 C   sZ   | j d ur+| jr$| jjr$| jr$t| jdd}dd | D }| | | j   d S d S )Nr-   r.   c                 S   $   i | ]\}}t |ttr||qS r%   r=   r>   r?   .0rT   rY   r%   r%   r&   
<dictcomp>w       z#TBXLogger.close.<locals>.<dictcomp>)r!   trialevaluated_paramsr"   r
   r;   _try_log_hparamsclose)r$   rU   scrubbed_resultr%   r%   r&   rf   s   s   

zTBXLogger.closec           
         s   t  jj} fdd| D } fdd| D }||  fdd| D }|r6tdt| ddlm	} z!|||d\}}}	 j
j|  j
j|  j
j|	 W d S  tyl   td	 Y d S w )
Nc                    "   i | ]\}}t | jr||qS r%   r=   VALID_HPARAMSr`   rT   vr\   r%   r&   ra      
    z.TBXLogger._try_log_hparams.<locals>.<dictcomp>c                    &   i | ]\}}t | jr|| qS r%   r=   VALID_NP_HPARAMStolistrk   r\   r%   r&   ra          
c                    (   i | ]\}}t | j j s||qS r%   r=   rj   rp   rk   r\   r%   r&   ra          KRemoved the following hyperparameter values when logging to tensorboard: %sr   hparamshparam_dictmetric_dicthTensorboardX failed to log hparams. This may be due to an unsupported type in the hyperparameter values.)r
   rc   rd   r;   updater   r   strtensorboardX.summaryrx   r!   file_writeradd_summary	Exception	exception)
r$   r(   flat_paramsscrubbed_params	np_paramsremovedrx   experiment_tagsession_start_tagsession_end_tagr%   r\   r&   re      s:   




zTBXLogger._try_log_hparams)rP   
__module____qualname____doc__r~   boolintfloatrC   rO   rj   r@   bool_float32float64int32int64rp   r'   r   r[   rQ   rf   re   r%   r%   r%   r&   r      s    
=c                   @   s   e Zd ZdZdgZeeeee	e
dfZejejejejejfZdd Zddd	Zd
edddefddZddddefddZdddefddZdS )TBXLoggerCallbackr   zevents.out.tfevents.*Nc                 C   sJ   zddl m} || _W n ty   tdrtd  w i | _i | _d S )Nr   r   r   r   )	r   r   _summary_writer_clsr   r   r   r   _trial_writer_trial_resultr#   r%   r%   r&   __init__   s   


zTBXLoggerCallback.__init__rc   r   c                 C   sD   || j v r| j |   |  | j|jdd| j |< i | j|< d S )Nr   r   )r   rf   init_local_pathr   
local_pathr   )r$   rc   r%   r%   r&   log_trial_start   s   
z!TBXLoggerCallback.log_trial_start	iterationr(   c                 C   s  || j vr
| | |tp|t }| }dddttfD ]	}||v r'||= qt|dd}ddg}i }	| D ]\}
}d	||
g }t
|ttr`t|s`||	|< | j | j|||d q8t
|trkt|d	ksvt
|tjr|jd	kr||	|< t
|tjr|jd
kr| j | j|||d q8t
|tjr|jdkr| j | j|||d q8t
|tjr|jdkr| j | j|||dd q8z| j | j|||d W q8 ttfy   tdrtd||t| j  Y q8w q8|	| j!|< | j | "  d S r)   )#r   r   r9   r	   r   r:   r   r
   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   rN   rO   rP   r   rQ   )r$   r   rc   r(   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r%   r%   r&   log_trial_result   sn   









z"TBXLoggerCallback.log_trial_resultFfailedc                 C   st   || j v r8|r'|jr'| j| r't| j| dd}dd | D }| || | j |   | j |= | j|= d S d S )Nr-   r.   c                 S   r]   r%   r^   r_   r%   r%   r&   ra     rb   z3TBXLoggerCallback.log_trial_end.<locals>.<dictcomp>)r   rd   r   r
   r;   re   rf   )r$   rc   r   rU   rg   r%   r%   r&   log_trial_end  s   
zTBXLoggerCallback.log_trial_endc                    s   t |j} fdd| D } fdd| D }||  fdd| D }|r5tdt| ddlm} z'|||d\}}	}
 j	| j
|  j	| j
|	  j	| j
|
 W d S  tyq   td	 Y d S w )
Nc                    rh   r%   ri   rk   r\   r%   r&   ra   "  rm   z6TBXLoggerCallback._try_log_hparams.<locals>.<dictcomp>c                    rn   r%   ro   rk   r\   r%   r&   ra   &  rr   c                    rs   r%   rt   rk   r\   r%   r&   ra   .  ru   rv   r   rw   ry   r|   )r
   rd   r;   r}   r   r   r~   r   rx   r   r   r   r   r   )r$   rc   r(   r   r   r   r   rx   r   r   r   r%   r\   r&   re     s:   





z"TBXLoggerCallback._try_log_hparams)rc   r   )F)rP   r   r   r   _SAVED_FILE_TEMPLATESr~   r   r   r   rC   rO   rj   r@   r   r   r   r   r   rp   r   r   r   r   r   re   r%   r%   r%   r&   r      s    
	Br   )%loggingtypingr   r   numpyr@   ray.air.constantsr   ray.tune.logger.loggerr   r   r   ray.tune.resultr   r	   ray.tune.utilsr
   ray.util.annotationsr   r   ray.util.debugr   ray.tune.experiment.trialr   	getLoggerrP   r   r   r   r   r   r   r   r?   rN   r   r   r%   r%   r%   r&   <module>   s0    
 