Ë
    cQêjéc  ã                   óN  — d dl Z d dlZd dlmZ d dlZd dlmZ d dlZd dl	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ 	 d d
lmZ d dlmZm Z m!Z! dejD                  d<    e jF                  e$«      Z% G d„ dejL                  jN                  «      Z(dejR                  iZ*d1d„Z+d„ Z,d„ Z-ej\                  fd„Z/d„ Z0d„ Z1d„ Z2d„ Z3	 d2d„Z4de5de5de6de7de7ded e7d!e7fd"„Z8d#e5d$e5d%e5fd&„Z9d'„ Z:	 d2d(„Z;d)„ Z<d3d*„Z=d+„ Z>d,„ Z?d-„ Z@d.„ ZAd/„ ZBd0„ ZCy# e$ r dZY ŒËw xY w)4é    N)ÚPath)ÚAffinitySetting)ÚOptimizerInfoÚ	PrecisionÚcreate_onnxruntime_session)ÚMODEL_CLASSES)ÚQuantizeHelper)Útorch_onnx_export)Ú
AutoConfigÚAutoFeatureExtractorÚAutoTokenizerÚLxmertConfig)Ú__version__)ÚTransfoXLConfig)ÚPRETRAINED_GPT2_MODELSÚGPT2ModelNoPastStateÚTFGPT2ModelNoPastStateÚ2ÚTF_CPP_MIN_LOG_LEVELc                   ó\   ‡ — e Zd Zdej                  j
                  dee   fˆ fd„Zd„ Z	ˆ xZ
S )Ú_ModelWithNamedInputsÚmodelÚinput_namesc                 ó>   •— t         ‰| �  «        || _        || _        y ©N)ÚsuperÚ__init__r   r   )Úselfr   r   Ú	__class__s      €úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/transformers/onnx_exporter.pyr   z_ModelWithNamedInputs.__init__'   s   ø€ Ü‰ÑÔØˆŒ
Ø&ˆÕó    c                 ód   —  | j                   di t        t        | j                  |d¬«      «      ¤ŽS )NT)Ústrict© )r   ÚdictÚzipr   )r   Úargss     r    Úforwardz_ModelWithNamedInputs.forward,   s*   € Øˆt�z‰zÑKœD¤ T×%5Ñ%5°tÀDÔ!IÓJÑKÐKr!   )Ú__name__Ú
__module__Ú__qualname__ÚtorchÚnnÚModuleÚlistÚstrr   r(   Ú__classcell__)r   s   @r    r   r   &   s(   ø„ ð'˜eŸh™hŸo™oð '¸DÀ¹Iõ 'ö
Lr!   r   Útriuc                 ó°  — |�J ‚t        | j                  «      dk(  r#| j                  d«      | j                  d«      k(  sJ ‚t        d   } |t	        j
                  dt        j                  ¬«      |«      }|d | j                  d«      …d | j                  d«      …f   }t	        j                  |j                  «       | t	        j                  | «      «      S )Né   r   é   r2   )é   r6   ©Údtype)
ÚlenÚshapeÚsizeÚ
torch_funcr,   ÚonesÚuint8ÚwhereÚboolÚ
zeros_like)ÚxÚdiagonalÚoutÚ
torch_triuÚtemplateÚmasks         r    Ú	triu_onnxrH   5   s©   € Øˆ;Ðˆ;Üˆq�w‰w‹<˜1Ò §¡¨£¨a¯f©f°Q«iÒ!7Ð7Ð7ä˜FÑ#€JÙœ%Ÿ*™* \¼¿¹ÔEÀxÓP€HØ�K�a—f‘f˜Q“i�K  1§6¡6¨!£9 Ð,Ñ-€DÜ�;‰;�t—y‘y“{ A¤u×'7Ñ'7¸Ó':Ó;Ð;r!   c                  ó"   — t         t        _        y r   )rH   r,   r2   r$   r!   r    Úreplace_torch_functionsrJ   ?   s	   € Ü„E…Jr!   c                  ó(   — t         d   t        _        y )Nr2   )r<   r,   r2   r$   r!   r    Úrestore_torch_functionsrL   C   s   € Ü˜FÑ#„E…Jr!   c                 ó´  — |j                   dv rYt        j                  j                  |d|j                  |j                  «      j                  t        j                  «      }d|i}|S t        j                  j                  d| dz
  ||f|¬«      }d|i}d|v rt        j                  ||g|¬	«      }||d<   d
