Ë
    cQêjyC  ã                   óº   — d dl Z d dlZd dlZd dlmZ d dlZej                  ej                  ej                  ej                  dœZd„ Z G d„ d«      Z	 	 	 	 	 dd„Zy)	é    N)ÚAutoTokenizer)ztorch.int32ztorch.int64ztorch.float32ztorch.float16c                 óÖ   — ddl m} |j                  | j                  «       |j                  «       |j	                  «       |j                  «       z  |j                  j                  «       y )Nr   )Úcudart)Úcudar   Ú
cudaMemcpyÚdata_ptrÚelement_sizeÚnelementÚcudaMemcpyKindÚcudaMemcpyDeviceToDevice)ÚdstÚsrcr   s      ú{/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/transformers/models/phi2/inference_example.pyÚcuda_memcpyr      sK   € Ýà
×ÑØ�‰‹Ø�‰‹Ø×ÑÓ˜SŸ\™\›^Ñ+Ø×Ñ×6Ñ6õ	ó    c                   ód   — e Zd Zd„ Zd„ Zd„ Zdej                  dedefd„Z		 dd„Z
dd	„Zd
„ Zd„ Zy)ÚORTGeneratorc                 ó‚   — || _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        i | _        y )Né    éP   i   r   F)	Úonnx_decoder_pathÚ	num_headsÚ	head_sizeÚ
num_layersÚmax_sequence_lengthÚ	device_idÚuse_cuda_graphÚuse_traced_inputsÚstatic_inputs_map)ÚselfÚdecoder_paths     r   Ú__init__zORTGenerator.__init__"   sF   € Ø!-ˆÔØˆŒØˆŒØˆŒØ#'ˆÔ ØˆŒØ#ˆÔØ!&ˆÔØ!#ˆÕr   c                 ó°  — || j                   v ry t        j                  d«      }t        j                  d| j                  «      }i }t        j                  |dft        j
                  |¬«      |d<   t        j                  dgt        j                  |¬«      |d<   t        j                  |dgz  t        j
                  |¬«      |d<   t        j                  dgt        j
                  |¬«      |d	<   || j                  | j                  | j                  f}t        | j                  «      D ]m  }t        j                  ||t        j                  ¬
«      }|j                  d|› �|j                  «       d|› �|j!                  «       j                  «       i«       Œo t        j                  |ddft        j                  |¬«      |d<   || j                   |<   y )NÚcpur   é   )ÚdtypeÚdeviceÚ	input_idsr   ÚstepÚ	seqlens_kÚtotal_sequence_length©r'   r&   Ú	past_key_Úpast_value_é È  Úlogits)r   Útorchr'   r   ÚzerosÚint32ÚtensorÚint64r   r   r   Úranger   Úfloat16ÚupdateÚ
contiguousÚclone)r    Ú
batch_sizeÚ
cpu_deviceÚcuda_deviceÚ	static_ioÚcache_shapeÚiÚcaches           r   Úappend_static_inputsz!ORTGenerator.append_static_inputs-   s|  € à˜×/Ñ/Ñ/Øä—\‘\ %Ó(ˆ
Ü—l‘l 6¨4¯>©>Ó:ˆàˆ	Ü!&§¡¨j¸!¨_ÄEÇKÁKÐXcÔ!dˆ	�+ÑÜ!ŸL™L¨!¨´E·K±KÈÔTˆ	�&ÑÜ!&§¡¨j¸A¸3Ñ.>ÄeÇkÁkÐZeÔ!fˆ	�+ÑÜ-2¯\©\¸1¸#ÄUÇ[Á[ÐYcÔ-dˆ	Ð)Ñ*à! 4§>¡>°4×3KÑ3KÈTÏ^É^Ð\ˆÜ�t—‘Ó'ò 	sˆAÜ—K‘K °KÄuÇ}Á}ÔUˆEØ×Ñ 	¨!¨˜o¨u×/?Ñ/?Ó/AÀ[ÐQRÐPSÐCTÐV[×VaÑVaÓVc×VnÑVnÓVpÐqÕrð	sô $Ÿk™k¨:°q¸%Ð*@ÌÏÉÐ^iÔjˆ	�(Ñà-6ˆ×Ñ˜zÒ*r   c           	      óî
  — | j                   rt        j                  nt        j                  | _        t        j
                  |d   | j                  t        j                  ¬«      }t        j
                  |d   | j                  t        j                  ¬«      }|j                  \  }}| j                  xr+ || j                  v xr | j                  xr | j                   | _        | j                  s1t        j
                  dg| j                  t        j                  ¬«      n| j                  |   d   }| j                  s4t        j
                  |dgz  | j                  t        j                  ¬«      n| j                  |   d   }t        ||j!                  d«      j#                  d«      j%                  t        j                  «      «       | j                  s:t        j
                  dgt        j                  d«      t        j                  ¬«      n| j                  |   d	   }||d<   |j'                  «       |j'                  «       d
