o
    Rh                     @   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   b/home/air/sanwanet/backup_V2/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   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	   r1   r2   r3   r4   r5   r6   r   
model_infor%   backend_options)r   r1   r2   r3   r4   r5   r6   r    r   r   r	   ;   s   
	zConfig.__init__)r-   r.   r   r/   r.   r0   )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	   r;   r<   r=   r>   r?   )r   r;   r<   r=   r>   r?   r    r   r   r	   P   s   

zMetadata.__init__)NNNNN)r   r   r   r"   r	   r$   r   r   r    r   r:   O   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 )	Metrics        latency_ms_meanNthroughput_qpsmax_memory_usage_GBc                    r)   r   )r   r	   rB   rC   rD   )r   rB   rC   rD   r    r   r   r	   a   r*   zMetrics.__init__)rA   rA   rA   )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.   r0   N
model_namer4   r1   r;   r<   r=   r2   r5   r6   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@   metricsr:   metadatadatetimenowstrftimerH   r7   r   r4   r1   r2   r5   r6   r;   r<   r=   )r   rG   r4   r1   r;   r<   r=   r2   r5   r6   rH   r   r   r   r	   n   s   
zBenchmarkRecord.__init__returnc                 C   s"   | j  | j | j | jdS )N)rI   rK   rJ   rH   )rI   r   rK   rJ   rH   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)clsrT   rU   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   rV   r   rW   rX   r   r   r   rZ      r[   z0BenchmarkRecord.save_as_json.<locals>.<listcomp>w   )indentrP   )r]   openrQ   dumpr"   )ra   rT   rU   rb   fr   r   r   save_as_json   s   "zBenchmarkRecord.save_as_json)r.   r.   r0   N)r   r   r   r"   r9   r	   dictr   rS   classmethodlistrd   rk   r   r   r   r   rF   m   s@    		

rF   )rL   rQ   pandasr^   r   r   r%   r,   r:   r@   rF   r   r   r   r   <module>   s   