
    gF                        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mZmZmZmZ d dlZd dlmc mZ d dlmZ d dlmZmZmZmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& dd	l'm(Z( dd
l)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZKmLZLmMZMmNZNmOZO  eN            rd dlPmQZQ  e(jR        eS          ZTejU        V                    dd          W                                eKv ZX	 d~dee/         deeeYeeY         f                  deeY         fdZZg dZ[ddgZ\g Z]e[D ]HZ^ e_e^e`          re]a                     eZdi e^           *e]a                     eZe^                     Ig dZb ec ed eee]ebz                                 Zfdagd Zh	 ddZid  Zjd! Zkd" Zld# Zmd$ Zndd%Zod& Zpdd'd(Zqd) Zrd* Zsddd'd+Ztddd'd,Zuddd-d.Zvdd'd/Zwd0 Zxdd'd1Zydd'd2Zzdddd3d4Z{dddd3d5Z|d6 Z}d7 Z~ddd8d9Zdd'd:Zd; Zddd<d=Zd> Zd~d?Zd@ ZdA ZdB ZdC Zd~dDZd~dEZdF ZdG ZdH ZddJZ	 ddLZdM ZdN ZdO ZdP Zi ej        j        ehej        j        j        eiej        j        ejej        j        ekej        j        elej        emej        j        j        eoej        j        enej        epej        eqej        erej        esej        etej        euej        evej        ewej        j        exi ej        eyej        ezej        e{ej        j        e|ej        e}ej        j        e~ej        eej        eej        eej        j        eej        eej        j        e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	Zeeef         edQ<   eIreeej        j        j        <    G dR dSe          Z G dT dUe          Z G dV dWe          Z G dX dYe          Z	 d~dZed[eed\         ed]         ed^         f         d_eeegef                  defd`Z G da dbe          Zdcedeeef         fddZde Zdfee*         deegef         fdgZ edhe*fi  ee*          i          Z edje+fi  ee+          i          Z edke,fi  ee,          i          Z edle-fi  ee-          i          Zddoedpedqeee                  fdrZ G ds dte           Zduej        dveeY         fdwZddyZddzZddefdudxdveeeY                  d{ed|ee         def
d}ZdS )    N)	AnyCallableDictListLiteralOptionalTupleTypeUnion)nn)GraphGraphModuleNodeProxyTracer)compatibility)is_fx_tracingParameterProxy   )logging)CacheDynamicCache	SinkCacheStaticCache)PretrainedConfigPreTrainedModel)
get_values),MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES MODEL_FOR_BACKBONE_MAPPING_NAMES!MODEL_FOR_CAUSAL_LM_MAPPING_NAMESMODEL_FOR_CTC_MAPPING_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_NAMES6MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING_NAMESMODEL_MAPPING_NAMES)"is_torch_greater_or_equal_than_2_0   )ENV_VARS_TRUE_VALUESTORCH_FX_REQUIRED_VERSIONget_torch_versionis_peft_availableis_torch_fx_available)	PeftModelFX_DEBUG_MODE 
model_namesupported_tasksreturnc                    i dt           dt          dt          dt          dt          dt
          dt          dt          d	t          d
