Ë
    T^(hÚß  ã                   óä  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZmZ d dlZd dlmc mZ d dlmZ d dlmZmZ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$ dd
l%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZEmFZFmGZGmHZHmIZI  eH«       rd dlJmKZK  e$j˜                  eM«      ZNejž                  j¡                  dd«      j£                  «       eEv ZR	 dxdeSe+   deeeTeUeT   f      deUeT   fd„ZVg d¢ZWddgZXg ZYeWD ]:  ZZ e[eZe\«      reYj»                   eVdyi eZ¤Ž«       Œ$eYj»                   eVeZ«      «       Œ< g d¢Z^ e_ e` eaeYe^z   «      «      «      Zbdacd„ Zd	 dzd„Zed„ Zfd„ Zgd „ Zhd!„ Zid"„ Zjd{d#„Zkd$„ Zldd%œd&„Zmd'„ Znd(„ Zod|dd%œd)„Zpd|dd%œd*„Zqddd+œd,„Zrdd%œd-„Zsd.„ Ztdd%œd/„Zudd%œd0„Zvdddd1œd2„Zwdddd1œd3„Zxd4„ Zyd5„ Zzddd6œd7„Z{dd%œd8„Z|d9„ Z}ddd:œd;„Z~d<„ Zdxd=„Z€d>„ Z�d?„ Z‚d@„ ZƒdA„ Z„dxdB„Z…dxdC„Z†dD„ Z‡dE„ ZˆdF„ Z‰d}dG„ZŠ	 d~dH„Z‹dI„ ZŒdJ„ Z�dK„ ZŽdL„ Z�i ej,                  �j                   ed“ej,                  �j"                  �j$                  ee“ej,                  �j&                  ef“ej,                  �j(                  eg“ej,                  �j*                  eh“e�j,                  ei“ej,                  �j"                  �j,                  ek“ej,                  �j.                  ej“e�j0                  el“e�j2                  em“e�j4                  en“e�j6                  eo“e�j8                  ep“e�j:                  eq“e�j<                  er“e�j>                  es“e�j@                  �j>                  et“i e�jB                  eu“e�jD                  ev“e�jF                  ew“e�j@                  �jF                  ex“e�jH                  ey“e�j@                  �jJ                  ez“e�jL                  e{“e�jN                  e€“e�jP                  e�“e�j@                  �jP                  e‚“e�jR                  e|“e�j@                  �jR                  e}“e�jT                  e~“e�j@                  �jT                  e“ej,                  �jV                  eƒ“ej,                  �jX                  e„“e�jZ                  e…“¥e�j@                  �jZ                  e†e�j\                  e‡e�j@                  �j\                  eˆe�j^                  e‰ej,                  �j"                  �j`                  eŠej,                  �jb                  eŒej,                  �jd                  e�ej,                  �jf                  eŽe�jh                  e�i	¥Zµe\eef   e¶dM<   e‹eµej,                  �j"                  �jn                  <    G dN„ dOe«      Z¸ G dP„ dQe¸«      Z¹ G dR„ dSe¹«      Zº G dT„ dUe¸«      Z»	 dxdVedWeedX   edY   edZ   f   d[eeegef      defd\„Z¼ G d]„ d^eS«      Z½d_ede_eef   fd`„Z¾da„ Z¿dbeSe&   deege»f   fdc„ZÀ e½dde&fi  eÀe&«      ¬e«      ZÁ e½dfe'fi  eÀe'«      ¬e«      ZÂ e½dge(fi  eÀe(«      ¬e«      ZÃ e½dhe)fi  eÀe)«      ¬e«      ZÄddieÅdjeÅdkeeUeÅ      fdl„ZÆ G dm„ dne«      ZÇdoe�j�                  dpeUeT   fdq„ZÉd€ds„ZÊd€dt„ZËddeÇfdodrdpeeUeT      dueÌdveSeÇ   def
dw„ZÍy)�é    N)ÚAnyÚCallableÚLiteralÚOptionalÚUnion)Únn)ÚGraphÚGraphModuleÚNodeÚProxyÚTracer)Úcompatibility)Úis_fx_tracing©ÚParameterProxyé   )Úlogging)ÚCacheÚDynamicCacheÚ	SinkCacheÚStaticCache)ÚPretrainedConfigÚPreTrainedModel)Ú
get_values)Ú,MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMESÚ MODEL_FOR_BACKBONE_MAPPING_NAMESÚ!MODEL_FOR_CAUSAL_LM_MAPPING_NAMESÚMODEL_FOR_CTC_MAPPING_NAMESÚ3MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING_NAMESÚ,MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMESÚMODEL_FOR_IMAGE_MAPPING_NAMESÚ-MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING_NAMESÚ!MODEL_FOR_MASKED_LM_MAPPING_NAMESÚ'MODEL_FOR_MULTIPLE_CHOICE_MAPPING_NAMESÚ0MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING_NAMESÚ#MODEL_FOR_PRETRAINING_MAPPING_NAMESÚ*MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMESÚ-MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMESÚ,MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMESÚ/MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMESÚ(MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMESÚ,MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMESÚ6MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING_NAMESÚMODEL_MAPPING_NAMESé   )ÚENV_VARS_TRUE_VALUESÚTORCH_FX_REQUIRED_VERSIONÚget_torch_versionÚis_peft_availableÚis_torch_fx_available)Ú	PeftModelÚFX_DEBUG_MODEÚ Ú
model_nameÚsupported_tasksÚreturnc                 óÊ  — i dt         “dt        “dt        “dt        “dt        “dt
        “dt        “dt        “d	t        “d
t        “dt        “dt        “dt        “dt        “dt        “dt        “dt         “t"        t$        t&        dœ¥}|€|j)                  «       }t+        |t,        «      r|g}g }|D ]+  }||   j/                  | d «      }|sŒ|j1                  |«       Œ- |S )NÚdefaultÚpretrainingznext-sentence-predictionz	masked-lmz	causal-lmz
seq2seq-lmzspeech-seq2seqzmultiple-choicezdocument-question-answeringzquestion-answeringzsequence-classificationztoken-classificationzmasked-image-modelingzimage-classificationzzero-shot-image-classificationÚctczaudio-classification)zsemantic-segmentationÚbackbonezimage-feature-extraction)r.   r&   r%   r#   r   r)   r+   r$   r   r'   r*   r,   r"   r    r-   r   r   r(   r   r!   ÚkeysÚ
isinstanceÚstrÚgetÚappend)r8   r9   Útask_mappingÚmodel_class_namesÚtaskÚ
class_names         úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/utils/fx.pyÚ%_generate_supported_model_class_namesrJ   O   s`  € ðØÔ&ðàÔ:ðð 	#Ô$Tðð 	Ô6ð	ð
 	Ô6ðð 	ÔBðð 	ÔBðð 	ÔBðð 	&Ô'Zðð 	ÔHðð 	"Ô#Rðð 	Ô Lðð 	 Ô!Nðð 	Ô Lðð 	)Ô*`ðð  	Ô*ð!ð" 	Ô Lð#ô$ "OÜ4Ü$Aò)€Lð. ÐØ&×+Ñ+Ó-ˆÜ�/¤3Ô'Ø*Ð+ˆàÐØò 1ˆØ! $Ñ'×+Ñ+¨J¸Ó=ˆ
ÚØ×$Ñ$ ZÕ0ð1ð
 Ðó    )4ÚaltclipÚalbertÚbartÚbertÚ
blenderbotzblenderbot-smallÚbloomÚclipÚconvnextÚdebertaz
deberta-v2Údinov2Ú
distilbertz
donut-swinÚelectraÚgpt2Úgpt_neoÚgptjÚhieraÚhubertÚijepaÚlayoutlmÚllamaÚcohereÚlxmertÚm2m_100ÚmarianÚmbartúmegatron-bertÚmistralÚmixtralÚ
mobilebertÚmt5ÚnezhaÚoptÚpegasusÚplbartÚqwen2Ú	qwen2_moeÚqwen3Ú	qwen3_moeÚresnetÚrobertaÚ	segformerÚspeech_to_textÚspeech_to_text_2ÚswinÚt5ÚtrocrÚvitÚxglmÚwav2vec2r_   rk   )ÚCLIPTextModelÚCLIPTextModelWithProjectionÚCLIPVisionModelÚCLIPVisionModelWithProjectionÚAltCLIPTextModelÚAltCLIPVisionModelÚGitVisionModelÚGPT2DoubleHeadsModelÚSpeech2Text2DecoderÚTrOCRDecoderÚPeftModelForCausalLMÚPeftModelForSeq2SeqLMc                 ó¢   — t        j                  g |j                  ¢| j                  j                  d   ‘­d| j                  j                  dœŽS ©NéÿÿÿÿÚmeta)ÚdeviceÚdtype)ÚtorchÚemptyÚshapeÚweightrŽ   ©ÚselfÚinputs     rI   Útorch_nn_embeddingr–   Î   s@   € Ü�;‰;Ðc˜Ÿ™Ðc T§[¡[×%6Ñ%6°rÑ%:ÑcÀ6ÐQU×Q\ÑQ\×QbÑQbÒcÐcrK   Fc                 óz   — t        j                  g | j                  ¢|j                  d   ‘­d|j                  dœŽS rŠ   )r�   r�   r‘   rŽ   )r•   r’   Úpadding_idxÚmax_normÚ	norm_typeÚscale_grad_by_freqÚsparses          rI   Útorch_nn_functional_embeddingr�   Ò   s3   € ô �;‰;ÐY˜Ÿ™ÐY V§\¡\°"Ñ%5ÑY¸fÈFÏLÉLÒYÐYrK   c                 ó   — |S ©N© r“   s     rI   Útorch_nn_layernormr¡   Ø   ó   € Ø€LrK   c                 ó   — |S rŸ   r    r“   s     rI   Útorch_nn_groupnormr¤   Ü   r¢   rK   c                 óf   — t        j                  |j                  d d | j                  fz   d¬«      S )Nr‹   rŒ   ©r�   )r�   r�   r‘   Úout_featuresr“   s     rI   Útorch_nn_linearr¨   à   s,   € Ü�;‰;�u—{‘{ 3 BÐ'¨4×+<Ñ+<Ð*>Ñ>ÀvÔNÐNrK   c                 ó   — | S rŸ   r    ©Úxs    rI   Ú
torch_relur¬   ä   ó   € Ø€HrK   c                 ó   — |S rŸ   r    )r”   r«   s     rI   Útorch_nn_relur¯   è   r­   rK   c                 ó    — |st        d«      ‚| S )Nz>Don't support in-place functional.relu for MetaTensor analysis©Ú
ValueError)r«   Úinplaces     rI   Útorch_nn_functional_relur´   ì   s   € ÙÜÐYÓZÐZØ€HrK   c                 ór   — | j                  d¬«      |j                  d¬«      z   |j                  d¬«      z   S ©NrŒ   r¦   ©Úto)Ú	conditionr«   Úys      rI   Útorch_wherer»   ò   s5   € ð �<‰<˜vˆ<Ó&¨¯©°V¨Ó)<Ñ<¸q¿t¹tÈ6¸tÓ?RÑRÐRrK   ©Úoutc                ó    — |�t        d«      ‚| S )Nz2Don't support in-place abs for MetaTensor analysisr±   )r•   r½   s     rI   Ú	torch_absr¿   ø   s   € Ø
€ÜÐMÓNÐNØ€LrK   c                  ó|  — t        | «      }d}|dk(  rd}| d   }n|dk(  r| \  }}n| \  }}}t        |t        «      rt        |«      }t        |t        «      rt        |«      }t        |t        «      rt        |«      }|j	                  d|«      }|j	                  d«      }t        j                  ||z
  |z  |d¬«      S )Nr/   r   r   ÚsteprŽ   rŒ   ©rŽ   r�   )ÚlenrA   ÚfloatÚintrC   r�   r�   )ÚargsÚkwargsÚnrÁ   ÚstartÚendrŽ   s          rI   Útorch_arangerË   þ   s´   € ÜˆD‹	€AØ€DØˆA‚vØˆØ�1‰g‰Ø	
