o
    g+                     @   s   d dl Z d dlZd dlmZ d dlZG dd dZG dd deZG dd deZG d	d
 d
eZ	G dd deZ
G dd deZG dd dZdS )    N)Optionalc                   @   s   e Zd Zdd Zdd ZdS )
BaseObjectc                 C   s
   i | _ d S N)
customizedself r   W/var/www/visachat/venv/lib/python3.10/site-packages/onnxruntime/transformers/metrics.py__init__   s   
zBaseObject.__init__c                 C   s\   | j  }|dd  || j | D ]\}}t|tr$| ||< qdd | D S )Nr   c                 S   s   i | ]	\}}|r||qS r   r   ).0kvr   r   r	   
<dictcomp>   s    z&BaseObject.to_dict.<locals>.<dictcomp>)	__dict__copypopupdater   items
isinstancer   to_dict)r   default_valuesr   r   r   r   r	   r      s   

zBaseObject.to_dictN)__name__
__module____qualname__r
   r   r   r   r   r	   r      s    r   c                
       sH   e Zd Z				d	dee dee dee dee f fddZ  ZS )
	ModelInfoNF	full_nameis_huggingfaceis_text_generation
short_namec                    s,   t    || _|| _|| _|| _g | _d S r   )superr
   r   r   r   r   input_shape)r   r   r   r   r   	__class__r   r	   r
      s   

zModelInfo.__init__)NFFN)r   r   r   r   strboolr
   __classcell__r   r   r!   r	   r      s    r   c                       s>   e Zd Z			ddee dee dee f fddZ  ZS )	BackendOptionsFNenable_profilingexecution_provideruse_io_bindingc                        t    || _|| _|| _d S r   )r   r
   r'   r(   r)   )r   r'   r(   r)   r!   r   r	   r
   /      

zBackendOptions.__init__)FNF)r   r   r   r   r$   r#   r
   r%   r   r   r!   r	   r&   .       r&   c                       s\   e Zd Z						ddee dee dee d	ee d
ee dee f fddZ  ZS )Configonnxruntime   r   fp32
   backend
batch_size
seq_length	precisionwarmup_runsmeasured_runsc                    sB   t    || _|| _|| _|| _|| _|| _t | _	t
 | _d S r   )r   r
   r2   r3   r4   r5   r6   r7   r   
model_infor&   backend_options)r   r2   r3   r4   r5   r6   r7   r!   r   r	   r
   <   s   
	zConfig.__init__)r.   r/   r   r0   r/   r1   )r   r   r   r   r#   intr
   r%   r   r   r!   r	   r-   ;   s(    r-   c                       sR   e Zd Z					d	dee dee dee dee dee f
 fddZ  ZS )
MetadataNdevicepackage_namepackage_versionplatformpython_versionc                    s,   t    || _|| _|| _|| _|| _d S r   )r   r
   r<   r=   r>   r?   r@   )r   r<   r=   r>   r?   r@   r!   r   r	   r
   Q   s   

zMetadata.__init__)NNNNN)r   r   r   r   r#   r
   r%   r   r   r!   r	   r;   P   s"    r;   c                       s>   e Zd Z			ddee dee dee f fddZ  ZS )Metrics        latency_ms_meanthroughput_qpsmax_memory_usage_GBc                    r*   r   )r   r
   rC   rD   rE   )r   rC   rD   rE   r!   r   r	   r
   b   r+   zMetrics.__init__)rB   rB   rB   )r   r   r   r   floatr
   r%   r   r   r!   r	   rA   a   r,   rA   c                   @   s   e Zd Z				ddededededed	ed
ee dee dee dee fddZdefddZdefddZ	e
dededdfddZe
dededdfddZdS )BenchmarkRecordr/   r1   N
model_namer5   r2   r<   r=   r>   r3   r6   r7   trigger_datec                 C   s|   t  | _t | _t | _|
ptj d| _	|| jj
_|| j_|| j_|| j_|| j_|	| j_|| j_|| j_|| j_d S )Nz%Y-%m-%d %H:%M:%S)r-   configrA   metricsr;   metadatadatetimenowstrftimerI   r8   r   r5   r2   r3   r6   r7   r<   r=   r>   )r   rH   r5   r2   r<   r=   r>   r3   r6   r7   rI   r   r   r	   r
   o   s   
zBenchmarkRecord.__init__returnc                 C   s"   | j  | j | j | jdS )N)rJ   rL   rK   rI   )rJ   r   rL   rK   rI   r   r   r   r	   r      s
   zBenchmarkRecord.to_dictc                 C   s   t j|  tdS )N)default)jsondumpsr   r#   r   r   r   r	   to_json   s   zBenchmarkRecord.to_json	file_namerecordsc                 C   sB   |d u s
t |dkrd S dd |D }t|}|j|dd d S )Nr   c                 S      g | ]}|  qS r   r   r   recordr   r   r	   
<listcomp>       z/BenchmarkRecord.save_as_csv.<locals>.<listcomp>F)index)lenpdjson_normalizeto_csv)clsrU   rV   rdsdfr   r   r	   save_as_csv   s
   
zBenchmarkRecord.save_as_csvc                 C   sh   |d u s
t |dkrd S dd |D }t|d}tj||dtd W d    d S 1 s-w   Y  d S )Nr   c                 S   rW   r   rX   rY   r   r   r	   r[      r\   z0BenchmarkRecord.save_as_json.<locals>.<listcomp>w   )indentrQ   )r^   openrR   dumpr#   )rb   rU   rV   rc   fr   r   r	   save_as_json   s   "zBenchmarkRecord.save_as_json)r/   r/   r1   N)r   r   r   r#   r   r:   r
   dictr   rT   classmethodlistre   rl   r   r   r   r	   rG   n   s@    		

rG   )rM   rR   typingr   pandasr_   r   r   r&   r-   r;   rA   rG   r   r   r   r	   <module>   s   