
    ^j2                        U d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlZd dl	Zd dl
mZ d dlmZ  ededef         Zg d	Zd
ej                   j"                  dej$                  dej$                  fdZd
ej                   j(                  dej$                  dej$                  fdZdej$                  dej$                  fdZd
ej                   j.                  dej$                  dej$                  fdZd+dej$                  dedej$                  fdZdej$                  dej$                  dej$                  dej$                  fdZdddej$                  dej$                  dz  dej$                  fdZej                   j"                  eej                   j(                  eej:                  eej                   j<                  j:                  eej                   j.                  eej>                  eej@                  eiZ!e"edef   edef   f   e#d<   dede$edef   ef   fdZ% G d dejL                  j                        Z' G d d e'      Z( G d! d"e(      Z)d#edefd$Z* G d% d&ejL                  jV                        Z,	 	 d,d'ej                   jZ                  edef   z  d(e"e.ej$                  f   dz  d)e"e.ef   dz  dejL                  j^                  fd*Z0y)-    N)Callable)AnyTypeVar)Node)Proxy_C.)bound)embedding_overridefunctional_relu_overridegen_constructor_wrappermanual_meta_overridesMetaAttributeMetaDeviceAttribute	MetaProxy
MetaTracernn_layernorm_overrideproxys_to_metassymbolic_tracetorch_abs_overridetorch_nn_relu_overridetorch_relu_overridetorch_where_overrideselfinputreturnc                 x    t        j                  g |j                  | j                  j                  d   ddiS )Ndevicemeta)torchemptyshapeweightr   r   s     l/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/fx/experimental/meta_tracer.pyr
   r
   "   s1    ;;JJT[[%6%6r%:J6JJ    c                     |S N r$   s     r%   r   r   &   s	     Lr&   xc                     | S r(   r)   )r*   s    r%   r   r   ,       Hr&   c                     |S r(   r)   )r   r*   s     r%   r   r   0   r,   r&   inplacec                      |rt        d      | S )Nz=don't support inplace functional.relu for metatensor analysisAssertionError)r*   r.   s     r%   r   r   4   s    K
 	
 Hr&   	conditionyc                 r    | j                  d      |j                  d      z   |j                  d      z   S )Nr   r   )to)r2   r*   r3   s      r%   r   r   <   s5    
 <<v<&V)<<qtt6t?RRRr&   )outr7   c                     |t        d      | S )Nz2Don't support in-place abs for MetaTensor analysisr0   )r   r7   s     r%   r   r   D   s     QRRLr&   r   targetc                 l     t        j                         dt        dt        dt        f fd       }| fS )Nargskwargsr   c                     d dt         dd ffd}t        j                  j                  j	                  | |       t        j                  j                  j	                  ||       j
                  j                  d| |      S  | i |S )Nvr   c                 T    t        | t        j                  j                        r| y y r(   )
isinstancer    fxr   )r>   proxys    r%   check_has_proxyzAgen_constructor_wrapper.<locals>.wrapper.<locals>.check_has_proxy^   s    !UXX^^, -r&   call_function)r   r    rA   nodemap_aggregatetracercreate_proxy)r;   r<   rC   rB   r9   s      @r%   wrapperz(gen_constructor_wrapper.<locals>.wrapperZ   s~    	s 	t 	
 	##D/:##FO<<<,,_fdFSS4*6**r&   )	functoolswrapsr   )r9   rI   s   ` r%   r   r   W   sA     __V+s +c +c + +  F?r&   c                       e Zd Zdej                  ddfdZddedz  defdZdefdZ	e
defd       Ze
defd	       Ze
dd
       ZdedefdZy)r   tensor_metar   Nc                     || _         y r(   )_tensor_meta)r   rM   s     r%   install_tensor_metazMetaProxy.install_tensor_metao   s
    'r&   dimc                     t        | d      r+| j                   | j                  j                  |r|g S g  S | j                  j	                  dd|r	| |fi       S | fi       S )NrO   call_methodsize)hasattrrO   rT   rG   rH   )r   rQ   s     r%   rT   zMetaProxy.sizer   ss    4(T->->-J)4$$))CC5@@R@@{{''6#D#;B
 	
<@7B
 	
r&   c                     t        | d      r&| j                  | j                  j                         S | j                  j	                  dd| fi       S )NrO   rS   rQ   )rU   rO   rQ   rG   rH   r   s    r%   rQ   zMetaProxy.dimy   sI    4(T->->-J$$((**{{''utgrJJr&   c                     t        | d      r"| j                  | j                  j                  S | j                  j	                  dt
        j                  | dfi       S )NrO   rD   r"   )rU   rO   r"   rG   rH   builtinsgetattrrW   s    r%   r"   zMetaProxy.shape~   S    4(T->->-J$$***{{''X--g
 	
r&   c                     t        | d      r"| j                  | j                  j                  S | j                  j	                  dt
        j                  | dfi       S )NrO   rD   dtype)rU   rO   r]   rG   rH   rY   rZ   rW   s    r%   r]   zMetaProxy.dtype   r[   r&   c                     t        | d      S )Nr   )r   rW   s    r%   r   zMetaProxy.device   s     #422r&   kc                 F    |dk(  r| j                  |      S t        | |      S )NrO   )__getattribute__r   )r   r_   s     r%   __getattr__zMetaProxy.__getattr__   s*    ((++ T1%%r&   r(   )r   r   )__name__