ˆaŠØ‰
ˆ‰sàÑˆˆs�DÜ�%œÔÜ�E“
ˆÜ�#”uÔÜ�C“ˆÜ�$œÔÜ�4‹yˆØ�:‰:�f˜dÓ#€DØ�J‰J�wÓ€EÜ�;‰;˜˜e™¨Ñ,°EÀ&ÔIÐIrK   c                  ó¶   — t        | «      } t        | «      dkD  rd| d<   nd|d<   t        |«      }|j                  dd «       t	        j
                  | i |¤ddi¤ŽS )Nr/   Ú
fill_valuer�   rŒ   )ÚlistrÃ   ÚdictÚpopr�   Úfull)rÆ   rÇ   Úkwargs_without_devices      rI   Ú
torch_fullrÓ     s]   € Ü�‹:€Dä
ˆ4ƒy�1‚}ØˆˆQŠà ˆˆ|ÑÜ  ›LÐØ×Ñ˜h¨Ô-Ü�:‰:�tÐDÐ4ÑD¸VÒDÐDrK   c                ó$  ‡— ‰€|€dŠ‰€|�|Š‰dk  r| d   j                  «       ‰z   Š| D �cg c]  }|j                  ‘Œ }}t        |d   «      }t        ˆfd„|D «       «      }|d ‰ |gz   |‰dz   d  z   }t	        j
                  |d¬«      S c c}w )Nr   c              3   ó(   •K  — | ]	  }|‰   –— Œ y ­wrŸ   r    )Ú.0r‘   Údims     €rI   ú	<genexpr>ztorch_cat.<locals>.<genexpr>(  s   øè ø€ Ò:¨%˜5 �:Ñ:ùs   ƒr/   rŒ   r¦   )r×   r‘   rÎ   Úsumr�   r�   )	Útensorsr×   Úaxisr½   ÚtÚshapesr‘   Úconcatenated_dimÚfinal_shapes	    `       rI   Ú	torch_catrà     s«   ø€ Ø
€{�t�|ØˆØ
€{�tÐ'ØˆØ
ˆQ‚wØ�a‰j�n‰nÓ Ñ$ˆØ&Ö'˜!ˆa�g‹gÐ'€FÐ'Ü�˜‘‹O€EÜÓ:°6Ô:Ó:ÐØ˜˜�+Ð!1Ð 2Ñ2°U¸3À¹7¸9Ð5EÑE€KÜ�;‰;�{¨6Ô2Ð2ùò	 (s   ­Bc                óê   — |€|€d}|€|�|}|dk  r| d   j                  «       dz   |z   }t        | d   j                  «      }|j                  |t	        | «      «       t        j                  |d¬«      S ©Nr   r/   rŒ   r¦   )r×   rÎ   r‘   ÚinsertrÃ   r�   r�   )rÚ   r×   rÛ   r½   r‘   s        rI   Útorch_stackrä   -  sw   € Ø
€{�t�|ØˆØ
€{�tÐ'ØˆØ
ˆQ‚wØ�a‰j�n‰nÓ Ñ" SÑ(ˆÜ�˜‘×!Ñ!Ó"€EØ	‡L�L�”c˜'“lÔ#Ü�;‰;�u VÔ,Ð,rK   )Úalphar½   c                ó^  — t        | t        j                  «      st        j                  |d¬«      S t        |t        j                  «      st        j                  | d¬«      S t	        | j                  «       |j                  «       «      }t        | j                  «      dg|| j                  «       z
  z  z   }t        |j                  «      dg||j                  «       z
  z  z   }g }t        |«      D ]#  }|j                  t	        ||   ||   «      «       Œ% t        j                  |d¬«      S )NrŒ   r¦   r/   )rA   r�   ÚTensorÚ
empty_likeÚmaxr×   rÎ   r‘   ÚrangerD   r�   )	r•   Úotherrå   r½   Ú
max_lengthÚinput_shapeÚother_shaper‘   Úis	            rI   Ú	torch_addrð   9  së   € Ü�eœUŸ\™\Ô*Ü×Ñ ¨fÔ5Ð5Ü�eœUŸ\™\Ô*Ü×Ñ ¨fÔ5Ð5Ü�U—Y‘Y“[ %§)¡)£+Ó.€JÜ�u—{‘{Ó# q c¨Z¸%¿)¹)»+Ñ-EÑ&FÑF€KÜ�u—{‘{Ó# q c¨Z¸%¿)¹)»+Ñ-EÑ&FÑF€KØ€EÜ�:Óò :ˆØ�‰”S˜ Q™¨°Q©Ó8Õ9ð:ä�;‰;�u VÔ,Ð,rK   c                ó   — t        | ||¬«      S )Nr¼   )rð   )r•   rë   r½   s      rI   Ú	torch_mulrò   G  s   € Ü�U˜E sÔ+Ð+rK   c                 ó   — t        | |«      S rŸ   )rò   )r”   rë   s     rI   Útorch_tensor_mulrô   K  s   € Ü�T˜5Ó!Ð!rK   c                óÒ  — | j                  «       }|j                  «       }d }|dk(  r	|dk(  rd }�nŠ|dk(  r)|dk(  r$| j                  d«      |j                  d«      f}�n\|dk(  r|dk(  r|j                  d«      f}�n>|dk(  r|dk(  r| j                  d«      f}�n t        | j                  «       |j                  «       «      }t        | j                  «      }t        |j                  «      }|dk(  rdg|z   }|dk(  r|j                  d«       dg||z
  z  t        | j                  «      z   }dg||z
  z  t        |j                  «      z   }g }t        |«      D ]#  }	|j                  t        ||	   ||	   «      «       Œ% |d   |d<   |d   |d<   |dk(  r|j                  d«       |dk(  r|j                  d«       |€t        j                  dd¬«      S t        j                  |d	diŽS )
Nr/   r   r   r‹   éþÿÿÿç        rŒ   r¦   r�   )r×   Úsizeré   rÎ   r‘   rD   rê   rÐ   r�   Útensorr�   )
r•   rë   r½   Úd1Úd2r‘   rì   Úshape1Úshape2rï   s
             rI   Útorch_matmulrþ   O  sÁ  € Ø	�‰‹€BØ	�‰‹€BØ€EØ	ˆQ‚w�2˜’7ØŠØ	ˆqŠ�R˜1’WØ—‘˜A“ §
¡
¨1£Ð.ŠØ	ˆqŠ�R˜1’WØ—‘˜A“Ð ŠØ	ˆqŠ�R˜1’WØ—‘˜A“Ð Šä˜Ÿ™› e§i¡i£kÓ2ˆ
Ü�e—k‘kÓ"ˆÜ�e—k‘kÓ"ˆØ�Š7Ø�S˜6‘\ˆFØ�Š7Ø�M‰M˜!ÔØ�˜ b™Ñ)¬D°·±Ó,=Ñ=ˆØ�˜ b™Ñ)¬D°·±Ó,=Ñ=ˆØˆÜ�zÓ"ò 	4ˆAØ�L‰Lœ˜V A™Y¨¨q©	Ó2Õ3ð	4à˜2‘Jˆˆb‰	Ø˜2‘Jˆˆb‰	Ø�Š7Ø�I‰I�bŒMØ�Š7Ø�I‰I�bŒMØ€}Ü�|‰|˜C¨Ô/Ð/Ü�;‰;˜Ð- fÑ-Ð-rK   c                óŽ   — |�t        d«      ‚| j                  \  }}}|j                  \  }}}t        j                  |||d¬«      S )Nz2Don't support in-place bmm for MetaTensor analysisrŒ   r¦   )r²   r‘   r�   r�   )r•   Úmat2r½   Ú
batch_sizerÈ   ÚmÚ_Úps           rI   Ú	torch_bmmr  s  sG   € Ø
€ÜÐMÓNÐNØ—{‘{Ñ€J��1Ø�j‰j�G€A€qˆ!Ü�;‰;�z 1 a°Ô7Ð7rK   ©Úbetarå   r½   c                ó4   — |�t        d«      ‚t        ||«      S )Nz6Don't support in-place baddbmm for MetaTensor analysis)r²   r  )r•   Úbatch1Úbatch2r  rå   r½   s         rI   Útorch_baddbmmr  {  s    € Ø
€ÜÐQÓRÐRÜ�V˜VÓ$Ð$rK   c                ó$   — t        | |||||¬«      S )Nr  )r  )r”   r	  r
  r  rå   r½   s         rI   Útorch_tensor_baddbmmr  �  s   € Ü˜˜v v°DÀÈ3ÔOÐOrK   c                 ó^   — d„ |D «       }t        j                  | g|¢­Ž j                  d«      S )Nc              3   óJ   K  — | ]  }t        j                  |d ¬«      –— Œ y­w)Úcpur¦   N)r�   rè   )rÖ   Úoperands     rI   rØ   ztorch_einsum.<locals>.<genexpr>‡  s    è ø€ ÒYÀWœ×)Ñ)¨'¸%×@Ð@ÑYùs   ‚!#rŒ   )r�   Úeinsumr¸   )ÚequationÚoperandsÚconcrete_operandss      rI   Útorch_einsumr  …  s.   € áYÐPXÔYÐÜ�<‰<˜Ð5Ð#4Ò5×8Ñ8¸Ó@Ð@rK   c                 óš   — t        | j                  «      }t        |«      D ]  \  }}||xx   |z  cc<   Œ t        j                  |d¬«      S r¶   )rÎ   r‘   Ú	enumerater�   r�   )r”   Úsizesr‘   rï   r«   s        rI   Útorch_tensor_repeatr  ‹  sF   € Ü�—‘Ó€EÜ˜%Ó ò ‰ˆˆ1Øˆa‹�A‰Œðä�;‰;�u VÔ,Ð,rK   )r×   Úoutput_sizec                 óš  — t        |«      }|dk(  r|�|n|d   j                  «       g}nŽt        |d   j                  «      }| €|dkD  r|d   } nt        |«      g}d} |d   }t	        |t
        «      st        j                  |«      dk(  r|| xx   t        |«      z  cc<   n|�|n|j                  «       || <   t        j                  |ddiŽS )Nr/   r   r   r�   rŒ   )	rÃ   rÙ   rÎ   r‘   rA   rÅ   r�   Únumelr�   )r×   r  rÆ   Únum_argsr‘   Úrepeatss         rI   Útorch_repeat_interleaver   ’  sÁ   € Ü�4‹y€HØ�1‚}Ø +Ð 7‘¸TÀ!¹W¿[¹[»]ÐK‰ä�T˜!‘W—]‘]Ó#ˆØˆ;Ø˜!Š|Ø˜1‘g‘ä˜U›˜�Ø�Ø�q‘'ˆÜ�gœsÔ#¤u§{¡{°7Ó';¸qÒ'@Ø�#‹Jœ#˜g›,Ñ&ŒJà(3Ð(?™ÀWÇ[Á[Ã]ˆE�#‰JÜ�;‰;˜Ð- fÑ-Ð-rK   c                ór   — t        | j                  «      }t        |«      ||<   t        j                  |ddiŽS ©Nr�   rŒ   )rÎ   r‘   rÃ   r�   r�   )r•   r×   Úindexr½   r‘   s        rI   Útorch_index_selectr$  ¦  s1   € Ü�—‘Ó€EÜ�U“€Eˆ#�JÜ�;‰;˜Ð- fÑ-Ð-rK   c                 ó   — t        | ||«      S rŸ   )r$  ©r”   r×   r#  s      rI   Útorch_tensor_index_selectr'  ¬  s   € Ü˜d C¨Ó/Ð/rK   )Úsparse_gradr½   c                óz   — t        | j                  «      }|j                  |   ||<   t        j                  |ddiŽS r"  )rÎ   r‘   r�   r�   )r•   r×   r#  r(  r½   r‘   s         rI   Útorch_gatherr*  °  s6   € Ü�—‘Ó€EØ—‘˜SÑ!€Eˆ#�JÜ�;‰;˜Ð- fÑ-Ð-rK   c                 ó   — t        | ||«      S rŸ   )r*  r&  s      rI   Útorch_tensor_gatherr,  ¶  s   € Ü˜˜c 5Ó)Ð)rK   c                 ó   — | S rŸ   r    )r•   ÚshiftsÚdimss      rI   Ú
torch_rollr0  º  r¢   rK   c                 ó   — | S rŸ   r    )r•   r/  s     rI   Ú
torch_flipr2  ¾  r¢   rK   c                 ó   — | S rŸ   r    )r”   r/  s     rI   Útorch_tensor_flipr4  Â  s   € Ø€KrK   c                 ó°  — |j                   d   }d }| j                  }|dk(  rd}|dk(  rt        |j                   «      }|€qt        |j                   «      }t        j                  |d|d   z  z   | j
                  d   | j                  d   dz
  z  z
  dz
  | j                  d   z  dz   «      }||d<   | j                  |d<   t        j                  |d	¬
«      S )Nr‹   Úvalid©r   r   Úsamer   r   r/   rö   rŒ   r¦   ©r‘   ÚpaddingrÎ   ÚmathÚfloorÚdilationÚkernel_sizeÚstrideÚout_channelsr�   r�   )r”   r•   Úl_inr‘   r:  Úl_outs         rI   Útorch_nn_conv1drC  Æ  sÝ   € Ø�;‰;�r‰?€DØ€EØ�l‰l€GØ�'ÒØˆØ�&ÒÜ�U—[‘[Ó!ˆØ€}Ü�U—[‘[Ó!ˆÜ—
‘
Ø�A˜ ™
‘NÑ" T§]¡]°1Ñ%5¸×9IÑ9IÈ!Ñ9LÈqÑ9PÑ%QÑQÐTUÑUÐY]×YdÑYdÐefÑYgÑgÐjkÑkó
ˆð ˆˆb‰	Ø×!Ñ!€Eˆ"�IÜ�;‰;�u VÔ,Ð,rK   c                 óh  — |j                   dd  \  }}d }| j                  }|dk(  rd}|dk(  rt        |j                   «      }|€Êt        |j                   «      }t        j                  |d|d   z  z   | j
                  d   | j                  d   dz
  z  z
  dz
  | j                  d   z  dz   «      }t        j                  |d|d   z  z   | j
                  d   | j                  d   dz
  z  z
  dz
  | j                  d   z  dz   «      }||g|dd  | j                  |d<   t        j                  |d	¬
«      S )Nrö   r6  r7  r8  r   r   r/   éýÿÿÿrŒ   r¦   r9  )r”   r•   Úh_inÚw_inr‘   r:  Úh_outÚw_outs           rI   Útorch_nn_conv2drJ  Ø  sK  € Ø—‘˜R˜SÐ!�J€Dˆ$Ø€EØ�l‰l€GØ�'ÒØˆØ�&ÒÜ�U—[‘[Ó!ˆØ€}Ü�U—[‘[Ó!ˆÜ—
‘
Ø�A˜ ™
‘NÑ" T§]¡]°1Ñ%5¸×9IÑ9IÈ!Ñ9LÈqÑ9PÑ%QÑQÐTUÑUÐY]×YdÑYdÐefÑYgÑgÐjkÑkó
ˆô —
‘
Ø�A˜ ™
‘NÑ" T§]¡]°1Ñ%5¸×9IÑ9IÈ!Ñ9LÈqÑ9PÑ%QÑQÐTUÑUÐY]×YdÑYdÐefÑYgÑgÐjkÑkó
ˆð ˜U�^ˆˆbˆcˆ
Ø×!Ñ!€Eˆ"�IÜ�;‰;�u VÔ,Ð,rK   c                 ó  — t        | j                  «      }|�2|dk  r| j                  «       |z   }||   dk(  r4|j                  |«       n"g }|D ]  }|dk(  rŒ	|j	                  |«       Œ |}t        j                  |d¬«      S râ   )rÎ   r‘   r×   rÐ   rD   r�   r�   )r•   r×   r‘   Ú	new_shapeÚ	dim_values        rI   Útorch_squeezerN  í  s†   € Ü�—‘Ó€EØ
€Ø�Š7Ø—)‘)“+ Ñ#ˆCØ�‰:˜Š?Ø�I‰I�c�Nàˆ	Øò 	(ˆIØ˜AŠ~ØØ×Ñ˜YÕ'ð	(ð ˆÜ�;‰;�u VÔ,Ð,rK   c                 ó   — t        | |«      S rŸ   )rN  ©r”   r×   s     rI   Útorch_tensor_squeezerQ  þ  s   € Ü˜˜sÓ#Ð#rK   c                 ó´   — t        | j                  «      }|dk  r| j                  «       dz   |z   }|j                  |d«       t	        j
                  |d¬«      S râ   )rÎ   r‘   r×   rã   r�   r�   )r•   r×   r‘   s      rI   Útorch_unsqueezerS    sJ   € Ü�—‘Ó€EØ
ˆQ‚wØ�i‰i‹k˜A‰o Ñ#ˆØ	‡L�L��aÔÜ�;‰;�u VÔ,Ð,rK   c                 ó   — t        | |«      S rŸ   )rS  rP  s     rI   Útorch_tensor_unsqueezerU  
  s   € Ü˜4 Ó%Ð%rK   c                 óÚ   — t        j                  t        j                  | d¬«      fi |¤Ž}t        |t         j                  «      r|j                  d«      S t        t        |d„ «      «      S )Nr  r¦   rŒ   c                 ó$   — | j                  d«      S ©NrŒ   r·   rª   s    rI   ú<lambda>z*torch_unique_consecutive.<locals>.<lambda>  s   € ¨1¯4©4°«<€ rK   )r�   Úunique_consecutiveÚ
zeros_likerA   rç   r¸   ÚtupleÚmap)r•   rÇ   Úoutputs      rI   Útorch_unique_consecutiver_    sT   € Ü×%Ñ%¤e×&6Ñ&6°uÀUÔ&KÑVÈvÑV€FÜ�&œ%Ÿ,™,Ô'Ø�y‰y˜Ó Ð ä”S˜Ñ!7Ó8Ó9Ð9rK   c                 ó‚   — |dk  rt        d«      ‚t        | j                  «      |gz   }t        j                  |d¬«      S )Nr   zEDon't support automatic num_classes inference for MetaTensor analysisrŒ   r¦   )r²   rÎ   r‘   r�   r�   )rù   Únum_classesr‘   s      rI   Útorch_nn_functional_one_hotrb    s;   € Ø�Q‚ÜÐ`ÓaÐaÜ�—‘Ó + Ñ.€EÜ�;‰;�u VÔ,Ð,rK   c                 ó”   — | j                   d   }|j                   d   }t        j                  g | j                   d d ¢|‘|‘­d¬«      S )Nrö   r‹   rŒ   r¦   )r‘   r�   r�   )	ÚqueryÚkeyÚvalueÚ	attn_maskÚ	dropout_pÚ	is_causalÚscaleÚtarget_lengthÚhead_dims	            rI   Ú0torch_nn_functional_scaled_dot_product_attentionrm    sJ   € ð —K‘K ‘O€MØ�{‰{˜2‰€HÜ�;‰;ÐC˜Ÿ™ S bÐ)ÐC¨=ÐC¸(ÑCÈFÔSÐSrK   c                 ól   — | j                   dk(  r|j                  }nd}t        j                  |d¬«      S ©NÚnone)r/   rŒ   r¦   ©Ú	reductionr‘   r�   r�   ©r”   r•   Útargetr‘   s       rI   Útorch_nn_mselossru  %  ó-   € Ø‡~�~˜ÒØ—‘‰àˆÜ�;‰;�u VÔ,Ð,rK   c                 ól   — | j                   dk(  r|j                  }nd}t        j                  |d¬«      S ro  rq  rs  s       rI   Útorch_nn_crossentropylossrx  -  rv  rK   c                 ól   — | j                   dk(  r|j                  }nd}t        j                  |d¬«      S ro  rq  rs  s       rI   Útorch_nn_bcewithlogitslossrz  5  rv  rK   c                 ó8  — d„ }t        | t        j                  «      rht        |t        «      rt        t	        ||«      «      }n ||«      }t        j                  t        j                  | d¬«      |«      j                  d«      S t        j                  | |«      S )Nc                 ó>  — t        | t        j                  «      r‚t        j                  | d¬«      }|j                  t        j
                  t        j                  t        j                  t        j                  fv r|j                  t        j                  «      }|S | S )Nr  r¦   )rA   r�   rç   Ú	ones_likerŽ   Úfloat16Úfloat32Úfloat64Úint32r¸   Úint64)rÜ   Úconcretes     rI   Úto_concretez%operator_getitem.<locals>.to_concrete>  sa   € Ü�aœŸ™Ô&Ü—‘ q°Ô7ˆHØ�~‰~¤%§-¡-´·±ÄÇÁÌuÏ{É{Ð![Ñ[Ø#Ÿ;™;¤u§{¡{Ó3�ØˆOØˆrK   r  r¦   rŒ   )	rA   r�   rç   r\  r]  ÚoperatorÚgetitemrè   r¸   )ÚaÚbr„  s      rI   Úoperator_getitemr‰  =  sy   € òô �!”U—\‘\Ô"ä�aœÔÜ”c˜+ qÓ)Ó*‰Aá˜A“ˆAÜ×Ñ¤× 0Ñ 0°¸5Ô AÀ1ÓE×HÑHÈÓPÐPÜ×Ñ˜A˜qÓ!Ð!rK   Ú_MANUAL_META_OVERRIDESc                   óh   ‡ — e Zd ZdZd„ Zed„ «       Zed„ «       Zˆ fd„Zˆ fd„Z	d„ Z
d„ Zˆ fd	„Zˆ xZS )
ÚHFProxyzI
    Proxy that uses metadata to handle data-dependent control-flow.
    c                 ó   — || _         y rŸ   )Ú	_metadata)r”   Úmetadatas     rI   Úinstall_metadatazHFProxy.install_metadataˆ  s	   € Ø!ˆ�rK   c                 ó@   — | j                   j                  dd| fi «      S )NÚcall_methodrø   )ÚtracerÚcreate_proxy©r”   s    rI   r‘   zHFProxy.shape‹  s   € à�{‰{×'Ñ'¨°vÀ¸wÈÓKÐKrK   c                 ó   — t        | d«      S )Nr�   )ÚMetaDeviceAttributer•  s    rI   r�   zHFProxy.device�  s   € ô # 4¨Ó2Ð2rK   c                 óz   •— t        | d«      r!| j                  �t        | j                  «      S t        ‰| �  «       S ©NrŽ  )ÚhasattrrŽ  rÃ   ÚsuperÚ__len__©r”   Ú	__class__s    €rI   rœ  zHFProxy.__len__•  s2   ø€ Ü�4˜Ô%¨$¯.©.Ð*DÜ�t—~‘~Ó&Ð&Ü‰w‰Ó Ð rK   c                 óh   •— t        | d«      r| j                  �| j                  S t        ‰| �  «       S r™  )rš  rŽ  r›  Ú__bool__r�  s    €rI   r   zHFProxy.__bool__š  s.   ø€ Ü�4˜Ô%¨$¯.©.Ð*DØ—>‘>Ð!Ü‰wÑÓ!Ð!rK   c                 óF   — |dk(  r| j                  |«      S t        | |«      S r™  )Ú__getattribute__ÚHFAttribute)r”   Úks     rI   Ú__getattr__zHFProxy.__getattr__Ÿ  s*   € Ø�ÒØ×(Ñ(¨Ó+Ð+ô ˜4 Ó#Ð#rK   c                 ó`   — | j                   j                  dt        j                  | ||fi «      S ©NÚcall_function)r“  r”  r…  Úsetitem)r”   ÚindicesÚvaluess      rI   Ú__setitem__zHFProxy.__setitem__¦  s-   € Ø�{‰{×'Ñ'¨¼×9IÑ9IÈDÐRYÐ[aÐKbÐdfÓgÐgrK   c                 ón   •— t        | d«      r| j                  �|| j                  v S t        ‰| �  |«      S r™  )rš  rŽ  r›  Ú__contains__)r”   re  rž  s     €rI   r®  zHFProxy.__contains__©  s5   ø€ Ü�4˜Ô%¨$¯.©.Ð*DØ˜$Ÿ.™.Ð(Ð(Ü‰wÑ# CÓ(Ð(rK   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r�  Úpropertyr‘   r�   rœ  r   r¥  r¬  r®  Ú__classcell__©rž  s   @rI   rŒ  rŒ  ƒ  sV   ø„ ñò"ð ñLó ðLð ñ3ó ð3ô