t          dt          dt          dt          dt          dt          dt          dt           t"          t$          t&          d}||                                }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)r2   r*   r)   r'   r!   r-   r/   r(   r#   r+   r.   r0   r&   r$   r1   r"   r   r,   r    r%   keys
isinstancestrgetappend)r=   r>   task_mappingmodel_class_namestask
class_names         Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/transformers/utils/fx.py%_generate_supported_model_class_namesrO   Q   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    )1altclipalbertbartbert
blenderbotzblenderbot-smallbloomclipconvnextdebertaz
deberta-v2dinov2
distilbertz
donut-swinelectragpt2gpt_neogptjhierahubertlayoutlmllamacoherelxmertm2m_100marianmbartmegatron-bertmistralmixtral
mobilebertmt5nezhaoptpegasusplbartqwen2	qwen2_moeresnetroberta	segformerspeech_to_textspeech_to_text_2swint5trocrvitxglmwav2vec2rc   ro   )CLIPTextModelCLIPTextModelWithProjectionCLIPVisionModelCLIPVisionModelWithProjectionAltCLIPTextModelAltCLIPVisionModelGitVisionModelGPT2DoubleHeadsModelSpeech2Text2DecoderTrOCRDecoderPeftModelForCausalLMPeftModelForSeq2SeqLMc                 n    t          j        g |j        | j        j        d         R d| j        j        dS Nmeta)devicedtype)torchemptyshapeweightr   selfinputs     rN   torch_nn_embeddingr      s:    ;ccT[%6r%:cc6QUQ\QbccccrP          @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          rN   torch_nn_functional_embeddingr      s4     ;YYV\"%5YYfFLYYYYrP   c                     |S N r   s     rN   torch_nn_layernormr          LrP   c                     |S r   r   r   s     rN   torch_nn_groupnormr      r   rP   c                 Z    t          j        |j        d d         | j        fz   d          S )Nr   r   r   )r   r   r   out_featuresr   s     rN   torch_nn_linearr      s-    ;u{3B3'4+<*>>vNNNNrP   c                     | S r   r   xs    rN   
torch_relur          HrP   c                     |S r   r   )r   r   s     rN   torch_nn_relur      r   rP   c                 (    |st          d          | S )Nz>Don't support in-place functional.relu for MetaTensor analysis
ValueError)r   inplaces     rN   torch_nn_functional_relur      s     [YZZZHrP   c                     |                      d          |                     d          z   |                     d          z   S Nr   r   to)	conditionr   ys      rN   torch_wherer      s>     <<v<&&V)<)<<qtt6t?R?RRRrP   outc                (    |t          d          | S )Nz2Don't support in-place abs for MetaTensor analysisr   )r   r   s     rN   	torch_absr      s    
MNNNLrP   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 )Nr4   r   r   stepr   r   r   r   )lenrF   floatintrH   r   r   )argskwargsnr   startendr   s          rN   torch_aranger      s    D		ADAvv1g	
a
sssD% E

