+
    9i*                        R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RIH	t	H
t
HtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHt ^ RIHt ^ RI H!t! ]PD                  ! R	4      t#]PH                  ! R
R7      t$R]PJ                  9  d   ]&! ]$4      ]PJ                  R&   ^ RI't'^ RI(H)t)H*t*H+t+ R t,R t-R R lt.R t/R t0R t1]2R8X  d
   ]1! 4        R# R# )a>  Benchmarking the inference of pretrained transformer models.
PyTorch/TorchScript benchmark is based on https://github.com/huggingface/transformers/blob/master/examples/benchmarks.py.
One difference is that random input_ids is generated in this benchmark.

For onnxruntime, this script will convert a pretrained model to ONNX, and optimize it when -o parameter is used.

Example commands:
    Export all models to ONNX, optimize and validate them:
        python benchmark.py -b 0 -o -v -i 1 2 3
    Run OnnxRuntime on GPU for all models:
        python benchmark.py -g
    Run OnnxRuntime on GPU for all models with fp32 optimization:
        python benchmark.py -g -o
    Run OnnxRuntime on GPU with fp16 optimization:
        python benchmark.py -g -o -p "fp16"
    Run TorchScript on GPU for all models:
        python benchmark.py -e torchscript -g
    Run TorchScript on GPU for all models with fp16:
        python benchmark.py -e torchscript -g -p "fp16"
    Run ONNXRuntime and TorchScript on CPU for all models with quantization:
        python benchmark.py -e torchscript onnxruntime -p "int8" -o
    Run OnnxRuntime with bfloat16 fastmath mode kernels on aarch64 platforms with bfloat16 support:
        python benchmark.py --enable_arm64_bfloat16_fastmath_mlas_gemm

It is recommended to use run_benchmark.sh to launch benchmark.
N)datetime)ConfigModifierOptimizerInfo	Precisioncreate_onnxruntime_sessionget_latency_resultinference_ortinference_ort_with_io_bindingoutput_detailsoutput_fusion_statisticsoutput_summarysetup_logger)FusionOptions)MODEL_CLASSESMODELS)create_onnxruntime_inputexport_onnx_model_from_ptexport_onnx_model_from_tfload_pretrained_model)version)QuantizeHelper F)logicalOMP_NUM_THREADS)
AutoConfigAutoTokenizerLxmertConfigc           #      ^
   ^ RI p. pV '       dW   RVP                  4       9  dB   RVP                  4       9  d-   RVP                  4       9  d   \        P                  R4       V# ^ pVR8X  d?   \        P
                  p^pRVP                  4       9  d   \        P                  R4       V# V\        P
                  8X  d   \        P                  R	V R