!ô
"ò
$òh÷)ð )rK   rŒ  c                   ó.   — e Zd Zdefd„Zed„ «       Zd„ Zy)r£  Úattrc                 óÜ   — || _         || _        |j                  | _        d | _        t	        | j                   d«      r0| j                  t        | j                   j                  |«      «       y y r™  )Úrootr·  r“  Ú_noderš  r�  ÚgetattrrŽ  )r”   r¹  r·  s      rI   Ú__init__zHFAttribute.__init__°  sT   € ØˆŒ	ØˆŒ	Ø—k‘kˆŒØˆŒ
ä�4—9‘9˜kÔ*Ø×!Ñ!¤'¨$¯)©)×*=Ñ*=¸tÓ"DÕEð +rK   c                 óÔ   — | j                   €Q| j                  j                  dt        j                  | j
                  | j                  fi «      j                  | _         | j                   S r§  )rº  r“  r”  Úbuiltinsr»  r¹  r·  Únoder•  s    rI   r¿  zHFAttribute.node¹  sT   € ð �:‰:ÐØŸ™×1Ñ1°/Ä8×CSÑCSÐVZ×V_ÑV_Ðae×ajÑajÐUkÐmoÓp×uÑuˆDŒJØ�z‰zÐrK   c                 ón   — | j                   j                  d| j                  | j                  f|z   |«      S )Nr’  )r“  r”  r·  r¹  )r”   rÆ   rÇ   s      rI   Ú__call__zHFAttribute.__call__Á  s.   € Ø�{‰{×'Ñ'¨°t·y±yÀ4Ç9Á9À,ÐQUÑBUÐW]Ó^Ð^rK   N)r¯  r°  r±  rB   r¼  r³  r¿  rÁ  r    rK   rI   r£  r£  ¯  s*   „ ðF 3ó Fð ñó ðó_rK   r£  c                   ó   — e Zd Zy)r—  N)r¯  r°  r±  r    rK   rI   r—  r—  Å  s   „ ØrK   r—  c                   ó2   — e Zd ZdZdee   fd„Zed„ «       Zy)ÚHFCacheProxyzP
    Proxy that represents an instance of `transformers.cache_utils.Cache`.
    Úorig_cache_clsc                 ó   — || _         y rŸ   )Ú_orig_cache_cls)r”   rÅ  s     rI   Úinstall_orig_cache_clsz#HFCacheProxy.install_orig_cache_clsÎ  s
   € Ø-ˆÕrK   c                 óv   — t        | d«      st        d«      ‚| j                  j                  | j                     S )NrÇ  z?The original Cache class must be installed to the HFCacheProxy.)rš  ÚRuntimeErrorr“  Ú_CLASSES_TO_PATCHrÇ  r•  s    rI   rž  zHFCacheProxy.__class__Ñ  s4   € ä�tÐ.Ô/ÜÐ`ÓaÐaØ�{‰{×,Ñ,¨T×-AÑ-AÑBÐBrK   N)	r¯  r°  r±  r²  Útyper   rÈ  r³  rž  r    rK   rI   rÄ  rÄ  É  s-   „ ñð.°T¸%±[ó .ð ñCó ñCrK   rÄ  ÚfunctionÚop_typer¨  r’  Úget_attrÚproxy_factory_fnc                 óJ   ‡ ‡‡— t        j                  ‰ «      ˆ ˆˆfd„«       }|S )Nc                  óÌ  •‡— t        «       s ‰| i |¤ŽS g Šˆfd„}t        j                  j                  j	                  | |«       t        j                  j                  j	                  ||«       t        ‰«      dkD  r`‰d   j                  }‰dk(  r‰}n3‰dk(  r‰j                  }n!‰dk(  r‰j                  }nt        d‰› d�«      ‚|j                  ‰|| |‰¬«      S  ‰| i |¤ŽS )	Nc                 óJ   •— t        | t        «      r‰j                  | «       y y rŸ   )rA   r   rD   )r‡  Úfound_proxiess    €rI   Úcheck_proxyz4create_wrapper.<locals>.wrapper.<locals>.check_proxyä  s    ø€ Ü˜!œUÔ#Ø×$Ñ$ QÕ'ð $rK   r   r¨  r’  rÏ  zop_type z not supported.©rÐ  )