#u C$ 4yy::fd##DJJwE;e,E&IIIIrP   c                      t          |           } t          |           dk    rd| d<   nd|d<   t          |          }|                    dd            t	          j        | i |ddiS )Nr4   
fill_valuer   r   )listr   dictpopr   full)r   r   kwargs_without_devices      rN   
torch_fullr     st    ::D
4yy1}}Q | LLh---:tD4DDVDDDDrP   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     rN   
<listcomp>ztorch_cat.<locals>.<listcomp>%  s    '''!ag'''rP   c              3   (   K   | ]}|         V  d S r   r   )r   r   dims     rN   	<genexpr>ztorch_cat.<locals>.<genexpr>'  s'      ::%5:::::::rP   r4   r   r   )r   r   sumr   r   )tensorsr   axisr   shapesr   concatenated_dimfinal_shapes    `      rN   	torch_catr     s    
{t|
{t'
Qwwajnn$''w'''FOOE::::6:::::+!1 22U37995EEK;{62222rP   c                   ||d}|||}|dk     r | d                                          dz   |z   }t          | d         j                  }|                    |t	          |                      t          j        |d          S Nr   r4   r   r   )r   r   r   insertr   r   r   )r   r   r   r   r   s        rN   torch_stackr   ,  s    
{t|
{t'
Qwwajnn"S(!""E	LLc'll###;uV,,,,rP   )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   r4   )rF   r   Tensor
empty_likemaxr   r   r   rangerI   r   )	r   otherr   r   
max_lengthinput_shapeother_shaper   is	            rN   	torch_addr   8  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,,,,rP   c                &    t          | ||          S )Nr   )r   )r   r   r   s      rN   	torch_mulr   F  s    UEs++++rP   c                 "    t          | |          S r   )r   )r   r   s     rN   torch_tensor_mulr   J  s    T5!!!rP   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 )
Nr4   r   r   r           r   r   r   )r   sizer   r   r   rI   r   r   r   tensorr   )
r   r   r   d1d2r   r   shape1shape2r   s
             rN   torch_matmulr  N  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---rP   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           rN   	torch_bmmr
  r  sJ    
MNNN{J1jGAq!;z1a7777rP   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         rN   torch_baddbmmr  z  s&    
QRRRVV$$$rP   c                ,    t          | |||||          S )Nr  )r  )r   r  r  r  r   r   s         rN   torch_tensor_baddbmmr    s    vvD3OOOOrP   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     rN   r   ztorch_einsum.<locals>.<genexpr>  s2      YYW)'%@@@YYYYYYrP   r   )r   einsumr   )equationoperandsconcrete_operandss      rN   torch_einsumr    s>    YYPXYYY<5#455588@@@rP   c                     t          | j                  }t          |          D ]\  }}||xx         |z  cc<   t          j        |d          S r   )r   r   	enumerater   r   )r   sizesr   r   r   s        rN   torch_tensor_repeatr    sX    E%    1aA;uV,,,,rP   )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 )Nr4   r   r   r   r   )	r   r   r   r   rF   r   r   numelr   )r   r   r   num_argsr   repeatss         rN   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---rP   c                p    t          | j                  }t          |          ||<   t          j        |ddiS Nr   r   )r   r   r   r   r   )r   r   indexr   r   s        rN   torch_index_selectr)    s5    EUE#J;-f---rP   c                 $    t          | ||          S r   )r)  r   r   r(  s      rN   torch_tensor_index_selectr,    s    dC///rP   )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         rN   torch_gatherr/    s6    ES!E#J;-f---rP   c                 $    t          | ||          S r   )r/  r+  s      rN   torch_tensor_gatherr1    s    c5)))rP   c                     | S r   r   )r   shiftsdimss      rN   
torch_rollr5    r   rP   c                     | S r   r   )r   r4  s     rN   
torch_flipr7    r   rP   c                     | S r   r   )r   r4  s     rN   torch_tensor_flipr9    s    KrP   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   r4   r   r   r   r   paddingr   mathfloordilationkernel_sizestrideout_channelsr   r   )r   r   l_inr   r?  l_outs         rN   torch_nn_conv1drH    s    ;r?DElG'&U[!!}U[!!
A
N"T]1%59I!9Lq9P%QQTUUY]YdefYggjkk
 
 b	!E"I;uV,,,,rP   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   r4   r   r   r>  )r   r   h_inw_inr   r?  h_outw_outs           rN   torch_nn_conv2drO    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,,,,rP   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   rI   r   r   )r   r   r   	new_shape	dim_values        rN   torch_squeezerS    s    E
77))++#C:??IIcNNN	 	( 	(IA~~Y'''';uV,,,,rP   c                 "    t          | |          S r   )rS  r   r   s     rN   torch_tensor_squeezerV    s    s###rP   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      rN   torch_unsqueezerX    sY    E
QwwiikkAo#	LLa;uV,,,,rP   c                 "    t          | |          S r   )rX  rU  s     rN   torch_tensor_unsqueezerZ  	  s    4%%%rP   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    rN   <lambda>z*torch_unique_consecutive.<locals>.<lambda>  s    144<< rP   )r   unique_consecutive
zeros_likerF   r   r   tuplemap)r   r   outputs      rN   torch_unique_consecutiverd    sl    %e&6uU&K&K&KVVvVVF&%,'' :yy   S!7!788999rP   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      rN   torch_nn_functional_one_hotrg    sE    Q`aaa+.E;uV,,,,rP   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	            rN   0torch_nn_functional_scaled_dot_product_attentionrr    sM     KOM{2H;CSbS)C=C(CCFSSSSrP   c                 X    | j         dk    r|j        }nd}t          j        |d          S Nnone)r4   r   r   	reductionr   r   r   r   r   targetr   s       rN   torch_nn_mselossrz  $  2    ~;uV,,,,rP   c                 X    | j         dk    r|j        }nd}t          j        |d          S rt  rv  rx  s       rN   torch_nn_crossentropylossr}  ,  r{  rP   c                 X    | j         dk    r|j        }nd}t          j        |d          S rt  rv  rx  s       rN   torch_nn_bcewithlogitslossr  4  r{  rP   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   )rF   r   r   	ones_liker   float16float32float64int32r   int64)r   concretes     rN   to_concretez%operator_getitem.<locals>.to_concrete=  se    a&& 	q777H~%-u{![[[#;;u{33OrP   r  r   r   )	rF   r   r   ra  rb  operatorgetitemr   r   )abr  s      rN   operator_getitemr  <  s       !U\"" Qa 	c+q))**AAAA 05 A A A1EEHHPPPAq!!!rP   _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     rN   install_metadatazHFProxy.install_metadata  s    !rP   c                 >    | j                             dd| fi           S )Ncall_methodr   )tracercreate_proxyr   s    rN   r   zHFProxy.shape  s     {''vwKKKrP   c                 "    t          | d          S )Nr   )MetaDeviceAttributer  s    rN   r   zHFProxy.device  s     #4222rP   c                     t          | d          r| j        t          | j                  S t                                                      S Nr  )hasattrr  r   super__len__r   	__class__s    rN   r  zHFProxy.__len__  s@    4%% 	'$.*Dt~&&&ww   rP   c                     t          | d          r| j        | j        S t                                                      S r  )r  r  r  __bool__r  s    rN   r  zHFProxy.__bool__  s:    4%% 	"$.*D>!ww!!!rP   c                 X    |dk    r|                      |          S t          | |          S r  )__getattribute__HFAttribute)r   ks     rN   __getattr__zHFProxy.__getattr__  s3    ((+++ 4###rP   c                 V    | j                             dt          j        | ||fi           S Ncall_function)r  r  r  setitem)r   indicesvaluess      rN   __setitem__zHFProxy.__setitem__  s+    {''9IDRY[aKbdfgggrP   c                     t          | d          r| j        	|| j        v S t                                          |          S r  )r  r  r  __contains__)r   rj  r  s     rN   r  zHFProxy.__contains__  sA    4%% 	)$.*D$.((ww##C(((rP   )__name__
__module____qualname____doc__r  propertyr   r   r  r  r  r  r  __classcell__r  s   @rN   r  r    s         " " " L L XL 3 3 X3
! ! ! ! !
" " " " "
$ $ $h h h) ) ) ) ) ) ) ) )rP   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      rN   __init__zHFAttribute.__init__  sj    		k
49k** 	F!!'$)*=t"D"DEEEEE	F 	FrP   c                     | j         =| j                            dt          j        | j        | j        fi           j        | _         | j         S r  )r  r  r  builtinsr  r  r  noder  s    rN   r  zHFAttribute.node  sE     :11/8CSVZV_aeajUkmoppuDJzrP   c                 X    | j                             d| j        | j        f|z   |          S )Nr  )r  r  r  r  )r   r   r   s      rN   __call__zHFAttribute.__call__  s+    {''ty49,QUBUW]^^^rP   N)r  r  r  rG   r  r  r  r  r   rP   rN   r  r    sc        F3 F F F F   X_ _ _ _ _rP   r  c                       e Zd ZdS )r  N)r  r  r  r   rP   rN   r  r    s        DrP   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     rN   install_orig_cache_clsz#HFCacheProxy.install_orig_cache_cls  s    -rP   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    rN   r  zHFCacheProxy.__class__  s8    t.// 	b`aaa{,T-ABBrP   N)	r  r  r  r  r
   r   r  r  r  r   rP   rN   r  r    s]         .T%[ . . . . C C XC C CrP   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    r_d         j        }dk    r}n/dk    rj        }n!dk    rj        }nt          d d          |	                    || |          S  | i |S )	Nc                 `    t          | t                    r                    |            d S d S r   )rF   r   rI   )r  found_proxiess    rN   check_proxyz4create_wrapper.<locals>.wrapper.<locals>.check_proxy  s9    !U## ($$Q'''''( (rP   r   r  r  r  zop_type z not supported.r  )
r   r   fxr  map_aggregater   r  r  r   r  )	r   r   r  r  ry  r  r  r  r  s	        @rN   wrapperzcreate_wrapper.<locals>.wrapper  s$    	-8T,V,,,	( 	( 	( 	( 	( 	##D+666##FK888}!!"1%,F/))!M))!*J&&!* !DG!D!D!DEEE&&wfWg&hhh8T,V,,,rP   )	functoolswraps)r  r  r  r  s   ``` rN   create_wrapperr    sF    
 _X- - - - - - -6 NrP   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	           rN   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
