
    `iQ)                     x   U d dl Z d dlZd dlZd dlmZmZmZmZ d dlZd dl	Zd Z
d Zd Zd ZddZd	 Zdd
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ef         ed<   d Z G d dej        j                  Z G d de          Z  G d de           Z!d Z" G d dej        j#                  Z$	 	 ddeej        j%        edef         f         deee&ej'        f                  deee&ef                  dej        j(        fdZ)dS )    N)AnyCallableOptionalUnionc                 X    t          j        g |j        | j        j        d         R ddiS )Ndevicemeta)torchemptyshapeweightselfinputs     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/fx/experimental/meta_tracer.pyembedding_overrider      s1    ;JJT[%6r%:JJJ6JJJ    c                     |S N r   s     r   nn_layernorm_overrider      s    Lr   c                     | S r   r   )xs    r   torch_relu_overrider          Hr   c                     |S r   r   )r   r   s     r   torch_nn_relu_overrider      r   r   Fc                     |r
J d            | S )Nz<dont support inplace functional.relu for metatensor analysisr   )r   inplaces     r   functional_relu_overrider!      s    VVVVV;Hr   c                     |                      d          |                     d          z   |                     d          z   S )Nr
   r	   )to)	conditionr   ys      r   torch_where_overrider'       s>     <<v<&&V)<)<<qtt6t?R?RRRr   )outc                    |
J d            | S )Nz1Dont support in-place abs for MetaTensor analysisr   )r   r(   s     r   torch_abs_overrider*   &   s    ;;K;;;Lr   manual_meta_overridesc                 J     t          j                    fd            }| fS )Nc                      d fd}t           j        j                            | |           t           j        j                            ||           j                            d| |          S  | i |S )Nc                 N    t          | t          j        j                  r| d S d S r   )
isinstancer   fxProxy)vproxys    r   check_has_proxyzAgen_constructor_wrapper.<locals>.wrapper.<locals>.check_has_proxy;   s,    !UX^,,  r   call_function)r   r0   nodemap_aggregatetracercreate_proxy)argskwargsr4   r3   targets      @r   wrapperz(gen_constructor_wrapper.<locals>.wrapper7   s    	 	 	 	 	
 	##D/:::##FO<<<<,,_fdFSSS64*6***r   )	functoolswraps)r<   r=   s   ` r   gen_constructor_wrapperr@   6   s=    _V+ + + + +  F?r   c                   j    e Zd Zd Zd	dZd Zed             Zed             Zed             Z	d Z
dS )
	MetaProxyc                     || _         d S r   )_tensor_meta)r   tensor_metas     r   install_tensor_metazMetaProxy.install_tensor_metaL   s    'r   Nc                     t          | d          r| j         | j        j        |r|gng  S | j                            dd|r| |fn| fi           S )NrD   call_methodsize)hasattrrD   rI   r8   r9   )r   dims     r   rI   zMetaProxy.sizeO   sm    4(( 	AT->-J)4$)C+?C55R@@{''6##BD#;;D7B
 
 	