r   r�   Úfxr¿  Úmap_aggregaterÃ   r“  r¯  r²   r”  )	rÆ   rÇ   rÕ  r“  rt  rÔ  rÍ  rÎ  rÐ  s	        @€€€rI   Úwrapperzcreate_wrapper.<locals>.wrapperÝ  så   ù€ äŒÙ˜TÐ, VÑ,Ð,àˆô	(ô 	�‰�‰×#Ñ# D¨+Ô6Ü�‰�‰×#Ñ# F¨KÔ8äˆ}Ó Ò!Ø" 1Ñ%×,Ñ,ˆFØ˜/Ò)Ø!‘Ø˜MÒ)Ø!×*Ñ*‘Ø˜JÒ&Ø!×*Ñ*‘ä  8¨G¨9°OÐ!DÓEÐEØ×&Ñ& w°¸¸fÐWgÐ&ÓhÐhá˜TÐ, VÑ,Ð,rK   )Ú	functoolsÚwraps)rÍ  rÎ  rÐ  rÙ  s   ``` rI   Úcreate_wrapperrÜ  Ø  s'   ú€ ô
 ‡_�_�XÓõ-ó ð-ð6 €NrK   c                   ó^   ‡ — e Zd ZdZ	 ddedeedf   deeef   de	e
egef      fˆ fd„Zˆ xZS )	ÚHFProxyableClassMetazW
    Metaclass that creates a class with its main methods wrapped to be proxyable.
    ÚnameÚbases.ÚattrsrÐ  c           
      ó@  •— t         ‰| �  | |||«      } t        | «      D ]|  }t        | |d «      }|€Œ|dk(  rd}nF|j	                  d«      rd }n2t        j                  |«      rd}nt        j                  |«      rd}nd }|€Œdt        | |t        |||¬«      «       Œ~ | S )Nr¼  r¨  Ú__r’  rÖ  )
r›  Ú__new__Údirr»  Ú
startswithÚinspectÚismethodÚ
isfunctionÚsetattrrÜ  )	Úclsrß  rà  rá  rÐ  Ú	attr_namer·  rÎ  rž  s	           €rI   rä  zHFProxyableClassMeta.__new__  s²   ø€ ô ‰g‰o˜c 4¨°Ó6ˆÜ˜S›ò 	jˆIÜ˜3 	¨4Ó0ˆDØˆ|ØØ˜JÒ&Ø)‘Ø×%Ñ% dÔ+Ø‘Ü×!Ñ! $Ô'Ø)‘Ü×#Ñ# DÔ)Ø'‘à�ØÑ"Ü˜˜Y¬°t¸WÐWgÔ(hÕið	jð  ˆ
rK   rŸ   )r¯  r°  r±  r²  rB   r\  rÌ  rÏ   r   r   r   r   r   rä  r´  rµ  s   @rI   rÞ  rÞ  ü  s_   ø„ ñð ?Cñàðð �T˜3�YÑðð �C˜�H‰~ð	ð
 # 8¨T¨F°E¨MÑ#:Ñ;÷ñ rK   rÞ  rt  c                 ó"   — t        | d«      }|| fS )zo
    Wraps `target` to be proxyable. Used for tensor creators like `torch.ones`, `torch.arange` and so on.
    r¨  )rÜ  )rt  rÙ  s     rI   Úgen_constructor_wrapperrî    s   € ô ˜V _Ó5€GØ�Fˆ?ÐrK   c                 óÜ   — t        | t        «      ryt        | t        j                  j                  «      r6t        | t
        «      rt        | d«      st        d| › �«      ‚| j                  S | S )z\Returns the underlying metadata for HFProxies, and behaves like the identity for the others.rŒ   rŽ  zNo metadata was found for )	rA   r—  r�   r×  r   rŒ  rš  rÊ  rŽ  )Úvs    rI   Ú_proxies_to_metasrñ  $  sW   € ä�!Ô(Ô)ØÜ�!”U—X‘X—^‘^Ô$Ü˜1œgÔ&¬7°1°kÔ+BÜÐ!;¸A¸3Ð?Ó@Ð@Ø�{‰{ÐØ€HrK   rÅ  c                 ó,   ‡ — dt         dt        fˆ fd„}|S )NrÈ   r:   c                 óˆ   •— t        t        t        «      st        d«      ‚t	        | t        «      }|j                  ‰«       |S )NzJCannot create HFCacheProxy because there is no HFTracer currently tracing.)rA   Ú_CURRENT_TRACERÚHFTracerrÊ  rÄ  rÈ  )rÈ   Úcache_proxyrÅ  s     €rI   Úcache_proxy_factory_fnz=create_cache_proxy_factory_fn.<locals>.cache_proxy_factory_fn0  s9   ø€ äœ/¬8Ô4ÜÐkÓlÐlÜ" 1¤oÓ6ˆØ×*Ñ*¨>Ô:ØÐrK   )r   rÄ  )rÅ  r÷  s   ` rI   Úcreate_cache_proxy_factory_fnrø  /  s   ø€ ð¤$ð ¬<õ ð "Ð!rK   ÚProxyableCacherÖ  ÚProxyableDynamicCacheÚProxyableSinkCacheÚProxyableStaticCacheÚlowÚhighÚforbidden_valuesc                 óx   — |€g }t        j                  | |«      }||v rt        j                  | |«      }||v rŒ|S rŸ   )ÚrandomÚrandint)rý  rþ  rÿ  rf  s       rI   Ú_generate_random_intr  S  sG   € ØÐØÐÜ�N‰N˜3 Ó%€EØ
Ð#Ñ
#Ü—‘˜s DÓ)ˆð Ð#Ò
#à€LrK   c                   óÈ  ‡ — e Zd ZU dZdZeed<   dZeed<   g d¢Ze	e
eeeeeeiZ e«       sefneefZefdfˆ fd„	Zdd	d
edee   dee   deeej:                  f   f
d„Zd)ˆ fd„	Zd„ Z dede!deee!f   fd„Z"ˆ fd„Z#d„ Z$e%jL                  de'ejP                  jR                  e*de!f   f   fd„«       Z+	 	 	 d*de'ejP                  jR                  e*de!f   f   de,eee!f      de,eee!f      dede-f
ˆ fd„Z.de(jR                  defd„Z/de(jR                  defd „Z0de(jR                  defˆ fd!„Z1d"ejP                  jR                  d#edefˆ fd$„Z2 e3d¬%«      d&d'de!fd(„«       Z4ˆ xZ5S )+rõ  zŸ
    Tracer that is able to symbolically trace models from the library. To do that, it uses the HFProxy instead of the
    regular PyTorch torch.fx.Proxy.
    TÚproxy_buffer_attributesÚallow_insert_stateless_mods)ÚarangeÚzerosÚonesrÑ   Ú	full_likeÚeyer�   rù   ÚclampÚfinfoÚtrilr    c                 óx   •— t         ‰| �  ||¬«       t        «       st        dt	        «       › dt
        › d�«      ‚y )N)Úautowrap_modulesÚautowrap_functionsz6Found an incompatible version of torch. Found version z, but only version z is supported.)r›  r¼  r4   ÚImportErrorr2   r1   )r”   r  r  rž  s      €rI   r¼  zHFTracer.__init__{  sK   ø€ Ü‰ÑÐ*:ÐOaÐÔbä$Ô&ÜØHÔIZÓI\ÐH]Ð]pÜ,Ð-¨^ð=óð ð 'rK   Úmodelr   Ú
