
    qi1                        d dl mZ d dlZd dlmc mc mZ d dlmc mc mc m	Z
 d dlmc mc mc mZ d dlmc mc m	Z d dlmc mc mZ d dlmc mc mc mZ d dlmZ d dlmc mZ d dlmZ d dlmZ ddlmZmZ ddl m!Z!m"Z"m#Z# ejH                  j                  Z%dejL                  d	ejN                  fd
Z(dejL                  d	ejN                  fdZ)dejL                  d	ejN                  fdZ*dejL                  d	e+ejN                     fdZ,dejL                  d	e+ejN                     fdZ-dejL                  d	ejN                  fdZ.dejL                  d	ejN                  fdZ/dejL                  d	e+ejN                     fdZ0deded	ejN                  fdZ1deded	ejN                  fdZ2deded	ejN                  fdZ3deded	ejN                  fdZ4d	e5e6e5eef   f   fdZ7	 ddedede5e6e5eef   f   dz  d	edz  fdZ8y)    )CallableN)GraphModule)Node   )NSSingleResultTypeNSSingleResultValuesType)get_target_type_strgetattr_from_fqnreturn_first_non_observer_nodemodreturnc                 6    | j                   j                         S Nweightdetachr   s    a/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/ao/ns/fx/weight_utils.pymod_weight_detachr      s    ::    c                 <    | d   j                   j                         S Nr   r   r   s    r   mod_0_weight_detachr      s    q6==!!r   c                 (    | j                         d   S r   )_weight_biasr   s    r   mod_weight_bias_0r      s    a  r   c                     g }t        | j                        D ]<  \  }}d|v sd|v s| j                  |   j                         }|j	                  |       > |S )Nweight_ih_lweight_hh_l)	enumerate_flat_weights_names_flat_weightsr   append)r   residx
param_nameparam_values        r   get_lstm_weightr(   "   s`    
C$S%<%<= $ZJ&-:*E++C0779KJJ{#$ Jr   c                 D   g }| j                   D ]  }|j                  |j                  j                         d   d   d   j                         d   d          |j                  |j                  j                         d   d   d   j                         d   d           |S )Nr      r   )_all_weight_valuesr#   param__getstate__)r   r$   weight_values      r   get_qlstm_weightr/   +   s    
C.. T

<%%224Q7:1=JJLQOPQRS

<%%224Q7:1=JJLQOPQRST Jr   c                 z   t        | t        j                  t        j                  t        j                  f      r| j
                  j                         S t        | t        j                  t        j                  t        j                  f      r| d   j
                  j                         S | j                         d   S r   )
isinstancennConv1dConv2dConv3dr   r   nni
ConvReLU1d
ConvReLU2d
ConvReLU3dr   r   s    r   get_conv_mod_weightr:   3   sz    #		299bii89zz  ""	C#..#..#..I	J1v}}##%%!!$$r   c                     t        | t        j                        r| j                  j	                         S t        | t
        j                        r| d   j                  j	                         S | j                         d   S r   )r1   r2   Linearr   r   r6   
LinearReLUr   r   s    r   get_linear_mod_weightr>   <   s\    #ryy!zz  ""	C	(1v}}##%%!!$$r   c                    t        | t        j                        rXg }t        | j                        D ]<  \  }}d|v sd|v s| j
                  |   j                         }|j                  |       > |S t        | t        j                        st        dt        |        d      g }| j                  D ]  }|j                  |j                  j                         d   d   d   j                         d   d          |j                  |j                  j                         d   d   d   j                         d   d           |S )Nr   r   ztype z not handled yetr   r*   r   )r1   r2   LSTMr    r!   r"   r   r#   nnqdAssertionErrortyper+   r,   r-   )r   r$   r%   r&   r'   r.   s         r   get_lstm_mod_weightsrD   E   s8   #rww()@)@A 	(OC
*mz.I!//4;;=

