
     `ib                     t   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$jI        eJ          ZKejL        M                    dd          N                                eEv ZO	 d|dePe*         deeeQeReQ         f                  deReQ         fdZSg dZTddgZUg ZVeTD ]HZW eXeWeY          reVZ                     eSd}i eW           *eVZ                     eSeW                     Ig dZ[ e\ e] e^eVe[z                                 Z_da`d Za	 d~dZbd Zcd  Zdd! Zed" Zfd# Zgdd$Zhd% Zidd&d'Zjd( Zkd) Zlddd&d*Zmddd&d+Znddd,d-Zodd&d.Zpd/ Zqdd&d0Zrdd&d1Zsdddd2d3Ztdddd2d4Zud5 Zvd6 Zwddd7d8Zxdd&d9Zyd: Zzddd;d<Z{d= Z|d|d>Z}d? Z~d@ ZdA ZdB Zd|dCZd|dDZdE ZdF ZdG ZddIZ	 ddKZdL ZdM ZdN ZdO Zi 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j        elej        emej        enej        eoej        epej        j        eqi ej        erej        esej        etej        j        euej        evej        j        ewej        exej        e}ej        e~ej        j        eej        eyej        j        ezej        e{ej        j        e|ej        j        eej        j        eej        eej        j        eej        eej        j        eej        eej        j        j        eej        j        eej        j        eej        j        eej        ei	ZeYeef         edP<   eeej        j        j        <    G dQ dRe          Z G dS dTe          Z G dU dVe          Z G dW dXe          Z	 d|dYedZeed[         ed\         ed]         f         d^eeegef                  defd_Z G d` daeP          Zdbede\eef         fdcZdd ZdeePe&         deegef         fdfZ edge&fi  ee&          h          Z edie'fi  ee'          h          Z edje(fi  ee(          h          ZddmednedoeeRe                  fdpZ G dq dre          Zdsej        dteReQ         fduZddwZddxZddefdsdvdteeReQ                  dyedzePe         def