input_namer‘   Úinput_namesr:   c                 ó  ‡‡— t        |d|j                  «      j                  }|j                  Ši }d}|dv �r|d   }|g t	        t
        «      ¢t	        t        «      ¢t	        t        «      ¢t	        t        «      ¢t	        t        «      ¢v r+t        j                  |t        j                  ‰¬«      |d<   |S |g t	        t        «      ¢t	        t        «      ¢d‘v rTt        j                  |t        j                  ‰¬«      |d<   t        j                  |t        j                  ‰¬«      |d	<   |S |t	        t        «      v �r&t!        |j"                  d
«      r|j"                  j$                  €t'        d«      ‚|j"                  j$                  dk(  r)||j"                  j(                  f}	t        j*                  }
n’|j"                  j$                  dk(  r|f}	t        j                  }
ne|j"                  j$                  dk(  r)||j"                  j(                  f}	t        j*                  }
n#t'        d|j"                  j$                  › d�«      ‚t        j                  |	|
‰dœŽ|d<   |S |g t	        t,        «      ¢t	        t.        «      ¢t	        t0        «      ¢t	        t2        «      ¢t	        t4        «      ¢t	        t6        «      ¢d‘d‘d‘v r+t        j                  |t        j                  ‰¬«      |d<   |S |g t	        t8        «      ¢v r+t        j                  |t        j*                  ‰¬«      |d<   |S t;        d|› d|› d�«      ‚d|v �r|d   }t        |j"                  dd«      }|€‚t!        |j"                  d«      r!|j"                  j<                  j>                  }nKt!        |j"                  d«      r!|j"                  j@                  j>                  }ntC        «       tC        «       f}t        |j"                  dd«      }tE        |tF        jH                  jJ                  «      s||f}|\  }}t        j                  ||||t        j*                  ‰¬«      ||<   |S d|v r.t        j                  g |¢d‘­t        jL                  ‰dœŽ||<   |S d |v rBt        j                  g |¢|j"                  jN                  ‘­t        jL                  ‰dœŽ||<   |S d!|v r°|d   }t        |j"                  d"d«      �0|j"                  jP                  d#k7  r|j"                  jR                  }n|j"                  jT                  }tW        |«      dk(  r||d$   |d%   |f}n||d$   |f}t        j                  |t        jL                  ‰¬«      ||<   |S d&|v rCt        j                  ||j"                  jX                  gz   t        jL                  ‰¬«      ||<   |S d'|v rCt        j                  ||j"                  jZ                  gz   t        jL                  ‰¬«      ||<   |S d(|v r)t        j                  |t        jL                  ‰dœŽ||<   |S d)|v r>|\  }}tC        d*d+¬,«      }t        j                  ||t        jL                  ‰¬«      ||<   |S d-|v r?d.|v r|d   |d$   |z   g}n|}t        j                  |t        j                  ‰¬«      ||<   |S d/|v r+t        j                  |t        j                  ‰¬«      ||<   |S d.|v rÄ|j"                  jP                  t\        vr#t;        d0|j"                  jP                  › d1�«      ‚|j"                  j^                  }|j"                  jT                  |j"                  j^                  z  }|d   |||fŠta        ˆˆfd2„tc        |j"                  jd                  «      D «       «      }|||<   |S ||j"                  jT                  gz   }t        j                  |t        jL                  ‰¬«      ||<   |S )3z4Generates dummy input for model inference recording.Úclass_for_deserializationé   )ÚlabelsÚstart_positionsÚend_positionsr   rÂ   r  ÚXLNetForQuestionAnsweringr  r  Úproblem_typeNzÜCould not retrieve the problem type for the sequence classification task, please set model.config.problem_type to one of the following values: "regression", "single_label_classification", or "multi_label_classification".Ú
regressionÚsingle_label_classificationÚmulti_label_classificationz„Expected model.config.problem_type to be either: "regression", "single_label_classification", or "multi_label_classification", but "z" was provided.r„   r‡   rˆ   z!Generating the dummy input named z for z is not supported yet.Úpixel_valuesÚ
image_sizeÚvision_configÚencoderÚnum_channelsé   Úbboxé   Úinput_featuresÚinputs_embedsÚembedding_sizere   r/   r   Úvisual_featsÚ
visual_posÚinputsÚinput_valuesi'  i N  ©rý  rþ  ÚmaskÚpast_key_valuesÚidszMSymbolic trace with past_key_values input is not supported yet for the model ze. Please open an issue or a PR in Transformers repository if you would like to see the support added.c              3   ó¶   •K  — | ]P  }t        j                  ‰t         j                  ‰¬ «      t        j                  ‰t         j                  ‰¬ «      f–— ŒR y­w)rÂ   N)r�   ÚrandrÄ   )rÖ   rï   Úcache_shaper�   s     €€rI   rØ   z1HFTracer._generate_dummy_input.<locals>.<genexpr>%  sE   øè ø€ ò ð
 ô —J‘J˜{´%·+±+ÀfÔMÜ—J‘J˜{´%·+±+ÀfÔMôñùs   ƒAA)3r»  rž  r¯  r�   r   r%   r$   r    r   r   r�   r  Úlongr'   r   r*   rš  Úconfigr  r²   Ú
num_labelsr  r&   r,   r   r#   r)   r(   r   ÚNotImplementedErrorr#  r"  r$  r  rA   ÚcollectionsÚabcÚIterablerÄ   Úinput_feat_per_channelÚ
model_typer+  Úhidden_sizerÃ   Úvisual_feat_dimÚvisual_pos_dimÚ"_FX_SUPPORTED_MODELS_WITH_KV_CACHEÚnum_attention_headsr\  rê   Únum_hidden_layers)r”   r  r  r‘   r  Úmodel_class_nameÚinputs_dictÚkv_cache_lengthr  Úlabels_shapeÚlabels_dtyper"  r%  ÚheightÚwidthr+  Úembedding_shaper  Ú
seq_lengthÚ
mask_shapeÚ	num_headsrl  ÚpkvÚshape_with_hidden_sizer6  r�   s                           @@rI   Ú_generate_dummy_inputzHFTracer._generate_dummy_input„  s*  ù€ ô # 5Ð*EÀuÇÁÓW×`Ñ`ÐØ—‘ˆØˆð
 ˆàÐGÒGØ˜q™ˆJØð $ÜÔLÓMð$äÔCÓDð$ô ÔHÓIð$ô Ô<Ó=ð	$ô
 ÔHÓIð$ñ ô ).¯©°JÄeÇjÁjÐY_Ô(`�˜HÑ%ðj Ðði "ð &ÜÔFÓGð&äÔOÓPð&ð ,ð&ñ ô
 27·±¸ZÌuÏzÉzÐbhÔ1i�Ð-Ñ.Ü/4¯{©{¸:ÌUÏZÉZÐ`fÔ/g�˜OÑ,ð\ Ðð[ "¤ZÔ0_Ó%`Ò`Ü˜uŸ|™|¨^Ô<ÀÇÁ×@YÑ@YÐ@aÜ$ðZóð ð —<‘<×,Ñ,°Ò<Ø$.°·±×0GÑ0GÐ#H�LÜ#(§=¡=‘LØ—\‘\×.Ñ.Ð2OÒOØ$. =�LÜ#(§:¡:‘LØ—\‘\×.Ñ.Ð2NÒNØ$.°·±×0GÑ0GÐ#H�LÜ#(§=¡=‘Lä$ðCØCHÇ<Á<×C\ÑC\ÐB]Ð]lðnóð ô ).¯©°\ÈÐ^dÒ(e�˜HÑ%ðn Ððk "ð 
&ÜÔ?Ó@ð
&äÔHÓIð
&ô Ô=Ó>ð
&ô Ô=Ó>ð	
&ô
 ÔHÓIð
&ô ÔIÓJð
&ð 'ð
&ð 'ð
&ð (ð
&ñ 
ô ).¯©°EÄÇÁÐTZÔ([�˜HÑ%ðT ÐðS "Ð%O¤zÔ2MÓ'NÐ%OÑOÜ(-¯©°EÄÇÁÐW]Ô(^�˜HÑ%ðP ÐôM *Ø7¸
°|À5ÐIYÐHZÐZpÐqóð ð ˜zÒ)Ø˜q™ˆJÜ  §¡¨|¸TÓBˆJØÐ!Ü˜5Ÿ<™<¨Ô9Ø!&§¡×!;Ñ!;×!FÑ!F‘JÜ˜UŸ\™\¨9Ô5Ø!&§¡×!5Ñ!5×!@Ñ!@‘Jä"6Ó"8Ô:NÓ:PÐ!Q�Jô # 5§<¡<°ÀÓCˆLÜ˜j¬+¯/©/×*BÑ*BÔCØ(¨*Ð5�
Ø&‰MˆF�EÜ&+§k¡kØ˜L¨&°%¼u¿}¹}ÐU[ô'ˆK˜
Ñ#ðf Ðða �zÑ!Ü&+§k¡kÐ&^°5Ð&^¸!Ñ&^Ä5Ç;Á;ÐW]Ò&^ˆK˜
Ñ#ð^ Ðð]  Ñ+Ü&+§k¡kð 'Øð'ØŸ™×;Ñ;ñ'ÜCHÇ;Á;ÐW]ò'ˆK˜
Ñ#ðZ ÐðU  
Ñ*Ø˜q™ˆJô ˜Ÿ™Ð&6¸Ó=ÐIØ—L‘L×+Ñ+¨Ò>à!&§¡×!<Ñ!<‘à!&§¡×!9Ñ!9�ä�5‹z˜QŠà#-¨u°Q©x¸¸q¹À>Ð"R‘ð $.¨u°Q©x¸Ð"H�ä&+§k¡k°/ÌÏÉÐ]cÔ&dˆK˜
Ñ#ðp Ððo ˜zÑ)Ü&+§k¡kØà—L‘L×0Ñ0ðñô —k‘kØô'ˆK˜
Ñ#ðl Ðð] ˜ZÑ'Ü&+§k¡kØà—L‘L×/Ñ/ðñô —k‘kØô'ˆK˜
Ñ#ðZ ÐðK ˜Ñ#Ü&+§k¡k°5ÄÇÁÐTZÒ&[ˆK˜
Ñ#ðH ÐðG ˜zÑ)Ø!‰MˆJ˜ä-°%¸eÔDˆJÜ&+§k¡k°*¸jÔPU×P[ÑP[ÐdjÔ&kˆK˜
Ñ#ð> Ðð= �zÑ!Ø  KÑ/Ø# A™h¨¨a©°?Ñ(BÐC‘
à"�
ä&+§k¡k°*ÄEÇJÁJÐW]Ô&^ˆK˜
Ñ#ð0 Ðð/ �jÑ Ü&+§k¡k°%¼u¿z¹zÐRXÔ&YˆK˜
Ñ#ð, Ðð+  *Ñ,Ø�|‰|×&Ñ&Ô.PÑPÜ)ØcÐdi×dpÑdp×d{Ñd{Ðc|ð  }bð  cóð ð Ÿ™×8Ñ8ˆIØ—|‘|×/Ñ/°5·<±<×3SÑ3SÑSˆHà  ™8 Y°ÀÐJˆKÜô ô
 ˜uŸ|™|×=Ñ=Ó>ôó ˆCð '*ˆK˜
Ñ#ð
 Ðð &+¨e¯l©l×.FÑ.FÐ-GÑ%GÐ"Ü&+§k¡kÐ2HÔPU×P[ÑP[ÐdjÔ&kˆK˜
Ñ#àÐrK   c           	      ó^  •— t         ‰| �  |||||||«      }|dk(  r.|| j                  v r |j                  | j                  |   «       |S || j                  v r	d|v rd|d<   	 t
        j                  j                  j                  |t        «      }	t
        j                  j                  j                  |t        «      }