|v rt        j                  ||g|¬	«      }	|	|d
<   |j                  r||d<   t        |t        «      r–t        j                  j                  dd|j                  «      j                  t        j                  «      |d<   t        j                  j                  dd|j                  «      j                  t        j                  «      |d<   t         �Ct        |t         «      r3t        j                  |j"                  gt        j                  ¬	«      |d<   |S )N©ÚvitÚswiné   Úpixel_valuesr   r5   ©ÚlowÚhighr;   r8   Ú	input_idsÚattention_maskr7   Útoken_type_idsÚdecoder_input_idsÚvisual_featsÚ
visual_posz@tf_transfo_xl_model/transformer/pos_emb/einsum/Einsum/inputs_1:0)Ú
model_typeÚnumpyÚrandomÚrandÚ
image_sizeÚastypeÚfloat32Úrandintr=   ÚzerosÚis_encoder_decoderÚ
isinstancer   ÚrandnÚvisual_feat_dimÚvisual_pos_dimr   Úhidden_size)
Ú
vocab_sizeÚ
batch_sizeÚsequence_lengthr   ÚconfigÚ	data_typerV   ÚinputsrW   Úsegment_idss
             r    Úcreate_onnxruntime_inputrr   G   s   € Ø×Ñ˜OÑ+Ü—L‘L×%Ñ% j°!°V×5FÑ5FÈ×HYÑHYÓZ×aÑaÔbg×boÑboÓpˆ	Ø  )Ð,ˆØˆä—‘×$Ñ$¨°¸a±ÀzÐSbÐFcÐktÐ$Óu€IØ˜9Ð%€Fà˜;Ñ&ÜŸ™ Z°Ð$AÈÔSˆØ#1ˆÐÑ à˜;Ñ&Ü—k‘k :¨Ð"?ÀyÔQˆØ#.ˆÐÑ à× Ò Ø&/ˆÐ"Ñ#ä�&œ,Ô'Ü!&§¡×!3Ñ!3°A°q¸&×:PÑ:PÓ!Q×!XÑ!XÔY^×YfÑYfÓ!gˆˆ~ÑÜ$Ÿ|™|×1Ñ1°!°Q¸×8MÑ8MÓN×UÑUÔV[×VcÑVcÓdˆˆ|ÑÜÐ"¤z°&¼/Ô'JÜUZ×U`ÑU`Ø×ÑÐ ¬¯©ôV
ˆÐQÑRð €Mr!   c                 ó2   — i }|D ]  }|| v sŒ| |   ||<   Œ |S r   r$   )rp   r   Úremaining_model_inputsÚ
input_names       r    Úfilter_inputsrv   e   s9   € ØÐØ!ò Dˆ
Ø˜ÒØ17¸
Ñ1CÐ" :Ò.ðDð "Ð!r!   c                 ór   — t        | t        t        f«      r| D �cg c]  }t        |«      ‘Œ c}gS | gS c c}w r   )rf   r/   ÚtupleÚflatten)rp   Úis     r    ry   ry   m   s3   € Ü,6°vÄÄe¸}Ô,M Ö(˜AŒW�Q�ZÒ(ÐZÐZÐSYÐZÐZùÒ(s   ›4c                 óz   — | D ]5  }t        |t        t        f«      s|j                  |«      nt	        ||«       Œ7 |S r   )rf   r/   rx   ÚappendÚupdate_flatten_list)rp   Úres_listrz   s      r    r}   r}   q   s>   € Øò eˆÜ",¨Q´´u°Ô">ˆ�‰˜ÔÔDWÐXYÐ[cÓDdùðeà€Or!   c                 óx  — | d   j                   d   }| D �ci c]  }|dddœ“Œ
 }}t        t        |«      «      D �cg c]  }dt        |dz   «      z   ‘Œ }}t	        |«      D ]J  \  }}ddi||<   ||   j                   }t	        |«      D ]!  \  }	}
