
    g+                         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y)    N)Optionalc                       e Zd Zd Zd Zy)
BaseObjectc                     i | _         y N)
customizedselfs    U/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/metrics.py__init__zBaseObject.__init__   s	        c                 b   | j                   j                         }|j                  dd        |j                  | j                         |j                         D ])  \  }}t        |t              s|j                         ||<   + |j                         D ci c]  \  }}|s	|| c}}S c c}}w )Nr   )	__dict__copypopupdater   items
isinstancer   to_dict)r
   default_valueskvs       r   r   zBaseObject.to_dict   s    ++-<.doo."((*DAq!Z($%IIKq! + "0!5!5!7=!7A11!7===s   
B+"B+N)__name__
__module____qualname__r   r    r   r   r   r      s    	>r   r   c            
       R     e Zd Z	 	 	 	 ddee   dee   dee   dee   f fdZ xZS )	ModelInfo	full_nameis_huggingfaceis_text_generation
short_namec                 h    t         |           || _        || _        || _        || _        g | _        y r   )superr   r   r    r!   r"   input_shape)r
   r   r    r!   r"   	__class__s        r   r   zModelInfo.__init__   s6     	","4$r   )NFFN)r   r   r   r   strboolr   __classcell__r&   s   @r   r   r      sQ     $().-2$(C= ! %TN	
 SM r   r   c                   F     e Zd Z	 	 	 ddee   dee   dee   f fdZ xZS )BackendOptionsenable_profilingexecution_provideruse_io_bindingc                 L    t         |           || _        || _        || _        y r   )r$   r   r-   r.   r/   )r
   r-   r.   r/   r&   s       r   r   zBackendOptions.__init__/   s(     	 0"4,r   )FNF)r   r   r   r   r(   r'   r   r)   r*   s   @r   r,   r,   .   s@     ,1,0).		-"4.	- %SM	- !		- 	-r   r,   c                   j     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backend
batch_size
seq_length	precisionwarmup_runsmeasured_runsc                     t         |           || _        || _        || _        || _        || _        || _        t               | _	        t               | _        y r   )r$   r   r3   r4   r5   r6   r7   r8   r   
model_infor,   backend_options)r
   r3   r4   r5   r6   r7   r8   r&   s          r   r   zConfig.__init__<   sP     	$$"&*#+-/r   )onnxruntime   r   fp32r=   
   )r   r   r   r   r'   intr   r)   r*   s   @r   r2   r2   ;   ss     "/$%$%#)%&')0#0 SM0 SM	0
 C=0 c]0  }0 0r   r2   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 )Metadatadevicepackage_namepackage_versionplatformpython_versionc                 h    t         |           || _        || _        || _        || _        || _        y r   )r$   r   rC   rD   rE   rF   rG   )r
   rC   rD   rE   rF   rG   r&   s         r   r   zMetadata.__init__Q   s6     	(. ,r   )NNNNN)r   r   r   r   r'   r   r)   r*   s   @r   rB   rB   P   sb     !%&*)-"&(,-- sm- "#	-
 3-- !- -r   rB   c                   F     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                 L    t         |           || _        || _        || _        y r   )r$   r   rK   rL   rM   )r
   rK   rL   rM   r&   s       r   r   zMetrics.__init__b   s(     	.,#6 r   )        rO   rO   )r   r   r   r   floatr   r)   r*   s   @r   rJ   rJ   a   s@     ,/*-/2		7!%	7 !	7 &e_		7 	7r   rJ   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y)BenchmarkRecordN
model_namer6   r3   rC   rD   rE   r4   r7   r8   trigger_datec                    t               | _        t               | _        t	               | _        |
xs- t        j                  j                         j                  d      | _	        || j                  j                  _        || j                  _        || j                  _        || j                  _        || j                  _        |	| j                  _        || j
                  _        || j
                  _        || j
                  _        y )Nz%Y-%m-%d %H:%M:%S)r2   configrJ   metricsrB   metadatadatetimenowstrftimerT   r:   r   r6   r3   r4   r7   r8   rC   rD   rE   )r
   rS   r6   r3   rC   rD   rE   r4   r7   r8   rT   s              r   r   zBenchmarkRecord.__init__o   s     hy 
(aH,=,=,A,A,C,L,LM`,a+5( )%!+"-$1!%%1"(7%r   returnc                     | j                   j                         | j                  j                         | j                  j                         | j                  dS )N)rV   rX   rW   rT   )rV   r   rX   rW   rT   r	   s    r   r   zBenchmarkRecord.to_dict   sE    kk))+--/||++- --	
 	
r   c                 T    t        j                  | j                         t              S )N)default)jsondumpsr   r'   r	   s    r   to_jsonzBenchmarkRecord.to_json   s    zz$,,.#66r   	file_namerecordsc                     |t        |      dk(  ry |D cg c]  }|j                          }}t        j                  |      }|j	                  |d       y c c}w )Nr   F)index)lenr   pdjson_normalizeto_csv)clsrc   rd   recordrdsdfs         r   save_as_csvzBenchmarkRecord.save_as_csv   sU    ?c'la/.56gFv~~g6s#
		)5	) 7s   Ac                     |t        |      dk(  ry |D cg c]  }|j                          }}t        |d      5 }t        j                  ||dt
               d d d        y c c}w # 1 sw Y   y xY w)Nr   w   )indentr_   )rg   r   openr`   dumpr'   )rk   rc   rd   rl   rm   fs         r   save_as_jsonzBenchmarkRecord.save_as_json   sb    ?c'la/.56gFv~~g6)S!QIIc1Q4 "! 7!!s   A"A''A0)r=   r=   r?   N)r   r   r   r'   r   r@   r   dictr   rb   classmethodlistro   rw   r   r   r   rR   rR   n   s     %&%&')&*88 8 	8
 8 8 8 SM8 c]8  }8 sm88
 
7 7 *C *$ *4 * * 5S 54 5D 5 5r   rR   )rY   r`   typingr   pandasrh   r   r   r,   r2   rB   rJ   rR   r   r   r   <module>r}      sc       > > 
  
-Z 
-0Z 0*-z -"
7j 
765 65r   