d}d| _
        d| _        |dk(  rMt        j                  ||«      } ||	i |
¤Ž}t        |t
        j                  «      �r+|j!                  d¬«      }�n|dk(  r8t#        |	d   j$                  |«      }t        j                  ||«      } ||	i |
¤Ž}nÚ|d	k(  rnt'        | d
«      st)        | › d�«      ‚| j*                  j-                  |«      }t/        |«      }|t        v rt        |   |g|	¢­i |
¤Ž}nz | j0                  |	i |
¤Ž}ng|dk(  r`| j*                  }|j3                  d«      }|D ]  }t#        ||«      }Œ t        |t
        j                  «      r|j!                  d¬«      }n|}nd}|r,t        |t4        «      st7        d«      ‚|j                  «       d| _
        d| _        |S # t8        $ r.}t:        rt=        j>                  d|› d|› d|› �«       Y d }~ŒBd }~ww xY w)NÚplaceholderr�   rŒ   Tr¨  r¦   r’  r   Úcall_moduleÚorig_forwardz/ does not have an attribute called orig_forwardrÏ  ú.Fz"Don't support composite output yetzCould not compute metadata for z target z: ) r›  r”  Ú	meta_argsr�  Úorig_fnsr�   r×  r¿  rØ  rñ  Ú_disable_module_getattrÚ_disable_call_modulerŠ  rC   rA   rç   r¸   r»  rž  rš  ÚAttributeErrorr¹  Úget_submodulerÌ  rW  Úsplitr   r²   Ú	ExceptionÚ_IS_IN_DEBUG_MODEÚwarningsÚwarn)r”   Úkindrt  rÆ   rÇ   rß  Ú	type_exprrÐ  ÚrvÚ
args_metasÚkwargs_metasÚshould_install_metadataÚmeta_targetÚmeta_outÚmethodÚmodÚmod_typeÚattr_itrÚatomsÚatomÚerž  s                        €rI   r”  zHFTracer.create_proxy3  sž  ø€ Ü‰WÑ! $¨°°f¸dÀIÐO_Ó`ˆà�=Ò  V¨t¯~©~Ñ%=Ø×Ñ §¡¨vÑ 6Ô7ØˆIà�T—]‘]Ñ"ð ˜6Ñ!Ø#)��xÑ ð.	]ÜŸ™Ÿ™×4Ñ4°TÔ;LÓMˆJÜ Ÿ8™8Ÿ=™=×6Ñ6°vÔ?PÓQˆLà&*Ð#à+/ˆDÔ(Ø(,ˆDÔ%à�Ò&Ü4×8Ñ8¸ÀÓH�Ù&¨
ÐC°lÑC�Ü˜h¬¯©Õ5Ø'Ÿ{™{°&˜{Ó9’HØ˜Ò&Ü  ¨A¡×!8Ñ!8¸&ÓA�Ü4×8Ñ8¸ÀÓH�Ù&¨
ÐC°lÑC‘Ø˜Ò&Ü˜t ^Ô4Ü(¨D¨6Ð1`Ð)aÓbÐbØ—i‘i×-Ñ-¨fÓ5�Ü ›9�ØÔ5Ñ5Ü5°hÑ?ÀÐaÀjÒaÐT`Ña‘Hà0˜t×0Ñ0°*ÐMÀÑM‘HØ˜Ò#ØŸ9™9�ØŸ™ SÓ)�Ø!ò 7�DÜ& x°Ó6‘Hð7ä˜h¬¯©Ô5Ø'Ÿ{™{°&˜{Ó9‘Hà'‘Hà*/Ð'á&Ü! "¤eÔ,Ü$Ð%IÓJÐJØ×#Ñ# HÔ-ð (-ˆÔ$Ø$)ˆÔ!àˆ	øô ò 	]Ý Ü—‘Ð ?À¸vÀXÈfÈXÐUWÐXYÐWZÐ[Ô\ÿøð	]ús   Á"HI5 É5	J,É>$J'Ê'J,c                 ó\  ‡ — t        ‰ dd«      r|S ˆ fd„}t        |t        j                  j                  «      r& ||‰ j
                  j                  «       |«      }|�|S ‰ j                  r@t        |t        j                  «      r& ||‰ j
                  j                  «       |«      }|�|S |S )Nr[  Fc                 óü   •‡ ‡— |D ]t  \  Š}‰ |u sŒ‰|vr`i }dt        j                  ‰j                  «      j                  v r‰j                  sd nˆ ˆˆfd„|d<    ‰j                  d‰di fi |¤Ž}||‰<   |‰   c S  y )NrÐ  c                 ó    •— t        ‰| ‰‰«      S rŸ   r   )r¿  Úattr_valrÈ   r”   s    €€€rI   rY  zLHFTracer._module_getattr.<locals>.maybe_get_proxy_for_attr.<locals>.<lambda>‡  s   ø€ ´nÀTÈ4ÐQRÐT\Ó6]€ rK   rÏ  r    )rç  Ú	signaturer”  Ú
parametersÚparam_shapes_constant)rv  Úcollection_to_searchÚparameter_proxy_cacher  rÇ   Ú	val_proxyrÈ   r”   s   `     @€rI   Úmaybe_get_proxy_for_attrz:HFTracer._module_getattr.<locals>.maybe_get_proxy_for_attr~  s£   ú€ Ø0ò 8‘D�A�qØ 1’}ØÐ$9Ñ9Ø%'˜FØ1´W×5FÑ5FÀt×GXÑGXÓ5Y×5dÑ5dÑdð ,0×+EÒ+Eñ %)å)]ð !'Ð'9Ñ :ð
 ):¨×(9Ñ(9¸*ÀaÈÈRÑ(ZÐSYÑ(Z˜IØ7@Ð1°!Ñ4Ø4°QÑ7Ò7ð8ð rK   )
r»  rA   r�   r   Ú	Parameterr¹  Únamed_parametersr  rç   Únamed_buffers)r”   r·  rv  r{  r}  Úmaybe_parameter_proxyÚmaybe_buffer_proxys   `      rI   Ú_module_getattrzHFTracer._module_getattry  s§   ø€ Ü�4Ð2°EÔ:ØˆOôô  ˜(¤E§H¡H×$6Ñ$6Ô7Ù(@Ø˜dŸi™i×8Ñ8Ó:Ð<Qó)Ð%ð )Ð4Ø0Ð0à×+Ò+´
¸8ÄUÇ\Á\Ô0RÙ%=Ø˜dŸi™i×5Ñ5Ó7Ð9Nó&Ð"ð &Ð1Ø-Ð-àˆOrK   r·  rv  r{  c                 ó(   — | j                  |||«      S rŸ   )rƒ  )r”   r·  rv  r{  s       rI   r»  zHFTracer.getattrŸ  s   € Ø×#Ñ# D¨(Ð4IÓJÐJrK   c                 ó`   •— t        | dd«      r ||i |¤ŽS || _        t        ‰| �  ||||«      S )Nr\  F)r»  rW  r›  rV  )r”   r  ÚforwardrÆ   rÇ   rž  s        €rI   rV  zHFTracer.call_module¢  s>   ø€ Ü�4Ð/°Ô7Ù˜DÐ+ FÑ+Ð+Ø#ˆÔÜ‰wÑ" 1 g¨t°VÓ<Ð<rK   c                 ó   — t        || «      S rŸ   )rŒ  )r”   r¿  s     rI   ÚproxyzHFTracer.proxy¨  s   € Ü�t˜TÓ"Ð"rK   r¹  .c           
   #   ó”  K  — | j                   D �ci c]  }|t        t        t        |«      «      “Œ c}| _        t        «       | _        | j                  j                  «       D ]4  \  }\  }}t        t        ||«       | j                  j                  |«       Œ6 g }t        j                  |«      }t        j                  j                  «       D ]ˆ  \  }}|�||urŒ|j                  d«      sŒ| j                  j                  «       D ]M  \  }	}
|j                   j                  «       D ]+  \  }}||	u sŒ|j#                  |||	f«       t        |||
«       Œ- ŒO ŒŠ d –— | j                  j                  «       D ]  \  }\  }}t        t        ||«       Œ i | _        t        «       | _        |D ]  \  }}}	t        |||	«       Œ y c c}w ­w)NÚtransformers)Ú_TORCH_METHODS_TO_PATCHrî  r»  r�   Úpatched_torch_methodsÚsetrZ  Úitemsrê  Úaddrç  Ú	getmoduleÚsysÚmodulesræ  rË  Ú__dict__rD   )r”   r¹  rt  rß  rÙ  ÚorigÚpatchedÚmodule_of_modelrm  Úorig_clsÚpatched_clsrì  r·  r  s                 rI   Úpatch_for_tracingzHFTracer.patch_for_tracing«  s»  è ø€ ð SW×RnÑRnö&
ØHNˆFÔ+¬G´E¸6Ó,BÓCÑCò&
ˆÔ"ô ›ˆŒà%)×%?Ñ%?×%EÑ%EÓ%Gò 	$Ñ!ˆD‘/�7˜DÜ”E˜4 Ô)Ø�M‰M×Ñ˜dÕ#ð	$ð
 ˆÜ!×+Ñ+¨DÓ1ˆÜŸ™×*Ñ*Ó,ò 		=‰IˆD�#ØÐ*¨s¸/Ñ/IØØ—?‘? >Ô2ØØ)-×)?Ñ)?×)EÑ)EÓ)Gò =Ñ%�˜+Ø'*§|¡|×'9Ñ'9Ó';ò =‘O�I˜tØ˜xÒ'ØŸ™¨¨Y¸Ð'AÔBÜ  Y°Õ<ñ=ñ=ð		=ó 	ð  $×9Ñ9×?Ñ?ÓAò 	'‰OˆD‘)�1�dÜ”E˜4 Õ&ð	'à%'ˆÔ"Ü›ˆŒà(/ò 	.Ñ$ˆC�˜HÜ�C˜ HÕ-ñ	.ùò?&
ùs   ‚G‘!G²D GÄ3BGÚconcrete_argsÚdummy_inputsÚ6complete_concrete_args_with_inputs_not_in_dummy_inputsc           	      ó&  •— t        j                  t        |t        j                  j
                  «      r|j                  n|«      }|€i }|�×|rÕ|j                  j                  «       D ]P  }|j                  |v rŒ|j                  t         j                  j                  u sŒ9t        d|j                  › d�«      ‚ |j                  |j                  j                  «       D �ci c]5  }|j                  |vr%|j                  |vr|j                  |j                  “Œ7 c}«       |j                  j                  «       |j                  «       z
  }t!        «       }	t!        «       }
