+
    G-jö3  ã                   ó”  € ^ RI t ^ RIt^ RIt^ RIt^ RIHt  RR ltR tR tR t	R t
RR ltR	 tR
 tR t]R8X  d‹   ]! 4       t]! R]4       ^ RIHt ]! ]P(                  4       ]P*                  '       g#   ]P,                  '       g   Q R4       h]! ]4      tM]P*                  t^ RIHt ]! ]]4      t] F  t]! ]4       K  	  R# R# )é    N)ÚTensorProtoc           	      ó`  € \         P                  ! 4       pVP                  R RR\        RR7       VP                  RRR\        RR7       VP                  RR	R\        ^R
R7       VP                  RRR\        ^ RR7       VP                  RR\        ^RR7       VP                  RR\        ^RR7       VP                  RR\        RRR7       VP                  RR\
        RRR7       VP                  RR\        R9RR7       VP                  RR\        RRR7       VP                  RR\        RRR7       VP                  R R\        RR!R7       VP                  R"RR#. R:OR$R%7       VP                  R&R'RR(R)R*7       VP                  RR+7       VP                  R,R\        R-R.R7       VP                  R/RR(R0R*7       VP                  RR17       VP                  R2RR(R3R*7       VP                  RR47       VP                  R5R6RR(R77       VP                  RR87       VP                  V 4      # );z-iz--inputFz2Set the input file for reading the profile results)ÚrequiredÚtypeÚhelpz-mz--modelzIonnx model path to run profiling. Required when --input is not specified.z-bz--batch_sizezbatch size of input)r   r   Údefaultr   z-sz--sequence_lengthzsequence length of inputz--past_sequence_lengthzpast sequence length for gpt2z--global_lengthz&number of global tokens for longformerz	--samplesiè  z\number of samples to test. Set it large enough to reduce the variance of performance result.z--thresholdg{®Gáz„?zfThreshold of run time ratio among all nodes. Nodes with larger ratio will show in top expensive nodes.z--thread_numznumber of threads to usez--input_ids_nameNz"input name for input IDs, for bertz--segment_ids_namez$input name for segment IDs, for bertz--input_mask_namez'input name for attention mask, for bertz--dummy_inputsr   zEType of model inputs. The default will create dummy inputs with ones.)r   r   Úchoicesr   z-gz	--use_gpuÚ
store_truezuse GPU)r   Úactionr   )Úuse_gpuz
--providerÚcudazExecution provider to usez--basic_optimizationz_Enable only basic graph optimizations. By default, all optimizations are enabled in OnnxRuntime)Úbasic_optimizationz--kernel_time_onlyz.Only include the kernel time and no fence time)Úkernel_time_onlyz-vz	--verbose)r   r   )Úverboseéÿÿÿÿ)ÚbertÚgpt2Ú
longformerr   )ÚargparseÚArgumentParserÚadd_argumentÚstrÚintÚfloatÚset_defaultsÚ
parse_args)ÚargvÚparsers   & Úr/Volumes/fast/ai/experiments/nudenet-smoke/.venv/lib/python3.14/site-packages/onnxruntime/transformers/profiler.pyÚparse_argumentsr       sÖ  € Ü×$Ò$Ó&€Fà
×ÑØØØÜØAð ô ð ×ÑØØØÜØXð ô ð ×ÑØØØÜØØ"ð ô ð ×ÑØØØÜØØ'ð ô ð ×ÑØ ØÜØØ,ð ô ð ×ÑØØÜØØ5ð ô ð ×ÑØØÜØØkð ô ð ×ÑØØÜØØuð ô ð ×ÑØØÜØØ'ð ô ð ×ÑØØÜØØ1ð ô ð ×ÑØØÜØØ3ð ô ð ×ÑØØÜØØ6ð ô ð ×ÑØØØÚ9ØTð ô ð ×Ñ˜˜k°EÀ,ÐU^ÐÔ_Ø
×Ñ ÐÔ&à
×ÑØØÜØØ(ð ô ð ×ÑØØØØnð	 ô ð ×Ñ¨5ÐÔ1à
×ÑØØØØ=ð	 ô ð ×Ñ¨ÐÔ/à
×Ñ˜˜k°EÀ,ÐÔOØ
×Ñ ÐÔ&à×Ñ˜TÓ"Ð"ó    c           	      óŽ   € ^ RI Hp V! V VVV'       * VRR7      pV F  pVP                  RV4      p	K  	  VP                  4       p
V
# )r   )Úcreate_onnxruntime_sessionT)Úenable_all_optimizationÚnum_threadsÚenable_profilingN)Úbenchmark_helperr#   ÚrunÚend_profiling)Úonnx_model_pathr   Úproviderr   Ú
thread_numÚ
all_inputsr#   ÚsessionÚinputsÚ_Úprofile_files   &&&&&&     r   Úrun_profiler2   �   sV   € Ý;á(ØØØØ$6Ô 6ØØô€Gó ˆØ�K‰K˜˜fÓ%Šñ ð ×(Ñ(Ó*€LØÐr!   c                 ó€   € \        V P                  R 4      4      \        8X  d   \        W P                  R 4      4      # R# )ÚvalueN)r   Ú
WhichOneofr   Úgetattr)Údims   &r   Úget_dim_from_type_protor8   °   s2   € Ü48¸¿¹ÈÓ9PÓ4QÔUXÔ4XŒ7�3Ÿ™ wÓ/Ó0ÐbÐ^bÐbr!   c                 ó~   € V P                   P                  P                   Uu. uF  p\        V4      NK  	  up# u upi ©N)Útensor_typeÚshaper7   r8   )Ú
type_protoÚds   & r   Úget_shape_from_type_protor?   ´   s4   € Ø0:×0FÑ0F×0LÑ0L×0PÒ0PÓQÑ0P¨1Ô# AÖ&Ñ0PÑQÐQùÒQs   £:c                ó\  € / pV P                  4        EFv  p\        VP                  4      p. p\        V4       F.  w  r‰\	        V	\
        4      '       g   K  VP                  V4       K0  	  \        V4      ^8”  d    R# \        V4      ^ 8”  d   WV^ ,          &   \        V4      ^8”  d   W&V^,          &   VP                  P                  P                  p