œ}	| j(                  r|j'                  «       |	d<   | j                  r)|j'                  «       |	d<   |j'                  «       |	d	<   |	d= | j                  r| j*                  nd}
| j                  rd|| j,                  |
| j.                  fn|| j,                  |
| j.                  f}| j                  s¼t1        | j2                  «      D ]£  }t        j4                  || j                  | j                  ¬«      }| j                  sE|	j7                  d|› �|j'                  «       d|› �|j9                  «       j'                  «       i«      n#|	j7                  d|› �|j'                  «       i«       Œ¥ nwt1        | j2                  «      D ]_  }|	j7                  d|› �| j                  |   d|› �   j'                  «       d|› �| j                  |   d|› �   j'                  «       i«       Œa t        j4                  ||d| j                  | j                  ¬«      }d|j'                  «       i}| j                  sî| j                  rd|| j,                  || j.                  fn|| j,                  || j.                  f}t1        | j2                  «      D ]•  }t        j4                  || j                  | j                  ¬«      }| j                  s7|j7                  d|› �|j'                  «       d|› �|j'                  «       i«      n#|j7                  d|› �|j'                  «       i«       Œ— |	|fS )Nr(   r,   Úattention_maskr   r)   r*   r%   r$   r+   )r(   rD   é   r-   r.   Úpast_r/   r0   Úpresent_key_Úpresent_value_Úpresent_)Úuse_fp16r1   r7   Úfloat32Útorch_dtyper4   r'   r3   Úshaper   r   Úuse_buffer_shareÚ	packed_kvr   r5   r   ÚsumÚsubÚtor9   Úuse_stepr   r   r   r6   r   r2   r8   r:   )r    Úencodings_dictr(   rD   r;   Úsequence_lengthr)   r*   Útotal_seq_lengthÚinputsÚpast_seq_lengthÚ
past_shaper@   Úpastr0   ÚoutputsÚpresent_shapeÚpresents                     r   Úget_initial_inputs_and_outputsz+ORTGenerator.get_initial_inputs_and_outputsD   sÌ  € Ø,0¯MªMœ5Ÿ=š=¼u¿}¹}ˆÔä—L‘L °Ñ!<ÀTÇ[Á[ÔX]×XcÑXcÔdˆ	ÜŸ™ nÐ5EÑ&FÈtÏ{É{Ôbg×bmÑbmÔnˆà&/§o¡oÑ#ˆ
�Oð ×Ñò #Ø˜t×5Ñ5Ð5ò#à×%Ñ%ò#ð —N‘NÐ"ð	 	Ôð ×)Ò)ô �L‰L˜!˜ T§[¡[¼¿¹ÕDà×'Ñ'¨
Ñ3°FÑ;ð 	ð ×)Ò)ô �L‰L˜ q cÑ)°$·+±+ÄUÇ[Á[ÕQà×'Ñ'¨
Ñ3°KÑ@ð 	ô
 	�I˜~×1Ñ1°!Ó4×8Ñ8¸Ó;×>Ñ>¼u¿{¹{ÓKÔLð ×)Ò)ô �L‰L˜!˜¤U§\¡\°%Ó%8ÄÇÁÕLà×'Ñ'¨
Ñ3Ð4KÑLð 	ð
 .Ð˜Ñð #×-Ñ-Ó/Ø,×7Ñ7Ó9ñ
ˆð
 �=Š=Ø!Ÿ_™_Ó.ˆF�6‰Nà×ÒØ"+×"6Ñ"6Ó"8ˆF�;ÑØ.>×.IÑ.IÓ.KˆFÐ*Ñ+ØÐ'Ð(à6:×6KÒ6K˜$×2Ò2ÐQRˆð �~Š~ð �
˜DŸN™N¨O¸T¿^¹^ÑLà˜dŸn™n¨o¸t¿~¹~ÐNð 	ð ×%Ò%Ü˜4Ÿ?™?Ó+ò �Ü—{‘{ :°d·k±kÈ×IYÑIYÔZ�ð  Ÿ>š>ð —M‘M Y¨q¨c ?°D·O±OÓ4EÈÐUVÐTWÐGXÐZ^×ZdÑZdÓZf×ZqÑZqÓZsÐ"tÔuàŸ™¨%°¨s¨°T·_±_Ó5FÐ'GÓHùñô ˜4Ÿ?™?Ó+ò �Ø—‘à# A 3˜¨×)?Ñ)?À
Ñ)KÈiÐXYÐWZÈOÑ)\×)gÑ)gÓ)iØ% a SÐ)¨4×+AÑ+AÀ*Ñ+MÐP[Ð\]Ð[^ÐN_Ñ+`×+kÑ+kÓ+mðõðô —‘˜Z¨¸%ÈÏÉÐ[_×[kÑ[kÔlˆØ˜V×.Ñ.Ó0Ð1ˆà×$Ò$ð —>’>ð �J §¡°ÀÇÁÑPà  $§.¡.°/À4Ç>Á>ÐRð ô
 ˜4Ÿ?™?Ó+ò �ÜŸ+™+ m¸D¿K¹KÈt×O_ÑO_Ô`�ð
  Ÿ>š>ð —N‘NØ'¨ sÐ+¨W×-?Ñ-?Ó-AÀ^ÐTUÐSVÐCWÐY`×YkÑYkÓYmÐnôð !Ÿ™¨8°A°3¨¸×9KÑ9KÓ9MÐ(NÓOùðð �wˆÐr   ÚmodelrW   r[   c           
      óZ  — |j                  «       }d }|j                  «       D ]¦  \  }}|j                  ||j                  j                  |j                  j                  dk(  rdn|j                  j
                  t        t        |j                  «         t        |j                  «      |j                  «       ¬«       |j                  }Œ¨ |j                  «       D �]K  }|j                  }	| j                  r¤d|	v r ||	j                  dd«         }|j!                  |	|j                  j                  |j                  j
                  | j"                  rt$        j&                  nt$        j(                  t        |j                  «      |j                  «       ¬«       ŒÀ||	   }|j!                  |	|j                  |j                  dk(  rdn|j
                  | j"                  rt$        j&                  nt$        j(                  t        |j                  «      |j                  «       ¬«       �ŒN |S )Nr$   r   )ÚnameÚdevice_typer   Úelement_typerM   Ú