__module____qualname__r    TensorrP   intr   rT   rQ   propertyr"   r]   r   strrb   r)   r&   r%   r   r   n   s    (u|| ( (
d
 
c 
KS K
 
s 
 
 
s 
 
 3 3
&S &S &r&   r   c                   D    e Zd ZdededdfdZed        Zdededefd	Z	y)
r   rootattrr   Nc                 P    || _         || _        |j                  | _        d | _        y r(   )rk   rl   rG   _node)r   rk   rl   s      r%   __init__zMetaAttribute.__init__   s"    		kk"&
r&   c                     | j                   G| j                  j                  dt        | j                  | j
                  fi       j                  | _         | j                   S )NrD   )rn   rG   rH   rZ   rk   rl   rE   rW   s    r%   rE   zMetaAttribute.node   sN     ::11499dii*@"d J zzr&   r;   r<   c                 n    | j                   j                  d| j                  | j                  f|z   |      S )NrS   )rG   rH   rl   rk   )r   r;   r<   s      r%   __call__zMetaAttribute.__call__   s1    {{''499tyylT&96
 	
r&   )
rc   rd   re   r   ri   ro   rh   rE   r   rr   r)   r&   r%   r   r      sJ    'Y 'c 'd '  
c 
S 
S 
r&   r   c                       e Zd Zy)r   N)rc   rd   re   r)   r&   r%   r   r      s    r&   r   r>   c                    t        | t              ryt        | t        j                  j                        rJt        | t
              st        dt        |              t        | d      st        d      | j                  S | S )Nr   zExpected MetaProxy but got rO   z*MetaProxy does not have an associated meta)
r@   r   r    rA   r   r   r1   typerU   rO   )r>   s    r%   r   r      sh    !()!UXX^^$!Y' #>tAwi!HIIq.) !MNN~~Hr&   c                   0    e Zd ZU dZeed<   g dZ	 	 	 ddedej                  j                  j                  deedf   d	eeef   d
edz  dedeegef   dz  def fdZdededeeef   def fdZdej*                  j,                  dedef   deedf   d	eeef   def
 fdZdej*                  j,                  defdZdej*                  j,                  def fdZdej                  j                   defdZddeeej6                  f   f fdZ xZS )r   Tallow_insert_stateless_mods)arangezerosones	full_likeeyeNkindr9   r;   .r<   name	type_exprproxy_factory_fnr   c           	      8   t         |   |||||||      }|dk(  r.|| j                  v r |j                  | j                  |          |S || j                  v r	d|v rd|d<   	 t
        j                  j                  j                  |t              }	t
        j                  j                  j                  |t              }
|dk(  r t        j                  ||      } ||	i |
}n*|dk(  rt        |	d   |      } ||	dd  i |
}n	|dk(  rzt        | d	      st        d
      d| _        	 | j                   j#                  |      }t%        |      }|t        v rt        |   |g|	i |
}n | j&                  |	i |
}d| _        n|dk(  rd| _        	 | j                   }|j)                  d      }|D ]  }t        ||      } t+        |t
        j,                        st        dt%        |             |j/                  d      }d| _        n|S t+        |t
        j                  j0                        st        d      |j                  |       |S # d| _        w xY w# d| _        w xY w# t2        $ r)}t5        j6                  d| d| d|        Y d }~|S d }~ww xY w)Nplaceholderr   r   rD   rS   r      call_moduleorig_forwardz$orig_forward not set for call_moduleTFget_attr.zExpected Tensor, got r5   z"Don't support composite output yetzCould not compute metadata for z target z: )superrH   	meta_argsrP   orig_fnsr    rA   rE   rF   r   r   getrZ   rU   r1   _disable_module_getattrrk   get_submoduleru   r   splitr@   rf   r6   r   	Exceptionwarningswarn)r   r}   r9   r;   r<   r~   r   r   rv
args_metaskwargs_metasmeta_targetmeta_outmodmod_typeattr_itratomsatome	__class__s                      r%   rH   zMetaTracer.create_proxy   s    W!	
 = Vt~~%=""4>>&#9:IT]]" 6!#)x 0	Y44T?KJ 88==66vOL&377G&
