Ë
    îÍ:jbÞ  ã                   ó²  — 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( ddl)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZEmFZF  eF«       rd dlGmHZH  e$j’                  eJ«      ZKej˜                  j›                  dd«      j�                  «       eEv ZO	 dwdePe*   deeeQeReQ   f      deReQ   fd„ZSg d¢ZTddgZUg ZVeTD ]:  ZW eXeWeY«      reVjµ                   eSdxi eW¤Ž«       Œ$eVjµ                   eSeW«      «       Œ< g d¢Z[ e\ e] e^eVe[z   «      «      «      Z_da`d„ Za	 dyd„Zbd„ Zcd„ Zdd „ Zed!„ Zfd"„ Zgdzd#„Zhd$„ Zidd%œd&„Zjd'„ Zkd(„ Zld{dd%œd)„Zmd{dd%œd*„Znddd+œd,„Zodd%œd-„Zpd.„ Zqdd%œd/„Zrdd%œd0„Zsdddd1œd2„Ztdddd1œd3„Zud4„ Zvd5„ Zwddd6œd7„Zxdd%œd8„Zyd9„ Zzddd:œd;„Z{d<„ Z|dwd=„Z}d>„ Z~d?„ Zd@„ Z€dA„ Z�dwdB„Z‚dwdC„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                  ea“ej,                  �j                  �j                  eb“ej,                  �j                   ec“ej,                  �j"                  ed“ej,                  �j$                  ee“e�j&                  ef“ej,                  �j                  �j&                  eh“ej,                  �j(                  eg“e�j*                  ei“e�j,                  ej“e�j.                  ek“e�j0                  el“e�j2                  em“e�j4                  en“e�j6                  eo“e�j8                  ep“e�j:                  �j8                  eq“i e�j<                  er“e�j>                  es“e�j@                  et“e�j:                  �j@                  eu“e�jB                  ev“e�j:                  �jD                  ew“e�jF                  ex“e�jH                  e}“e�jJ                  e~“e�j:                  �jJ                  e“e�jL                  ey“e�j:                  �jL                  ez“e�jN                  e{“e�j:                  �jN                  e|“ej,                  �jP                  e€“ej,                  �jR                  e�“e�jT                  e‚“¥e�j:                  �jT                  eƒe�jV                  e„e�j:                  �jV                  e…e�jX                  e†ej,                  �j                  �jZ                  e‡ej,                  �j\                  e‰ej,                  �j^                  eŠej,                  �j`                  e‹e�jb                  eŒi	¥Z²eYeef   e³dM<   eˆe²ej,                  �j                  �jh                  <    G dN„ dOe«      Zµ G dP„ dQeµ«      Z¶ G dR„ dSe¶«      Z· G dT„ dUeµ«      Z¸	 dwdVedWeedX   edY   edZ   f   d[eeegef      defd\„Z¹ G d]„ d^eP«      Zºd_ede\eef   fd`„Z»da„ Z¼dbePe&   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Àd~dheÁdieÁdjeeReÁ      fdk„ZÂ G dl„ dme«      ZÃdne�jˆ                  doeReQ   fdp„ZÅddr„ZÆdds„ZÇddeÃfdndqdoeeReQ      dteÈduePeÃ   def
dv„ZÉy)€é    N)ÚAnyÚCallableÚLiteralÚOptionalÚUnion)Únn)ÚGraphÚGraphModuleÚNodeÚProxyÚTracer)Úcompatibility)Úis_fx_tracing©ÚParameterProxyé   )Úlogging)ÚCacheÚDynamicCacheÚ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Ú,MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING_NAMESÚ6MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING_NAMESÚMODEL_MAPPING_NAMESé   )ÚENV_VARS_TRUE_VALUESÚis_peft_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)r5   r6   Útask_mappingÚmodel_class_namesÚtaskÚ
class_names         új/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/transformers/utils/fx.pyÚ%_generate_supported_model_class_namesrG   M   s`  € ðØÔ&ðàÔ:ðð 	#Ô$Tðð 	Ô6ð	ð
 	Ô6ðð 	ÔBðð 	ÔBðð 	ÔBðð 	&Ô'Zðð 	ÔHðð 	"Ô#Rðð 	Ô Lðð 	 Ô!Nðð 	Ô Lðð 	)Ô*`ðð  	Ô*ð!ð" 	Ô Lð#ô$ "OÜ4Ü$Aò)€Lð. ÐØ&×+Ñ+Ó-ˆÜ�/¤3Ô'Ø*Ð+ˆàÐØò 1ˆØ! $Ñ'×+Ñ+¨J¸Ó=ˆ
ÚØ×$Ñ$ ZÕ0ð1ð
 Ðó    ):ÚaltclipÚalbertÚbartÚbertÚbitnetÚ