|
|k(  sŒ||   j                  |	di«       Œ# ŒL ||fS c c}w c c}w )	NrV   éÿÿÿÿrl   Úseq_len)r   r5   Úoutput_r5   r   )r:   Úranger9   r0   Ú	enumerateÚupdate)Úexample_inputsÚoutputs_flattenrm   ÚkeyÚdynamic_axesrz   Úoutput_namesÚoutput_nameÚdimsÚjÚdims              r    Úbuild_dynamic_axesr�   w   så   € Ø$ [Ñ1×7Ñ7¸Ñ;€OàDRÖS¸S�C˜\¨iÑ8Ñ8ÐS€LÐSä49¼#¸oÓ:NÓ4OÖP¨q�I¤ A¨¡E£
Ó*ÐP€LÐPÜ# LÓ1ò A‰ˆˆ;Ø%&¨Ð$5ˆ�[Ñ!Ø˜qÑ!×'Ñ'ˆÜ “oò 	A‰FˆAˆsØ�oÓ%Ø˜[Ñ)×0Ñ0°!°Y°Õ@ñ	AðAð ˜Ð%Ð%ùò TùâPs
   —B2¼B7c           	      ó¬  — t        | |d¬«      }|€t        j                  | › d�«       yt        j                  | › d�«       |j	                  «       D ��ci c]  \  }}||j                  «       “Œ }	}}|j                  ||	«      }
t        |«      t        |
«      k7  r.t        j                  dt        |«      › dt        |
«      › �«       yt        t        |«      «      D ]Ö  }t        j                  t        j                  |
|   ||   j                  «       j                  «       z
  «      «      }|dkD  rt        j                  d|› d	|› �«       |rd
