
     Ng+                         d dl Z d dlZd dlmZ d dlZ G d d          Z G d de          Z G d de          Z G d	 d
e          Z	 G d de          Z
 G d de          Z G d d          ZdS )    N)Optionalc                       e Zd Zd Zd ZdS )
BaseObjectc                     i | _         d S N)
customizedselfs    \/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnxruntime/transformers/metrics.py__init__zBaseObject.__init__   s        c                 \   | j                                         }|                    dd            |                    | j                   |                                D ]1\  }}t          |t                    r|                                ||<   2d |                                D             S )Nr   c                     i | ]
\  }}|||S  r   ).0kvs      r   
<dictcomp>z&BaseObject.to_dict.<locals>.<dictcomp>   s#    ===A1=1===r   )	__dict__copypopupdater   items
isinstancer   to_dict)r
   default_valuesr   r   s       r   r   zBaseObject.to_dict   s    ++--<...do..."((** 	0 	0DAq!Z(( 0$%IIKKq!==!5!5!7!7====r   N)__name__
__module____qualname__r   r   r   r   r   r   r      s2          	> 	> 	> 	> 	>r   r   c            
       j     e Zd Z	 	 	 	 ddee         dee         dee         dee         f fdZ xZS )		ModelInfoNF	full_nameis_huggingfaceis_text_generation
short_namec                     t                                                       || _        || _        || _        || _        g | _        d S r   )superr   r"   r#   r$   r%   input_shape)r
   r"   r#   r$   r%   	__class__s        r   r   zModelInfo.__init__   sG     	","4$r   )NFFN)r   r   r   r   strboolr   __classcell__r)   s   @r   r!   r!      s         $().-2$( C= ! %TN	
 SM         r   r!   c                   X     e Zd Z	 	 	 ddee         dee         dee         f fdZ xZS )BackendOptionsFNenable_profilingexecution_provideruse_io_bindingc                 r    t                                                       || _        || _        || _        d S r   )r'   r   r0   r1   r2   )r
   r0   r1   r2   r)   s       r   r   zBackendOptions.__init__/   s9     	 0"4,r   )FNF)r   r   r   r   r+   r*   r   r,   r-   s   @r   r/   r/   .   su         ,1,0).		- 	-"4.	- %SM	- !		- 	- 	- 	- 	- 	- 	- 	- 	- 	-r   r/   c                        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Z xZS )Configonnxruntime   r   fp32
   backend
batch_size
seq_length	precisionwarmup_runsmeasured_runsc                     t                                                       || _        || _        || _        || _        || _        || _        t                      | _	        t                      | _        d S r   )r'   r   r:   r;   r<   r=   r>   r?   r!   
model_infor/   backend_options)r
   r:   r;   r<   r=   r>   r?   r)   s          r   r   zConfig.__init__<   sf     	$$"&*#++-//r   )r6   r7   r   r8   r7   r9   )r   r   r   r   r*   intr   r,   r-   s   @r   r5   r5   ;   s         "/$%$%#)%&')0 0#0 SM0 SM	0
 C=0 c]0  }0 0 0 0 0 0 0 0 0 0r   r5   c                   |     e Zd Z	 	 	 	 	 ddee         dee         dee         dee         dee         f
 fdZ xZS )	MetadataNdevicepackage_namepackage_versionplatformpython_versionc                     t                                                       || _        || _        || _        || _        || _        d S r   )r'   r   rF   rG   rH   rI   rJ   )r
   rF   rG   rH   rI   rJ   r)   s         r   r   zMetadata.__init__Q   sG     	(. ,r   )NNNNN)r   r   r   r   r*   r   r,   r-   s   @r   rE   rE   P   s         !%&*)-"&(,- -- sm- "#	-
 3-- !- - - - - - - - - -r   rE   c                   X     e Zd Z	 	 	 ddee         dee         dee         f fdZ xZS )Metrics        latency_ms_meanthroughput_qpsmax_memory_usage_GBc                 r    t                                                       || _        || _        || _        d S r   )r'   r   rO   rP   rQ   )r
   rO   rP   rQ   r)   s       r   r   zMetrics.__init__b   s9     	.,#6   r   )rN   rN   rN   )r   r   r   r   floatr   r,   r-   s   @r   rM   rM   a   su         ,/*-/2		7 	7!%	7 !	7 &e_		7 	7 	7 	7 	7 	7 	7 	7 	7 	7r   rM   c                       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ZdefdZdefdZ	e
dededdfd            Ze
dededdfd            ZdS )BenchmarkRecordr7   r9   N
model_namer=   r:   rF   rG   rH   r;   r>   r?   trigger_datec                    t                      | _        t                      | _        t	                      | _        |
p0t          j                                                            d          | _	        || j        j
        _        || j        _        || j        _        || j        _        || j        _        |	| j        _        || j        _        || j        _        || j        _        d S )Nz%Y-%m-%d %H:%M:%S)r5   configrM   metricsrE   metadatadatetimenowstrftimerW   rA   r"   r=   r:   r;   r>   r?   rF   rG   rH   )r
   rV   r=   r:   rF   rG   rH   r;   r>   r?   rW   s              r   r   zBenchmarkRecord.__init__o   s     hhyy 

(aH,=,A,A,C,C,L,LM`,a,a+5( )%!+"-$1!%%1"(7%%%r   returnc                     | j                                         | j                                        | j                                        | j        dS )N)rY   r[   rZ   rW   )rY   r   r[   rZ   rW   r	   s    r   r   zBenchmarkRecord.to_dict   sJ    k))++--//|++-- -	
 
 	
r   c                 \    t          j        |                                 t                    S )N)default)jsondumpsr   r*   r	   s    r   to_jsonzBenchmarkRecord.to_json   s    z$,,..#6666r   	file_namerecordsc                     |t          |          dk    rd S d |D             }t          j        |          }|                    |d           d S )Nr   c                 6    g | ]}|                                 S r   r   r   records     r   
<listcomp>z/BenchmarkRecord.save_as_csv.<locals>.<listcomp>   "    666Fv~~666r   F)index)lenpdjson_normalizeto_csv)clsrf   rg   rdsdfs        r   save_as_csvzBenchmarkRecord.save_as_csv   s[    ?c'lla//F66g666s##
		)5	)))))r   c                     |t          |          dk    rd S d |D             }t          |d          5 }t          j        ||dt                     d d d            d S # 1 swxY w Y   d S )Nr   c                 6    g | ]}|                                 S r   rj   rk   s     r   rm   z0BenchmarkRecord.save_as_json.<locals>.<listcomp>   rn   r   w   )indentrb   )rp   openrc   dumpr*   )rt   rf   rg   ru   fs        r   save_as_jsonzBenchmarkRecord.save_as_json   s    ?c'lla//F66g666)S!! 	5QIc1Q4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA#&A#)r7   r7   r9   N)r   r   r   r*   r   rC   r   dictr   re   classmethodlistrw   r   r   r   r   rU   rU   n   sM        %&%&')&*8 88 8 	8
 8 8 8 SM8 c]8  }8 sm8 8 8 88
 
 
 
 
7 7 7 7 7 *C *$ *4 * * * [* 5S 54 5D 5 5 5 [5 5 5r   rU   )r\   rc   typingr   pandasrq   r   r!   r/   r5   rE   rM   rU   r   r   r   <module>r      sc              > > > > > > > >     
    
- 
- 
- 
- 
-Z 
- 
- 
-0 0 0 0 0Z 0 0 0*- - - - -z - - -"
7 
7 
7 
7 
7j 
7 
7 
765 65 65 65 65 65 65 65 65 65r   