V
\        P                  \        P                  \        P                  39   g   Q hV
\        P                  8X  d   \        P                  M4V
\        P                  8X  d   \        P                   M\        P"                  p\        P$                  ! WkR7      pWÄVP&                  &   EKy  	  \)        V4       Uu. uF  qÔNK  	  ppV# u upi )zìCreate dummy inputs for ONNX model.

Args:
    onnx_model (OnnxModel): ONNX model
    batch_size (int): batch size
    sequence_length (int): sequence length
    samples (int): number of samples

Returns:
    List[Dict]: list of inputs
N©Údtype)Ú'get_graph_inputs_excluding_initializersr?   r   Ú	enumerateÚ
isinstancer   ÚappendÚlenr;   Ú	elem_typer   ÚFLOATÚINT32ÚINT64ÚnumpyÚfloat32Úint64Úint32ÚonesÚnameÚrange)Ú
onnx_modelÚ
batch_sizeÚsequence_lengthÚsamplesÚdummy_inputsÚgraph_inputr<   Úsymbol_dimsÚir7   rH   Ú	data_typeÚdatar0   r-   s   &&&&           r   Úcreate_dummy_inputsr]   ¸   s[  € ð €LØ!×IÑI×KˆÜ)¨+×*:Ñ*:Ó;ˆØˆÜ Ö&‰FˆAÜ˜#œs×#Ô#Ø×"Ñ" 1Ö%ñ 'ô
 ˆ{Ó˜aÔÚÜˆ{Ó˜aÔØ$.�+˜a•.Ñ!Üˆ{Ó˜aÔØ$3�+˜a•.Ñ!à×$Ñ$×0Ñ0×:Ñ:ˆ	Øœ[×.Ñ.´×0AÑ0AÄ;×CTÑCTÐUÔUÐUÐUð œK×-Ñ-Ô-ô �MŠMà!*¬k×.?Ñ.?Ô!?”%—+’+ÄUÇ[Á[ð 	ô
 �zŠz˜%Ô1ˆØ)-�[×%Ñ%Ô&ñ/ Lô2 ).¨g¬Ó7© 1’,©€JÐ7ØÐùò 8s   Æ
F)c                óP   € ^ RI HpHp V! WWV4      w  ršpV! VVV^{RV	V
VRR7	      pV# )a  Create dummy inputs for BERT model.

Args:
    onnx_model (OnnxModel): ONNX model
    batch_size (int): batch size
    sequence_length (int): sequence length
    samples (int): number of samples
    input_ids_name (str, optional): Name of graph input for input IDs. Defaults to None.
    segment_ids_name (str, optional): Name of graph input for segment IDs. Defaults to None.
    input_mask_name (str, optional): Name of graph input for attention mask. Defaults to None.

Returns:
    List[Dict]: list of inputs
)Úfind_bert_inputsÚgenerate_test_dataF)Ú
test_casesÚseedr   Ú	input_idsÚsegment_idsÚ
input_maskÚrandom_mask_length)Úbert_test_datar_   r`   )rS   rT   rU   rV   Úinput_ids_nameÚsegment_ids_nameÚinput_mask_namer_   r`   rc   rd   re   r-   s   &&&&&&&      r   Úcreate_bert_inputsrk   â   sG   € ÷. Dá)9¸*ÐVfÓ)xÑ&€I˜JÙ#ØØØØØØØØØ ô
€Jð Ðr!   c           	     ó   € RVRVRVRW#,           /p/ pV P                  4        EF8  p\        VP                  4      p\        V4       F;  w  rš\	        V
\
        4      '       g   K  W¥9  d   \        RV
 24      hWZ,          W‰&   K=  	  VP                  P                  P                  pV\        P                  \        P                  \        P                  39   g   Q hV\        P                  8X  d   \        P                  M4V\        P                  8X  d   \        P                  M\        P                   p\        P"                  ! WŒR7      pWÖVP$                  &   EK;  	  \'        V4       Uu. uF  qæNK  	  ppV# u upi )a–  Create dummy inputs for GPT-2 model.