;'	( 
#tyy) 5c3C!DEE22 	LJJ""//1!4Q7:GGI!LQO JJ""//1!4Q7:GGI!LQO		 
r   nodegmc                 n   | j                   d   }t        |t              st        dt	        |             t        ||      }t        |t              st        dt	        |             |j                  dk7  rt        d|j                         t        ||j                        }|j                         S Nr   Expected Node, got get_attrExpected get_attr, got )
argsr1   r   rB   rC   r   opr
   targetr   )rE   rF   weight_arg_nodeweight_noder   s        r   get_conv_fun_weightrQ   \   s    iilOot,243H2IJKK0"EKk4(243D2EFGG~~#6{~~6FGHHb+"4"45F==?r   c                    | j                   d   }t        |t              st        dt	        |             |j
                  dk7  rt        d|j
                         t        ||j                        }|j                         S rH   )	rL   r1   r   rB   rC   rM   r
   rN   r   )rE   rF   qconv_state_nodeqconv_state_objs       r   get_qconv_fun_weightrU   j   s    yy|&-248H3I2JKLLj(67G7J7J6KLMM&r+;+B+BCO!!##r   c                     | j                   d   }t        |t              st        dt	        |             |j
                  dk(  r| j                   d   }t        |t              st        dt	        |             |j                   d   }t        |t              st        dt	        |             |j
                  dk7  rt        d|j
                         t        ||j                        }|j                         S |j
                  dk(  r4|j
                  dk7  rt        d|j
                         | j                   d   }t        |t              st        dt	        |             |j                   d   }t        |t              st        dt	        |             |j                   d   }|j                   d   }t        |t              st        dt	        |             |j
                  dk7  rt        d|j
                         t        ||j                        }|j                         j                  |      S |j
                  dk7  rt        d|j
                         t        ||j                        }|j                         S )	Nr   rI   call_moduler   rJ   rK   call_methodzExpected call_method, got )
rL   r1   r   rB   rC   rM   r
   rN   r   to)	rE   rF   linear_second_argrO   rP   r   dequant_nodeto_fp16_nodetarget_dtypes	            r   get_linear_fun_weightr^   u   s\   
 		!'.248I3J2KLMM},))A,/40 #6tO7L6M!NOO%**1-+t, #6tK7H6I!JKK>>Z' #:;>>:J!KLL!"k&8&89}}				.=0 #=>O>R>R=S!TUUyy|,- #6tL7I6J!KLL#((+,- #6tL7I6J!KLL#((+"''*+t, #6tK7H6I!JKK>>Z' #:;>>:J!KLL!"k&8&89}}!!,//:- #:;L;O;O:P!QRR!"&7&>&>?}}r   c                    | j                   d   }t        |t              st        dt	        |             |j
                  dk7  rt        d|j
                         t        ||j                        }|j                         \  \  }}}|S rH   )	rL   r1   r   rB   rC   rM   r
   rN   r-   )rE   rF   packed_weight_nodepacked_weightr   _bias_names          r   get_qlinear_fun_weightrd      s    1($/248J3K2LMNN
*67I7L7L6MNOO$R);)B)BCM*779OVUUMr   c                     i t         j                  t        t        j                  t
        t        j                  t        t        j                  t        t        j                  t        t        j                  t        t        j                  t        t        j                  t        t         j                  t        t        j                  t
        t        j                  t        t        j                  t        t        j                  t        t        j                   t        t        j                  t        t        j                  t        t         j"                  t        i t        j$                  t
        t        j"                  t        t        j"                  t        t        j&                  t        t        j(                  t        t        j$                  t        t        j$                  t        t         j*                  t        t        j*                  t        t        j,                  t
        t        j,                  t        t        j*                  t        t.        j*                  t        t        j,                  t        t        j0                  t        t         j2                  j4                  j6                  t        t         j8                  t:        t.        j8                  t<        it>        j@                  tB        t>        jD                  tB        t>        jF                  tB        tH        j@                  tJ        tH        jD                  tJ        tH        jF                  tJ        tH        jL                  tJ        tH        jN                  tJ        tH        jP                  tJ        t>        j4                  tR        tH        j4                  tT        tH        jV                  tT        id} | S )N)rW   call_function),r2   r3   r   r6   r7   r   nnqr   nnqatnniqatConvBn1dConvBnReLU1dnniqr4   r8   ConvBn2dConvBnReLU2dr5   r9   ConvBn3dConvBnReLU3dr<   r=   rA   