nd}|rdnd}t        j                  |
|   ||   j                  «       j                  «       ||¬«      rŒ¸t        j                  d|› d|› d|› �«        y t        j                  d| › �«       yc c}}w )NF)Úenable_all_optimizationz is an invalid ONNX modelz is a valid ONNX modelz"Number of output tensors expected z, got g-Cëâ6?zMax absolute diff=z for output tensor gš™™™™™©?gš™™™™™¹?)ÚrtolÚatolzOutput tensor z is not close: rtol=z, atol=z0inference result of onnxruntime is validated on T)r   ÚloggerÚerrorÚinfoÚitemsr]   Úrunr9   rƒ   ÚamaxÚabsÚcpuÚallclose)Úonnx_model_pathr†   Úexample_outputs_flattenÚuse_gpuÚfp16rŠ   Útest_sessionÚkÚtÚexample_ort_inputsÚexample_ort_outputsrz   Úabs_diffr’   r“   s                  r    Úvalidate_onnx_modelr§   †   sÎ  € ô .¨o¸wÐ`eÔf€LØÐÜ�‰˜Ð(Ð(AÐBÔCØä
‡K�K�?Ð#Ð#9Ð:Ô;ð 4B×3GÑ3GÓ3I×J©4¨1¨a˜!˜QŸW™W›Y™,ÐJÐÑJØ&×*Ñ*¨<Ð9KÓLÐÜ
Ð"Ó#¤sÐ+>Ó'?Ò?Ü�‰Ø0´Ð5LÓ1MÐ0NÈfÔUXÐYlÓUmÐTnÐoô	
ð ä”3Ð.Ó/Ó0ò ˆÜ—:‘:œeŸi™iÐ(;¸AÑ(>ÐAXÐYZÑA[×A_ÑA_ÓAa×AgÑAgÓAiÑ(iÓjÓkˆØ�dŠ?Ü�K‰KÐ,¨X¨JÐ6IÈ!ÈÐMÔNá‰u $ˆÙ‰u $ˆÜ�~‰~Ø Ñ"Ø# AÑ&×*Ñ*Ó,×2Ñ2Ó4ØØö	
ô �L‰L˜>¨!¨Ð,@ÀÀÀgÈdÈVÐTÔUÙðô  ‡K�KÐBÀ?ÐBSÐTÔUØùó3 Ks   ÁGÚonnx_dirÚ
model_nameÚinput_countÚoptimized_by_scriptrŸ   Ú	precisionÚoptimized_by_onnxruntimeÚuse_external_datac                 ód  — ddl m}  |dd|«      }	|s|	› d|› �}
n|rdnd}|	› d|› d|› d|› �}
|r|
dz  }
| }|rV|sTt        j                  j	                  | |
«      }t        j                  j                  |«      st        j                  |«       t        j                  j	                  ||
› d�«      S )	Nr   )Úsubz[^a-zA-Z0-9_]Ú_Úgpur›   Ú_ortz.onnx)Úrer°   ÚosÚpathÚjoinÚexistsÚmakedirs)r¨   r©   rª   r«   rŸ   r¬   r­   r®   r°   Únormalized_model_nameÚfilenameÚdeviceÚ	directorys                r    Úget_onnx_file_pathr¾   ²   sµ   € õ áÐ 0°#°zÓBÐáØ+Ð,¨A¨k¨]Ð;‰á!‘ uˆØ+Ð,¨A¨k¨]¸!¸I¸;ÀaÈÀxÐPˆáØ�FÑˆà€IáÑ!9Ü—G‘G—L‘L ¨8Ó4ˆ	Ü�w‰w�~‰~˜iÔ(Ü�K‰K˜	Ô"ä�7‰7�<‰<˜	 h Z¨uÐ#5Ó6Ð6r!   Ú	file_pathÚsuffixÚreturnc                 ó¬   — t        | «      }t        |j                  j                  |j                  |z   «      j                  |j                  «      «      S )a  
    Append a suffix at the filename (before the extension).
    Args:
        path: pathlib.Path The actual path object we would like to add a suffix
        suffix: The suffix to add
    Returns: path with suffix appended at the end of the filename and before extension
    )r   r0   ÚparentÚjoinpathÚstemÚwith_suffixrÀ   )r¿   rÀ   r¶   s      r    Úadd_filename_suffixrÇ   Ó   s?   € ô �	‹?€DÜˆt�{‰{×#Ñ# D§I¡I°Ñ$6Ó7×CÑCÀDÇKÁKÓPÓQÐQr!   c                 ó  — |st         j                  j                  |«      sFt        |«      j                  j                  dd¬«       ddlm}m}  || ||d¬«      } ||«      ||<   y t        j                  d|› �«       y )NT©ÚparentsÚexist_okr   )Úget_fusion_statisticsÚoptimize_by_onnxruntimeéc   )rŸ   Úoptimized_model_pathÚ	opt_levelú'Skip optimization since model existed: )rµ   r¶   r¸   r   rÃ   ÚmkdirÚ	optimizerrÌ   rÍ   r”   r–   )r�   Úort_model_pathrŸ   Ú	overwriteÚmodel_fusion_statisticsrÌ   rÍ   r±   s           r    Úoptimize_onnx_model_by_ortr×   ß   su   € ÙœŸ™Ÿ™ ~Ô6Üˆ^Ó×#Ñ#×)Ñ)°$ÀÐ)ÔFßLñ $ØØØ!/Øô	
ˆñ 3HÈÓ2WÐ Ò/ä�‰Ð=¸nÐ=MÐNÕOr!   c           
      ót  — |st         j                  j                  |«      sÿt        |«      j                  j                  dd¬«       ddlm} ddlm	} |€ ||«      }|j                  |«       |t        j                  k(  rd|_        |t        j                  k(  rd|_        |dk(  rd}d} || |||d||d¬«      }|d	k(  s|d
k(  r|j!                  «        |j#                  «       |	|<   |t        j                  k(  r|j%                  d¬«       |j'                  ||
«       y t(        j+                  d|› �«       y )NTrÉ   r   )ÚFusionOptions)Úoptimize_modelFrP   )Ú	num_headsrj   rÐ   Úoptimization_optionsrŸ   Úonly_onnxruntimeÚ
bert_kerasÚbert_tf)Úkeep_io_typesrÑ   )rµ   r¶   r¸   r   rÃ   rÒ   Úfusion_optionsrÙ   rÓ   rÚ   Úuse_raw_attention_maskr   ÚFLOAT16Úenable_gelu_approximationÚINT8Úenable_embed_layer_normÚuse_dynamic_axesÚget_fused_operator_statisticsÚconvert_float_to_float16Úsave_model_to_filer”   r–   )r�   rÏ   r\   Únum_attention_headsrj   rŸ   r¬   râ   rÕ   rÖ   Úuse_external_data_formatrÜ   rÙ   rÚ   Ú	opt_models                  r    Úoptimize_onnx_modelrî   ð   s:  € ñ œŸ™Ÿ™Ð';Ô<ÜÐ!Ó"×)Ñ)×/Ñ/¸ÀtÐ/ÔLå0Ý,àÐ'Ù#0°Ó#<Ð Ø×3Ñ3Ð4JÔKØœ	×)Ñ)Ò)Ø=AÐ Ô:Øœ	Ÿ™Ò&Ø;@Ð Ô8ð ˜ÒØ"#ÐØˆKñ
 #ØØØ)Ø#ØØ!5ØØ"ô	