d{ZdS )    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_NAMES3MODEL_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_NAMES0MODEL_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_NAMES6MODEL_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}||                                }t+          |t,                    r|g}g }|D ]5}||                             | d           }|r|                    |           6|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         i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/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 1!$'++J==
 	1$$Z000    ):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                 n    t          j        g |j        | j        j        d         R d| j        j        dS Nmeta)devicedtype)torchemptyshapeweightr   selfinputs     rF   torch_nn_embeddingr      s:    ;ccT[%6r%:cc6QUQ\QbccccrH          @Fc                 Z    t          j        g | j        |j        d         R 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      s4     ;YYV\"%5YYfFLYY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                 Z    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{3B3'4+<*>>vNN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ZHrH   c                     |                      d          |                     d          z   |                     d          z   S Nr   r   to)	conditionr   ys      rF   torch_wherer      s>     <<v<&&V)<)<<qtt6t?R?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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          |          }|                    d|          }|                    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Avv1g	
a
sssD% E

#u C$ 4yy::fd##DJJwE;e,E&IIIIrH   c                      t          |           } t          |           dk    rd| d<   nd|d<   t          |          }|                    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     st    ::D
4yy1}}Q | LLh---:tD4DDVDDDDrH   c                >   |d||dk     r| d                                          z   d | D             }t          |d                   }t          fd|D                       }|d          |gz   |dz   d          z   }t          j        |d          S )Nr   c                     g | ]	}|j         
S r   )r   ).0ts     rF   
<listcomp>ztorch_cat.<locals>.<listcomp>+  s    '''!ag'''rH   c              3   (   K   | ]}|         V  d S r   r   )r   r   dims     rF   	<genexpr>ztorch_cat.<locals>.<genexpr>-  s'      ::%5:::::::rH   r/   r   r   )r   r   sumr   r   )tensorsr   axisr   shapesr   concatenated_dimfinal_shapes    `      rF   	torch_catr   $  s    
{t|
{t'
Qwwajnn$''w'''FOOE::::6:::::+!1 22U37995EEK;{62222rH   c                   ||d}|||}|dk     r | d                                          dz   |z   }t          | d         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  s    
{t|
{t'
Qwwajnn"S(!""E	LLc'll###;uV,,,,rH   )alphar   c                   t          | t          j                  st          j        |d          S t          |t          j                  st          j        | d          S t	          |                                 |                                          }t          | j                  dg||                                 z
  z  z   }t          |j                  dg||                                z
  z  z   }g }t          |          D ]1}|	                    t	          ||         ||                              2t          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   eU\** 6f5555eU\** 6f5555UYY[[%))++..Ju{##qcZ%))++-E&FFKu{##qcZ%))++-E&FFKE: : :SQQ889999;uV,,,,rH   c                &    t          | ||          S )Nr   )r   )r   r   r   s      rF   	torch_mulr   L  s    UEs++++rH   c                 "    t          | |          S r   )r   )r   r   s     rF   torch_tensor_mulr   P  s    T5!!!rH   c                d   |                                  }|                                 }d }|dk    r
|dk    rd }n|dk    r2|dk    r,|                     d          |                    d          f}n|dk    r|dk    r|                    d          f}nr|dk    r|dk    r|                     d          f}nNt          |                                  |                                           }t          | j                  }t          |j                  }|dk    rdg|z   }|dk    r|                    d           dg||z
  z  t          | j                  z   }dg||z
  z  t          |j                  z   }g }t          |          D ]1}	|                    t          ||	         ||	                              2|d         |d<   |d         |d<   |dk    r|                    d           |dk    r|                    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	Qww277	qR1WWA

1.	qR1WWA 	qR1WWA eiikk22
ek""ek""77S6\F77MM!b)D,=,==b)D,=,==z"" 	4 	4ALLVAYq	2233332Jb	2Jb	77IIbMMM77IIbMMM}|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  sJ    
MNNN{J1jGAq!;z1a7777rH   betar   r   c                D    |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RVV$$$rH   c                ,    t          | |||||          S )Nr  )r  )r   r  r  r  r   r   s         rF   torch_tensor_baddbmmr    s    vvD3OOOOrH   c                 d    d |D             }t          j        | g|R                      d          S )Nc              3   B   K   | ]}t          j        |d           V  dS )cpur   N)r   r   )r   operands     rF   r   ztorch_einsum.<locals>.<genexpr>  s2      YYW)'%@@@YYYYYYrH   r   )r   einsumr   )equationoperandsconcrete_operandss      rF   torch_einsumr    s>    YYPXYYY<5#455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!    sX    E%    1aA;uV,,,,rH   )r   output_sizec                    t          |          }|dk    r ||n|d                                         g}nt          |d         j                  }| !|dk    r	|d         } nt          |          g}d} |d         }t	          |t
                    st          j        |          dk    r|| xx         t          |          z  cc<   n||n|                                || <   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    4yyH1}} + 7T!W[[]]KT!W]##;!||1gUq'gs## 	Su{7';';q'@'@#JJJ#g,,&JJJJ(3(?W[[]]E#J;-f---rH   c                p    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+    s5    EUE#J;-f---rH   c                 $    t          | ||          S r   )r+  r   r   r*  s      rF   torch_tensor_index_selectr.    s    dC///rH   )sparse_gradr   c                l    t          | j                  }|j        |         ||<   t          j        |ddiS r)  )r   r   r   r   )r   r   r*  r/  r   r   s         rF   torch_gatherr1    s6    ES!E#J;-f---rH   c                 $    t          | ||          S r   )r1  r-  s      rF   torch_tensor_gatherr3    s    c5)))rH   c                     | S r   r   )r   shiftsdimss      rF   
torch_rollr7    r   rH   c                     | S r   r   )r   r6  s     rF   
torch_flipr9    r   rH   c                     | S r   r   )r   r6  s     rF   torch_tensor_flipr;    s    KrH   c                    |j         d         }d }| j        }|dk    rd}|dk    rt          |j                   }|lt          |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   rA  l_outs         rF   torch_nn_conv1drJ    s    ;r?DElG'&U[!!}U[!!
A
N"T]1%59I!9Lq9P%QQTUUY]YdefYggjkk
 
 b	!E"I;uV,,,,rH   c                 F   |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   rA  h_outw_outs           rF   torch_nn_conv2drQ    sJ   RSS!JD$ElG'&U[!!}U[!!
A
N"T]1%59I!9Lq9P%QQTUUY]YdefYggjkk
 
 
A
N"T]1%59I!9Lq9P%QQTUUY]YdefYggjkk
 
 U^bcc
!E"I;uV,,,,rH   c                 "   t          | j                  }|?|dk     r|                                 |z   }||         dk    r|                    |           n%g }|D ]}|dk    r	|                    |           |}t          j        |d          S r   )r   r   r   r   rA   r   r   )r   r   r   	new_shape	dim_values        rF   torch_squeezerU    s    E
77))++#C:??IIcNNN	 	( 	(IA~~Y'''';uV,,,,rH   c                 "    t          | |          S r   )rU  r   r   s     rF   torch_tensor_squeezerX    s    s###rH   c                     t          | j                  }|dk     r|                                 dz   |z   }|                    |d           t	          j        |d          S r   )r   r   r   r   r   r   )r   r   r   s      rF   torch_unsqueezerZ    sY    E
QwwiikkAo#	LLa;uV,,,,rH   c                 "    t          | |          S r   )rZ  rW  s     rF   torch_tensor_unsqueezer\    s    4%%%rH   c                     t          j        t          j        | d          fi |}t          |t           j                  r|                    d          S t          t          |d                     S )Nr  r   r   c                 ,    |                      d          S Nr   r   r   s    rF   <lambda>z*torch_unique_consecutive.<locals>.<lambda>  s    144<< rH   )r   unique_consecutive
zeros_liker>   r   r   tuplemap)r   r   outputs      rF   torch_unique_consecutiverf    sl    %e&6uU&K&K&KVVvVVF&%,'' :yy   S!7!788999rH   r   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_hotri    sE    Q`aaa+.E;uV,,,,rH   r   c                     | j         d         }|j         d         }t          j        g | j         d d         ||R 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_attentionrt  "  sM     KOM{2H;CSbS)C=C(CCFSSSSrH   c                 X    | 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_mselossr|  *  2    ~;uV,,,,rH   c                 X    | j         dk    r|j        }nd}t          j        |d          S rv  rx  rz  s       rF   torch_nn_crossentropylossr  2  r}  rH   c                 X    | j         dk    r|j        }nd}t          j        |d          S rv  rx  rz  s       rF   torch_nn_bcewithlogitslossr  :  r}  rH   c                 Z   d }t          | t          j                  rzt          |t                    rt          t	          ||                    }n ||          }t          j        t          j        | d          |                              d          S t          j        | |          S )Nc                    t          | t          j                  rlt          j        | d          }|j        t          j        t          j        t          j        t          j        fv r|	                    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  se    a&& 	q777H~%-u{![[[#;;u{33OrH   r  r   r   )	r>   r   r   rc  rd  operatorgetitemr   r   )abr  s      rF   operator_getitemr  B  s       !U\"" Qa 	c+q))**AAAA 05 A A A1EEHHPPPAq!!!rH   _MANUAL_META_OVERRIDESc                   t     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                     || _         d S r   )	_metadata)r   metadatas     rF   install_metadatazHFProxy.install_metadata  s    !rH   c                 >    | j                             dd| fi           S )Ncall_methodr   )tracercreate_proxyr   s    rF   r   zHFProxy.shape  s     {''vwKKKrH   c                 "    t          | d          S )Nr   )MetaDeviceAttributer  s    rF   r   zHFProxy.device  s     #4222rH   c                     t          | d          r| j        t          | j                  S t                                                      S Nr  )hasattrr  r   super__len__r   	__class__s    rF   r  zHFProxy.__len__  s@    4%% 	'$.*Dt~&&&ww   rH   c                     t          | d          r| j        | j        S t                                                      S r  )r  r  r  __bool__r  s    rF   r  zHFProxy.__bool__  s:    4%% 	"$.*D>!ww!!!rH   c                 X    |dk    r|                      |          S t          | |          S r  )__getattribute__HFAttribute)r   ks     rF   __getattr__zHFProxy.__getattr__  s3    ((+++ 4###rH   c                 V    | j                             dt          j        | ||fi           S Ncall_function)r  r  r  setitem)r   indicesvaluess      rF   __setitem__zHFProxy.__setitem__  s+    {''9IDRY[aKbdfgggrH   c                     t          | d          r| j        	|| j        v S t                                          |          S r  )r  r  r  __contains__)r   rl  r  s     rF   r  zHFProxy.__contains__  sA    4%% 	)$.*D$.((ww##C(((rH   )__name__
__module____qualname____doc__r  propertyr   r   r  r  r  r  r  __classcell__r  s   @rF   r  r    s         " " " L L XL 3 3 X3
! ! ! ! !
" " " " "
$ $ $h h h) ) ) ) ) ) ) ) )rH   r  c                   6    e Zd ZdefdZed             Zd ZdS )r  attrc                     || _         || _        |j        | _        d | _        t	          | j         d          r/|                     t          | j         j        |                     d S d S r  )rootr  r  _noder  r  getattrr  )r   r  r  s      rF   __init__zHFAttribute.__init__  sj    		k
49k** 	F!!'$)*=t"D"DEEEEE	F 	FrH   c                     | 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  sE     :11/8CSVZV_aeajUkmoppuDJzrH   c                 X    | j                             d| j        | j        f|z   |          S )Nr  )r  r  r  r  )r   r   r   s      rF   __call__zHFAttribute.__call__  s+    {''ty49,QUBUW]^^^rH   N)r  r  r  r?   r  r  r  r  r   rH   rF   r  r    sc        F3 F F F F   X_ _ _ _ _rH   r  c                       e Zd ZdS )r  N)r  r  r  r   rH   rF   r  r    s        DrH   r  c                   @    e Zd ZdZdee         fdZed             ZdS )HFCacheProxyzP
    Proxy that represents an instance of `transformers.cache_utils.Cache`.
    orig_cache_clsc                     || _         d S r   )_orig_cache_cls)r   r  s     rF   install_orig_cache_clsz#HFCacheProxy.install_orig_cache_cls  s    -rH   c                 n    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__  s8    t.// 	b`aaa{,T-ABBrH   N)	r  r  r  r  typer   r  r  r  r   rH   rF   r  r    s]         .T%[ . . . . C C XC C CrH   r  functionop_typer  r  get_attrproxy_factory_fnc                 N     t          j                    fd            }|S )Nc                     t                      s | i |S g fd}t          j        j                            | |           t          j        j                            ||           t                    dk    rWd         j        }dk    r}n'dk    sdk    rj        }nt          d d          |	                    || |          S  | i |S )	Nc                 `    t          | t                    r                    |            d S d S r   )r>   r   rA   )r  found_proxiess    rF   check_proxyz4create_wrapper.<locals>.wrapper.<locals>.check_proxy  s9    !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  r{  r  r  r  r  s	        @rF   wrapperzcreate_wrapper.<locals>.wrapper  s    	-8T,V,,,	( 	( 	( 	( 	( 	##D+666##FK888}!!"1%,F/))!M))W