rP   r   )r  r  r  r  rG   r	   r
   r   r   r   r   r   r   r  r  r  s   @rN   r  r    s          ?C  T3Y CH~	
 #8TFEM#:;         rP   r  ry  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  )ry  r  s     rN   gen_constructor_wrapperr    s     V_55GF?rP   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 )	rF   r  r   r  r   r  r  r  r  )vs    rN   _proxies_to_metasr  $  sy    !()) v!UX^$$ 1g&& 	A71k+B+B 	A?A??@@@{HrP   r  c                 0     dt           dt          f fd}|S )Nr   r?   c                     t          t          t                    st          d          t	          | t                    }|                               |S )NzJCannot create HFCacheProxy because there is no HFTracer currently tracing.)rF   _CURRENT_TRACERHFTracerr  r  r  )r   cache_proxyr  s     rN   cache_proxy_factory_fnz=create_cache_proxy_factory_fn.<locals>.cache_proxy_factory_fn0  sN    /844 	mklll"1o66**>:::rP   )r   r  )r  r  s   ` rN   create_cache_proxy_factory_fnr  /  s7    $ <       "!rP   ProxyableCacher  ProxyableDynamicCacheProxyableSinkCacheProxyableStaticCache
      lowhighforbidden_valuesc                 r    |g }t          j        | |          }||v rt          j        | |          }||v |S r   )randomrandint)r  r  r  rk  s       rN   _generate_random_intr	  S  sO    N3%%E