r   c                     t          | d          r | j        | j                                        S | j                            dd| fi           S )NrD   rH   rK   )rJ   rD   rK   r8   r9   r   s    r   rK   zMetaProxy.dimV   sO    4(( 	+T->-J$((***{''utgrJJJr   c                     t          | d          r| j        | j        j        S | j                            dt
          j        | dfi           S )NrD   r5   r   )rJ   rD   r   r8   r9   builtinsgetattrrM   s    r   r   zMetaProxy.shape[   R    4(( 	+T->-J$**{''X-g
 
 	
r   c                     t          | d          r| j        | j        j        S | j                            dt
          j        | dfi           S )NrD   r5   dtype)rJ   rD   rS   r8   r9   rO   rP   rM   s    r   rS   zMetaProxy.dtypec   rQ   r   c                 "    t          | d          S )Nr	   )MetaDeviceAttributerM   s    r   r	   zMetaProxy.devicek   s     #4222r   c                 X    |dk    r|                      |          S t          | |          S )NrD   )__getattribute__MetaAttribute)r   ks     r   __getattr__zMetaProxy.__getattr__q   s3    ((+++ T1%%%r   r   )__name__
__module____qualname__rF   rI   rK   propertyr   rS   r	   rZ   r   r   r   rB   rB   K   s        ( ( (
 
 
 
K K K
 
 
 X
 
 
 X
 3 3 X3
& & & & &r   rB   c                   6    e Zd ZdefdZed             Zd ZdS )rX   attrc                 H    || _         || _        |j        | _        d | _        d S r   )rootr`   r8   _node)r   rb   r`   s      r   __init__zMetaAttribute.__init__z   s$    		k


r   c                     | j         8| j                            dt          | j        | j        fi           j        | _         | j         S )Nr5   )rc   r8   r9   rP   rb   r`   r6   rM   s    r   r6   zMetaAttribute.node   sG     :1149di*@"  J zr   c                 X    | j                             d| j        | j        f|z   |          S )NrH   )r8   r9   r`   rb   )r   r:   r;   s      r   __call__zMetaAttribute.__call__   s0    {''49tylT&96
 
 	
r   N)r[   r\   r]   strrd   r^   r6   rg   r   r   r   rX   rX   y   sY        3       X
 
 
 
 
r   rX   c                       e Zd ZdS )rU   N)r[   r\   r]   r   r   r   rU   rU      s        Dr   rU   c                    t          | t                    rdS t          | t          j        j                  rPt          | t
                    sJ dt          |                        t          | d          s
J d            | j        S | S )Nr
   zExpected MetaProxy but got rD   z*MetaProxy does not have an associated meta)	r/   rU   r   r0   r1   rB   typerJ   rD   )r2   s    r   proxys_to_metasrl      s    !()) v!UX^$$ !Y''PP)PtAww)P)PPP'q.))WW+WWW)~Hr   c                        e Zd ZU dZeed<   g dZ	 	 	 d fd	Z fdZ fdZ	de
j        j        d	efd
Zde
j        j        d	ef fdZd Zddeee
j        f         f fdZ xZS )
MetaTracerTallow_insert_stateless_mods)arangezerosones	full_likeeyeNc           	      @   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k    r%t                              ||          } ||	i |
}n?|dk    r(t          |	d         |          } ||	dd          i |
}n|dk    rt          | d	          sJ d
| _        	 | j                            |          }t#          |          }|t          v rt          |         |g|	R i |
}n | j        |	i |
}d| _        n# d| _        w xY w|dk    rd
| _        	 | j        }|                    d          }|D ]}t          ||          }t)          |t
          j                  sJ |                    d          }d| _        n# d| _        w xY w|S t)          |t
          j        j                  s
J d            |                    |           n4# t0          $ r'}t3          j        d| d| d|            Y d }~nd }~ww xY w|S )Nplaceholderr	   r
   r5   rH   r      call_moduleorig_forwardTFget_attr.r#   z!Dont support composite output yetzCould not compute metadata for z target z: )superr9   	meta_argsrF   orig_fnsr   r0   r6   r7   rl   r+   getrP   rJ   _disable_module_getattrrb   get_submodulerk   ry   splitr/   Tensorr$   r1   	Exceptionwarningswarn)r   kindr<   r:   r;   name	type_exprproxy_factory_fnrv
args_metaskwargs_metasmeta_targetmeta_outmodmod_typeattr_itratomsatome	__class__s                      r   r9   zMetaTracer.create_proxy   s8    WW!!&$i9I
 
 =  Vt~%=%=""4>&#9:::IT]"" 6!!#)x *	Y44T?KKJ 8=66vOOL&&377GG&;