-B-B!* !DG!D!D!DEEE&&wfWg&hhh8T,V,,,rH   )	functoolswraps)r  r  r  r  s   ``` rF   create_wrapperr    sF    
 _X- - - - - - -2 NrH   c                   v     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.
    Nnamebases.attrsr  c           
         t                                          | |||          } t          |           D ]}t          | |d           }||dk    rd}nH|                    d          rd }n0t          j        |          rd}nt          j        |          rd}nd }|!t          | |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     ggooc466S 	j 	jI3	400D|J&&)%%d++ !$'' )#D)) '"YtWWg(h(h(hiii
rH   r   )r  r  r  r  r?   rc  r  r   r   r   r   r   r   r  r  r  s   @rF   r  r    s          ?C  T3Y CH~	
 #8TFEM#:;         rH   r  r{  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  )r{  r  s     rF   gen_constructor_wrapperr    s     V_55GF?rH   c                     t          | t                    rdS t          | t          j        j                  r>t          | 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  '  sy    !()) v!UX^$$ 1g&& 	A71k+B+B 	A?A??@@@{HrH   r  c                 0     dt           dt          f fd}|S )Nr   r7   c                     t          t          t                    st          d          t	          | t                    }|                               |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  sN    /844 	mklll"1o66**>:::rH   )r   r  )r  r  s   ` rF   create_cache_proxy_factory_fnr  2  s7    $ <       "!rH   ProxyableCacher  ProxyableDynamicCacheProxyableStaticCache
      lowhighforbidden_valuesc                 r    |g }t          j        | |          }||v rt          j        | |          }||v |S r   )randomrandint)r  r  r  rm  s       rF   _generate_random_intr  O  sO    N3%%E