buffer_ptrr]   rZ   )Ú
io_bindingÚitemsÚ
bind_inputr'   ÚtypeÚindexÚpt_to_npÚreprr&   ÚtuplerM   r   Úget_outputsra   rN   ÚreplaceÚbind_outputrJ   Únpr7   rK   )
r    r_   rW   r[   re   r'   ÚkÚvÚoutputra   s
             r   Úapply_io_bindingzORTGenerator.apply_io_binding¡   s   € Ø×%Ñ%Ó'ˆ
Øˆà—L‘L“Nò 		‰DˆAˆqØ×!Ñ!ØØŸH™HŸM™MØ Ÿx™xŸ}™}°Ò5™!¸1¿8¹8¿>¹>Ü%¤d¨1¯7©7£mÑ4Ü˜AŸG™G“nØŸ:™:›<ð "ô ð —X‘X‰Fð		ð ×'Ñ'Ó)ó 	ˆFØ—;‘;ˆDØ×$Ò$¨°dÑ):Ø˜4Ÿ<™<¨	°6Ó:Ñ;�Ø×&Ñ&ØØ !§¡§¡ØŸh™hŸn™nØ04·²¤"§*¢*Ä2Ç:Á:Ü §¡›.Ø Ÿz™z›|ð 'õ ð ˜D‘M�Ø×&Ñ&ØØ &§¡Ø#)§;¡;°%Ò#7™a¸V¿\¹\Ø04·²¤"§*¢*Ä2Ç:Á:Ü §¡›.Ø Ÿz™z›|ð 'ö ð	ð. Ðr   c                 ó€  — || _         t        j                  «       }d|_        d|_        || _        | j                   dk\  rd| j                   | j
                  dœfnd}t        j                  | j                  ||g¬«      | _        t        j                  «       | _
        t        j                  j                  «       r t        j                  d| j                   «      nt        j                  d«      | _        || _        || _        || _        || _        t'        j(                  d	d