24       V EF3  p\        V,          ^ ,          pV
 EF  pV\        V4      8  d    K1  VRV p\        V,          ^,          Vn	        \        P                  ! V4      pRV9   d}   \        P                  ! 4       ;_uu_ 4        \        V\        V,          ^,          \        V,          ^,          \        V,          ^,          VVVVVV VVVVVVV4      w  pp p!p"RRR4       RV9   dW   \        V\        V,          ^,          \        V,          ^,          \        V,          ^,          VVVVVV VVVVVVV4      w  pp p!p"X '       g   EK6  \!        XV VRVVVR7      p#V#f   EKO  V#P#                  4        U$u. uF  p$V$P$                  NK  	  p%p$. p&V '       d   RMRp'\&        P(                  ! VVR7      p(\*        P,                  ! \/        V4      \/        V4      \/        X!V(P0                  4      .4      p)\*        P,                  ! \/        V4      V(P0                  .4      p*V EF  p+V+^ 8:  d   K  V EF  p,X"e
   V,V"8  d   K  RV9   d   \*        P2                  M\*        P4                  p-\7        V!V+V,VV(V-4      p.RRRVP8                  RVRV'RVRVRV'       * RVRVRVRV+RV,RVP;                  4       R \=        \>        P@                  ! 4       4      /p/V(P                  R$9   d5   \        PC                  R!V R"V+^V(PD                  V(PD                  . 24       M\        PC                  R!V R"V+V,. 24       V'       d   \G        V#V.V/V	V+V4      p0MV#PI                  V%V.4      p1V).p2\K        \        V14      4       FG  p3V3^8X  d-   \        V,          ^,          R#8X  d   V2PM                  V*4       K6  V2PM                  V)4       KI  	  RV9   d   \*        PN                  M\*        PP                  p4\S        V#V.V/V	V%V1V&V2V+V'V4V4      p0\        PC                  V04       VPM                  V04       EK  	  EK  	  EK  	  EK6  	  V#   + '       g   i     ELc; iu up$i )%    NCUDAExecutionProviderMIGraphXExecutionProviderDmlExecutionProviderzPlease install onnxruntime-gpu or onnxruntime-directml package instead of onnxruntime, and use a machine with GPU for testing gpu performance.tensorrtTensorrtExecutionProviderzhPlease install onnxruntime-gpu-tensorrt package, and use a machine with GPU for testing gpu performance.zOptimizerInfo is set to zA, graph optimizations specified in FusionOptions are not applied.pttfT)enable_all_optimizationnum_threadsverbose(enable_mlas_gemm_fastmath_arm64_bfloat16cudacpu	cache_direngineonnxruntimer   	providersdevice	optimizer	precision
io_binding
model_nameinputsthreads
batch_sizesequence_lengthcustom_layer_numr   zRun onnxruntime on  with input shape gptvitswin)*r/   get_available_providersloggererrorr   NOOPTwarningr   len
model_typer   parsetorchno_gradr   r   r   get_outputsnamer   from_pretrainednumpyprodmaxhidden_sizeint64int32r   __version__get_layer_numstrr   nowinfo
image_sizer   runrangeappendlonglongintcr	   )5use_gpuprovidermodel_namesmodel_classconfig_modifierr3   r'   batch_sizessequence_lengthsrepeat_timesinput_countsoptimizer_infovalidate_onnxr-   onnx_dirr(   	overwritedisable_ort_io_bindinguse_raw_attention_maskmodel_fusion_statisticsmodel_source(enable_arm64_bfloat16_fastmath_mlas_gemmargsr/   resultswarm_up_repeatr5   all_input_names
num_inputsinput_namesfusion_optionsonnx_model_fileis_valid_onnx_model
vocab_sizemax_sequence_lengthort_sessionnode_argort_output_namesoutput_buffersr1   configmax_last_state_sizemax_pooler_sizer8   r9   input_value_type
ort_inputsresult_templateresultort_outputsoutput_buffer_max_sizesi	data_types5   &&&&&&&&&&&&&&&&&&&&&&&                              `/var/www/html/photoedit/myenv/lib/python3.14/site-packages/onnxruntime/transformers/benchmark.pyrun_onnxruntimer   W   sA   2 G$K,O,O,QQ(0S0S0UU#;+N+N+PP ]	
 N:&,,&k.Q.Q.SSLLz N,,,&~&66wx	
 "
 ,Q/&JC00)+:6K$Z03DO*006N|#]]__ 2"z*1-z*1-z*1-#'! #!&%.!/&#'+"+ %2 |# .:&q):&q):&q)#"!*+"##''* '4(,'9aK ">I>U>U>WX>W(>WXN&VEF//
iPF"'**$()
F$6$67# $jj#k*:F<N<N)OPO)
?'7O*6?M`;` 6:l6Ju{{PUP[P[$!9""'#("J !-!;#:#:#X &#^#Y$*@&@$j *!;$j)?*O,I,I,K"C$7'O" ((O;1*=OQ[]^`f`q`qsy  tE  tE  QF  PG  H &9*EWYcetXuWv$wx-!.'&+(&*" '2oo6F
&S3F2G/!&s;'7!8A Av&*<Q*?5*H 7 > > O 7 > >?R S "9 7;l6JENNPUPZPZ	!>'&+(,'*3&"%*" KK'NN6*S (8 *o ' "N Ny %__D  Ys   %AT	T*T'c           "        aa . pV '       d<   \         P                  P                  4       '       g   \        P	                  R 4       V# \         P
                  ! R4       V EF  p\        P                  ! WVR7      pVP                  V4       \        VVVVR7      pVP                  R$9   d   V^ ,          .pM#\        P                  ! WR7      pVP                  p\        P                  RV 24       \        P                  RVP                  4        24       V\        P                   8X  d   VP#                  4        \         P$                  ! V '       d   RMR4      pVP'                  V4       V\        P(                  8X  d   \*        P,                  ! V4      pV EFK  pV^ 8:  d   K  V EF7  pVP                  R$9   d   \        P/                  R	V R
V^VP0                  VP0                  . 24       \         P2                  ! V^VP0                  VP0                  3V\        P                   8X  d   \         P4                  M\         P6                  VR7      oMfXe
   VV8  d   K  \        P/                  R	V R
VV. 24       \         P8                  ! ^ VP:                  ^,
          VV3\         P<                  VR7      o V	'       d!   \         P>                  PA                  VS4      MV
'       d   \         PB                  ! V4      MToS! S4       \D        PF                  ! VV3R lV^R7      pRV	'       d   RMV
'       d   RMRR\         PH                  RRRV '       d   RMRRRRVRRRVR^RVR VR!VR"VPK                  4       R#\M        \N        PP                  ! 4       4      /pVPS                  \U        VV4      4       \        P/                  V4       VPW                  V4       EK:  	  EKN  	  EK  	  V#   \X         d@   p\        P[                  T4       \         P                  P]                  4         Rp?EK  Rp?ii ; i)%zYPlease install PyTorch with Cuda, and use a machine with GPU for testing gpu performance.F)torchscriptr-   )r   r-   custom_model_classr,   zModel zNumber of parameters zcuda:0r+   zRun PyTorch on r;   )sizedtyper1   N)lowhighr   r   r1   c                     < S ! S4      # N )	inference	input_idss   r   <lambda>run_pytorch.<locals>.<lambda>  s
    Yy5I    repeatnumberr.   r   torch2rH   r   r0   NAr1   r*   r2   r   r3   r4   r5   r6   r7   r8   r9   r:   r   r=   )/rH   r*   is_availablerA   rB   set_grad_enabledr   rL   modifyr   rF   r   model_max_lengthdebugnum_parametersr   FLOAT16halfr1   toINT8r   quantize_torch_modelrW   rX   randnfloat16float32randintry   longjittracecompiletimeitr   rS   rT   rU   r   rV   updater   r[   RuntimeError	exceptionempty_cache)r^   r`   ra   rb   r3   r'   rc   rd   re   r   r   r-   r(   rq   r5   r   model	tokenizermax_input_sizer1   r8   r9   runtimesr   er   r   s   &&&&&&&&&&&&&            @@r   run_pytorchr   7  sz    Guzz..00pq	5!!
++J[dev&%*	
 / 0 34%55jVI&77NveW%&,U-A-A-C,DEF	)))JJL'hu=	&"77>E%JQ#3$$7KK)*5GUVX^XiXikqk|k|H}G~ !&(!V->->@Q@QR/8I<M<M/MemmSXS`S`%!I &1o6V KK/*=OQ[]lPmOn op %#..2(/:#jj%!I-=H		y9flemm\aNbrw  i(%}}-IR^ghiH !;-PVH\c!5#4#4#T G&#R#Y$b$j !!;$j)?*O,I,I,K"C$7F  MM"4Xz"JKKK'NN6*a $4	 &= "n N	 $ -$$Q'JJ**,,-s8   ?O3'O3/AO36	O3 O3BO33P=	>3P8	8P=	c                0    V ^8  d   QhR\         R\         /# )   do_eager_modeuse_xla)bool)formats   "r   __annotate__r     s      T D r   c                 4   a aaa ^ RI Ho ^ RIoV VVV3R lpV# )r   )wrapsNc                    <a  S! S 4      V 3R  l4       pS! S 4      SP                  SR7      V 3R l4       4       pSRJ d   SRJ g   Q R4       hV# V# )c                     < S! V / VB # r   r   rp   kwargsfuncs   *,r   run_in_eager_modeFrun_with_tf_optimizations.<locals>.run_func.<locals>.run_in_eager_mode  s    (((r   )experimental_compilec                     < S! V / VB # r   r   r   s   *,r   run_in_graph_modeFrun_with_tf_optimizations.<locals>.run_func.<locals>.run_in_graph_mode  s     (((r   TFzcCannot run model in XLA, if `args.eager_mode` is set to `True`. Please set `args.eager_mode=False`.)function)r   r   r   r   r%   r   r   s   f  r   run_func+run_with_tf_optimizations.<locals>.run_func  st    	t	) 
	) 
t	'	2	) 
3 
	) D e# u# %$$$r   )	functoolsr   
tensorflow)r   r   r   r%   r   s   ff @@r   run_with_tf_optimizationsr     s    % %$ Or   c           "        aaa a!a" . p^ RI o"S"P                  P                  P                  V4       V '       g   S"P                  P	                  . R4       V '       d8   S"P
                  P                  4       '       g   \        P                  R4       V# V '       d   S"P                  P                  R4      p S"P                  P	                  V^ ,          R4       S"P                  P                  P                  V^ ,          R4       S"P                  P                  RR7       V\         P"                  8X  g   V\         P$                  8X  d   \'        R4      hV EFV  p\(        P*                  ! WR7      oVP-                  S4       \/        VSV	VRR	7      o!\0        P*                  ! WR7      pVP2                  pV EF  pV^ 8:  d   K  V EF  pVe
   VV8  d   K  \        P5                  R
V RVV. 24       ^ RIpVP9                  4       p\;        VV,          4       Uu. uF&  pVP=                  ^ SP>                  ^,
          4      NK(  	  ppS"PA                  VVV3S"PB                  R7      o  \E        RRR7      V V!3R l4       p\E        RRR7      V V!3R l4       p\E        RRR7      VV V!V"3R l4       pVoSPF                  '       d   VoM\I        S\J        4      '       d   VoS! 4        \L        PN                  ! V3R lV^R7      pRRRS"PP                  RRRV '       d   RMRRRRVRRR VR!^R"VR#VR$VR%VPS                  4       R&\U        \V        PX                  ! 4       4      /pVP[                  \]        VV4      4       \        P5                  V4       VP_                  V4       EK  	  EK  	  EKY  	  V#   \         d!   p\        P                  T4        Rp?ELRp?ii ; iu upi   \         dH   p\        P                  T4       ^ R'I0H1p TPe                  4       pTPg                  4         Rp?EKm  Rp?ii ; i)(r   NGPUzVPlease install Tensorflow-gpu, and use a machine with GPU for testing gpu performance.Tz/gpu:0)r1   z+Mixed precision is currently not supported.r,   )r   r-   r   is_tf_modelzRun Tensorflow on r;   )shaper   F)r   r   c                     < S! S R R7      # )F)trainingr   r   r   s   r   encoder_forward'run_tensorflow.<locals>.encoder_forward	  s    $Y??r   c                     < S! S S R R7      # )F)decoder_input_idsr   r   r   s   r   encoder_decoder_forward/run_tensorflow.<locals>.encoder_decoder_forward  s    $Y)V[\\r   c                     < SP                   P                  ^^SP                  .4      p SP                   P                  ^^SP                  .4      pS! SV VRR7      # )   F)visual_feats
visual_posr   )randomnormalvisual_feat_dimvisual_pos_dim)featsposr   r   r   r%   s     r   lxmert_forward&run_tensorflow.<locals>.lxmert_forward  s^     "		 0 0!Q8N8N1O P ii..1f6K6K/LM$%).'*%*	  r   c                     < S ! 4       # r   r   )r   s   r   r    run_tensorflow.<locals>.<lambda>$  s    Y[r   r   r.   r   r   r0   r   r1   r*   r+   r2   r   r3   r4   r5   r6   r7   r8   r9   r:   r   )r*   )4r   r   	threading set_intra_op_parallelism_threadsset_visible_devicestestis_built_with_cudarA   rB   list_physical_devicesexperimentalset_memory_growth
distributeOneDeviceStrategyr   r   r   r   r   NotImplementedErrorr   rL   r   r   r   r   rW   r   RandomrZ   r   ry   constantrR   r   is_encoder_decoder
isinstancer   r   r   rS   rT   rU   r   rV   r   r   r[   numbar*   get_current_devicereset)#r^   r`   ra   rb   r3   r'   rc   rd   re   r-   r(   rq   physical_devicesr   r5   r   r   r8   r9   r   rngr   valuesr   r   r   r   r   r*   r1   r   r   r   r   r%   s#   &&&&&&&&&&&                   @@@@@r   run_tensorflowr    s    GII88E
		%%b%0rww1133mn99::5A	 II))*:1*=uEII""445Ea5H$OMM++8+< I%%%inn)D!"OPP!