#
#
#sD)) #
#
#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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#j$        de%ej&        j'        e(def         f         fd            Z)	 	 	 d+de%ej&        j'        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&j'        defd Z-de&j'        defd!Z.de&j'        def fd"Z/d#ej&        j'        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                 N    t                                          ||           d S )N)autowrap_modulesautowrap_functions)r  r  )r   r  r  r  s      rF   r  zHFTracer.__init__v  s(    *:Oabbbb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<   nm|g t	          t                    t	          t                    dv rJt          j        |t          j                  |d<   t          j        |t          j                  |d	<   n|t	          t                     v rt#          |j        d
          r|j        j        t)          d          |j        j        dk    r||j        j        f}	t          j        }
nh|j        j        dk    r|f}	t          j        }
nH|j        j        dk    r||j        j        f}	t          j        }
nt)          d|j        j         d          t          j        |	|
d|d<   n|g t	          t.                    t	          t0                    t	          t2                    t	          t4                    t	          t6                    t	          t8                    dddv r&t          j        |t          j                  |d<   n]|g t	          t:                    v r&t          j        |t          j                  |d<   nt=          d| d| d          d|v r|d         }t          |j        dd          }|jt#          |j        d          r|j        j        j         }nCt#          |j        d          r|j        j!        j         }ntE                      tE                      f}t          |j        dd          }tG          |tH          j%        j&                  s||f}|\  }}t          j        ||||t          j                  ||<   nd|v r&t          j        g |dR t          j'        d||<   nd |v r0t          j        g ||j        j(        R t          j'        d||<   nd!|v r|d         }t          |j        d"d          |j        j)        d#k    r|j        j*        }n|j        j+        }tY          |          dk    r||d$         |d%         |f}n||d$         |f}t          j        |t          j'                  ||<   nd&|v r4t          j        ||j        j-        gz   t          j'                  ||<   nd'|v r4t          j        ||j        j.        gz   t          j'                  ||<   nd(|v r!t          j        |t          j'        d||<   nd)|v r=|\  }}tE          d*d+,          }t          j        ||t          j'                  ||<   n>d-|v r?d.|v r|d         |d$         |z   g}n|}t          j        |t          j                  ||<   nd/|v r%t          j        |t          j                  ||<   nd.|v r|j        j)        t^          vrt=          d0|j        j)         d1          |j        j0        }|j        j+        |j        j0        z  }|d         |||ftc          fd2te          |j        j3                  D                       }|||<   n4||j        j+        gz   }t          j        |t          j'                  ||<   |S )3z4Generates dummy input for model inference recording.class_for_deserialization   )labelsstart_positionsend_positionsr   r   r   XLNetForQuestionAnsweringr!  r"  problem_typeNzCould 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_classificationzExpected 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   | ]F}t          j        t           j                   t          j        t           j                   fV  GdS )r   N)r   randr   )r   r   cache_shaper   s     rF   r   z1HFTracer._generate_dummy_input.<locals>.<genexpr>  sg        
  J{%+fMMMJ{%+fMMM     rH   )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_typer2  hidden_sizer   visual_feat_dimvisual_pos_dim"_FX_SUPPORTED_MODELS_WITH_KV_CACHEnum_attention_headsrc  r   num_hidden_layers)r   r  r  r   r  model_class_nameinputs_dictkv_cache_lengthr  labels_shapelabels_dtyper)  r,  heightwidthr2  embedding_shaper
  
seq_length
mask_shape	num_headsrs  pkvshape_with_hidden_sizer=  r   s                           @@rF   _generate_dummy_inputzHFTracer._generate_dummy_inputy  sr    #5*EuWW`
 GGGqJ $LMM$CDD$ HII$ HII	$
 <==$ HII$   ).JejY_(`(`(`H%%! &FGG&OPP& ,&  
 27Zuzbh1i1i1i-./4{:UZ`f/g/g/gO,,!Z0_%`%```u|^<< @Y@a$Z   <,<<$.0G#HL#(=LL\.2OOO$.=L#(:LL\.2NNN$.0G#HL#(=LL$nCH<C\n n n   ).\^d(e(e(eH%%! 
&?@@
&HII
& =>>
& =>>	
&
 HII
& IJJ
& '
& '
& (
& 
 
 ).ETZ([([([H%%!%Oz2M'N'N%OOO(-EW](^(^(^H%%)q
qqIYqqq   z))qJ |TBBJ!5<99 R!&!;!FJJU\955 R!&!5!@JJ"6"8"8:N:P:P!QJ #5<CCLj+/*BCC 6(*5
&MFE&+kL&%u}U[' ' 'K
## z!!&+k&^5&^!&^&^5;W]&^&^&^K
##++&+k '';' 'CH;W]' ' 'K
## 
**qJ &6==IL+>>!&!<!&!95zzQ#-uQxq>"R $.uQx"H&+k/]c&d&d&dK
##z))&+kL0 k' ' 'K
## Z''&+kL/ k' ' 'K
## ##&+k5TZ&[&[&[K
##z))!MJ-%eDDDJ&+k*jPUP[dj&k&k&kK
##z!! K//#Aha?(BC

"
&+k*EJW]&^&^&^K
##j  &+k%uzRX&Y&Y&YK
##*,,|&.PPP) cdidpd{  c  c  c   8I|/5<3SSH 8YJK     
 u|=>>    C '*K
##%*el.F-G%G"&+k2HPUP[dj&k&k&kK
#rH   Nc           	         t                                          |||||||          }|dk    r+|| j        v r"|                    | j        |                    |S || j        v r	d|v rd|d<   	 t
          j        j                            |t                    }	t
          j        j                            |t                    }
d}d| _
        d| _        |dk    rUt                              ||          } ||	i |
}t          |t
          j                  r|                    d          }n1|dk    r?t#          |	d         j        |          }t                              ||          } ||	i |
}n|d	k    ryt'          | d
          st)          |  d          | j                            |          }t/          |          }|t          v rt          |         |g|	R i |
}n{ | j        |	i |
}nm|dk    re| j        }|                    d          }|D ]}t#          ||          }t          |t
          j                  r|                    d          }n|}nd}|r9t          |t4                    st7          d          |                    |           n;# t8          $ r.}t:          rt=          j        d| d| d|            Y d }~nd }~ww xY wd| _
        d| _        |S )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  r^  splitr   r   	Exception_IS_IN_DEBUG_MODEwarningswarn)r   kindr{  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)  sC   WW!!$fdIO_``=  Vt~%=%=v 6777IT]"" 6!!#)x .	]44T;LMMJ 8=66v?PQQL&*#+/D((,D%&&488HH&;