Args:
    onnx_model (OnnxModel): ONNX model
    batch_size (int): batch size
    sequence_length (int): sequence length
    past_sequence_length (int): past sequence length
    samples (int): number of samples

Raises:
    RuntimeError: symbolic is not supported. Use the tool convert_to_onnx.py to export ONNX model instead.

Returns:
    List[Dict]: list of inputs
rT   Úseq_lenÚpast_seq_lenÚtotal_seq_lenúsymbol is not supported: rA   )rC   r?   r   rD   rE   r   ÚRuntimeErrorr;   rH   r   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   )rS   rT   rU   Úpast_sequence_lengthrV   ÚsymbolsrW   rX   r<   rZ   r7   rH   r[   r\   r0   r-   s   &&&&&           r   Úcreate_gpt2_inputsrt     sI  € ð$ 	�jØ�?ØÐ,Ø˜Õ?ð	€Gð €LØ!×IÑI×KˆÜ)¨+×*:Ñ*:Ó;ˆÜ Ö&‰FˆAÜ˜#œs×#Ô#ØÔ%Ü&Ð)BÀ3À%Ð'HÓIÐIà&�|�E“Hñ 'ð  ×$Ñ$×0Ñ0×:Ñ:ˆ	Øœ[×.Ñ.´×0AÑ0AÄ;×CTÑCTÐUÔUÐUÐUð œK×-Ñ-Ô-ô �MŠMà!*¬k×.?Ñ.?Ô!?”%—+’+ÄUÇ[Á[ð 	ô
 �zŠz˜%Ô1ˆØ)-�[×%Ñ%Ô&ñ# Lô& ).¨g¬Ó7© 1’,©€JÐ7ØÐùò 8s   Å-
E;c                óP  € RVRV/p/ pV P                  4        EFj  p\        VP                  4      p\        V4       F;  w  rš\	        V
\
        4      '       g   K  W¥9  d   \        RV
 24      hWZ,          W‰&   K=  	  VP                  P                  P                  pV\        P                  \        P                  \        P                  39   g   Q hV\        P                  8X  d   \        P                  M4V\        P                  8X  d   \        P                  M\        P                   pRVP"                  9   d"   \        P$                  ! WŒR7      p^VRRV13&   M\        P&                  ! WŒR7      pWÖVP"                  &   EKm  	  \)        V4       Uu. uF  qæNK  	  ppV# u upi )a¢  Create dummy inputs for Longformer model.

Args:
    onnx_model (OnnxModel): ONNX model
    batch_size (int): batch size
    sequence_length (int): sequence length
    global_length (int): number of global tokens
    samples (int): number of samples

Raises:
    RuntimeError: symbolic is not supported. Use the tool convert_longformer_to_onnx.py to export ONNX model instead.

Returns:
    List[Dict]: list of inputs
rT   rU   rp   ÚglobalrA   :NNNN)rC   r?   r   rD   rE   r   rq   r;   rH   r   rI   rJ   rK   rL   rM   rN   rO   rQ   ÚzerosrP   rR   )rS   rT   rU   Úglobal_lengthrV   rs   rW   rX   r<   rZ   r7   rH   r[   r\   r0   r-   s   &&&&&           r   Úcreate_longformer_inputsry   ;  sf  € ð  ˜ZÐ):¸OÐL€Gà€LØ!×IÑI×KˆÜ)¨+×*:Ñ*:Ó;ˆÜ Ö&‰FˆAÜ˜#œs×#Ô#ØÔ%Ü&Ð)BÀ3À%Ð'HÓIÐIà&�|�E“Hñ 'ð  ×$Ñ$×0Ñ0×:Ñ:ˆ	Øœ[×.Ñ.´×0AÑ0AÄ;×CTÑCTÐUÔUÐUÐUð œK×-Ñ-Ô-ô �MŠMà!*¬k×.?Ñ.?Ô!?”%—+’+ÄUÇ[Á[ð 	ð �{×'Ñ'Ô'Ü—;’;˜uÔ6ˆDØ&'ˆD��N�]�NÐ"Ò#ä—:’:˜eÔ5ˆDØ)-�[×%Ñ%Ô&ñ- Lô0 ).¨g¬Ó7© 1’,©€JÐ7ØÐùò 8s   Æ
F#c           	      óØ  € V P                   ^ 8”  d   V P                   M\        P                  ! RR7      pR\        P                  9  d   \        V4      \        P                  R&   ^ RIHp ^ RIH	p V! V! V P                  4      4      pRpV P                  R8X  dO   \        VV P                  V P                  V P                  V P                   V P"                  V P$                  4      pM½V P                  R8X  d9   \'        VV P                  V P                  V P(                  V P                  4      pMtV P                  R	8X  d9   \+        VV P                  V P                  V P,                  V P                  4      pM+\/        W@P                  V P                  V P                  4      p\1        V P                  V P2                  V P4                  V P6                  V P                   V4      pV# )
r   F)ÚlogicalÚOMP_NUM_THREADS)Úload)Ú	OnnxModelNr   r   r   )r,   ÚpsutilÚ	cpu_countÚosÚenvironr   Úonnxr}   rS   r~   ÚmodelrW   rk   rT   rU   rV   rh   ri   rj   rt   rr   ry   rx   r]   r2   r   r+   r   )Úargsr%   r}   r~   rS   r-   r1   s   &      r   r(   r(   j  s†  € Ø%)§_¡_°qÔ%8�$—/’/¼f×>NÒ>NÐW\Ô>]€Kð ¤§
¡
Ô*Ü(+¨KÓ(8Œ�
‰
Ð$Ñ%åÝ$á™4 §
¡
Ó+Ó,€Jà€JØ×Ñ˜FÔ"Ü'ØØ�O‰OØ× Ñ Ø�L‰LØ×ÑØ×!Ñ!Ø× Ñ ó
‰
ð 
×	Ñ	˜fÔ	$Ü'ØØ�O‰OØ× Ñ Ø×%Ñ%Ø�L‰Ló
‰
ð 
×	Ñ	˜lÔ	*Ü-ØØ�O‰OØ× Ñ Ø×ÑØ�L‰Ló
‰
ô )¨·_±_Àd×FZÑFZÐ\`×\hÑ\hÓiˆ
äØ�
‰
Ø�‰Ø�‰Ø×ÑØ�‰Øó€Lð Ðr!   Ú__main__Ú	Arguments)Úsetup_loggerzMrequires either --model to run profiling or --input to read profiling results)Úprocess_resultsr:   )NNN)r   r�   rL   r   rƒ   r   r    r2   r8   r?   r]   rk   rt   ry   r(   Ú__name__Ú	argumentsÚprintr'   rˆ   r   Úinputr„   r1   Úprofile_result_processorr‰   ÚresultsÚline© r!   r   Ú<module>r’      sÐ   ðÛ Û 	ã Û Ý ðôI#òXò&còRò'ôT&òR-ò`,ò^3ðl ˆzÔÙÓ!€IÙ	ˆ+�yÔ!å-á�×"Ñ"Ô#à�?�?ˆ?Ø��ˆÐoÐ oÓoˆÙ˜9“~‰à —‘ˆÝ8á˜l¨IÓ6€GãˆÙˆdŽó ñ# r!   