#
#
#sD)) #
#
#LrP   c                       e Zd ZU dZdZeed<   dZeed<   g dZe	e
eeeeeeiZ e            sefneefZefdf fd	Zdd	d
edee         dee         deeej        f         f
dZd* fd	Zd Z dede!deee!f         fdZ" fdZ#d Z$e%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!Z0de(j)        def fd"Z1d#ej(        j)        d$edef fd%Z2 e3d&          d'd(de!fd)            Z4 xZ5S ),r  z
    Tracer that is able to symbolically trace models from the library. To do that, it uses the HFProxy instead of the
    regular PyTorch torch.fx.Proxy.
    Tproxy_buffer_attributesallow_insert_stateless_mods)arangezerosonesr   	full_likeeyer   r   clampfinfotrilr   c                     t                                          ||           t                      s't          dt	                       dt
           d          d S )N)autowrap_modulesautowrap_functionsz6Found an incompatible version of torch. Found version z, but only version z is supported.)r  r  r9   ImportErrorr7   r6   )r   r  r  r  s      rN   r  zHFTracer.__init__{  sv    *:Oabbb$&& 	=IZI\I\ = =,= = =  	 	rP   modelr   
input_namer   input_namesr?   c                 f   t          |d|j                  j        }|j        i }d}|dv r|d         }|g t	          t
                    t	          t                    t	          t                    t	          t                    t	          t                    v r&t          j        |t          j                  |d<   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	          t.                    t	          t0                    t	          t2                    t	          t4                    t	          t6                    dddv r&t          j        |t          j                  |d<   n]|g t	          t8                    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tC                      tC                      f}t          |j        dd          }tE          |tF          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*        }tW          |          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=|\  }}tC          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        j/        }|j        j*        |j        j/        z  }|d         |||fta          fd2tc          |j        j2                  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_sizeri   r4   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     rN   r   z1HFTracer._generate_dummy_input.<locals>.<genexpr>%  sg        
  J{%+fMMMJ{%+fMMM     rP   )3r  r  r  r   r   r)   r(   r$   r    r   r   r  longr+   r#   r.   r  configr#  r   
num_labelsr  r*   r0   r!   r'   r-   r,   r"   NotImplementedErrorr)  r(  r*  r	  rF   collectionsabcIterabler   input_feat_per_channel
model_typer1  hidden_sizer   visual_feat_dimvisual_pos_dim"_FX_SUPPORTED_MODELS_WITH_KV_CACHEnum_attention_headsra  r   num_hidden_layers)r   r  r  r   r  model_class_nameinputs_dictkv_cache_lengthr  labels_shapelabels_dtyper(  r+  heightwidthr1  embedding_shaper  
seq_length
mask_shape	num_headsrq  pkvshape_with_hidden_sizer<  r   s                           @@rN   _generate_dummy_inputzHFTracer._generate_dummy_input  s_    #5*EuWW`
 GGGqJ $LMM$CDD$ 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
#rP   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  rH   rF   r   r   r  r  r  AttributeErrorr  get_submoduletyper]  splitr   r   	Exception_IS_IN_DEBUG_MODEwarningswarn)r   kindry  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                        rN   r  zHFTracer.create_proxy3  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 )Nra  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    rN   r^  zLHFTracer._module_getattr.<locals>.maybe_get_proxy_for_attr.<locals>.<lambda>  s    nT4QRT\6]6] rP   r  r   )r  	signaturer  
parametersparam_shapes_constant)r}  collection_to_searchparameter_proxy_cacher	  r   	val_proxyr   r   s   `     @rN   maybe_get_proxy_for_attrz:HFTracer._module_getattr.<locals>.maybe_get_proxy_for_attr~  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 % trP   )
r  rF   r   r   	Parameterr  named_parametersr  r   named_buffers)r   r  r}  r  r  maybe_parameter_proxymaybe_buffer_proxys   `      rN   _module_getattrzHFTracer._module_getattry  s    42E:: "	O      (EH$677 1(@(@di88::<Q) )% )400+ .
8U\0R0R .%=%=di55779N& &" &1--OrP   r  r}  r  c                 0    |                      |||          S r   )r  )r   r  r}  r  s       rN   r  zHFTracer.getattr  s    ##D(4IJJJrP   c                     t          | dd          r ||i |S || _        t                                          ||||          S )Nrb  F)r  r]  r  r\  )r   r  forwardr   r   r  s        rN   r\  zHFTracer.call_module  sS    4/77 	,7D+F+++#ww""1gtV<<<rP   c                 "    t          ||           S r   )r  )r   r  s     rN   proxyzHFTracer.proxy  s    tT"""rP   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   ry  s     rN   
<dictcomp>z.HFTracer.patch_for_tracing.<locals>.<dictcomp>  s:     &
 &
 &
HNF+GE6,B,BCC&
 &
 &
rP   transformers)_TORCH_METHODS_TO_PATCHpatched_torch_methodssetr`  itemsr  r   addr  	getmodulesysmodulesr  r  __dict__rI   )r   r  r  r  origpatchedmodule_of_modelrt  orig_clspatched_clsr  r  r  s                rN   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----	. 	.rP   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  rA   )r   r	  r  r  s     rN   r  z"HFTracer.trace.<locals>.<dictcomp>  sB       l22qv]7R7R FAI7R7R7RrP   r   r  r6  r4   )_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]  )rF   r   r   r   )rk  s    rN   to_metazHFTracer.trace.<locals>.to_meta  s-    %.. (xx'''LrP   z**r  r[  r   r   rc  )3r  r~  rF   r   r   Moduler  r  r  r  rA   r  r   r   updaterE   r	  r  r  r   r(   r   r   supported_archsre  r  r  rY  r  pytreetree_maprk  VAR_KEYWORDr_  r  r  r  tracegraphnodesopry  r   r   rA  OrderedDictr   r   usersreversed
erase_node)r   r  r  r  r  sigparamr  r  sequence_lengthr   num_choicesr4  r  r  concrete_metasr  to_visit	to_deleter   userr  s     ``                 rN   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   )rF   r   )r   r  s     rN   r   zKHFTracer._stateless_mod_instanciation_depends_on_proxies.<locals>.<genexpr>T  s,      MMt:dE**MMMMMMrP   )anyr  r  )r   rt  s     rN   /_stateless_mod_instanciation_depends_on_proxiesz8HFTracer._stateless_mod_instanciation_depends_on_proxiesO  s/    
 MMs|7J7J7L7LMMMMMMrP   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.
        r<   r   r  FTr4   )r  r  r  lowerr  r  r  
add_module)r   rt  idxmod_namepathalready_inserteds         rN   _insert_module_as_submodulez$HFTracer._insert_module_as_submoduleV  s     ??DD 	2=)//11""S"" di&& 	ty$''3..#' &&&&D1HC di&& 	   	,I  s+++rP   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       rN   r  zHFTracer.path_of_modulen  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      rN   r  zHFTracer.is_leaf_module  sB    HHKKK 
QVQXQXQgQg$R
 R
 	
rP   )is_backward_compatibleobjr   c                 d     t          |d                      }|j        j        dk    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.
        rE   z**kwargs)r  r  ry  r  )r   r  	attributes      rN   rE   zHFTracer.keys  s9     -KV,,..	8?j((&&rP   )NNN)NNT)6r  r  r  r  r  bool__annotations__r  r  r   r  r   r  r   r  r   r   r  r8   r   r:   r  r@  r  rG   r   r   r   r   r   rY  r  r  r   r  r\  r  
contextlibcontextmanagerr   r   r  r   r  r   r   r  r  r  r  r  r   rE   r  r  s   @rN   r  r  \  s          %)T((((,,,,   	~+%)	 1B0A0C0Ce((/[dIeO)-B      m&m47m@DS	mX\]`Xam	c5<	 m m m m^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/    rP   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 )Nr4   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     rN   r  z%get_concrete_args.<locals>.<dictcomp>  s,    \\\!!&P[B[B[AFAIB[B[B[rP   )
r  r~  r  r  r  rE   r   joinr   r  )r  r  r  formatted_input_namesformatted_allowed_input_namess    `   rN   get_concrete_argsr    s    

EM
*
*CCN$7$7$9$9 : :::25k2B2Ba2G2GATYYWbMcMc(,		#.2E2E2G2G(H(H%07L 0 0-0 0
 
 	

 ]\\\s~'<'<'>'>\\\\rP   r   c                 (    | j         j        t          v S r   )r  r  _SUPPORTED_MODELS)r  s    rN   is_model_supportedr    s    ?#'888rP   c                     t          |           s9d                    t                    }t          d| j        j         d|           d S )Nr  zModel z) is not supported yet, supported models: )r  r  r  r@  r  r  )r  supported_model_namess     rN   check_if_model_is_supportedr    sZ    e$$ 
 $		*; < <!oU_-ooXmoo
 
 	

 
rP   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"])
        ```
    Nr8  	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  rE   r   r  r  r  r>  loggerwarningr  r  r   r  r   r  r  r   )r  r  r  r  r  r  traced_graphtraceds           rN   symbolic_tracer    s.   < (--//{##K%e[99M +#E***K''kSX0Y0Y'#	
 	
 	
 ++kSX0Y0Y+.	
 	
 	
 "' Z\\F<<]<CCLX!!%66FLFM (-F$LFMMrP   r   r   )NNr   FF)F)NN)r   )Nr   FN)r  r  N)r  r   )r  rA  r  r  r  r@  r  osr  r  ri  typingr   r   r   r   r   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   r<   r   cache_utilsr   r   r   r   modeling_utilsr   r   models.autor   models.auto.modeling_autor   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   pytorch_utilsr3   import_utilsr5   r6   r7   r8   r9   peftr:   
get_loggerr  r  environrH   upperrh  rG   rO   (_REGULAR_SUPPORTED_MODEL_NAMES_AND_TASKSrI  _REGULAR_SUPPORTED_MODELSitemrF   r   extend_SPECIAL_SUPPORTED_MODELSra  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/  r1  r5  r7  r9  rH  rO  rS  rV  rX  rZ  rd  rg  rr  rz  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  re  r  r  r  r  r  r  r  r   r   r	  r  r  r  r  r  r  r  r   rP   rN   <module>r-     s                    				  



  S S S S S S S S S S S S S S S S S S S S S S  $ $ $ $ $ $ $ $ $       < < < < < < < < < < < < < < 1 1 1 1 1 1 2 2 2 2 2 2 ) ) ) ) ) )       E E E E E E E E E E E E > > > > > > > > $ $ $ $ $ $                                           , ? > > > > >                
	H	%	%JNN?B77==??CWW 
 8<& &%&&eCcN34& 
#Y& & & &R3, 3, 3, (j '.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 , , ,\ & 8 58.KL
)) )) )) )) ))e )) )) ))X_ _ _ _ _' _ _ _,	 	 	 	 	+ 	 	 	C C C C C7 C C C$ ;?! !!7?+W]-CWZEXXY! x67! 	! ! ! !H    4   @H x7I1J      	"$u+ 	"(D6S_K_B` 	" 	" 	" 	" &%uh5R5RSX5Y5Y   -,O22<@@	    *)L229==	    ,+N22;??	    c c (SWX[S\J]    q q q q qv q q qh]RY ]T#Y ] ] ] ]9 9 9 9
 
 
 
 (,!)	> >>$s)$> > X	>
 > > > > > >rP   