blenderbotzblenderbot-smallÚbloomÚclipÚconvnextÚdebertaz
deberta-v2Údinov2Údinov3_convnextÚ
dinov3_vitÚ
distilbertz
donut-swinÚelectraÚgpt2Úgpt_neoÚgptjÚhieraÚhubertÚijepaÚlayoutlmÚllamaÚcohereÚlxmertÚm2m_100ÚmarianÚmbartúmegatron-bertÚ	ministralÚmistralÚmixtralÚ
mobilebertÚmt5ÚnezhaÚoptÚpegasusÚplbartÚqwen2Ú	qwen2_moeÚqwen3Ú
qwen3_nextÚ	qwen3_moeÚresnetÚrobertaÚ	segformerÚspeech_to_textÚspeech_to_text_2ÚswinÚt5ÚtrocrÚvitÚvjepa2ÚxglmÚwav2vec2r_   rl   )ÚCLIPTextModelÚCLIPTextModelWithProjectionÚCLIPVisionModelÚCLIPVisionModelWithProjectionÚAltCLIPTextModelÚAltCLIPVisionModelÚGitVisionModelÚGPT2DoubleHeadsModelÚSpeech2Text2DecoderÚTrOCRDecoderÚPeftModelForCausalLMÚPeftModelForSeq2SeqLMÚVJEPA2ForVideoClassificationc                 ó¢   — t        j                  g |j                  ¢| j                  j                  d   ‘­d| j                  j                  dœŽS ©NéÿÿÿÿÚmeta)ÚdeviceÚdtype)ÚtorchÚemptyÚshapeÚweightr’   ©ÚselfÚinputs     rF   Útorch_nn_embeddingrš   Ó   s@   € Ü�;‰;Ðc˜Ÿ™Ðc T§[¡[×%6Ñ%6°rÑ%:ÑcÀ6ÐQU×Q\ÑQ\×QbÑQbÒcÐcrH   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          rF   Útorch_nn_functional_embeddingr¡   ×   s3   € ô �;‰;ÐY˜Ÿ™ÐY V§\¡\°"Ñ%5ÑY¸fÈFÏLÉLÒYÐYrH   c                 ó   — |S ©N© r—   s     rF   Útorch_nn_layernormr¥   Ý   ó   € Ø€LrH   c                 ó   — |S r£   r¤   r—   s     rF   Útorch_nn_groupnormr¨   á   r¦   rH   c                 óf   — t        j                  |j                  d d | j                  fz   d¬«      S )Nr�   r�   ©r‘   )r“   r”   r•   Úout_featuresr—   s     rF   Útorch_nn_linearr¬   å   s,   € Ü�;‰;�u—{‘{ 3 BÐ'¨4×+<Ñ+<Ð*>Ñ>ÀvÔNÐNrH   c                 ó   — | S r£   r¤   ©Úxs    rF   Ú
torch_relur°   é   ó   € Ø€HrH   c                 ó   — |S r£   r¤   )r˜   r¯   s     rF   Útorch_nn_relur³   í   r±   rH   c                 ó    — |st        d«      ‚| S )Nz>Don't support in-place functional.relu for MetaTensor analysis©Ú
ValueError)r¯   Úinplaces     rF   Útorch_nn_functional_relur¸   ñ   s   € ÙÜÐYÓZÐZØ€HrH   c                 ór   — | j                  d¬«      |j                  d¬«      z   |j                  d¬«      z   S ©Nr�   rª   ©Úto)Ú	conditionr¯   Úys      rF   Útorch_wherer¿   ÷   s5   € ð �<‰<˜vˆ<Ó&¨¯©°V¨Ó)<Ñ<¸q¿t¹tÈ6¸tÓ?RÑRÐRrH   ©Úoutc                ó    — |�t        d«      ‚| S )Nz2Don't support in-place abs for MetaTensor analysisrµ   )r™   rÁ   s     rF   Ú	torch_absrÃ   ý   s   € Ø
€ÜÐMÓNÐNØ€LrH   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‘   )Úlenr>   ÚfloatÚintr@   r“   r”   )ÚargsÚkwargsÚnrÅ   ÚstartÚendr’   s          rF   Ú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ÐIrH   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      rF   Ú
torch_fullr×     s]   € Ü�‹:€Dä
ˆ4ƒy�1‚}ØˆˆQŠà ˆˆ|ÑÜ  ›LÐØ×Ñ˜h¨Ô-Ü�:‰:�tÐDÐ4ÑD¸VÒDÐDrH   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     €rF   ú	<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	    `       rF   Ú	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        rF   Útorch_stackrè   2  sw   € Ø
€{�t�|ØˆØ
€{�tÐ'ØˆØ
ˆQ‚wØ�a‰j�n‰nÓ Ñ" SÑ(ˆÜ�˜‘×!Ñ!Ó"€EØ	‡L�L�”c˜'“lÔ#Ü�;‰;�u VÔ,Ð,rH   )Ú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/   )r>   r“   ÚTensorÚ
empty_likeÚmaxrÛ   rÒ   r•   ÚrangerA   r”   )	r™   Úotherré   rÁ   Ú
max_lengthÚinput_shapeÚother_shaper•   Úis	            rF   Ú	torch_addrô   >  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Ô,Ð,rH   c                ó   — t        | ||¬«      S )NrÀ   )rô   )r™   rï   rÁ   s      rF   Ú	torch_mulrö   L  s   € Ü�U˜E sÔ+Ð+rH   c                 ó   — t        | |«      S r£   )rö   )r˜   rï   s     rF   Útorch_tensor_mulrø   P  s   € Ü�T˜5Ó!Ð!rH   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•   rA   rî   rÔ   r“   Útensorr”   )
r™   rï   rÁ   Úd1Úd2r•   rð   Úshape1Úshape2ró   s
             rF   Útorch_matmulr  T  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Ñ-Ð-rH   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           rF   Ú	torch_bmmr	  x  sG   € Ø
€ÜÐMÓNÐNØ—{‘{Ñ€J��1Ø�j‰j�G€A€qˆ!Ü�;‰;�z 1 a°Ô7Ð7rH   ©Ú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         rF   Útorch_baddbmmr  €  s    € Ø
€ÜÐQÓRÐRÜ�V˜VÓ$Ð$rH   c                ó$   — t        | |||||¬«      S )Nr
  )r  )r˜   r  r  r  ré   rÁ   s         rF   Útorch_tensor_baddbmmr  †  s   € Ü˜˜v v°DÀÈ3ÔOÐOrH   c                 ó^   — d„ |D «       }t        j                  | g|¢­Ž j                  d«      S )Nc              3   óJ   K  — | ]  }t        j                  |d ¬«      –— Œ y­w)Úcpurª   N)r“   rì   )rÚ   Úoperands     rF   rÜ   ztorch_einsum.<locals>.<genexpr>Œ  s    è ø€ ÒYÀWœ×)Ñ)¨'¸%×@Ð@ÑYùs   ‚!#r�   )r“   Úeinsumr¼   )ÚequationÚoperandsÚconcrete_operandss      rF   Útorch_einsumr  Š  s.   € áYÐPXÔYÐÜ�<‰<˜Ð5Ð#4Ò5×8Ñ8¸Ó@Ð@rH   c                 óš   — t        | j                  «      }t        |«      D ]  \  }}||xx   |z  cc<   Œ t        j                  |d¬«      S rº   )rÒ   r•   Ú	enumerater“   r”   )r˜   Úsizesr•   ró   r¯   s        rF   Útorch_tensor_repeatr  �  sF   € Ü�—‘Ó€EÜ˜%Ó ò ‰ˆˆ1Øˆa‹�A‰Œðä�;‰;�u VÔ,Ð,rH   )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•   r>   rÉ   r“   Únumelr”   )rÛ   r  rÊ   Únum_argsr•   Úrepeatss         rF   Ú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Ñ-Ð-rH   c                ór   — t        | j                  «      }t        |«      ||<   t        j                  |ddiŽS ©Nr‘   r�   )rÒ   r•   rÇ   r“   r”   )r™   rÛ   ÚindexrÁ   r•   s        rF   Útorch_index_selectr(  «  s1   € Ü�—‘Ó€EÜ�U“€Eˆ#�JÜ�;‰;˜Ð- fÑ-Ð-rH   c                 ó   — t        | ||«      S r£   )r(  ©r˜   rÛ   r'  s      rF   Útorch_tensor_index_selectr+  ±  s   € Ü˜d C¨Ó/Ð/rH   )Ú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         rF   Útorch_gatherr.  µ  s6   € Ü�—‘Ó€EØ—‘˜SÑ!€Eˆ#�JÜ�;‰;˜Ð- fÑ-Ð-rH   c                 ó   — t        | ||«      S r£   )r.  r*  s      rF   Útorch_tensor_gatherr0  »  s   € Ü˜˜c 5Ó)Ð)rH   c                 ó   — | S r£   r¤   )r™   ÚshiftsÚdimss      rF   Ú
torch_rollr4  ¿  r¦   rH   c                 ó   — | S r£   r¤   )r™   r3  s     rF   Ú
torch_flipr6  Ã  r¦   rH   c                 ó   — | S r£   r¤   )r˜   r3  s     rF   Útorch_tensor_flipr8  Ç  s   € Ø€KrH   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         rF   Útorch_nn_conv1drG  Ë  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Ô,Ð,rH   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ú   r:  r;  r<  r   r   r/   éýÿÿÿr�   rª   r=  )r˜   r™   Úh_inÚw_inr•   r>  Úh_outÚw_outs           rF   Útorch_nn_conv2drN  Ý  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Ô,Ð,rH   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Ô   rA   r“   r”   )r™   rÛ   r•   Ú	new_shapeÚ	dim_values        rF   Útorch_squeezerR  ò  s†   € Ü�—‘Ó€EØ
€Ø�Š7Ø—)‘)“+ Ñ#ˆCØ�‰:˜Š?Ø�I‰I�c�Nàˆ	Øò 	(ˆIØ˜AŠ~ØØ×Ñ˜YÕ'ð	(ð ˆÜ�;‰;�u VÔ,Ð,rH   c                 ó   — t        | |«      S r£   )rR  ©r˜   rÛ   s     rF   Útorch_tensor_squeezerU    s   € Ü˜˜sÓ#Ð#rH   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      rF   Útorch_unsqueezerW    sJ   € Ü�—‘Ó€EØ
ˆQ‚wØ�i‰i‹k˜A‰o Ñ#ˆØ	‡L�L��aÔÜ�;‰;�u VÔ,Ð,rH   c                 ó   — t        | |«      S r£   )rW  rT  s     rF   Útorch_tensor_unsqueezerY    s   € Ü˜4 Ó%Ð%rH   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    rF   ú<lambda>z*torch_unique_consecutive.<locals>.<lambda>  s   € ¨1¯4©4°«<€ rH   )r“   Úunique_consecutiveÚ
zeros_liker>   rë   r¼   ÚtupleÚmap)r™   rË   Úoutputs      rF   Útorch_unique_consecutiverc    sT   € Ü×%Ñ%¤e×&6Ñ&6°uÀUÔ&KÑVÈvÑV€FÜ�&œ%Ÿ,™,Ô'Ø�y‰y˜Ó Ð ä”S˜Ñ!7Ó8Ó9Ð9rH   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      rF   Útorch_nn_functional_one_hotrf    s;   € Ø�Q‚ÜÐ`ÓaÐaÜ�—‘Ó + Ñ.€EÜ�;‰;�u VÔ,Ð,rH   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	            rF   Ú0torch_nn_functional_scaled_dot_product_attentionrq  "  sJ   € ð —K‘K ‘O€MØ�{‰{˜2‰€HÜ�;‰;ÐC˜Ÿ™ S bÐ)ÐC¨=ÐC¸(ÑCÈFÔSÐSrH   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       rF   Útorch_nn_mselossry  *  ó-   € Ø‡~�~˜ÒØ—‘‰àˆÜ�;‰;�u VÔ,Ð,rH   c                 ól   — | j                   dk(  r|j                  }nd}t        j                  |d¬«      S rs  ru  rw  s       rF   Útorch_nn_crossentropylossr|  2  rz  rH   c                 ól   — | j                   dk(  r|j                  }nd}t        j                  |d¬«      S rs  ru  rw  s       rF   Útorch_nn_bcewithlogitslossr~  :  rz  rH   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ª   )r>   r“   rë   Ú	ones_liker’   Úfloat16Úfloat32Úfloat64Úint32r¼   Úint64)rà   Úconcretes     rF   Úto_concretez%operator_getitem.<locals>.to_concreteC  sa   € Ü�aœŸ™Ô&Ü—‘ q°Ô7ˆHØ�~‰~¤%§-¡-´·±ÄÇÁÌuÏ{É{Ð![Ñ[Ø#Ÿ;™;¤u§{¡{Ó3�ØˆOØˆrH   r  rª   r�   )	r>   r“   rë   r`  ra  ÚoperatorÚgetitemrì   r¼   )ÚaÚbrˆ  s      rF   Úoperator_getitemr�  B  sy   € òô �!”U—\‘\Ô"ä�aœÔÜ”c˜+ qÓ)Ó*‰Aá˜A“ˆAÜ×Ñ¤× 0Ñ 0°¸5Ô AÀ1ÓE×HÑHÈÓPÐPÜ×Ñ˜A˜qÓ!Ð!rH   Ú_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     rF   Úinstall_metadatazHFProxy.install_metadata�  s	   € Ø!ˆ�rH   c                 ó@   — | j                   j                  dd| fi «      S )NÚcall_methodrü   )ÚtracerÚcreate_proxy©r˜   s    rF   r•   zHFProxy.shape�  s   € à�{‰{×'Ñ'¨°vÀ¸wÈÓKÐKrH   c                 ó   — t        | d«      S )Nr‘   )ÚMetaDeviceAttributer™  s    rF   r‘   zHFProxy.device”  s   € ô # 4¨Ó2Ð2rH   c                 óz   •— t        | d«      r!| j                  �t        | j                  «      S t        ‰| �  «       S ©Nr’  )Úhasattrr’  rÇ   ÚsuperÚ__len__©r˜   Ú	__class__s    €rF   r   zHFProxy.__len__š  s2   ø€ Ü�4˜Ô%¨$¯.©.Ð*DÜ�t—~‘~Ó&Ð&Ü‰w‰Ó Ð rH   c                 óh   •— t        | d«      r| j                  �| j                  S t        ‰| �  «       S r�  )rž  r’  rŸ  Ú__bool__r¡  s    €rF   r¤  zHFProxy.__bool__Ÿ  s.   ø€ Ü�4˜Ô%¨$¯.©.Ð*DØ—>‘>Ð!Ü‰wÑÓ!Ð!rH   c                 óF   — |dk(  r| j                  |«      S t        | |«      S r�  )Ú__getattribute__ÚHFAttribute)r˜   Úks     rF   Ú__getattr__zHFProxy.__getattr__¤  s*   € Ø�ÒØ×(Ñ(¨Ó+Ð+ô ˜4 Ó#Ð#rH   c                 ó`   — | j                   j                  dt        j                  | ||fi «      S ©NÚcall_function)r—  r˜  r‰  Úsetitem)r˜   ÚindicesÚvaluess      rF   Ú__setitem__zHFProxy.__setitem__«  s-   € Ø�{‰{×'Ñ'¨¼×9IÑ9IÈDÐRYÐ[aÐKbÐdfÓgÐgrH   c                 ón   •— t        | d«      r| j                  �|| j                  v S t        ‰| �  |«      S r�  )rž  r’  rŸ  Ú__contains__)r˜   ri  r¢  s     €rF   r²  zHFProxy.__contains__®  s5   ø€ Ü�4˜Ô%¨$¯.©.Ð*DØ˜$Ÿ.™.Ð(Ð(Ü‰wÑ# CÓ(Ð(rH   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r”  Úpropertyr•   r‘   r   r¤  r©  r°  r²  Ú__classcell__©r¢  s   @rF   r�  r�  ˆ  sV   ø„ ñò"ð ñLó ðLð ñ3ó ð3ô
!ô
"ò
$òh÷)ð )rH   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      rF   Ú__init__zHFAttribute.__init__µ  sT   € ØˆŒ	ØˆŒ	Ø—k‘kˆŒØˆŒ
ä�4—9‘9˜kÔ*Ø×!Ñ!¤'¨$¯)©)×*=Ñ*=¸tÓ"DÕEð +rH   c                 óÔ   — | j                   €Q| j                  j                  dt        j                  | j
                  | j                  fi «      j                  | _         | j                   S r«  )r¾  r—  r˜  Úbuiltinsr¿  r½  r»  Únoder™  s    rF   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ÐrH   c                 ón   — | j                   j                  d| j                  | j                  f|z   |«      S )Nr–  )r—  r˜  r»  r½  )r˜   rÊ   rË   s      rF   Ú__call__zHFAttribute.__call__Æ  s.   € Ø�{‰{×'Ñ'¨°t·y±yÀ4Ç9Á9À,ÐQUÑBUÐW]Ó^Ð^rH   N)r³  r´  rµ  r?   rÀ  r·  rÃ  rÅ  r¤   rH   rF   r§  r§  ´  s*   „ ðF 3ó Fð ñó ðó_rH   r§  c                   ó   — e Zd Zy)r›  N)r³  r´  rµ  r¤   rH   rF   r›  r›  Ê  s   „ ØrH   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     rF   Úinstall_orig_cache_clsz#HFCacheProxy.install_orig_cache_clsÓ  s
   € Ø-ˆÕrH   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    rF   r¢  zHFCacheProxy.__class__Ö  s4   € ä�tÐ.Ô/ÜÐ`ÓaÐaØ�{‰{×,Ñ,¨T×-AÑ-AÑBÐBrH   N)	r³  r´  rµ  r¶  Útyper   rÌ  r·  r¢  r¤   rH   rF   rÈ  rÈ  Î  s-   „ ñð.°T¸%±[ó .ð ñCó ñCrH   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  rS‰d   j                  }‰dk(  r‰}n&‰dk(  s‰dk(  r‰j                  }nt        d‰› d�«      ‚|j                  ‰|| |‰¬«      S  ‰| i |¤ŽS )	Nc                 óJ   •— t        | t        «      r‰j                  | «       y y r£   )r>   r   rA   )r‹  Úfound_proxiess    €rF   Úcheck_proxyz4create_wrapper.<locals>.wrapper.<locals>.check_proxyé  s    ø€ Ü˜!œUÔ#Ø×$Ñ$ QÕ'ð $rH   r   r¬  r–  rÓ  zop_type z not supported.©rÔ  )
r   r“   ÚfxrÃ  Úmap_aggregaterÇ   r—  r³  r¶   r˜  )	rÊ   rË   rÙ  r—  rx  rØ  rÑ  rÒ  rÔ  s	        @€€€rF   Úwrapperzcreate_wrapper.<locals>.wrapperâ  sÙ   ù€ äŒÙ˜TÐ, VÑ,Ð,àˆô	(ô 	�‰�‰×#Ñ# D¨+Ô6Ü�‰�‰×#Ñ# F¨KÔ8äˆ}Ó Ò!Ø" 1Ñ%×,Ñ,ˆFØ˜/Ò)Ø!‘Ø˜MÒ)¨W¸
Ò-BØ!×*Ñ*‘ä  8¨G¨9°OÐ!DÓEÐEØ×&Ñ& w°¸¸fÐWgÐ&ÓhÐhá˜TÐ, VÑ,Ð,rH   )Ú	functoolsÚwraps)rÑ  rÒ  rÔ  rÝ  s   ``` rF   Úcreate_wrapperrà  Ý  s'   ú€ ô
 ‡_�_�XÓõ-ó ð-ð2 €NrH   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	           €rF   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ð  ˆ