ˆ	ð ˜Ò%¨°yÒ)@Ø×&Ñ&Ô(à8A×8_Ñ8_Ó8aÐÐ 4Ñ5àœ	×)Ñ)Ò)Ø×.Ñ.¸TÐ.ÔBà×$Ñ$Ð%9Ð;SÕTä�‰Ð=Ð>RÐ=SÐTÕUr!   c                 óê   — |�+|t         v r|S t        ddj                  t         «      z   «      ‚| t        v rydd l}|j                  d| «      �y|j                  d| «      �y|j                  d	| «      �y
y)NzValid model class: ú r   r   z-squad$ÚAutoModelForQuestionAnsweringz-mprc$Ú"AutoModelForSequenceClassificationÚgpt2ÚAutoModelWithLMHeadÚ	AutoModel)r   Ú	Exceptionr·   r   r´   Úsearch)r©   Úcustom_model_classr´   s      r    Úmodelclass_dispatcherrù   +  s~   € ØÐ%Ø¤Ñ.Ø%Ð%äÐ1°C·H±H¼]Ó4KÑKÓLÐLàÔ+Ñ+Ø%ãà	‡y�y�˜JÓ'Ð3Ø.Ø	�‰�8˜ZÓ	(Ð	4Ø3Ø	�‰�6˜:Ó	&Ð	2Ø$àr!   c                 óD  — t        | |«      }|dk(  rC|r)t        €t        d«      ‚t        j                  | ||¬«      S t	        j                  | ||¬«      S |rd|z   }t        d|g¬«      }t        j                  d|› �«       t        ||«      }|j                  | ||¬«      S )Nr   zETensorFlow GPT-2 models are not available in Transformers 5 or later.)rn   Ú	cache_dirÚTFÚtransformers)ÚfromlistzModel class name: )	rù   r   ÚImportErrorÚfrom_pretrainedr   Ú
__import__r”   r–   Úgetattr)r©   rn   rû   rø   Úis_tf_modelÚmodel_class_nameÚtransformers_moduleÚmodel_classs           r    Úload_pretrained_modelr  A  s¶   € Ü,¨ZÐ9KÓLÐàÐ1Ò1ÙÜ%Ð-Ü!Ð"iÓjÐjÜ)×9Ñ9¸*ÈVÐ_hÔiÐiä'×7Ñ7¸
È6Ð]fÔgÐgáØÐ"2Ñ2Ðä$ ^Ð?OÐ>PÔQÐÜ
‡K�KÐ$Ð%5Ð$6Ð7Ô8ÜÐ-Ð/?Ó@€Kà×&Ñ& z¸&ÈIÐ&ÓVÐVr!   c                 ó
  — t        j                  | |¬«      }t        |d«      rd|_        t	        j
                  t        «      t	        j
                  d«      k\  rd|_        |j                  |«       t        | |||¬«      }||fS )N©rû   Úreturn_dictFú5.0Úeager)rn   rû   rø   )
r   r   Úhasattrr
  ÚpvÚVersionÚtransformers_versionÚ_attn_implementationÚmodifyr  )r©   r  rû   Úconfig_modifierrn   r   s         r    Úload_pt_modelr  V  sr   € Ü×'Ñ'¨