|	|
g}|j"                  j$                  t'        t(        «      v rt!        dd¬«      }|j+                  d|«       |�t-        |«      ni }|D ]t  }||v rŒt        || j.                  «      s$t1        |«      j2                  j5                  d«      r%|j                  | j7                  ||||¬	«      «       Œgt9        d
|› d�«      ‚ d„ }t;        j<                  ||«      }|j                  j                  «       D ]K  }|j>                  t         j                  j@                  k(  sŒ+|j                  |vsŒ:i |d|j                  › �<   ŒM || _!        | a"| jG                  |«      5  	 tH        ‰| �•  ||¬«      | _&        da"	 ddd«       | jL                  jN                  D ]ä  }|jP                  dk(  r¼|jR                  |v rd|_*        t        jV                  |_        n‘|g}tY        jZ                  «       }|r?|j]                  d«      }d||<   |t_        |j`                  j                  «       «      z  }|rŒ?tc        |j                  «       «      D ]  }| jL                  je                  |«       Œ |jP                  dk(  sŒÞd|_        Œæ | jL                  S c c}w # da"w xY w# 1 sw Y   �ŒxY w)a�  
        Traces `root` and returns the corresponding FX `torch.fx.Graph` representation. `root` can either be a
        `torch.nn.Module` instance or a Python callable. Note that after this call, `self.root` may be different from
        the `root` passed in here. For example, when a free function is passed to `trace()`, we will create a
        `torch.nn.Module` instance to use as the root and add embedded constants to.

        Args:
            root (`torch.nn.Module` or  `Callable`):
                Either a `torch.nn.Module`` or a function to be traced through. If root is not a
                [`~transformers.PreTrainedModel`], then `dummy_inputs` must be passed, otherwise tracing will fail.
            concrete_args (`Dict[str, Any], *optional*):
                Concrete arguments that should not be treated as Proxies
            dummy_inputs (`Dict[str, Any]`, *optional*):
                The dummy inputs needed to handle data-dependent control-flow if `root` is not a
                [`~transformers.PreTrainedModel`]. It can also be used when `root` is a
                [`~transformers.PreTrainedModel`] to specify custom dummy inputs for a subset or all the model inputs.
            complete_concrete_args_with_inputs_not_in_dummy_inputs (`bool`, *optional*, defaults to `True`):
                If `True`, and `dummy_inputs` is specified, every argument that `root` can take that is not in
                `dummy_inputs` and not in `concrete_args` will be added to `concrete_args`, otherwise does nothing.

        Returns:
            `torch.fx.Graph`:
                A FX `torch.fx.Graph` representing the semantics of the passed-in `root`.

        Nz6You need to specify a default value for the parameter rX  r   r  r0  r/   )Ú_deserialize_graph_moduleÚ_CodeOnlyModule)r  zCould not generate input named z8 for because root is not a transformers.PreTrainedModel.c                 ó\   — t        | t        j                  «      r| j                  d«      S | S rX  )rA   r�   rç   r¸   )rf  s    rI   Úto_metazHFTracer.trace.<locals>.to_meta  s$   € Ü˜%¤§¡Ô.Ø—x‘x Ó'Ð'ØˆLrK   ú**©rš  rU  r    r   r^  )3rç  rw  rA   r�   r   ÚModuler†  rx  r«  rß  r<   r~  r�   r²   Úupdater@   r  rž  r¯  r   r$   rã   rÏ   Úsupported_archsrÌ  r±  ræ  rS  rÊ  ÚpytreeÚtree_maprd  ÚVAR_KEYWORDrY  rô  r™  r›  ÚtraceÚgraphÚnodesÚoprt  rÆ   rç   r;  ÚOrderedDictrÐ   rÎ   ÚusersÚreversedÚ
erase_node)r”   r¹  rš  r›  rœ  ÚsigÚparamr  r  r  Úsequence_lengthr‘   Únum_choicesr.  r  r¡  Úconcrete_metasr¿  Úto_visitÚ	to_deleterÈ   Úuserrž  s                         €rI   rª  zHFTracer.traceÐ  s¹  ø€ ô@ ×Ñ´
¸4ÄÇÁÇÁÔ0Q §¢ÐW[Ó\ˆàÐ ØˆMàÐ#Ñ(^ØŸ™×.Ñ.Ó0ò m�Ø—:‘: Ñ-ØØ—=‘=¤G×$5Ñ$5×$;Ñ$;Ò;Ü$Ð']Ð^c×^hÑ^hÐ]iÐijÐ%kÓlÐlð	mð
 × Ñ ð !Ÿ^™^×2Ñ2Ó4öàØŸ™ lÑ2°q·v±vÀ]Ñ7Rð —F‘F˜AŸI™IÑ%òôð —n‘n×)Ñ)Ó+¨m×.@Ñ.@Ó.BÑBˆô *Ó+ˆ
Ü.Ó0ˆØ˜_Ð-ˆà�>‰>×"Ñ"¤jÔ1XÓ&YÑYÜ.°1¸1Ô=ˆKØ�L‰L˜˜KÔ(à'3Ð'?”�lÔ#ÀRˆØ%ò 	ˆJØ˜VÑ#Øô ˜$ × 4Ñ 4Ô5¼¸d»×9PÑ9P×9[Ñ9[Ø@ô:ð —‘˜d×8Ñ8¸¸zÈ5Ð^iÐ8ÓjÕkä"Ø5°j°\ð B5ð 5óð ð	ò	ô
  Ÿ™¨°&Ó9ˆà—^‘^×*Ñ*Ó,ò 	7ˆEØ�z‰zœW×.Ñ.×:Ñ:Ó:¸u¿z¹zÐQ\Ò?\Ø46�  E§J¡J <Ð0Ò1ð	7ð (ˆŒð ˆØ×#Ñ# DÓ)ñ 	'ð'Ü"™W™]¨4¸}˜]ÓM�”
à"&‘÷		'ð —J‘J×$Ñ$ò 	!ˆDØ�w‰w˜-Ò'à—;‘; +Ñ-Ø "�D”Iô !&§¡�D•Ið !%˜v�HÜ +× 7Ñ 7Ó 9�IÙ"Ø$ŸL™L¨›O˜Ø'+˜	 !™Ø ¤D¨¯©¯©«Ó$8Ñ8˜ò #ô
 !)¨¯©Ó)9Ó :ò 4˜ØŸ
™
×-Ñ-¨dÕ3ð4ð
 �w‰w˜(Ó"Ø �•	ð/	!ð2 �z‰zÐùòcøðh #'‘ú÷		'ñ 	'ús*   Ã#:O:ËPËO?Ë&PÏ?PÐPÐPrm  c                 óV   — t        d„ |j                  j                  «       D «       «      S )z°
        Whether the module was instantiated with Proxies. If that is the case, such module cannot be a leaf module
        because its attributes are input-dependent.
        c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wrŸ   )rA   r   )rÖ   r·  s     rI   rØ   zKHFTracer._stateless_mod_instanciation_depends_on_proxies.<locals>.<genexpr>T  s   è ø€ ÒM¨t”:˜d¤E×*ÑMùs   ‚)Úanyr“  r«  )r”   rm  s     rI   Ú/_stateless_mod_instanciation_depends_on_proxiesz8HFTracer._stateless_mod_instanciation_depends_on_proxiesO  s"   € ô
 ÑM°s·|±|×7JÑ7JÓ7LÔMÓMÐMrK   c                 ól  — | j                  |«      ryd}|j                  j                  j                  «       }|› d|› �}d}t	        | j
                  |«      r>t        | j
                  |«      |u rd}n#|› d|› �}|dz  }t	        | j
                  |«      rŒ>|s| j
                  j                  ||«       |S )zb
        Helper method which tries to insert a module that was not declared as submodule.
        r7   r   r  FTr/   )r½  rž  r¯  Úlowerrš  r¹  r»  Ú
add_module)r”   rm  ÚidxÚmod_nameÚpathÚalready_inserteds         rI   Ú_insert_module_as_submodulez$HFTracer._insert_module_as_submoduleV  s¹   € ð ×?Ñ?ÀÔDØØˆØ—=‘=×)Ñ)×/Ñ/Ó1ˆØ�˜1˜S˜EÐ"ˆØ ÐÜ�d—i‘i Ô&Ü�t—y‘y $Ó'¨3Ñ.Ø#'Ð ØØ�Z˜q  Ð&ˆDØ�1‰HˆCô �d—i‘i Õ&ñ  Ø�I‰I× Ñ   sÔ+ØˆrK   c                 ó&  •— 	 t         ‰| �  |«      S # t        $ ru}| j                  rbt	        t        |j                  «       «      «      dk(  r=t	        t        |j                  «       «      «      dk(  r| j                  |«      }|cY d}~S |‚d}~ww xY w)ag  
        Helper method to find the qualified name of `mod` in the Module hierarchy of `root`. For example, if `root` has
        a submodule named `foo`, which has a submodule named `bar`, passing `bar` into this function will return the
        string "foo.bar".

        Args:
            mod (str): The `Module` to retrieve the qualified name for.
        r   N)	r›  Úpath_of_moduleÚ	NameErrorr  rÃ   rÎ   rx  ÚbuffersrÅ  )r”   rm  rr  rÃ  rž  s       €rI   rÇ  zHFTracer.path_of_modulen  s‚   ø€ ð	Ü‘7Ñ)¨#Ó.Ð.øÜò 	Ø×/Ò/´C¼¸S¿^¹^Ó=MÓ8NÓ4OÐSTÒ4TÔY\Ô]aÐbe×bmÑbmÓboÓ]pÓYqÐuvÒYvØ×7Ñ7¸Ó<�Ø•ØˆGûð		ús!   ƒ ’	B›A(BÂBÂ	BÂBr  Úmodule_qualified_namec                 óL   •— | j                  |«       xr t        ‰| �	  ||«      S rŸ   )r½  r›  Úis_leaf_module)r”   r  rÊ  rž  s      €rI   rÌ  zHFTracer.is_leaf_module  s3   ø€ Ø×HÑHÈÓKÐKò 
ÔQVÑQXÑQgØÐ$óR
ð 	
rK   )Úis_backward_compatibleÚobjr   c                 óŠ   —  t        |d«      «       }|j                  j                  j                  d«      r|j                  S |S )z×Called when a proxy object is has the keys() method called.
        This is what happens when ** is called on a proxy. This should return an iterator if ** is supposed to work in
        your custom tracer.
        r@   r¢  )r£  r¿  rt  ræ  rŽ  )r”   rÎ  Ú	attributes      rI   r@   zHFTracer.keys„  s=   € ð -”K  VÓ,Ó.ˆ	Ø�8‰8�?‰?×%Ñ% dÔ+Ø×&Ñ&Ð&ØÐrK   )NNN)NNT)6r¯  r°  r±  r²  r  ÚboolÚ__annotations__r  r‹  r   rù  r   rú  r   rû  r   rü  rË  r3   r   r5   r¦  r;  r¼  rB   rÎ   rÅ   rÏ   r�   rç   rS  r”  rƒ  r   r»  rV  rˆ  Ú
contextlibÚcontextmanagerr   r   r¤  r   r™  r   r	   rª  r½  rÅ  rÇ  rÌ  r   r@   r´  rµ  s   @rI   rõ  rõ  \  sE  ø… ñð %)Ð˜TÓ(Ø(,Ð Ó,òÐð 	ˆ~ØÐ+ØÐ%ØÐ)ð	Ðñ 1BÔ0C�Ñ(È/Ð[dÐIe€Oà)-¨ÀBõ ðmØ&ðmØ47ðmØ@DÀSÁ	ðmØX\Ð]`ÑXaðmà	ˆc�5—<‘<ÐÑ	 ómõ^CòL#ðLK˜Cð K¨3ð KÀtÈCÐQTÈHÁ~ó Kô=ò#ð ×Ñð". e¨E¯H©H¯O©O¸XÀcÈ3ÀhÑ=OÐ,OÑ&Pò ".ó ð".ðN 37Ø15ØGKñ}à�E—H‘H—O‘O X¨c°3¨hÑ%7Ð7Ñ8ð}ð    S¨# X¡Ñ/ð}ð ˜t C¨ H™~Ñ.ð	}ð
 AEð}ð 
õ}ð~NÀ2Ç9Á9ð NÐQUó Nð¨r¯y©yð ¸Só ð0 "§)¡)ð °õ ð"
 §¡§¡ð 
