
    `i                        d dl Z d dlmZmZ d dlZd dlmZ d dlmZ g dZ	 G d de          Z
 G d d	e          Zd
edefdZdeej        j        ef         dedefdZ G d de          Zd
edefdZd Z G d de          ZdS )    N)AnyUnion)GraphModule)Graph)FusedGraphModuleObservedGraphModuleObservedStandaloneGraphModuleQuantizedGraphModulec                   r     e Zd Zdeej        j        eee	f         f         de
dee         f fdZd Z xZS )r   rootgraphpreserved_attr_namesc                     || _         fd| j         D             }t                                          |           |D ]}t          | |||                    d S )Nc                 R    i | ]#}t          |          |t          |          $S  hasattrgetattr.0attrr   s     y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/ao/quantization/fx/graph_module.py
<dictcomp>z-FusedGraphModule.__init__.<locals>.<dictcomp>   E     
 
 
tT""
'$%%
 
 
    )r   super__init__setattrselfr   r   r   preserved_attrsr   	__class__s    `    r   r   zFusedGraphModule.__init__   s     %9!
 
 
 
1
 
 

 	u%%%# 	7 	7DD$ 56666	7 	7r   c                     t           j                                        }t          j        | j                  |_        t          |t          j        | j                  t          j        | j                            S N)	torchnnModulecopydeepcopy__dict__r   r   r   r    memofake_mods      r   __deepcopy__zFusedGraphModule.__deepcopy__&   s[    8??$$ M$-88M$*%%M$344
 
 	
r   __name__
__module____qualname__r   r%   r&   r'   dictstrr   r   setr   r.   __classcell__r"   s   @r   r   r      s        7EHOT#s(^347 7 "#h	7 7 7 7 7 7&
 
 
 
 
 
 
r   r   c                   r     e Zd Zdeej        j        eee	f         f         de
dee         f fdZd Z xZS )r   r   r   r   c                     h d                     |          | _        fd| j        D             }t                                          |           |D ]}t	          | |||                    d S )N>
   _is_qat	_patterns_qconfig_mapping_node_name_to_scope_observed_node_names_node_name_to_qconfig_prepare_custom_config_activation_post_process_map _activation_post_process_indexes"_equalization_node_name_to_qconfigc                 R    i | ]#}t          |          |t          |          $S r   r   r   s     r   r   z0ObservedGraphModule.__init__.<locals>.<dictcomp>C   r   r   )unionr   r   r   r   r   s    `    r   r   zObservedGraphModule.__init__1   s    %
 %
 %
 %$
%
% 	!
 
 
 
1
 
 

 	u%%%# 	7 	7DD$ 56666	7 	7r   c                     t           j                                        }t          j        | j                  |_        t          |t          j        | j                  t          j        | j                            S r$   )	r%   r&   r'   r(   r)   r*   r   r   r   r+   s      r   r.   z ObservedGraphModule.__deepcopy__O   s[    8??$$ M$-88"M$*%%M$344
 
 	
r   r/   r7   s   @r   r   r   0   s        7EHOT#s(^347 7 "#h	7 7 7 7 7 7<
 
 
 
 
 
 
r   r   modulereturnc                 4    t          | d          od| j        v S Nmeta_observed_graph_module_attrs)r   rK   rG   s    r   _is_observed_modulerN   Y   s    66""T'E'TTr   model	attr_namec                 n    t          | d          r$d| j        v rt          | j        d         |          S d S rJ   )r   rK   r   )rO   rP   s     r   _get_observed_graph_module_attrrR   ]   sA     uf N"@EJ"N"Nuz"@A9MMM4r   c                   r     e Zd Zdeej        j        eee	f         f         de
dee         f fdZd Z xZS )r	   r   r   r   c                 |    |                     ddh          }t                                          |||           d S )N'_standalone_module_input_quantized_idxs(_standalone_module_output_quantized_idxs)rE   r   r   )r    r   r   r   r"   s       r   r   z&ObservedStandaloneGraphModule.__init__f   sK      4999: 
  
 	u&:;;;;;r   c                     t           j                                        }t          j        | j                  |_        t          |t          j        | j                  t          j        | j                            S r$   )	r%   r&   r'   r(   r)   r*   r	   r   r   r+   s      r   r.   z*ObservedStandaloneGraphModule.__deepcopy__t   s[    8??$$ M$-88,M$*%%M$344
 
 	