++JLv&%*
 "11*R	"33%JQ#3!-/N2R0<NPZ\kOlNmnommoINz\kOkIlmIlA#++a):):Q)>?IlmKKz?6S[][c[cKd	7#.UER@ S@ /UER] S] /UER S !0I000$;	#FL99$2	K%}}-@^_`H !,!2>>#T G&#R#Y$b$j !!;$j)?*O,I,I,K"C$7F  MM"4Xz"JKKK'NN6*{ $4	 &! "r N  	 Q	 F nj $ #$$Q'*!446FLLNN#s?   8A,N8 !,O&
0B2O+#BO+8O#OO#+P=	6;P8	8P=	c                  P   \         P                  ! 4       p V P                  R RRR\        . RTO\	        \
        P                  ! 4       4      RRP                  \
        P                  ! 4       4      ,           R7       V P                  RR^\        RRR	.R
R7       V P                  RR\        R\	        \        4      RRP                  \        4      ,           R7       V P                  RRRR\        R.. RUORR7       V P                  RRR\        \        P                  P                  RR4      RR7       V P                  RR\        \        P                  P                  RR4      RR7       V P                  RRRRRR 7       V P                  R!R\        RR"R7       V P                  R#R$\        \        P                  \	        \        4      R%R&7       V P                  R'RRR(R 7       V P                  R)RRR*R 7       V P                  R+R,\        \        P                  \	        \        4      R-R&7       V P                  R.R/RRR0R 7       V P                  R1R2RRR3R47       V P                  R5R6RRR7R47       V P                  R8R9RRR:R47       V P                  R;R<RR^.\        . RVOR=R>7       V P                  R?R@R^d\        RARB7       V P                  RCRDR\        ^.RE7       V P                  RFRGR\        . RWORE7       V P                  RHRRRIR 7       V P!                  RRJ7       V P                  RKRLRR\        ^ .RMRN7       V P                  ROR\        RRPR7       V P                  RQRRRRR 7       V P!                  RRS7       \"        P$                  ! V 4       V P'                  4       pV# )Xz-mz--modelsF+z Pre-trained models in the list: z, )requirednargstypedefaultchoiceshelpz--model_sourcer$   r%   zExport onnx from pt or tfz--model_classNz!Model type selected in the list: )r  r  r  r  r  z-ez	--enginesr/   zEngines to benchmarkz-cz--cache_dir.cache_modelsz%Directory to cache pre-trained models)r  r  r  r  z
--onnx_dironnx_modelszDirectory to store onnx modelsz-gz	--use_gpu
store_truezRun on gpu device)r  actionr  z
--providerzExecution provider to usez-pz--precisionzfPrecision of model to run. fp32 for full precision, fp16 for half precision, and int8 for quantization)r  r  r  r  z	--verbosezPrint more informationz--overwritezOverwrite existing modelsz-oz--optimizer_infozjOptimizer info: Use optimizer.py to optimize onnx model as default. Can also choose from by_ort and no_optz-vz--validate_onnxzValidate ONNX modelz-fz--fusion_csvz:CSV file for saving summary results of graph optimization.)r  r  r  z-dz--detail_csvz#CSV file for saving detail results.z-rz--result_csvz$CSV file for saving summary results.z-iz--input_countszXNumber of ONNX model inputs. Please use 1 for fair comparison with Torch or TorchScript.)r  r  r  r  r  r  z-tz--test_timesz8Number of repeat times to get average inference latency.)r  r  r  r  z-bz--batch_sizes)r  r  r  z-sz--sequence_lengthsz--disable_ort_io_bindingz=Disable running ONNX Runtime with binded inputs and outputs. )rk   z-nz--num_threadszThreads to use)r  r  r  r  r  z--force_num_layersz%Manually set the model's layer numberz*--enable_arm64_bfloat16_fastmath_mlas_gemmzHEnable bfloat16 mlas gemm kernels on aarch64. Supported only for CPU EP )ro   )zbert-base-casedzroberta-basegpt2)r/   rH   r   r   r   )r   r      )             @         )argparseArgumentParseradd_argumentrU   listr   keysjoinr   ospathr   FLOAT32r   BYSCRIPTintset_defaultsr   add_arguments
parse_args)parserrp   s     r   parse_argumentsr.  C  s0   $$&F
;V[[]#/$))FKKM2JJ  	 t(   ]#0499]3KK   O#  	 S.14   S-0-   kE,Uhi
(   !!Yu   eLOgh
(	   &&]#y   "   I   2   3   g  	 G   oSsQCP
,   "L	   u5
   4   4W	   G'DKr   c                     \        4       p \        V P                  4       V P                  \        P
                  8X  d*   V P                  '       g   \        P                  R 4       R# V P                  \        P                  8X  d;   V P                  '       d)   V P                  R9  d   \        P                  R4       R# \        V P                  4      ^8X  d3   \        V P                  ^ ,          ,          ^,          R9   d	   R.V n        \        V P                    Uu0 uF  q^ 8:  d   \"        MTkK  	  up4      V n        \        P%                  RV  24       \&        P(                  P+                  V P,                  4      '       g"    \&        P.                  ! V P,                  4       RV P2                  9   pRV P2                  9   pRV P2                  9   pR	V P2                  9   pR
V P2                  9   pV'       df   \4        P6                  ! \8        P:                  4      \4        P6                  ! R4      8  d)   \        P                  R\8        P:                   24       R# \=        V P>                  4      p. pV P                    EF  p	\8        P@                  ! V	4       \        PC                  \8        PD                  PG                  4       4       V'       g   V'       g
   V'       Ed   V PH                  ^.8w  d   \        PK                  R4       V'       dy   V\M        V P                  V P                  V PN                  VV P                  V	V PP                  V P                  V PR                  RRV P,                  V P                  4      ,          pV'       dy   V\M        V P                  V P                  V PN                  VV P                  V	V PP                  V P                  V PR                  RRV P,                  V P                  4      ,          pV'       dy   V\M        V P                  V P                  V PN                  VV P                  V	V PP                  V P                  V PR                  RRV P,                  V P                  4      ,          pV'       dw   V\U        V P                  V P                  V PN                  VV P                  V	V PP                  V P                  V PR                  V P,                  V P                  4      ,          p/ p
V'       g   EK   V PV                  '       * pV\Y        V P                  V P                  V P                  V PN                  VV P                  V	V PP                  V P                  V PR                  V PH                  V PZ                  V P\                  V P,                  V P^                  V P                  V P`                  V Pb                  VV
V Pd                  V Pf                  V 4      ,          pEK  	  \l        Pn                  ! 4       Pq                  R4      pX
'       d&   V Pr                  ;'       g    RV R2p\u        W4       \        V4      ^ 8X  d*   V PP                  ^ .8w  d   \        PK                  R4       R# V Pv                  ;'       g    RV R2p\y        W4       V Pz                  ;'       g    RV R2p\}        WV 4       R# u upi   \0         d%    \        P                  RT P,                  4        ELni ; i  \h         d    \        Pk                  R4        EK  i ; i)zfp16 is for GPU onlyNzint8 is for CPU onlyr   zArguments: z#Creation of the directory %s failedrH   r   r   r/   r   z2.0.0z2PyTorch version must be >=2.0.0 and you are using zB--input_counts is not implemented for torch or torchscript engine.TF	Exceptionz%Y%m%d-%H%M%Sbenchmark_fusion_z.csvzNo any result available.benchmark_detail_benchmark_summary_)migraphx)r>   swim)?r.  r   r(   r3   r   r   r^   rA   rB   r   r_   rE   modelsr   rd   sortedr'   	cpu_countrW   r%  r&  existsr-   mkdirOSErrorenginesr   rG   rH   rS   r   force_num_layersset_num_threadsr   
__config__parallel_inforf   rD   r   ra   rc   
test_timesr  use_mask_indexr   rg   rh   ri   rj   rk   rn   ro   r0  r   r   rV   strftime
fusion_csvr   
detail_csvr
   
result_csvr   )rp   xenable_torchenable_torch2enable_torchscriptenable_onnxruntimeenable_tensorflowrb   rq   r'   rm   rl   
time_stampcsv_filenames                 r   mainrO    s   D~~***4<<<+,~~'DLLLT]]R^=^+,
4;;1A!7!:o!M!#4CSCSTCSaFy9CSTUD
KK+dV$%77>>$..))	PHHT^^$ dll*L,M&$,,6&$,,6$4u'8'89GMM'<RRI%J[J[I\]^$T%:%:;OG''k*U%%3356=,>,>  QC'cd!;LLKK$$#NN$$))OONNLL   ;LLKK$$#NN$$))OONNLL   ;LLKK$$#NN$$))OONNLL   ~    %% G #%.-1-@-@)@&?LLMMKK$$#NN$$))OO%%''&&NNMMLLNN//*+%%AA/ [ (R ((9JNN,=j\*N !8G
7|qs"NN56??JJ(9*T&JL7)??KK(::,d&KL7$/_ U  	PLL>O	Pn  .  --.s+    [& [+ C-\++\\ ]]__main__)3__doc__r  loggingr%  r   r   rM   psutilbenchmark_helperr   r   r   r   r   r   r	   r
   r   r   r   rv   r   huggingface_modelsr   r   onnx_exporterr   r   r   r   	packagingr   quantize_helperr   	getLoggerrA   r8  environrU   rH   transformersr   r   r   r   r   r   r  r.  rO  __name__r   r   r   <module>r]     s    6   	        ) 4   *			2	U+	 BJJ&$'	NBJJ !  @ @]@m`4DEP_0D zF r   