¸iÔH€FÜˆv�}Ô%Ø"ˆÔÜ	‡z�zÔ&Ó'¬2¯:©:°eÓ+<Ò<Ø&-ˆÔ#à×Ñ˜6Ô"ä! *°VÀyÐepÔq€Eà�5ˆ=Ðr!   c                 óÎ   — t        j                  | |¬«      }|j                  |«       t        «       }|j	                  «        t        | |||d¬«      }|j                  «        ||fS )Nr	  T)rn   rû   rø   r  )r   r   r  r   Úget_affinityr  Úset_affinity)r©   r  rû   r  rn   Úaffinity_settingr   s          r    Úload_tf_modelr  d  sj   € Ü×'Ñ'¨
¸iÔH€Fà×Ñ˜6Ô"ô 'Ó(ÐØ×!Ñ!Ô#Ü!ØØØØ&Øô€Eð ×!Ñ!Ô#à�5ˆ=Ðr!   c                 ó,   — ddl m}  || «      \  }}||fS )Nr   )Útf2pt_pipeline)Úconvert_tf_models_to_pytorchr  )r©   r  rn   r   s       r    Úload_pt_model_from_tfr  y  s   € õ <á" :Ó.�M€FˆEà�5ˆ=Ðr!   c                 ó€  — d}|rt        ||||d|«      }|j                  t        j                  j                  k(  r|||j                  fS |j                  t        j
                  j                  k(  s&|t        j                  k(  s|t        j                  k(  rÄt        || t        |«      d||d|«      }t        ||||j                  |j                  |||	|
|||«       |}|r!t        |||||t        j                  k(  |«      }|t        j                  k(  rGt        j                  d|› �«       t!        j"                  |||«       t        j                  d|› �«       |j                  t        j$                  j                  k(  r|rt'        |d«      }t)        ||||
|«       |||dv r|j*                  fS |j                  fS )NTFzQuantizing model: zFinished quantizing model: r³   rN   )r§   Únamer   ÚNOOPTrk   ÚBYSCRIPTr   rã   rå   r¾   r9   rî   rë   rj   r”   r–   r	   Úquantize_onnx_modelÚBYORTrÇ   r×   Ú
num_labels)r©   rì   r\   r¨   r   rŸ   r¬   Úoptimize_infoÚvalidate_onnxrâ   rÕ   rn   rÖ   r�   r†   rž   rŠ   rá   Úis_valid_onnx_modelrÏ   rÔ   s                        r    Úvalidate_and_optimize_onnxr(  ƒ  sè  € ð( ÐÙÜ1ØØØ#ØØØó
Ðð ×Ñœ]×0Ñ0×5Ñ5Ò5ØÐ 3°V×5FÑ5FÐFÐFð 	×Ñœm×4Ñ4×9Ñ9Ò9Øœ	×)Ñ)Ò)Øœ	Ÿ™Ò&ä1ØØÜ�ÓØØØØØ$ó	 
Ðô 	ØØ ØØ×&Ñ&Ø×ÑØØØ"ØØ#Ø$Øô	
ð /ˆÙÜ"5ØØØ'ØØœY×.Ñ.Ñ.Øó#Ðð œ	Ÿ™Ò&Ü�K‰KÐ,¨_Ð,=Ð>Ô?Ü×.Ñ.¨ÀÐQiÔjÜ�K‰KÐ5°oÐ5FÐGÔHà×Ñœ]×0Ñ0×5Ñ5Ò5ÙÜ0°À&ÓIˆNÜ&ØØØØØ'ôð 	ØØ'¨?Ñ:ˆ×Ñðð ð AG×@QÑ@Qðð r!   c                 ó¨  — t        | |||«      \  }}|j                  «        d }d }|dv r’t        j                  | |¬«      }t        j
                  j                  dd|j                  |j                  z  dz  t        j                  ¬«      j                  |j                  |j                  d«      } ||d¬«      }n-t        j                  | |¬«      }|j                  } |d	d¬«      }t        ||«      } |di |¤Ž}t        |t        t        f«      sJ d
t!        |«      › �«       ‚t#        |«      }t%        |g «      }t'        || t)        |«      d|	|
d|«      }|s t*        j,                  j/                  |«      �st0        j3                  d|› �«       t5        |«      j6                  j9                  dd¬«       d }d }|dv r|D �ci c]  }|ddi“Œ	 c}dg}}nt;        ||«      \  }}t=        «        t?        j@                  tB        «      t?        j@                  d«      k\  r#tE        |t        |jG                  «       «      «      n|}tI        |t        |jK                  «       «      |t        |jG                  «       «      ||d||¬«	       tM        «        nt0        j3                  d|› �«       tO        | |||||	|
|||||||||d |«      \  }} }!|| |!|fS c c}w )NrN   r	  r   é   rQ   rS   Úpt)Úreturn_tensorsúThis is a sample inputz%type of output is not list or tuple: FúExporting ONNX model to TrÉ   rR   Úlogitsr  )	r   r'   Úfr   rŠ   r‰   Údo_constant_foldingÚopset_versionrì   ú!Skip export since model existed: r$   )(r  r›   r   r   r]   r^   rc   r`   r>   Úreshaper   Úmodel_max_lengthrv   rf   r/   rx   Útypery   r}   r¾   r9   rµ   r¶   r¸   r”   r–   r   rÃ   rÒ   r�   rJ   r  r  r  r   Úkeysr
   ÚvaluesrL   r(  )"r©   r2  rì   r\   r  r  rû   r¨   r   rŸ   r¬   Úoptimizer_infor&  râ   rÕ   rÖ   rá   rn   r   r†   Úmax_input_sizeÚimage_processorÚdataÚ	tokenizerÚexample_outputsrž   r�   r‰   rŠ   rˆ   Úexport_modelÚonnx_model_filer'  rk   s"                                     r    Úexport_onnx_model_from_ptrA  ä  sï  € ô& " *¨k¸9ÀoÓV�M€FˆEà	‡I�I„Kà€NØ€Nà�_Ñ$Ü.×>Ñ>¸zÐU^Ô_ˆÜ�|‰|×#Ñ#Ø˜ &×"3Ñ"3°f×6GÑ6GÑ"GÈ!Ñ"KÔSX×S^ÑS^ð $ó 