Èð 
ÐPTõ 
ñ
 ¨$Ô/ð˜ð  Cò ó 0ôrK   rõ  r  r  c                 óü  — t        j                  | j                  «      }t        |«      t        |j                  j                  «       «      k  s^t        |«      dk(  r|d   ndj                  |«      }dj                  |j                  j                  «       «      }t        d|› d|› �«      ‚|j                  j                  «       D �ci c](  }|j                  |vsŒ|j                  |j                  “Œ* c}S c c}w )Nr/   r   ú, z(The model does not have input(s) named: z&, expected a subset of the following: )rç  rw  r†  r�  rx  r@   rÃ   Újoinr²   r«  rß  r<   )r  r  r²  Úformatted_input_namesÚformatted_allowed_input_namesr  s         rI   Úget_concrete_argsrÚ  �  sÖ   € Ü
×
Ñ
˜EŸM™MÓ
*€Cä�Ó¤ C§N¡N×$7Ñ$7Ó$9Ó :Ò:Ü25°kÓ2BÀaÒ2G ¨A¢ÈTÏYÉYÐWbÓMcÐØ(,¯	©	°#·.±.×2EÑ2EÓ2GÓ(HÐ%ÜØ6Ð7LÐ6Mð NØ-Ð.ð0ó
ð 	
ð
 (+§~¡~×'<Ñ'<Ó'>Ö\ !À!Ç&Á&ÐP[ÒB[ˆA�F‰F�A—I‘IÑÒ\Ð\ùÒ\s   Ã	C9ÃC9r   c                 ó:   — | j                   j                  t        v S rŸ   )rž  r¯  Ú_SUPPORTED_MODELS)r  s    rI   Úis_model_supportedrÝ  ž  s   € Ø�?‰?×#Ñ#Ô'8Ð8Ð8rK   c                 óŽ   — t        | «      s:dj                  t        «      }t        d| j                  j
                  › d|› �«      ‚y )NrÖ  zModel z) is not supported yet, supported models: )rÝ  r×  rÜ  r:  rž  r¯  )r  Úsupported_model_namess     rI   Úcheck_if_model_is_supportedrà  ¢  sJ   € Ü˜eÔ$Ø $§	¡	Ô*;Ó <ÐÜ!Ø�U—_‘_×-Ñ-Ð.Ð.WÐXmÐWnÐoó
ð 	
ð %rK   Údisable_checkÚ
tracer_clsc                 óB  — |€| j                   j                  «       }t        |«      }t        | |«      }|st	        | «       d|v r,t        | j                  dd«      st        j                  d«       d|vr=t        | j                  dd«      r&t        j                  d«       d| j                  _	         |«       }|j                  | |¬«      }t        j                  j                  | |«      }| j                  |_        | j                  |_        | j                   |_        |S )aÜ  
    Performs symbolic tracing on the model.

    Args:
        model ([`PretrainedModel`]):
            The model to trace.
        input_names (`List[str]`, *optional*):
            The names of the inputs of the traced model. If unset, model.dummy_inputs.keys() are used instead.
        disable_check (`bool`, *optional*, defaults to `False`):
            If `True`, no check is done before trying to trace the model, this is mostly usesul for debugging purposes.
        tracer_cls (`Type[HFTracer]`, *optional*, defaults to `HFTracer`):
            The tracer class to use for instantiating the tracer. If unset, `HFTracer` is used instead.

    Returns:
        `torch.fx.GraphModule`: A GraphModule constructed by recording operations seen while tracing the model.

    Example:

        ```python
        from transformers.utils.fx import symbolic_trace

        traced_model = symbolic_trace(model, input_names=["input_ids", "attention_mask", "token_type_ids"])
        ```
    r2  Ú	use_cacheFz|`past_key_values` were specified as input names, but model.config.use_cache = False, this might lead to unexpected behavior.z`past_key_values` were not specified as input names, but model.config.use_cache = True. Setting model.config.use_cache = False.r£  )r›  r@   rÎ   rÚ  rà  r»  r8  ÚloggerÚwarningrä  rª  r�   r×  r
   rž  r  r�   )r  r  rá  râ  rš  r“  Útraced_graphÚtraceds           rI   Úsymbolic_traceré  ª  sû   € ð< ÐØ×(Ñ(×-Ñ-Ó/ˆä�{Ó#€KÜ% e¨[Ó9€MáÜ# EÔ*à˜KÑ'´¸¿¹ÀkÐSXÔ0YÜ�‰ð#ô	
ð  Ñ+´¸¿¹ÀkÐSXÔ0YÜ�‰ð.ô	
ð "'ˆ�‰Ôñ ‹\€FØ—<‘< °]�<ÓC€LÜ�X‰X×!Ñ! %¨Ó6€Fà—L‘L€F„Mð (-§¡€FÔ$Ø—L‘L€F„Mà€MrK   rŸ   r    )NNg       @FF)F)NN)r‹   )Nr÷   FN)é
   é   N)r  r   )Îr¾  r;  rÓ  rÚ  rç  r;  r…  Úosr  r‘  rb  Útypingr   r   r   r   r   r�   Útorch.utils._pytreeÚutilsÚ_pytreer§  r   Útorch.fxr	   r
   r   r   r   Útorch.fx._compatibilityr   Útorch.fx._symbolic_tracer   Útorch.fx.proxyr   r7   r   Úcache_utilsr   r   r   r   Úmodeling_utilsr   r   Úmodels.autor   Úmodels.auto.modeling_autor   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úimport_utilsr0   r1   r2   r3   r4   Úpeftr5   Ú
get_loggerr¯  rå  ÚenvironrC   Úupperra  rÌ  rB   rÎ   rJ   Ú(_REGULAR_SUPPORTED_MODEL_NAMES_AND_TASKSrC  Ú_REGULAR_SUPPORTED_MODELSÚitemrA   rÏ   ÚextendÚ_SPECIAL_SUPPORTED_MODELSr\  Úsortedr�  rÜ  rô  r–   r�   r¡   r¤   r¨   r¬   r¯   r´   r»   r¿   rË   rÓ   rà   rä   rð   rò   rô   rþ   r  r  r  r  r  r   r$  r'  r*  r,  r0  r2  r4  rC  rJ  rN  rQ  rS  rU  r_  rb  rm  ru  rx  rz  r‰  Ú	EmbeddingÚ
functionalÚ	embeddingÚ	LayerNormÚ	GroupNormÚLinearÚreluÚReLUÚwhereÚabsr  rÑ   ÚcatÚstackr�  Úmulrç   ÚmatmulÚbmmÚbaddbmmr  ÚrepeatÚrepeat_interleaveÚrollÚflipÚindex_selectÚgatherÚConv1dÚConv2dÚsqueezeÚ	unsqueezerZ  Úone_hotÚMSELossÚCrossEntropyLossÚBCEWithLogitsLossr†  rŠ  rÒ  Úscaled_dot_product_attentionrŒ  r£  r—  rÄ  rÜ  rÞ  rî  rñ  rø  rù  rú  rû  rü  rÅ   r  rõ  r¤  rÚ  rÝ  rà  rÑ  ré  r    rK   rI   ú<module>r#     s6  ðô Û Û Û Û Û Û Û 	Û Û 
Û ß :Õ :ã ß $Ð $Ý ß <Õ <Ý 1Ý 2Ý )å ß EÓ Eß >Ý $÷÷ ÷ ÷ ÷ ó ÷,õ ñ ÔÝð 
ˆ×	Ñ	˜HÓ	%€Ø—J‘J—N‘N ?°BÓ7×=Ñ=Ó?ÐCWÐWÐ ð
 8<ñ&ØÐ%Ñ&ð&à˜e C¨¨c© NÑ3Ñ4ð&ð 
ˆ#�Yó&òR6,Ð (ðp '.¨uÐ%5Ð "àÐ Ø4ò V€DÙ�$˜ÔØ!×(Ñ(Ñ)NÑ)VÐQUÑ)VÕWà!×(Ñ(Ñ)NÈtÓ)TÕUð	VòÐ ñ  ™&¡Ð%>ÐAZÑ%ZÓ![Ó\Ó]Ð à€òdð
 ejóZòòòOòòóòSð !ô òJò*	Eð3°4ô 3ð	-°Tô 	-ð &'¨Dô -ð $(ô ,ò"ð '+ô !.ðH #'ô 8ð 23¸!Àô %ð 89ÀÀtô PòAò-ð (,¸ô .ð( 26ô .ò0ð 49¸dô .ò*óòòò-ò$-ó*-ó"$ò-ò&ò:ó-ð NRóTò-ò-ò-ò"ð&,4Ø	‡H�H×ÒÐ*ð,4à	‡H�H×Ò×!Ò!Ð#@ð,4ð 
‡H�H×ÒÐ*ð,4ð 
‡H�H×ÒÐ*ð	,4ð
 
‡H�H‡O‚O�_ð,4ð 
‡J‚J�
ð,4ð 
‡H�H×Ò×ÒÐ6ð,4ð 
‡H�H‡M‚M�=ð,4ð 
‡K‚K�ð,4ð 
‡I‚Iˆyð,4ð 
‡L‚L�,ð,4ð 
‡J‚J�
ð,4ð 
‡I‚Iˆyð,4ð 
‡K‚K�ð,4ð 
‡I‚Iˆyð,4ð  
‡I‚Iˆyð!,4ð" 
‡L‚L×ÒÐ&ñ#,4ð$ 
‡L‚L�,ð%,4ð& 
‡I‚Iˆyð',4ð( 
‡M‚M�=ð),4ð* 
‡L‚L×ÒÐ.ð+,4ð, 
‡L‚L�,ð-,4ð. 
‡L‚L×ÒÐ,ð/,4ð0 
×ÒÐ4ð1,4ð2 
‡J‚J�
ð3,4ð4 
‡J‚J�
ð5,4ð6 
‡L‚L×ÒÐ(ð7,4ð8 
×ÒÐ*ð9,4ð: 
‡L‚L×ÒÐ8ð;,4ð< 
‡L‚L�,ð=,4ð> 
‡L‚L×ÒÐ,ð?,4ð@ 
‡H�H‡O‚O�_ðA,4ðB 
‡H�H‡O‚O�_ðC,4ðD 
‡M‚M�=ñE,4ðF 
‡L‚L×ÒÐ.Ø	‡O‚O�_Ø	‡L‚L×ÒÐ2Ø	×ÒÐ6Ø	‡H�H×Ò×ÒÐ!<Ø	‡H�H×ÒÐ&Ø	‡H�H×ÒÐ8Ø	‡H�H×ÒÐ :Ø×ÒÐ&ñW,4Ð ˜˜X xÐ/Ñ0ó ,ð^ 5ð �u—x‘x×*Ò*×GÒGÑ Hô
))ˆeô ))ôX_�'ô _ô,	˜+ô 	ôC�7ô Cð$ ;?ñ!Øð!à�7˜?Ñ+¨W°]Ñ-CÀWÈZÑEXÐXÑYð!ð ˜x¨¨°¨Ñ6Ñ7ð!ð ó	!ôH˜4ô ð@ Hð °°xÀÐ7IÑ1Jó òð	"°$°u±+ð 	"À(ÈDÈ6ÐS_ÐK_ÑB`ó 	"ñ &Ø�u�h Ñ5RÐSXÓ5Yô€ñ -ØØ€OØÙ2°<Ó@ô	Ð ñ *ØØ€LØÙ2°9Ó=ô	Ð ñ ,ØØ€NØÙ2°;Ó?ô	Ð ñ˜cð ¨cð È(ÐSWÐX[ÑS\ÑJ]ó ôqˆvô qðh]˜RŸYšYð ]°T¸#±Yó ]ó9ó
ð (,ØØ!)ñ	>Øð>à˜$˜s™)Ñ$ð>ð ð>ð �X‘ð	>ð
 ô>rK   