ClCC&&%jmV<<&;
122G,GG&&t^44444/3,
9)11&99C#CyyH#888#8#B$",$ $ $0<$ $ $54#4j#QL#Q#Q38D005D08888##/3,9#yH"LL--E % ; ;#*8T#:#:%h====='{{&{99H38D005D08888	 b%(.11VV3VVV1""8,,,, 	Y 	Y 	YMWDWW&WWTUWWXXXXXXXX	Y 	sQ   -CI* :AF I* 	F!!I* 2A#H I* 	H&&I* +>I* *
J4JJc                 p    t          | dd          r|S t                                           |||          S )Nr   F)rP   r|   )r   r`   attr_valparameter_proxy_cacher   s       r   rP   zMetaTracer.getattr   s9    42E:: 	JO77??43HIIIr   c                 Z    || _         t                                          ||||          S r   )ry   r|   rx   )r   mforwardr:   r;   r   s        r   rx   zMetaTracer.call_module   s)    #ww""1gtV<<<r   r   returnc                     d}|j         j                                        }| d| }t          | j        |          r!| d| }|dz  }t          | j        |          !| j                            ||           |S )zb
        Helper method which tries to insert a module that was not declared as submodule.
        r   _rw   )r   r[   lowerrJ   rb   
add_module)r   r   idxmod_namepaths        r   _insert_module_as_submodulez&MetaTracer._insert_module_as_submodule   s     =)//11""S""di&& 	&&&&D1HC di&& 	 		T3'''r   c                 |   	 t                                          |          S # t          $ r | j        rt	          t          |                                                    dk    rRt	          t          |                                                    dk    r |                     |          }|| _	        |cY S  w xY w)Nr   )
r|   path_of_module	NameErrorro   lenlist
parametersbuffersr   prev_module)r   r   r   r   s      r   r   zMetaTracer.path_of_module  s    	77))#... 		 		 		0S^^--..//144S[[]]++,,1177<<#' 		s    $ BB;9B;c                 "    t          ||           S r   )rB   )r   r6   s     r   r3   zMetaTracer.proxy  s    t$$$r   r}   c                 |   t          |t                    sJ || _        d | j        D             | _        t                      | _        | j                                        D ]8\  }\  }}t          t          ||           | j        
                    |           9	 t                                          ||          }d|i|_        || j                                        D ]\  }\  }}t          t          ||           S # | j                                        D ]\  }\  }}t          t          ||           w xY w)Nc           	      T    i | ]%}|t          t          t          |                    &S r   )r@   rP   r   ).0r<   s     r   
<dictcomp>z$MetaTracer.trace.<locals>.<dictcomp>  s=     &
 &
 &
 +GE6,B,BCC&
 &
 &
r   r}   )r/   dictr}   _TORCH_METHODS_TO_PATCHpatched_torch_methodssetr~   itemssetattrr   addr|   trace_tracer_extras)
r   rb   r}   concrete_argsr   r=   origgraphr   r   s
            r   r   zMetaTracer.trace  sR   )T*****"&
 &
6&
 &
 &
" %)%?%E%E%G%G 	$ 	$!D/7DE4)))Md####	+GGMM$66E$/#;E #'#=#C#C#E#E + +iq$tT****+4#=#C#C#E#E + +iq$tT****+s   ,D :D;)NNNr   )r[   r\   r]   ro   bool__annotations__r   r9   rP   rx   r   nnModulerh   r   r   r3   r   r   r   __classcell__)r   s   @r   rn   rn      s@        (,,,,MMM G G G G G GRJ J J J J= = = = =ux 3    %(/ c      % % %+ +T#u|*;%< + + + + + + + + + +r   rn   rb   .r}   r   r   c                     t                      }|                    | ||          }t          | t          j        j                  r| j        j        n| j        }t          j        	                    |j
        ||          }|S r   )rn   r   r/   r   r   r   r   r[   r0   GraphModulerb   )rb   r}   r   r8   r   r   gms          r   symbolic_tracer   ,  sk    
 \\FLLy-88E#-dEHO#D#DW$- 	 
		fk5$	7	7BIr   )F)NN)*rO   r>   r   typingr   r   r   r   r   torch.fxr   r   r   r   r!   r'   r*   r   	Embedding	LayerNormrelu
functionalReLUwhereabsr+   r   r   r@   r0   r1   rB   rX   rU   rl   Tracerrn   r   rh   r   r   r   r   r   r   <module>r      s         1 1 1 1 1 1 1 1 1 1 1 1  K K K         
S S S &*      
H*	H-	J#	H6	HM)	K%	I!3 tHh./     *+& +& +& +& +& +& +& +&\
 
 
 
 
I 
 
 
.	 	 	 	 	- 	 	 	  K+ K+ K+ K+ K+ K+ K+ K+` 48.2 
#s(!33
4S%,./0 DcN+ X	     r   