ç
‰'�&×#Ñ# V×%6Ñ%6¸Ó
:ð 	ñ )¨¸dÔC‰ä!×1Ñ1°*È	ÔRˆ	Ø"×3Ñ3ˆÙ"Ð#;ÈDÔQˆä" >°;Ó?€NáÑ-˜nÑ-€Oä�o¬¬e }Ô5ÐvÐ9^Ô_cÐdsÓ_tÐ^uÐ7vÓvÐ5ô & oÓ6ÐÜ1Ð2IÈ2ÓNÐä(ØØÜˆKÓØØØØØ ó	€Oñ œŸ™Ÿ™ Õ7Ü�‰Ð.¨Ð.?Ð@ÔAÜˆ_Ó×$Ñ$×*Ñ*°4À$Ð*ÔGàˆØˆà˜Ñ(ØN\Ö)]Às¨#°°>Ð/BÑ*BÒ)]Ð`hÐ_i˜,‰Lä);¸NÐLcÓ)dÑ&ˆL˜,äÔ!ô �z‰zÔ.Ó/´2·:±:¸eÓ3DÒDô " %¬¨n×.AÑ.AÓ.CÓ)DÔEàð 	ô
 	ØÜ�~×,Ñ,Ó.Ó/ØÜ˜^×0Ñ0Ó2Ó3Ø%Ø%Ø $Ø'Ø%=õ
	
ô 	 Õ!ä�‰Ð7¸Ð7HÐIÔJä7QØØ ØØØØØØØØØØØØØØØØó%8Ñ4€OÐ(¨*ð* Ð/°¸^ÐKÐKùò] *^s   ÇKc                 óê  — dd l }|j                  j                  g d«       t        j                  | |¬«      }|j
                  €|j                  ddi«       |j                  }t        | |||«      \  }}|j                  t        |«      «        |dd|dd	¬
