o
    `۷i                     @   s^   d dl 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 G dd dZdS )	    N)deque)Number)OptionalTuple)_CheckpointManager)TuneFunctionDecoderTuneFunctionEncoderc                       s|   e Zd ZdZddee fddZdd Zdd	ed
e	de
e fddZ fddZdefddZededd fddZ  ZS )_TrainingRunMetadataa  Serializable struct for holding runtime trial metadata.

    Runtime metadata is data that changes and is updated on runtime. This includes
    e.g. the last result, the currently available checkpoints, and the number
    of errors encountered for a trial.
       
   n_stepsc                 C   sR   d | _ d| _d| _d | _d | _i | _td | _i | _|| _	i | _
d | _d | _d S )Nr   inf)
start_timenum_failuresnum_failures_after_restoreerror_filenamepickled_error_filenamelast_resultfloatlast_result_timemetric_analysis_n_stepsmetric_n_stepscheckpoint_manager_cached_json)selfr    r   Q/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/tune/trainable/metadata.py__init__   s   
z_TrainingRunMetadata.__init__c                 C   s
   d | _ d S )N)r   )r   r   r   r   invalidate_cache,   s   
z%_TrainingRunMetadata.invalidate_cache   metricvaluestepc                 C   sX  || j vr5||||d| j |< i | j|< | jD ]}d|}|| j | |< t|g|d| j| t|< qnq|p8d}t|| j | d | j | d< t|| j | d | j | d< d| ||d | j | d    | j | d< || j | d< | jD ].}d|}| j| t| | t	| j| t| t
| j| t|  | j | |< qw|   d S )	N)maxminavglastzlast-{:d}-avg)maxlenr!   r%   r&   r'   r(   )r   r   r   formatr   strr%   r&   appendsumlenr    )r   r"   r#   r$   nkeyr   r   r   update_metric/   s>   



 

z"_TrainingRunMetadata.update_metricc                    s&   t  || |dvr|   d S d S )N>   r   )super__setattr__r    )r   r0   r#   	__class__r   r   r3   R   s   z _TrainingRunMetadata.__setattr__returnc                 C   s4   | j d u r| j}|dd  tj|dtd| _ | j S )Nr      )indentcls)r   __dict__popjsondumpsr   )r   datar   r   r   get_json_stateW   s
   
z#_TrainingRunMetadata.get_json_state
json_statec                 C   s$   t j|td}|  }|j| |S )N)r9   )r<   loadsr   r:   update)r9   r@   staterun_metadatar   r   r   from_json_state_   s   z$_TrainingRunMetadata.from_json_state)r
   )r!   )__name__
__module____qualname____doc__r   intr   r    r+   r   r   r1   r3   r?   classmethodrE   __classcell__r   r   r4   r   r	   
   s    #r	   )r<   collectionsr   numbersr   typingr   r   &ray.train._internal.checkpoint_managerr   ray.tune.utils.serializationr   r   r	   r   r   r   r   <module>   s    