rH   r£   )r³  r´  rµ  r¶  r?   r`  rÐ  rÓ   r   r   r   r   r   rè  r¸  r¹  s   @rF   râ  râ  ÿ  s_   ø„ ñð ?Cñàðð �T˜3�YÑðð �C˜�H‰~ð	ð
 # 8¨T¨F°E¨MÑ#:Ñ;÷ñ rH   râ  rx  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à  )rx  rÝ  s     rF   Úgen_constructor_wrapperrò    s   € ô ˜V _Ó5€GØ�Fˆ?ÐrH   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 )	r>   r›  r“   rÛ  r   r�  rž  rÎ  r’  )Úvs    rF   Ú_proxies_to_metasrõ  '  sW   € ä�!Ô(Ô)ØÜ�!”U—X‘X—^‘^Ô$Ü˜1œgÔ&¬7°1°kÔ+BÜÐ!;¸A¸3Ð?Ó@Ð@Ø�{‰{ÐØ€HrH   rÉ  c                 ó,   ‡ — dt         dt        fˆ fd„}|S )NrÌ   r7   c                 óˆ   •— t        t        t        «      st        d«      ‚t	        | t        «      }|j                  ‰«       |S )NzJCannot create HFCacheProxy because there is no HFTracer currently tracing.)r>   Ú_CURRENT_TRACERÚHFTracerrÎ  rÈ  rÌ  )rÌ   Úcache_proxyrÉ  s     €rF   Úcache_proxy_factory_fnz=create_cache_proxy_factory_fn.<locals>.cache_proxy_factory_fn3  s9   ø€ Üœ/¬8Ô4ÜÐkÓlÐlÜ" 1¤oÓ6ˆØ×*Ñ*¨>Ô:ØÐrH   )r   rÈ  )rÉ  rû  s   ` rF   Úcreate_cache_proxy_factory_fnrü  2  s   ø€ ð¤$ð ¬<õ ð "Ð!rH   ÚProxyableCacherÚ  ÚProxyableDynamicCacheÚProxyableStaticCacheÚlowÚhighÚforbidden_valuesc                 óx   — |€g }t        j                  | |«      }||v rt        j                  | |«      }||v rŒ|S r£   )ÚrandomÚrandint)r   r  r  rj  s       rF   Ú_generate_random_intr  O  sG   € ØÐØÐÜ�N‰N˜3 Ó%€EØ