¬«      | _        d| j*                  _        y )Né   r   ÚCUDAExecutionProvider)r   Úenable_cuda_graphÚCPUExecutionProvider)Úsess_optionsÚ	providersr   r$   zmicrosoft/phi-2T)Útrust_remote_codez[PAD])r   ÚortÚSessionOptionsÚlog_verbosity_levelÚlog_severity_levelr   ÚInferenceSessionr   ÚsessÚ
RunOptionsÚror1   r   Úis_availabler'   rJ   rN   rO   rS   r   Úfrom_pretrainedÚ	tokenizerÚ	pad_token)	r    r   rJ   rN   rO   rS   r   rz   Úeps	            r   Úcreate_sessionzORTGenerator.create_sessionÉ   s  € ð #ˆŒÜ×)Ñ)Ó+ˆØ+,ˆÔ(Ø*+ˆÔ'Ø,ˆÔð �~‰~ Ò"ð %°D·N±NÐY]×YlÑYlÑ&mÑnà'ð 	ô
 ×(Ñ(¨×)?Ñ)?ÈlÐgiÐfjÔkˆŒ	Ü—.‘.Ó"ˆŒä>C¿j¹j×>UÑ>UÔ>W”e—l‘l 6¨4¯>©>Ô:Ô]b×]iÑ]iÐjoÓ]pˆŒØ ˆŒØ 0ˆÔØ"ˆŒØ ˆŒä&×6Ñ6Ð7HÐ\`ÔaˆŒØ#*ˆ�‰Õ r   c                 ó"  — | j                  |«      \  }}|d   j                  «       }|j                  \  }}	|	}
t        j                  || j
                  t        j                  ¬«      }|rg }d}|
|k  �r²| j                  | j                  ||«      }|rt        j                  «       }|j                  «        |r�| j                  r| j                  j                  dd«       | j                  j                  || j                  «       | j                  r3| j                  j                  d| j                  rt!        |«      nd«       d}n&| j                  j                  || j                  «       |j#                  «        |r(t        j                  «       }j%                  |z
  «       |d   d d …dd d …f   }t        j&                  |d¬	«      }||z  | j(                  j*                  k(  }|j-                  || j(                  j*                  «      j/                  |d
g«      }t        j0                  ||gd¬	«      }t        j2                  |«      r�nÔ|
d
z  }
|j5                  t        j6                  «      |d<   | j                  r4t9        | j:                  |   d   |d   «       | j:                  |   d   |d<   | j<                  rwt        j>                  |
d
z
  g| j
                  t        j@                  ¬«      |d<   | j                  r4t9        | j:                  |   d   |d   «       | j:                  |   d   |d<   | j                  r´|d   }|| j/                  |d
«      z   j5                  t        j6                  «      |d<   |
|d   d<   | j                  r±t9        | j:                  |   d   |d   «       | j:                  |   d   |d<   |d   d   | j:                  |   d   d<   | j:                  |   d   |d<   nLt        j0                  |d   | j/                  |d
«      gd
«      j5                  t        j6                  «      |d<   |d   j                  d
   d
k7  rC|d   d d …d d
…d d …f   jC                  «       |d<   | j                  r| j:                  |   d   |d<   |d   jE                  «        | jF                  �s_tI        | jJ                  «      D ]9  }| jL                  s|d|› �   |d|› �<   |d|› �   |d|› �<   Œ,|d|› �   |d|› �<   Œ; |d   j                  d
   }| jL                  rd|| jN                  || jP                  fn|| jN                  || jP                  f}tI        | jJ                  «      D ]£  }t        j                  || j
                  | jR                  ¬«      }| jL                  sE|jU                  d|› �|jC                  «       d|› �|j                  «       jC                  «       i«      n#|jU                  d|› �|jC                  «       i«       Œ¥ |
|k  r�Œ²|rItW        d|› d|	› d||	z
  › �«       tW        ddd   z  › ddtY        jZ                  |d
d  «      z  › d�«       y | j(                  j]                  |d¬«      }|S )Nr(   r,   TÚgpu_graph_idz-1Fr0   éÿÿÿÿ)Údimr%   r)   r*   r+   r   rD   rG   r-   rH   r.   rI   rF   rE   zBatch size: z, Sequence length: z, Token num: zPrompt letency: iè  zms, Token latency: Úms)Úskip_special_tokens)/r^   r:   rM   r1   r2   r'   Úboolrt   r‚   ÚtimeÚsynchronize_inputsr   r„   Úadd_run_config_entryÚrun_with_iobindingr   ÚstrÚsynchronize_outputsÚappendÚargmaxr‡   Úeos_token_idÚmasked_fillÚreshapeÚcatÚallrR   r3   r   r   rS   r4   r5   r9   Úzero_rN   r6   r   rO   r   r   rL   r8   Úprintrp   ÚmeanÚbatch_decode)r    rT   Ú
max_lengthÚcuda_graph_annotationÚ	benchmarkrW   r[   Úall_token_idsr;   rU   Úcurrent_lengthÚhas_eosÚlatencyÚ
prompt_runre   ÚstartÚendÚnext_token_logitsÚnext_tokensÚtokens_to_addÚprevious_seqlens_kr@   Únew_sequence_lengthr\   r]   Útextss                             r   Úgenerate_implzORTGenerator.generate_implâ   so  € Ø×=Ñ=¸nÓM‰ˆ�à˜{Ñ+×1Ñ1Ó3ˆØ&3×&9Ñ&9Ñ#ˆ
�Oà(ˆÜ—+‘+˜j°·±ÄEÇJÁJÔOˆáØˆGàˆ
Ø˜zÓ)Ø×.Ñ.¨t¯y©y¸&À'ÓJˆJáÜŸ	™	›�à×)Ñ)Ô+ÙØ×&Ò&à—G‘G×0Ñ0°ÀÔFØ—	‘	×,Ñ,¨Z¸¿¹ÔAØ×&Ò&à—G‘G×0Ñ0Ø&Àd×F\ÒF\¬Ð,AÔ(BÐbfôð #‘
à—	‘	×,Ñ,¨Z¸¿¹ÔAØ×*Ñ*Ô,áÜ—i‘i“k�Ø—‘˜s U™{Ô+ð !(¨Ñ 1²!°Rº°(Ñ ;ÐÜŸ,™,Ð'8¸bÔAˆKð  Ñ+¨t¯~©~×/JÑ/JÑJˆGð (×3Ñ3°G¸T¿^¹^×=XÑ=XÓY×aÑaÐcmÐopÐbqÓrˆMÜ!ŸI™I }°mÐ&DÈ"ÔMˆMô �y‰y˜Ô!Ùð ˜aÑˆNà"/×"2Ñ"2´5·;±;Ó"?ˆF�;ÑØ×%Ò%Ü˜D×2Ñ2°:Ñ>¸{ÑKÈVÐT_ÑM`ÔaØ&*×&<Ñ&<¸ZÑ&HÈÑ&U��{Ñ#à�}Š}Ü!&§¡¨~ÀÑ/AÐ.BÈ4Ï;É;Ô^c×^iÑ^iÔ!j��v‘Ø×)Ò)Ü × 6Ñ 6°zÑ BÀ6Ñ JÈFÐSYÉNÔ[Ø%)×%;Ñ%;¸JÑ%GÈÑ%O�F˜6‘Nà×"Ò"Ø%+¨KÑ%8Ð"Ø'9¸g¸X×<NÑ<NÈzÐ[\Ó<]Ñ']×&aÑ&aÔbg×bmÑbmÓ&n��{Ñ#Ø5C�Ð.Ñ/°Ñ2Ø×)Ò)Ü × 6Ñ 6°zÑ BÀ;Ñ OÐQWÐXcÑQdÔeØ*.×*@Ñ*@ÀÑ*LÈ[Ñ*Y�F˜;Ñ'ØU[Ð\sÑUtÐuvÑUw�D×*Ñ*¨:Ñ6Ð7NÑOÐPQÑRØ6:×6LÑ6LÈZÑ6XÐYpÑ6q�FÐ2Ò3ä+0¯9©9ØÐ,Ñ-°°×/AÑ/AÀ*ÈaÓ/PÐQÐSTó,ç‘"”U—[‘[“/ð Ð'Ñ(ð
 �xÑ ×&Ñ& qÑ)¨QÒ.Ø$+¨HÑ$5²a¸¸!¸ºQ°hÑ$?×$JÑ$JÓ$L�˜Ñ!Ø×)Ò)Ø(,×(>Ñ(>¸zÑ(JÈ8Ñ(T�G˜HÑ%Ø�HÑ×#Ñ#Ô%à×(Ó(Ü˜tŸ™Ó/ò F�AØŸ>š>Ø29¸LÈÈÐ:LÑ2M˜ ¨1¨#˜Ñ/Ø4;¸nÈQÈCÐ<PÑ4Q˜ ¨Q¨CÐ0Ò1à.5¸ÀÀ°nÑ.E˜  q c˜{Ò+ðFð '-Ð-=Ñ&>×&DÑ&DÀQÑ&GÐ#ð —~’~ð ˜
 D§N¡NÐ4GÈÏÉÑXà$ d§n¡nÐ6IÈ4Ï>É>ÐZð ô
 ˜tŸ™Ó/ò �AÜ#Ÿk™k¨-ÀÇÁÐSW×ScÑScÔd�Gð  $Ÿ~š~ð  Ÿ™à".¨q¨cÐ 2°G×4FÑ4FÓ4HØ"0°°Ð 4°g·m±m³o×6PÑ6PÓ6Rðôð %Ÿ^™^¨x¸°s¨^¸W×=OÑ=OÓ=QÐ,RÓSùððw ˜zÔ)ñP ÜØ˜z˜lÐ*=¸oÐ=NÈmÐ\fÐixÑ\xÐ[yÐzôô Ð$ T¨G°A©JÑ%6Ð$7Ð7JÈ4ÔRT×RYÑRYÐZaÐbcÐbdÐZeÓRfÑKfÐJgÐgiÐjÔkØà—‘×+Ñ+¨MÈtÐ+ÓTˆØˆr   c                 óN   — | j                  |d¬«      }| j                  |||«      S )NT)Úpadding)r‡   r³   )r    Úpromptr£   r¤   rT   s        r   ÚgeneratezORTGenerator.generatea  s*   € ØŸ™¨¸˜Ó=ˆà×!Ñ! .°*Ð>SÓTÐTr   c                 óT  — |\  }}||z   }i }t        j                  dd||ft         j                  ¬«      j                  «       |d<   t        j                  ||ft         j                  ¬«      j                  «       |d<   | j                  |||d¬«       | j                  |||d¬«       y )	Nr   iXÄ  )r&   r(   rD   F)r¥   T)r1   Úrandintr3   ÚtolistÚonesr³   )r    Úprompt_shapeÚ	token_numr¤   r;   rU   r£   rT   s           r   Úgenerate_benchmarkzORTGenerator.generate_benchmarkf  sª   € Ø&2Ñ#ˆ
�OØ$ yÑ0ˆ
àˆÜ&+§m¡m°A°u¸zÈ?Ð>[Ôch×cnÑcnÔ&o×&vÑ&vÓ&xˆ�{Ñ#Ü+0¯:©:°zÀ?Ð6SÔ[`×[fÑ[fÔ+g×+nÑ+nÓ+pˆÐ'Ñ(ð 	×Ñ˜>¨:Ð7LÐX]ÐÔ^ð 	×Ñ˜>¨:Ð7LÐX\ÐÕ]r   N)TTFFF)F)Ú__name__Ú
__module__Ú__qualname__r"   rB   r^   r}   r�   Údictrt   rŠ   r³   r·   r¾   © r   r   r   r   !   sT   „ ò	$ò7ò.[ðz& c×&:Ñ&:ð &ÀDð &ÐSWó &ðR puó+ó2}ò~Uó
^r   r   c                 óè   ‡‡— t        | «      Š‰j                  |||||‰«       ˆˆfd„}dg}	|s ||	«       |r:d}
dD ]2  }‰j                  |«       dD ]  }||f}‰j                  ||
|¬«       Œ Œ4 y y )Nc                 óÚ   •— t        | «      }‰r‰j                  |¬«       ‰j                  | d|¬«      }t        t        |«      «      D ]   }t	        d| |   «       t	        d||   «       Œ" y )N)r;   éÒ   )r£   r¤   zPrompt: zTexts: )ÚlenrB   r·   r6   r    )r¶   Úexample_batch_sizer²   r@   Ú	generatorr   s       €€r   Ú
simple_runzrun_phi2.<locals>.simple_run‚  sn   ø€ Ü  ›[ÐÙØ×*Ñ*Ð6HÐ*ÔIØ×"Ñ" 6°cÐQcÐ"Ódˆä”s˜5“zÓ"ò 	'ˆAÜ�*˜f Q™iÔ(Ü�)˜U 1™XÕ&ñ	'r   zV```python
    def print_prime(n):
    """
    Print all primes between 1 and n
    """r   )r%   rE   rv   é   )é   i   )r¤   )r   rŠ   rB   r¾   )Úonnx_model_pathrN   r   rO   rJ   rS   r   Úrun_benchmarkrÊ   r¶   r½   r;   rU   r¼   rÉ   s         `       @r   Úrun_phi2rÏ   u  s¦   ù€ ô ˜_Ó-€IØ×Ñ˜Y¨Ð2BÀIÈxÐYgÔhõ'ð	ð€Fñ Ù�6Ôñ Øˆ	Ø&ò 	hˆJØ×*Ñ*¨:Ô6Ø#,ò h�Ø *¨OÐ<�Ø×,Ñ,¨\¸9Ð\fÐ,Õgñhñ	hð r   )FTFFF)r’   Únumpyrp   r1   Útransformersr   Úonnxruntimer}   r3   r5   rK   r7   rj   r   r   rÏ   rÃ   r   r   ú<module>rÓ      sf   ðó ã Û Ý &ã ð —8‘8Ø—8‘8Ø—Z‘ZØ—Z‘Zñ	€ò÷Q^ñ Q^ðp
 ØØØØô)hr   