LinearBn1dmoduleslinearNonDynamicallyQuantizableLinearr@   r(   r/   Fconv1drQ   conv2dconv3dtoqrU   conv1d_reluconv2d_reluconv3d_relur^   rd   linear_relu)"op_to_type_to_weight_extraction_fns    r   &get_op_to_type_to_weight_extraction_fnr      s   )
II()
 NN/)
 JJ)	)

 LL+)
 OO.)
 !2)
 0)
 OO.)
 II()
 NN/)
 JJ))
 LL+)
 OO.)
  !2!)
" 0#)
$ OO.%)
( II())
* NN/+)
, JJ)-)
. LL+/)
0 OO.1)
2 !23)
4 05)
6 OO.7)
: II(;)
< JJ)=)
> NN/?)
@ OO.A)
B LL+C)
D KK*E)
F 0G)
H 0I)
J JJ==?PK)
N GG_O)
P II'Q)
X HH)HH)HH)JJ,JJ,JJ,OO1OO1OO1HH+JJ.OO3
W;O&z .-r   r~   c                    t         j                  j                  }d }t        |d      r|j                  | j
                     d   }|
t               }t        | |      }|}| j                  dk(  rY|d   }|j                         D ]@  \  }}	| j                  |k(  s |	| |      }
||
g| j
                  || j
                  |dd|d	c S  y | j                  dk(  rt        | j                  t              s!t        dt        | j                               t        || j                        }|d   }|j                         D ]=  \  }}	t        |      |u s |	|      }
||
g| j
                  || j
                  |dd|d	c S  y )N_node_name_to_scoper   rf   )	rC   valuesprev_node_nameprev_node_target_typeref_node_nameref_node_target_typeindex_within_argindex_of_argfqnrW   zExpected str, got )r   WEIGHTvaluehasattrr   namer   r	   rM   itemsrN   r1   strrB   rC   r
   )rE   rF   r~   res_typer   ref_node_typeprev_node_typefunction_mappingtarget_fn_typeweight_extraction_fnr   r   module_mappingtarget_mod_types                 r   extract_weight_from_noder      s    (..44H Cr()$$TYY/2)1-S-U*'b1M"Nww/!=oN4D4J4J4L 	0N0{{n,-dB7$%h&*ii-;%)YY,9()$%
 
	H + 
M	!$++s+ #5d4;;6G5H!IJJr4;;/;MJ5C5I5I5K 	1O1CyO+-c2$%h&*ii-;%)YY,9()$%
 
	 r   r   )9collections.abcr   torchtorch.ao.nn.intrinsicaor2   	intrinsicr6   torch.ao.nn.intrinsic.qatqatri   torch.ao.nn.intrinsic.quantized	quantizedrl   torch.ao.nn.qatrh   torch.ao.nn.quantizedrg   torch.ao.nn.quantized.dynamicdynamicrA   torch.nntorch.nn.functional
functionalru   torch.fxr   torch.fx.graphr   ns_typesr   r   utilsr	   r
   r   opsry   ModuleTensorr   r   r   listr(   r/   r:   r>   rD   rQ   rU   r^   rd   dictr   r   r    r   r   <module>r      s(   $  # # * * . .   # # , ,       B X X ii299  "RYY "5<< "!299 ! ! tELL'9 ")) U\\(: %RYY %5<< %%ryy %U\\ %bii D,> .d   $t $ $ $- -+ -%,, -`
 
; 
5<< 
>.S$x?Q:R5R0S >.J 	;
;; )-S$x7I2J-J(K
);
 $;r   