«      }t        ||«      }|j                  r |dd|dd	¬
«      j                  |d<   | dk(  rV|j                  j                  dd|j                   g«      |d<   |j                  j                  dd|j"                  g«      |d<   	 |j$                  rd|_         ||d¬«      }d }| dk(  s| dk(  rdg}|d   }ddlm} |j-                  |«      }t/        || t        |«      d|	|
d|«      }|r|d d n|}|s t0        j2                  j5                  |«      �sßt6        j9                  d|› �«       |s&t;        |«      j<                  j?                  d	d	¬«       dd l }dd l!}|jD                  jG                  |jD                  jH                  «       g }|jK                  «       D ]T  \  } }!d gt        |!jL                  «      z  }"|jO                  |jQ                  tS        |"«      |!jT                  | ¬«      «       ŒV |jV                  jY                  |tS        |«      |||¬«      \  }#}#|ré|j[                  |d«      5 }$|$j]                  t0        j2                  j_                  |«      «       d d d «       t0        j2                  ja                  t0        j2                  j_                  |«      d«      }t0        j2                  j5                  |«      rt1        jb                  |«       t1        jd                  ||«       nt6        j9                  d|› �«       |dz   }tg        | |||||	|
|||||||||||«      \  }%}&}'|%|&|'|fS # t&        $ r Y �Œ©w xY w# 1 sw Y   ŒäxY w)Nr   ÚGPUr	  Ú	pad_tokenz[PAD]r-  ÚtfÚ
max_lengthT)r,  rF  ÚpaddingÚ
truncationrY   zunc-nlp/lxmert-base-uncasedr5   rZ   r[   F)Útrainingzxlnet-base-casedzxlnet-large-casedÚlast_hidden_state)Únestéûÿÿÿr.  rÉ   )r  )Úinput_signatureÚopsetÚlarge_modelÚoutput_pathÚrz__MODEL_PROTO.onnxr3  Ú_tf)4Ú
tensorflowrn   Úset_visible_devicesr   r   rD  Úadd_special_tokensr5  r  Úresize_token_embeddingsr9   rv   re   rV   r^   Únormalrh   ri   Ú	use_cacherö   Útensorflow.python.utilrK  ry   r¾   rµ   r¶   r¸   r”   r–   r   rÃ   rÒ   ÚzipfileÚtf2onnxÚloggingÚ	set_levelÚERRORr—   r:   r|   Ú
TensorSpecrx   r8   ÚconvertÚ
from_kerasÚZipFileÚ
extractallÚdirnamer·   ÚremoveÚrenamer(  )(r©   r2  rì   r\   r  r  rû   r¨   r   rŸ   r¬   r9  r&  râ   rÕ   rÖ   rá   rE  r=  r:  rn   r   r†   r>  rŠ   rK  rž   r�   Útf_internal_model_pathrZ  r[  Úspecsr  ÚvaluerŒ   r±   ÚzÚoptimized_onnx_pathr'  rk   s(                                           r    Úexport_onnx_model_from_tfrl  X  sõ  € ó( à‡I�I×!Ñ! " eÔ,ä×-Ñ-¨jÀIÔN€Ià×ÑÐ"Ø×$Ñ$ k°7Ð%;Ô<Ø×/Ñ/€Nä! *¨k¸9ÀoÓV�M€FˆEØ	×!Ñ!¤# i£.Ô1áØ ØØ!ØØô€Nô # >°;Ó?€Nà× Ò Ù.7Ø$ØØ%Ø Øô/
÷ ‰)ð 	Ð*Ñ+ð Ð2Ò2Ø)+¯©×)9Ñ)9¸1¸aÀ×AWÑAWÐ:XÓ)Yˆ�~Ñ&Ø')§y¡y×'7Ñ'7¸¸A¸v×?TÑ?TÐ8UÓ'Vˆ�|Ñ$ðà×ÒØ$ˆFÔñ ˜N°UÔ;€OØ€Lð Ð'Ò'¨:Ð9LÒ+LØ+Ð,ˆØ)Ð*=Ñ>ˆõ ,à"Ÿl™l¨?Ó;Ðä(ØØÜˆKÓØØØØØ ó	€Oñ 6N˜_¨S¨bÑ1ÐSbÐáœŸ™Ÿ™Ð'=Õ>Ü�‰Ð.¨Ð.?Ð@ÔAÙ'ÜÐ'Ó(×/Ñ/×5Ñ5¸dÈTÐ5ÔRããà�‰×!Ñ! '§/¡/×"7Ñ"7Ô8ØˆØ)×/Ñ/Ó1ò 	M‰KˆD�%Ø�6œC §¡Ó,Ñ,ˆDØ�L‰L˜Ÿ™¤u¨T£{°E·K±KÀd˜ÓKÕLð	Mð �‰×)Ñ)ØÜ! %›LØØ0Ø.ð *ó 
‰ˆˆ1ñ $à—‘Ð!7¸Ó=ð FÀØ—‘œRŸW™WŸ_™_Ð-CÓDÔE÷Fä%'§W¡W§\¡\´"·'±'·/±/ÐBXÓ2YÐ[oÓ%pÐ"Ü�w‰w�~‰~˜oÔ.Ü—	‘	˜/Ô*Ü�I‰IÐ,¨oÕ>ô 	�‰Ð7¸Ð7HÐIÔJà˜eÑ#€JÜ;UØØ ØØØØØØØØØØØØØØØØó%<Ñ8ÐÐ,¨jð, 	ØØØð	ð øôg ò Úðú÷fFð Fús   Ä)O Ë/O)Ï	O&Ï%O&Ï)O2)r   Nr   )F)Dr\  rµ   Úpathlibr   r]   Úpackaging.versionÚversionr  r,   Úaffinity_helperr   Úbenchmark_helperr   r   r   Úhuggingface_modelsr   Úquantize_helperr	   Útorch_onnx_export_helperr
   rý   r   r   r   r   r   r  r   rÿ   Ú0onnxruntime.transformers.models.gpt2.gpt2_helperr   r   r   ÚenvironÚ	getLoggerr)   r”   r-   r.   r   r2   r<   rH   rJ   rL   Úint64rr   rv   ry   r}   r�   r§   r0   Úintr@   r¾   rÇ   r×   rî   rù   r  r  r  r  r(  rA  rl  r$   r!   r    ú<module>rz     s˜  ðó Û 	Ý ã Ý Û Ý +ß QÑ QÝ ,Ý *Ý 6ß VÓ VÝ <ðÝ,÷ñ ð &)€‡
�
Ð!Ñ "à	ˆ×	Ñ	˜8Ó	$€ôL˜EŸH™HŸO™Oô Lð �e—j‘jÐ!€
ó<òò$ð fk×epÑepó ò<"ò[òò&ð* ó)ðX7Øð7àð7ð ð7ð ð	7ð
 ð7ð ð7ð #ð7ð ó7ðB	R 3ð 	R°ð 	R¸ó 	RòPð: ó8Vòvó,Wò*òò*ò^òBqLóhRøðA ò Ø‚Oðús   ÁD ÄD$Ä#D$