o
    ॵi	                     @   s(   d dl Z d dlmZ G dd deZdS )    N)defaultdictc                   @   sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd ZdS )MetricsTrackerz Tracking metrics. c                 C      t t| _t t| _d| _d S Nr   r   floatmetrics_valmetrics_avgnum_samplesself r   i/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/trainers/nlp/space/metrics/metrics_tracker.py__init__
      


zMetricsTracker.__init__c                 C   sn   |  D ])\}}|d ur-t|}|| j|< | j|d| j ||  | j|  }|| j|< q|  j|7  _d S r   )itemsr   r   r	   getr
   )r   metricsr
   keyvalavg_valr   r   r   update   s   

zMetricsTracker.updatec                 C   r   r   r   r   r   r   r   clear   r   zMetricsTracker.clearc                 C   s
   | j  S )N)r	   r   r   r   r   r   r      s   
zMetricsTracker.itemsc                 C   s   | j dkr	td| j|S )Nr   zThere is no data in Metrics.)r
   
ValueErrorr	   r   )r   namer   r   r   r   "   s   
zMetricsTracker.getc                 C   s   | j | j| jdS )Nr   r	   r
   r   r   r   r   r   
state_dict'   s   zMetricsTracker.state_dictc                 C   s"   |d | _ |d | _|d | _d S )Nr   r	   r
   r   )r   r   r   r   r   load_state_dict.   s   

zMetricsTracker.load_state_dictc                 C   p   g }| j  D ]\}}|  d|d}|| qd| j v r1dt| j d d}|| d|}|S N-z.3f	token_nllz
TOKEN_PPL-z   )r   r   upperappendmathexpjoinr   metric_strsr   r   
metric_strr   r   r   value3      


zMetricsTracker.valuec                 C   r   r   )r	   r   r"   r#   r$   r%   r&   r'   r   r   r   summary>   r+   zMetricsTracker.summaryN)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r*   r,   r   r   r   r   r      s    r   )r$   collectionsr   objectr   r   r   r   r   <module>   s   