ClCCh55 :'{{&{99H&& A!8&AA488HH&;
ClCC&&t^44 c(D)a)a)abbbi--f55995555h?ajaaaT`aaHH0t0*MMMHH##9S))! 7 7D&x66HHh55 ('{{&{99HH'HH*/'& .!"e,, K$%IJJJ##H--- 	] 	] 	]  ][[[f[[XY[[\\\	] (-$$)!	s   -H+J 
K#$KKc                 X    t           dd          r|S  fd}t          |t          j        j                  r( || j                                        |          }||S  j        rBt          |t          j                  r( || j        	                                |          }||S |S )Nrb  Fc                      |D ]b\  } |u rY|vrKi }dt          j        j                  j        v rj        sd n fd|d<    j        ddi fi |}||<   |         c S cd S )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    nT4QRT\6]6] rH   r  r   )r  	signaturer  
parametersparam_shapes_constant)r}  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 8DAq1}}$999%'F1W5FtGX5Y5Y5ddd ,0+E%^DD)])])])])])] !''9 :
 ):(9*aR(Z(ZSY(Z(ZI7@1!44Q7777 % trH   )
r  r>   r   r   	Parameterr  named_parametersr  r   named_buffers)r   r  r}  r  r  maybe_parameter_proxymaybe_buffer_proxys   `      rF   _module_getattrzHFTracer._module_getattro  s    42E:: "	O      (EH$677 1(@(@di88::<Q) )% )400+ .
8U\0R0R .%=%=di55779N& &" &1--OrH   r  r}  r  c                 0    |                      |||          S r   )r  )r   r  r}  r  s       rF   r  zHFTracer.getattr  s    ##D(4IJJJrH   c                     t          | dd          r ||i |S || _        t                                          ||||          S )Nrc  F)r  r^  r  r]  )r   r	  forwardr   r   r  s        rF   r]  zHFTracer.call_module  sS    4/77 	,7D+F+++#ww""1gtV<<<rH   c                 "    t          ||           S r   )r  )r   r  s     rF   proxyzHFTracer.proxy  s    tT"""rH   r  .c              #   d  K   d | j         D             | _        t                      | _        | j                                        D ]8\  }\  }}t          t          ||           | j                            |           9g }t          j	        |          }t          j                                        D ]\  }}|||ur|                    d          s"| j                                        D ]Q\  }}	|j                                        D ]2\  }
}||u r)|                    ||
|f           t          ||
|	           3Rd V  | j                                        D ]\  }\  }}t          t          ||           i | _        t                      | _        |D ]\  }}
}t          ||
|           d S )Nc           	      T    i | ]%}|t          t          t          |                    &S r   )r  r  r   )r   r{  s     rF   
<dictcomp>z.HFTracer.patch_for_tracing.<locals>.<dictcomp>  s:     &
 &
 &
HNF+GE6,B,BCC&
 &
 &
rH   transformers)_TORCH_METHODS_TO_PATCHpatched_torch_methodssetra  itemsr  r   addr  	getmodulesysmodulesr  r  __dict__rA   )r   r  r  r  origpatchedmodule_of_modelrt  orig_clspatched_clsr  r  r
  s                rF   patch_for_tracingzHFTracer.patch_for_tracing  s      &
 &
RVRn&
 &
 &
" %)%?%E%E%G%G 	$ 	$!D/7DE4)))Md#### !+D11**,, 		= 		=ID#*s//I/I??>22 )-)?)E)E)G)G = =%+'*|'9'9';'; = =OItx''Y'ABBBY<<<== 	  $9??AA 	' 	'OD)1dE4&&&&%'"(/ 	. 	.$CHCH----	. 	.rH   concrete_argsdummy_inputs6complete_concrete_args_with_inputs_not_in_dummy_inputsc           	         t          j        t          |t          j        j                  r|j        n|          }i |r|j                                        D ]<}|j	        v r|j
        t           j        j        u rt          d|j	         d          =                    fd|j                                        D                        |j                                                                        z
  }t!                      }t!                      }	||	g}
|j        j        t'          t(                    v r't!          dd          }|
                    d|           t-                    ni }|D ]}||v rt          || j                  s't1          |          j                            d	          r-|                    |                     |||
|
                     pt9          d| d          d }t;          j        ||          }|j                                        D ]2}|j        t           j        j         k    r|j	        |vri |d|j	         <   3|| _!        | a"| #                    |          5  	 tI                      %                    |          | _&        da"n# da"w xY w	 ddd           n# 1 swxY w Y   | j&        j'        D ]}|j(        dk    r|j)        |v rd|_*        t          j+        |_        n|g}tY          j-                    }|rE|.                    d          }d||<   |t_          |j0                                                  z  }|Etc          |                                          D ]}| j&        2                    |           |j(        dk    rd|_        | j&        S )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 r_  c                 N    i | ]!}|j         v|j         v|j         |j        "S r   r  r9   )r   r  r  r  s     rF   r  z"HFTracer.trace.<locals>.<dictcomp>  sB       l22qv]7R7R FAI7R7R7RrH   r   r  r7  r/   )_deserialize_graph_module_CodeOnlyModule)r  zCould not generate input named z8 for because root is not a transformers.PreTrainedModel.c                 d    t          | t          j                  r|                     d          S | S r_  )r>   r   r   r   )rm  s    rF   to_metazHFTracer.trace.<locals>.to_meta  s-    %.. (xx'''LrH   **r  r\  r   r   re  )3r  r~  r>   r   r   Moduler  r  r  r  r9   r  r   r   updater=   r  r  r  r   r#   r   r   supported_archsr  r  r  rZ  r  pytreetree_maprk  VAR_KEYWORDr`  r  r  r  tracegraphnodesopr{  r   r   rB  OrderedDictr   r   usersreversed
erase_node)r   r  r  r  r  sigparamr  r  sequence_lengthr   num_choicesr5  r  r  concrete_metasr  to_visit	to_deleter   userr  s     ``                 rF   r  zHFTracer.trace  sm   @ 
40Q0Q [W[\\ M#(^#..00 m m:--=G$5$;;;$%k^c^h%k%k%klll <       ^2244     n))++m.@.@.B.BB *++
.00_->"j1X&Y&YYY.11===KLLK((('3'?l###R% 	 	JV## $ 455 d9P9[9[@: :  d88z5^i8jjkkkk"5j 5 5 5  
	 	 	
  &99^**,, 	7 	7EzW.:::uzQ\?\?\460EJ001' ##D)) 	' 	''"WW]]4}]MM
"&$&&&&		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' J$ 	! 	!Dw-'';+-- "DI !&DII !%vH + 7 9 9I" 9$LLOO'+	! D$8$88 # 9
 !))9)9 : : 4 4
--d3333 w("" 	zs*   K(J1.K1J55KK	K	rt  c                 b    t          d |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                    V  d S r   )r>   r   )r   r  s     rF   r   zKHFTracer._stateless_mod_instantiation_depends_on_proxies.<locals>.<genexpr>J  s,      MMt:dE**MMMMMMrH   )anyr  r  )r   rt  s     rF   /_stateless_mod_instantiation_depends_on_proxiesz8HFTracer._stateless_mod_instantiation_depends_on_proxiesE  s/    
 MMs|7J7J7L7LMMMMMMrH   c                 `   |                      |          rdS d}|j        j                                        }| d| }d}t	          | j        |          r;t          | j        |          |u rd}n!| d| }|dz  }t	          | j        |          ;|s| 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   rt  idxmod_namepathalready_inserteds         rF   _insert_module_as_submodulez$HFTracer._insert_module_as_submoduleL  s     ??DD 	2=)//11""S"" di&& 	ty$''3..#' &&&&D1HC di&& 	   	,I  s+++rH   c                 ~   	 t                                          |          S # t          $ r}| j        rt	          t          |                                                    dk    rNt	          t          |                                                    dk    r|                     |          }|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   r  buffersr  )r   rt  ry  r  r  s       rF   r  zHFTracer.path_of_moduled  s    	77))#... 	 	 	/ CS^^=M=M8N8N4O4OST4T4TY\]abebmbmbobo]p]pYqYquvYvYv77<<G		s!    $ 
B<BB7/B<5B77B<r	  module_qualified_namec                 t    |                      |           o!t                                          ||          S r   )r  r  is_leaf_module)r   r	  r  r  s      rF   r  zHFTracer.is_leaf_moduleu  sB    HHKKK 
QVQXQXQgQg$R
 R
 	
rH   )is_backward_compatibleobjr   c                      t          |d                      }|j        j                            d          r|j        S |S )zCalled 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  r{  r  r  )r   r  	attributes      rF   r=   zHFTracer.keysz  sD     -KV,,..	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  rB  r  r?   r   r   r   r   r   rZ  r  r  r   r  r]  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0A0C0Ce((/[dIeO)-B c c c c c cn&n47n@DS	nX\]`Xan	c5<	 n n n n`C C C C C CL# # #LKC K3 KtCQTH~ K K K K= = = = =# # # ".eEHOXc3h=O,O&P ". ". ". ".N 3715GK} }EHOXc3h%778}  S#X/} tCH~.	}
 AE} 
} } } } } }~N29 NQU N N N Nry S    0")       "
 
 
PT 
 
 
 
 
 

 ]$/// C    0/    rH   r  r  r  c                    t          j        | j                  }t                    t          |j                                                  k    sqt                    dk    rd         nd                              }d                    |j                                                  }t          d| d|           fd|j        	                                D             S )Nr/   r   , z(The model does not have input(s) named: z&, expected a subset of the following: c                 <    i | ]}|j         v|j         |j        S r   r  )r   r  r  s     rF   r  z%get_concrete_args.<locals>.<dictcomp>  s,    \\\!!&P[B[B[AFAIB[B[B[rH   )
r  r~  r  r  r  r=   r   joinr   r  )r  r  r  formatted_input_namesformatted_allowed_input_namess    `   rF   get_concrete_argsr    s    

EM
*
*CCN$7$7$9$9 : :::25k2B2Ba2G2GATYYWbMcMc(,		#.2E2E2G2G(H(H%07L 0 0-0 0
 
 	

 ]\\\s~'<'<'>'>\\\\rH   r   c                 (    | j         j        t          v S r   )r  r  _SUPPORTED_MODELS)r  s    rF   is_model_supportedr    s    ?#'888rH   c                     t          |           s9d                    t                    }t          d| j        j         d|           d S )Nr  zModel z) is not supported yet, supported models: )r  r  r  rA  r  r  )r  supported_model_namess     rF   check_if_model_is_supportedr    sZ    e$$ 
 $		*; < <!oU_-ooXmoo
 
 	

 
rH   disable_check
tracer_clsc                 N   || j                                         }t          |          }t          | |          }|st	          |            d|v r0t          | j        dd          st                              d           d|vr<t          | j        dd          r&t                              d           d| j        _	         |            }|
                    | |          }t          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"])
        ```
    Nr9  	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9M +#E***K''kSX0Y0Y'#	
 	
 	
 ++kSX0Y0Y+.	
 	
 	
 "' Z\\F<<]<CCLX!!%66FLFM (-F$LFMMrH   r   r   )NNr   FF)F)NN)r   )Nr   FN)r  r  N)r  r   )r  rB  r  r  r  rB  r  osr	  r  ri  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@   upperrh  r  r?   r   rG   (_REGULAR_SUPPORTED_MODEL_NAMES_AND_TASKSrJ  _REGULAR_SUPPORTED_MODELSitemr>   r   extend_SPECIAL_SUPPORTED_MODELSrc  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.  r1  r3  r7  r9  r;  rJ  rQ  rU  rX  rZ  r\  rf  ri  rt  r|  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	unsqueezera  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 1 1 1 1 1 2 2 2 2 2 2 ) ) ) ) ) )       : : : : : : : : : : > > > > > > > > $ $ $ $ $ $                                             .          
	H	%	%JNN?B77==??CWW 
 8<& &%&&eCcN34& 
#Y& & & &R<, <, <, (| '.u%5 " 4 V VDz$ V!(()N)N)V)VQU)V)VWWWW!(()N)Nt)T)TUUUU   " E&&%>AZ%Z![![\\]] d d d
 ejZ Z Z Z    O O O       S S S !     J J J*	E 	E 	E34 3 3 3 3 3	-T 	- 	- 	- 	- 	- &'D - - - - - $( , , , , ," " " '+ !. !. !. !. !.H #' 8 8 8 8 8 23! % % % % % 89t P P P P PA A A- - - (, . . . . .( 26 . . . . .0 0 0 49d . . . . .* * *       - - -$- - -*- - - -"$ $ $ $- - -& & &: : :- - - - NRT T T T- - -- - -- - -" " "&,4	H*,4	H!#@,4 
H*,4 
H*	,4
 
HO_,4 
J
,4 
H6,4 
HM=,4 
K,4 
Iy,4 
L,,4 
J
,4 
Iy,4 
K,4 
Iy,4  
Iy!,4" 
L&#,4 ,4$ 
L,%,4& 
Iy',4( 
M=),4* 
L.+,4, 
L,-,4. 
L,/,40 
41,42 
J
3,44 
J
5,46 
L(7,48 
*9,4: 
L8;,4< 
L,=,4> 
L,?,4@ 
HO_A,4B 
HO_C,4D 
M=E,4 ,4F 
L.	O_	L2	6	H!<	H&	H8	H :&W,4 ,4 Xx/0 , , ,^ 5 ux*G H
)) )) )) )) ))e )) )) ))X_ _ _ _ _' _ _ _,	 	 	 	 	+ 	 	 	C C C C C7 C C C$ ;? 7?+W]-CWZEXXY x67 	   D    4   @H x7I1J      "$u+ "(D6S_K_B` " " " " &%uh5R5RSX5Y5Y   -,O22<@@	    ,+N22;??	    c c (SWX[S\J]    k k k k kv k k k\]RY ]T#Y ] ] ] ]9 9 9 9
 
 
 
 (,!)	> >>$s)$> > X	>
 > > > > > >rH   