r   r/   r7   s   @r   r	   r	   e   s        <EHOT#s(^34< < "#h	< < < < < <
 
 
 
 
 
 
r   r	   c                 D    t          |           o| j        d         j        S )NrL   )rN   rK   is_observed_standalone_modulerM   s    r   _is_observed_standalone_modulerZ   ~   s&    F## 	VK67Ur   c                     t          |           D ]K}d|v rEt          t          | |          t          j        j                  rt          | |          }||||z   <   Ld S N_packed_weight)dir
isinstancer   r%   _CScriptObject)r    destinationprefix	keep_varsrP   packed_weights         r   _save_packed_weightrf      sp    YY < <	y((ZD)$$eh&;.
 .
( $D)44M.;K*+< <r   c                        e Zd ZdZdeej        j        ee	e
f         f         dedee	         f fdZ fdZd Z xZS )r
   a  This class is created to make sure PackedParams
    (e.g. LinearPackedParams, Conv2dPackedParams) to appear in state_dict
    so that we can serialize and deserialize quantized graph module with
    torch.save(m.state_dict()) and m.load_state_dict(state_dict)
    r   r   r   c                     || _         fd| j         D             }t                                          |           |D ]}t          | |||                    |                     t
                     d S )Nc                 R    i | ]#}t          |          |t          |          $S r   r   r   s     r   r   z1QuantizedGraphModule.__init__.<locals>.<dictcomp>   r   r   )r   r   r   r   _register_state_dict_hookrf   r   s    `    r   r   zQuantizedGraphModule.__init__   s     %9!
 
 
 
1
 
 

 	u%%%# 	7 	7DD$ 56666&&':;;;;;r   c           	      d   g }|D ]h}	|	                     d          rQt          ||	         t          j        j                  r,t          | |	||	                    |                    |	           i|D ]}	|                    |	           t                      	                    |||||||           d S r\   )

startswithr_   r%   r`   ra   r   appendpopr   _load_from_state_dict)r    
state_dictrc   local_metadatastrictmissing_keysunexpected_keys
error_msgsattrs_to_poprP   r"   s             r   ro   z*QuantizedGraphModule._load_from_state_dict   s     # 	/ 	/I##$455 /*9%ux'<; ; / iI)>???##I... & 	& 	&INN9%%%%%%	
 	
 	
 	
 	
r   c                     t           j                                        }t          j        | j                  |_        t          |t          j        | j                  t          j        | j                            S r$   )	r%   r&   r'   r(   r)   r*   r
   r   r   r+   s      r   r.   z!QuantizedGraphModule.__deepcopy__   s[    8??$$ M$-88#M$*%%M$344
 
 	
r   )r0   r1   r2   __doc__r   r%   r&   r'   r3   r4   r   r   r5   r   ro   r.   r6   r7   s   @r   r
   r
      s         <EHOT#s(^34< < "#h	< < < < < <"
 
 
 
 
@
 
 
 
 
 
 
r   r
   )r(   typingr   r   r%   torch.fxr   torch.fx.graphr   __all__r   r   boolrN   r&   r'   r4   rR   r	   rZ   rf   r
   r   r   r   <module>r~      s                                      
 
 
 
 
{ 
 
 
<&
 &
 &
 &
 &
+ &
 &
 &
RU U U U U U+-.;>   
 
 
 
 
$7 
 
 
23 4    < < <?
 ?
 ?
 ?
 ?
; ?
 ?
 ?
 ?
 ?
r   