ClC&%jmV<&
12G,G&t^4()OPP/3,9))11&9C#CyH#88#8#B$",$0<$ $54#4#4j#QL#Q38D0#/3,	9#yyH"LL-E % ;#*8T#:;%h=,/DT(^DT-UVV'{{&{9H38D0	 b%((..1$%IJJ""8, 	/ 49D0 49D0  	YMM;D6&QSTUSVWXX		YsR   "CI' (AI ;I' A3I 	I' A I' 	II' 	I$$I' '	J0JJrl   attr_valparameter_proxy_cachec                 D    t        | dd      r|S t        |   |||      S )Nr   F)rZ   r   )r   rl   r   r   r   s       r%   rZ   zMetaTracer.getattr  s+     42E:O7?43HIIr&   mforwardc                 6    || _         t        | 	  ||||      S r(   )r   r   r   )r   r   r   r;   r<   r   s        r%   r   zMetaTracer.call_module&  s#     $w"1gtV<<r&   r   c                 
   d}|j                   j                  j                         }| d| }t        | j                  |      r#| d| }|dz  }t        | j                  |      r#| j                  j                  ||       |S )zb
        Helper method which tries to insert a module that was not declared as submodule.
        r   _r   )r   rc   lowerrU   rk   
add_module)r   r   idxmod_namepaths        r%   _insert_module_as_submodulez&MetaTracer._insert_module_as_submodule0  s     ==))//11SE"dii&Zq&D1HC dii& 			T3'r&   c                 $   	 t         |   |      S # t        $ rt | j                  rft	        t        |j                                     dk(  rAt	        t        |j                                     dk(  r| j                  |      }|| _	        |cY S  w xY w)Nr   )
r   path_of_module	NameErrorrw   lenlist
parametersbuffersr   prev_module)r   r   r   r   s      r%   r   zMetaTracer.path_of_module>  s    	7)#.. 		00S^^-./14S[[]+,177<#' 		s    A9BBrE   c                     t        ||       S r(   )r   )r   rE   s     r%   rB   zMetaTracer.proxyL  s    t$$r&   r   c           
         t        |t              st        dt        |             || _        | j
                  D ci c]  }|t        t        t        |             c}| _	        t               | _        | j                  j                         D ]4  \  }\  }}t        t        ||       | j                  j                  |       6 	 t        
| A  ||      }d|i|_        || j                  j                         D ]  \  }\  }	}t        t        ||        S c c}w # | j                  j                         D ]  \  }\  }	}t        t        ||        w xY w)Nz!Expected dict for meta_args, got r   )r@   dictr1   ru   r   _TORCH_METHODS_TO_PATCHr   rZ   r    patched_torch_methodssetr   itemssetattraddr   trace_tracer_extras)r   rk   r   concrete_argsr9   r~   rI   origgraphr   r   s             r%   r   zMetaTracer.traceO  sC   )T* #DT)_DU!VWW" 66&
 +GE6,BCC&
" %)%?%?%E%E%G 	$!D/7DE4)MMd#	$	+GM$6E$/#;E #'#=#=#C#C#E +iq$tT*+&
 $(#=#=#C#C#E +iq$tT*+s   !DD 8E)NNNr(   )rc   rd   re   rw   bool__annotations__r   ri   r    rA   rE   Targettupler   r   r   r   r   r   rH   rZ   nnModuler   r   r   rB   rf   r   __classcell__)r   s   @r%   r   r      s   (,,M  ;?TT $$T CHo	T
 S#XT DjT T #D65=1D8T 
TlJJ#&J?CCJ?OJ	J=88??= #s(#= CHo	=
 S#X= 
=uxx 3 %((// c %%((-- %I %+T#u||*;%< + +r&   r   rk   r   r   c                 "   t               }|j                  | ||      }t        | t        j                  j
                        r| j                  j                  n| j                  }t        j                  j                  |j                  ||      }|S r(   )r   r   r@   r    r   r   r   rc   rA   GraphModulerk   )rk   r   r   rG   r   r~   gms          r%   r   r   g  si    
 \FLLy-8E#-dEHHOO#D$-- 	 
		fkk5$	7BIr&   )F)NN)1rY   rJ   r   collections.abcr   typingr   r   r    torch.fxtorch.fx.noder   torch.fx.proxyr   r   __all__r   	Embeddingrf   r
   	LayerNormr   r   ReLUr   r   r   r   r   relu
functionalwhereabsr   r   r   r   r   rA   r   r   r   r   Tracerr   r   ri   r   r   r)   r&   r%   <module>r      s      $       T#s(+,&KUXX// K K K
((

%*\\
\\5<< ELL  5<< ELL  t  S||S %S16S
\\S 8<<<!&!4
\\ 
HH*	HH-	JJ#	HH6	HHMM)	KK%	II!G tHS#X.c0BBC 
8CHr!".+& +&\
I 
.	- 		s 	s 	a+ a+L 15+/
((//HS#X.
.C%&- S>D( XX	r&   