o
    i                     @   s   d dl Z d dl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 )    Nc                   @   s   e Zd Zdd Zdd ZdS )
BaseObjectc                 C   s
   i | _ d S N)
customizedself r   Z/home/kim/smarthome/.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dB dedB dedB dedB 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   Zinput_shape)r   r   r   r   r   	__class__r   r   r	      s   

zModelInfo.__init__)NFFN)r   r   r   strboolr	   __classcell__r   r   r   r   r      s    r   c                       s>   e Zd Z			ddedB dedB dedB 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$   c                       s\   e Zd Z						ddedB dedB d	edB d
edB dedB dedB f fddZ  ZS )Configonnxruntime   r   fp32
   backendN
batch_size
seq_length	precisionwarmup_runsmeasured_runsc                    sB   t    || _|| _|| _|| _|| _|| _t | _	t
 | _d S r   )r   r	   r0   r1   r2   r3   r4   r5   r   
model_infor$   Zbackend_options)r   r0   r1   r2   r3   r4   r5   r   r   r   r	   ;   s   
	zConfig.__init__)r,   r-   r   r.   r-   r/   )r   r   r   r!   intr	   r#   r   r   r   r   r+   :   s(    r+   c                       sR   e Zd Z					d	dedB dedB dedB dedB dedB f
 fddZ  ZS )
MetadataNdevicepackage_namepackage_versionplatformpython_versionc                    s,   t    || _|| _|| _|| _|| _d S r   )r   r	   r9   r:   r;   r<   r=   )r   r9   r:   r;   r<   r=   r   r   r   r	   P   s   

zMetadata.__init__)NNNNN)r   r   r   r!   r	   r#   r   r   r   r   r8   O   s"    r8   c                       s>   e Zd Z			ddedB dedB dedB f fddZ  ZS )	Metrics        latency_ms_meanNthroughput_qpsmax_memory_usage_GBc                    r(   r   )r   r	   r@   rA   rB   )r   r@   rA   rB   r   r   r   r	   a   r)   zMetrics.__init__)r?   r?   r?   )r   r   r   floatr	   r#   r   r   r   r   r>   `   r*   r>   c                   @   s   e Zd Z				ddededededed	ed
edB dedB dedB dedB 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-   r/   N
model_namer3   r0   r9   r:   r;   r1   r4   r5   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+   configr>   metricsr8   metadatadatetimenowstrftimerF   r6   r   r3   r0   r1   r4   r5   r9   r:   r;   )r   rE   r3   r0   r9   r:   r;   r1   r4   r5   rF   r   r   r   r	   n   s   
zBenchmarkRecord.__init__returnc                 C   s"   | j  | j | j | jdS )N)rG   rI   rH   rF   )rG   r   rI   rH   rF   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pdZjson_normalizeZto_csv)clsrR   rS   rdsZ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   rT   r   rU   rV   r   r   r   rX      rY   z0BenchmarkRecord.save_as_json.<locals>.<listcomp>w   )indentrN   )r[   openrO   dumpr!   )r]   rR   rS   r^   fr   r   r   save_as_json   s   "zBenchmarkRecord.save_as_json)r-   r-   r/   N)r   r   r   r!   r7   r	   dictr   rQ   classmethodlistr_   rf   r   r   r   r   rD   m   s@    		

rD   )rJ   rO   Zpandasr\   r   r   r$   r+   r8   r>   rD   r   r   r   r   <module>   s   