Ð#Ñ
#Ü—‘˜s DÓ)ˆð Ð#Ò
#à€LrH   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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j6                  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#jH                  de%ejL                  jN                  e(def   f   fd„«       Z)	 	 	 d*de%ejL                  jN                  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&jN                  defd„Z-de&jN                  defd „Z.de&jN                  defˆ fd!„Z/d"ejL                  jN                  d#edefˆ fd$„Z0 e1d¬%«      d&d'defd(„«       Z2ˆ xZ3S )+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                 ó(   •— t         ‰| �  ||¬«       y )N)Úautowrap_modulesÚautowrap_functions)rŸ  rÀ  )r˜   r  r  r¢  s      €rF   rÀ  zHFTracer.__init__v  s   ø€ Ü‰ÑÐ*:ÐOaÐÕbrH   Úmodelr   Ú
input_namer•   Úinput_namesr7   c                 ó*  ‡‡— t        |d|j                  «      j                  }|j                  Ši }d}|dv �r|d   }|g t	        t
        «      ¢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	        t0        «      ¢t	        t2        «      ¢t	        t4        «      ¢t	        t6        «      ¢t	        t8        «      ¢d‘d‘d‘v r+t        j                  |t        j                  ‰¬«      |d<   |S |g t	        t:        «      ¢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$                  jB                  j@                  }ntE        «       tE        «       f}t        |j$                  dd«      }tG        |tH        jJ                  jL                  «      s||f}|\  }}t        j                  ||||t        j,                  ‰¬«      ||<   |S d|v r.t        j                  g |¢d‘­t        jN                  ‰dœŽ||<   |S d |v rBt        j                  g |¢|j$                  jP                  ‘­t        jN                  ‰dœŽ||<   |S d!|v r°|d   }t        |j$                  d"d«      �0|j$                  jR                  d#k7  r|j$                  jT                  }n|j$                  jV                  }tY        |«      dk(  r||d$   |d%   |f}n||d$   |f}t        j                  |t        jN                  ‰¬«      ||<   |S d&|v rCt        j                  ||j$                  jZ                  gz   t        jN                  ‰¬«      ||<   |S d'|v rCt        j                  ||j$                  j\                  gz   t        jN                  ‰¬«      ||<   |S d(|v r)t        j                  |t        jN                  ‰dœŽ||<   |S d)|v r>|\  }}tE        d*d+¬,«      }t        j                  ||t        jN                  ‰¬«      ||<   |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$                  jR                  t^        vr#t=        d0|j$                  jR                  › d1�«      ‚|j$                  j`                  }|j$                  jV                  |j$                  j`                  z  }|d   |||fŠtc        ˆˆfd2„te        |j$                  jf                  «      D «       «      }|||<   |S ||j$                  jV                  gz   }t        j                  |t        jN                  ‰¬«      ||<   |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     €€rF   rÜ   z1HFTracer._generate_dummy_input.<locals>.<genexpr>  sE   øè ø€ ò ð
 ô —J‘J˜{´%·+±+ÀfÔMÜ—J‘J˜{´%·+±+ÀfÔMôñùs   ƒAA)4r¿  r¢  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  r>   Ú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_headsrp  ÚpkvÚshape_with_hidden_sizer8  r‘   s                           @@rF   Ú_generate_dummy_inputzHFTracer._generate_dummy_inputy  s:  ù€ ô # 5Ð*EÀuÇÁÓW×`Ñ`ÐØ—‘ˆØˆð
 ˆàÐGÒGØ˜q™ˆJØð $ÜÔLÓMð$äÔCÓDð$ô ÔHÓIð$ô Ô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˜
Ñ#àÐrH   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Ž  r@   r>   rë   r¼   r¿  r¢  rž  ÚAttributeErrorr½  Úget_submodulerÐ  rY  Úsplitr   r¶   Ú	ExceptionÚ_IS_IN_DEBUG_MODEÚwarningsÚwarn)r˜   Úkindrx  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                        €rF   r˜  zHFTracer.create_proxy)  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    €€€rF   r]  zLHFTracer._module_getattr.<locals>.maybe_get_proxy_for_attr.<locals>.<lambda>}  s   ø€ ´nÀTÈ4ÐQRÐT\Ó6]€ rH   rÓ  r¤   )rë  Ú	signaturer˜  Ú
parametersÚparam_shapes_constant)rx  Úcollection_to_searchÚparameter_proxy_cacher  rË   Ú	val_proxyrÌ   r˜   s   `     @€rF   Úmaybe_get_proxy_for_attrz:HFTracer._module_getattr.<locals>.maybe_get_proxy_for_attrt  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ð rH   )
r¿  r>   r“   r   Ú	Parameterr½  Únamed_parametersr  rë   Únamed_buffers)r˜   r»  rx  r}  r  Úmaybe_parameter_proxyÚmaybe_buffer_proxys   `      rF   Ú_module_getattrzHFTracer._module_getattro  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Ø-Ð-àˆOrH   r»  rx  r}  c                 ó(   — | j                  |||«      S r£   )r…  )r˜   r»  rx  r}  s       rF   r¿  zHFTracer.getattr•  s   € Ø×#Ñ# D¨(Ð4IÓJÐJrH   c                 ó`   •— t        | dd«      r ||i |¤ŽS || _        t        ‰| �  ||||«      S )Nr^  F)r¿  rY  rŸ  rX  )r˜   r  ÚforwardrÊ   rË   r¢  s        €rF   rX  zHFTracer.call_module˜  s>   ø€ Ü�4Ð/°Ô7Ù˜DÐ+ FÑ+Ð+Ø#ˆÔÜ‰wÑ" 1 g¨t°VÓ<Ð<rH   c                 ó   — t        || «      S r£   )r�  )r˜   rÃ  s     rF   ÚproxyzHFTracer.proxyž  s   € Ü�t˜TÓ"Ð"rH   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Úsetr\  Úitemsrî  Úaddrë  Ú	getmoduleÚsysÚmodulesrê  rÏ  Ú__dict__rA   )r˜   r½  rx  rã  rÝ  ÚorigÚpatchedÚmodule_of_modelro  Úorig_clsÚpatched_clsrð  r»  r  s                 rF   Ú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 rZ  r   r  r2  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 r\  )r>   r“   rë   r¼   )rj  s    rF   Úto_metazHFTracer.trace.<locals>.to_meta  s$   € Ü˜%¤§¡Ô.Ø—x‘x Ó'Ð'ØˆLrH   ú**©rœ  rW  r¤   r   rb  )3rë  ry  r>   r“   r   ÚModulerˆ  rz  r¯  rã  r9   r€  r”   r¶   Úupdater=   r  r¢  r³  r   r#   rç   rÓ   Úsupported_archsrÐ  rµ  rê  rU  rÎ  ÚpytreeÚtree_maprf  ÚVAR_KEYWORDr[  rø  r›  rŸ  ÚtraceÚgraphÚnodesÚoprx  rÊ   rë   r=  ÚOrderedDictrÔ   rÒ   ÚusersÚreversedÚ
erase_node)r˜   r½  rœ  r�  rž  ÚsigÚparamr  r  r  Úsequence_lengthr•   Únum_choicesr0  r  r£  Úconcrete_metasrÃ  Úto_visitÚ	to_deleterÌ   Úuserr¢  s                         €rF   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ro  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£   )r>   r   )rÚ   r»  s     rF   rÜ   zKHFTracer._stateless_mod_instantiation_depends_on_proxies.<locals>.<genexpr>J  s   è ø€ ÒM¨t”:˜d¤E×*ÑMùs   ‚)Úanyr•  r¯  )r˜   ro  s     rF   Ú/_stateless_mod_instantiation_depends_on_proxiesz8HFTracer._stateless_mod_instantiation_depends_on_proxiesE  s"   € ô
 ÑM°s·|±|×7JÑ7JÓ7LÔMÓMÐMrH   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.
        r4   r   r  FTr/   )r¿  r¢  r³  Úlowerrž  r½  r¿  Ú
add_module)r˜   ro  ÚidxÚmod_nameÚpathÚalready_inserteds         rF   Ú_insert_module_as_submodulez$HFTracer._insert_module_as_submoduleL  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Ô+ØˆrH   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Ò   rz  ÚbuffersrÇ  )r˜   ro  rt  rÅ  r¢  s       €rF   rÉ  zHFTracer.path_of_moduled  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      €rF   rÎ  zHFTracer.is_leaf_moduleu  s3   ø€ Ø×HÑHÈÓKÐKò 
ÔQVÑQXÑQgØÐ$óR
ð 	
rH   )Ú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Ã  rx  rê  r’  )r˜   rÐ  Ú	attributes      rF   r=   zHFTracer.keysz  s=   € ð -”K  VÓ,Ó.ˆ	Ø�8‰8�?‰?×%Ñ% dÔ+Ø×&Ñ&Ð&ØÐrH   )NNN)NNT)4r³  r´  rµ  r¶  r  ÚboolÚ__annotations__r	  r�  r   rý  r   rþ  r   rÿ  rÏ  r1   r   r2   r¨  r?  rÀ  r?   rÒ   rÉ   rÓ   r“   rë   rU  r˜  r…  r   r¿  rX  rŠ  Ú
contextlibÚcontextmanagerr   r   r¦  r   r›  r   r	   r¬  r¿  rÇ  rÉ  rÎ  r   r=   r¸  r¹  s   @rF   rù  rù  X  s@  ø… ñð %)Ð˜TÓ(Ø(,Ð Ó,òÐð 	ˆ~ØÐ+ØÐ)ðÐñ 1BÔ0C�Ñ(È/Ð[dÐIe€Oà)-¨ÀBõ cðnØ&ðnØ47ðnØ@DÀSÁ	ðnØX\Ð]`ÑXaðnà	ˆc�5—<‘<ÐÑ	 ónõ`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ôrH   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ë  ry  rˆ  r�  rz  r=   rÇ   Újoinr¶   r¯  rã  r9   )r  r  r´  Úformatted_input_namesÚformatted_allowed_input_namesr  s         rF   Ú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    rF   Úis_model_supportedrß  ”  s   € Ø�?‰?×#Ñ#Ô'8Ð8Ð8rH   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     rF   Úcheck_if_model_is_supportedrâ  ˜  sJ   € Ü˜eÔ$Ø $§	¡	Ô*;Ó <ÐÜ!Ø�U—_‘_×-Ñ-Ð.Ð.WÐXmÐWnÐoó
ð 	
ð %rH   Ú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"])
        ```
    r4  Ú	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¿  r:  ÚloggerÚwarningræ  r¬  r“   rÛ  r
   r¢  r  r‘   )r  r  rã  rä  rœ  r—  Útraced_graphÚtraceds           rF   Ú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à€MrH   r£   r¤   )NNg       @FF)F)NN)r�   )Nrû   FN)é
   é   N)r  r   )ÊrÂ  r=  rÕ  rÞ  rë  r?  r‰  Úosr  r“  rd  Ú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   r4   r   Úcache_utilsr   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-   r.   Úimport_utilsr0   r1   Úpeftr2   Ú
get_loggerr³  rç  Úenvironr@   Úupperrc  rÐ  r?   rÒ   rG   Ú(_REGULAR_SUPPORTED_MODEL_NAMES_AND_TASKSrE  Ú_REGULAR_SUPPORTED_MODELSÚitemr>   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.  r0  r4  r6  r8  rG  rN  rR  rU  rW  rY  rc  rf  rq  ry  r|  r~  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Ú	unsqueezer^  Ú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¤   rH   rF   ú<module>r%     s  ðô Û Û Û Û Û Û Û 	Û Û 
Û ß :Õ :ã ß $Ð $Ý ß <Õ <Ý 1Ý 2Ý )å ß :Ñ :ß >Ý $÷÷ ÷ ÷ ÷ õ ÷.ñ ÔÝð 
ˆ×	Ñ	˜HÓ	%€Ø—J‘J—N‘N ?°BÓ7×=Ñ=Ó?ÐCWÐWÐ ð
 8<ñ&ØÐ%Ñ&ð&à˜e C¨¨c© NÑ3Ñ4ð&ð 
ˆ#�Yó&òR<,Ð (ð| '.¨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ðð ó	ôD˜4ô ð@ Hð °°xÀÐ7IÑ1Jó òð"°$°u±+ð "À(ÈDÈ6ÐS_ÐK_ÑB`ó "ñ &Ø�u�h Ñ5RÐSXÓ5Yô€ñ -ØØ€OØÙ2°<Ó@ô	Ð ñ ,ØØ€NØÙ2°;Ó?ô	Ð ñ˜cð ¨cð È(ÐSWÐX[ÑS\ÑJ]ó ôkˆvô kð\]˜RŸYšYð ]°T¸#±Yó ]ó9ó
ð (,ØØ!)ñ	>Øð>à˜$˜s™)Ñ$ð>ð ð>ð �X‘ð	>ð
 ô>rH   