
    sg"6                        U d dl Z d dl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
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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
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$Zd dl%mc m&Z' d dlmZ d dl(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 g dZ2e-ejf                  e,ejh                  ejj                  e#jj                  ejl                  e#jl                  ejn                  e#jn                  ejp                  e#jp                  ejr                  e#jr                  ejt                  e#jt                  ejv                  e#jv                  ejx                  e#jx                  ejz                  e#jz                  ej|                  e#j|                  ej~                  e#j~                  ej                  e#j                  ej                  e#j                  iZBeeef   eCd	<   i e-ejf                  e,ejh                  ej                  ej                  ej                  ej                  ej                  ej                  ejl                  ejl                  ejn                  ejn                  ejp                  ejp                  ejr                  ejr                  ejt                  ejt                  ejv                  ejv                  ej                  ej                  ejx                  ejx                  ejz                  ejz                  ej                  ej                  ej                  ej                  ej                  ej                  i ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  j                  j                  ejj                  ejj                  ejj                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  i ej                  ej                  ej                  ej                  ej                  ej                  ej                  ejl                  ej                  ejn                  ej                  ejp                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ejj                  ejj                  ejj                  ejn                  ejn                  ejp                  ejp                  Zgeeef   eCd
<   ejn                  ejn                  ejp                  ejp                  ejj                  ejj                  ej                  j                  j                  ejj                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  iZheeef   eCd<   ej|                  e j|                  ejj                  e jj                  ejj                  e jj                  ej                  j                  j                  e jj                  ej                  e j                  ej                  e j                  ej~                  e j~                  ej                  e j                  ej                  ej                  ejz                  ejz                  ejx                  ejx                  iZjeeef   eCd<   ej                  hZlee   eCd<   e'j                  ej                  j(                  j                  e'j                  ej                  j(                  j                  e'j                  ej                  j(                  j                  e'j                  ej                  j(                  j                  e'j                  ej                  j(                  j                  e'j                  ej                  j(                  j                  iZteeeeuf   ef   eCd<   ej                  e)ej                  e)ej                  e)ej                  e*iZzeeef   eCd<   ejj                  ej                  j(                  jj                  iZ|eeef   eCd<   ejj                  ej                  j(                  j.                  jj                  iZ}eeef   eCd<   dee   fdZ~deeef   fdZdeeef   fdZdeeef   fdZdeeef   fdZ	 	 d*dedeeeef      dedefdZ	 d+dedeeeef      defdZdeeef   fdZdeeef   fdZdeeef   fd Zdeeef   fd!Zdee   fd"Zdee   fd#Zdeeeeuf   ef   fd$Zd%eeeuf   defd&Zd'ej                  j                  dee   fd(Zd'ej                  j                  defd)Zy),    N)AnyCallableDictOptionalSetUnion)nn)+default_fixed_qparams_range_0to1_fake_quant.default_fixed_qparams_range_neg1to1_fake_quant)DeQuantStub	QuantStub)get_combined_dict)type_before_parametrizations).DEFAULT_REFERENCE_STATIC_QUANT_MODULE_MAPPINGS$DEFAULT_STATIC_QUANT_MODULE_MAPPINGSDEFAULT_QAT_MODULE_MAPPINGS%DEFAULT_DYNAMIC_QUANT_MODULE_MAPPINGS,DEFAULT_FLOAT_TO_QUANTIZED_OPERATOR_MAPPINGS"DEFAULT_MODULE_TO_ACT_POST_PROCESS+DEFAULT_STATIC_SPARSE_QUANT_MODULE_MAPPINGS,DEFAULT_DYNAMIC_SPARSE_QUANT_MODULE_MAPPINGSno_observer_set(get_default_static_quant_module_mappings2get_default_static_quant_reference_module_mappings*get_embedding_static_quant_module_mappings/get_default_static_sparse_quant_module_mappingsget_static_quant_module_classget_dynamic_quant_module_classget_default_qat_module_mappings!get_embedding_qat_module_mappings)get_default_dynamic_quant_module_mappings0get_default_dynamic_sparse_quant_module_mappings$get_default_qconfig_propagation_list&get_default_compare_output_module_list0get_default_float_to_quantized_operator_mappingsget_quantized_operatorr   r   r   r   _INCLUDE_QCONFIG_PROPAGATE_LISTr   r   r   r   returnc                  n    t         j                  j                  t         j                  j                  h} | S )z8These modules cannot have observers inserted by default.)r	   quantizableLSTMMultiheadAttention)no_observerss    ^/var/www/html/venv/lib/python3.12/site-packages/torch/ao/quantization/quantization_mappings.pyr   r      s&    NN'')J)JKL    c                  4    t        j                  t              S )z8Get module mapping for post training static quantization)copydeepcopyr    r/   r.   r   r      s    ===>>r/   c                  4    t        j                  t              S )zBGet reference module mapping for post training static quantization)r1   r2   r   r3   r/   r.   r   r      s    ==GHHr/   c                      t        j                  t              } t        j                  | t
        j                  <   t        j                  | t
        j                  <   | S )z7Get module mapping, including mapping for embedding QAT)r1   r2   r   nnqEmbeddingBagnnqat	Embeddingmappings    r.   r   r      s>    mm@AG"%"2"2GE"}}GEOONr/   c                  4    t        j                  t              S )z?Get module mapping for post training static sparse quantization)r1   r2   r   r3   r/   r.   r   r      s    ==DEEr/   float_module_classadditional_static_quant_mappingis_referencec                     |i }t        |rt        nt        |      }|j                  | d      }|J dt	        |        dz          t        j                  |      S )zen Get the statically quantized module class corresponding to
    the floating point module class
    NFloating point module class 5 does not have a corresponding quantized module class)r   r   r   getstrr1   r2   )r=   r>   r?   all_mappingsstatic_quant_module_classs        r.   r   r      s}     '.*,'$ 	71'	L !- 0 01CT J$0 
&s+='>&?@
A	B0 ==233r/    additional_dynamic_quant_mappingc                     |i }t        t        |      }|j                  | d      }|J dt        |        dz          t	        j
                  |      S )zfn Get the dynamically quantized module class corresponding to
    the floating point module class
    NrA   rB   )r   r   rC   rD   r1   r2   )r=   rG   rE   dynamic_quant_module_classs       r.   r   r     su     (/+-($-/OL ".!1!12Dd!K%1 
&s+='>&?@
A	B1 ==344r/   c                  4    t        j                  t              S )z:Get default module mapping for quantization aware training)r1   r2   r   r3   r/   r.   r   r     s    ==455r/   c                      t        j                  t              } t        j                  | t
        j                  <   t        j                  | t
        j                  <   | S )zGet module mapping for quantization aware training
    This is includes default values in addition to
    enabling qat for embeddings.
    )r1   r2   r   r8   r7   r	   r9   r:   s    r.   r    r      s>    
 mm78G$11GBOO!OOGBLLNr/   c                      t         S )z9Get module mapping for post training dynamic quantization)r   r3   r/   r.   r!   r!   *  s    00r/   c                      t         S )z@Get module mapping for post training dynamic sparse quantization)r   r3   r/   r.   r"   r"   /  s    77r/   c                      t        t        j                               t        t        j                               z  t        t        j                               z  t
        z  } t        j                  |       S )z_Get the default list of module types that we'll attach qconfig
    attribute to in prepare
    )setr   keysr   r   r'   r1   r2   )#QCONFIG_PROPAGATE_MODULE_CLASS_LISTs    r.   r#   r#   4  se    
 	05578
)..0
1	2
388:
;	< *	* ( ==<==r/   c                     t        t        j                               t        t        j                               z  t        t        j                               z  t        t        j                               z  t        t        j                               z  t        t        j                               z  t        z  } t        j                  |       S )zSGet list of module class types that we will record output
    in numeric suite
    )	rO   r   valuesr   r   rP   r'   r1   r2   ).NUMERIC_SUITE_COMPARE_MODEL_OUTPUT_MODULE_LISTs    r.   r$   r$   A  s    
 	0779:
)002
3	4
3::<
=	> 2779
:	; )..0
1		2
 388:
;	< *	* 3 ==GHHr/   c                  4    t        j                  t              S N)r1   r2   r   r3   r/   r.   r%   r%   Q  s     ==EFFr/   float_opc                 ^    t         j                  | d      }|J dt        |        d       |S )z>Get the quantized operator corresponding to the float operatorNz	Operator z) does not have corresponding quantized op)r   rC   rD   )rW   quantized_ops     r.   r&   r&   X  s@    ?CCHdSL L	3x=/!JKL r/   modulec                 @    t         j                  t        |       d      S )zGet the special activation post process for `module`, this has
    higher priority than the activation post process in `qconfig`
    e.g.
    input: torch.nn.Sigmoid
    output: default_affine_fixed_qparam_fake_quant
    N)r   rC   r   rZ   s    r.   _get_special_act_post_processr]   a  s!     .11$V,d r/   c                 @    | j                   xr t        |       t        v S rV   )trainingtyper   r\   s    r.   _has_special_act_post_processra   m  s    ??QtF|/QQQr/   )NFrV   )r1   typingr   r   r   r   r   r   torchtorch.ao.nnaor	   ao_nntorch.ao.nn.intrinsic	intrinsicnnitorch.ao.nn.intrinsic.qatqatnniqattorch.ao.nn.intrinsic.quantized	quantizednniq'torch.ao.nn.intrinsic.quantized.dynamicdynamicnniqdtorch.ao.nn.qatr8   torch.ao.nn.qat.dynamicnnqatdtorch.ao.nn.quantizedr6   torch.ao.nn.quantized.dynamicnnqdtorch.ao.nn.quantized.reference	referencennqrtorch.ao.nn.sparsetorch.nn.functional
functionalF#torch.ao.quantization.fake_quantizer
   r   torch.ao.quantization.stubsr   r   torch.ao.quantization.utilsr   torch.nn.utils.parametrizer   __all__Quantize
DeQuantizeLinearConv1dConv2dConv3dConvTranspose1dConvTranspose2dConvTranspose3dr9   r7   GRUCellLSTMCellRNNCellr+   r   __annotations__BatchNorm2dBatchNorm3dDropoutELU	GroupNorm	HardswishInstanceNorm1dInstanceNorm2dInstanceNorm3d	LayerNorm	LeakyReLUmoduleslinearNonDynamicallyQuantizableLinearReLU6PReLUFloatFunctionalQFunctionalBNReLU2dBNReLU3d
ConvReLU1d
ConvReLU2d
ConvReLU3d	ConvAdd2dConvAddReLU2d
LinearReLULinearLeakyReLU
LinearTanhConvBn1dConvBn2dConvBn3dConvBnReLU1dConvBnReLU2dConvBnReLU3d
LinearBn1dr   r   GRUr   
Sequentialr'   eluops	hardswishinstance_norm
layer_norm
leaky_reludropoutr   rD   HardsigmoidSigmoidSoftmaxTanhr   sparser   r   r   r   r   r   r   boolr   r   r   r    r!   r"   r#   r$   r%   r&   Moduler]   ra   r3   r/   r.   <module>r      s
    < <    # # * * . . 7 7 7   ( ( # # , , . .     ? 9 C8 s||IIt{{IIt{{IIt{{IIt{{,,,,,,LL$..OOT&&JJKKJJGGTYYG .Xs]0C &6=s||6=6= NNCOO6= NNCOO	6=
 JJ6= IIszz6= IIszz6= IIszz6= ++6= ++6= ++6= FFCGG6= LL#--6= OOS%%6= LL#--6=  LL#--!6=" s))#6=$ s))%6=& s))'6=( LL#--)6=* LL#--+6=, JJ55szz-6=. IIszz/6=0 HHcii16=2 JJ36=4 HHcii56=8 96=< LL$--=6=> LL$--?6=@ NNDOOA6=B NNDOOC6=D NNDOOE6=F MM4>>G6=H t))I6=J NNDOOK6=L --M6=N NNDOOO6=P OOSZZQ6=R OOSZZS6=T OOSZZU6=V W6=X Y6=Z [6=\ t]6=^ t_6=` ta6=b szzc6=f 
LL#**g6=h 
LL#**i6=j 
LL#**k6= $d8S=&9 6t IIu||IIu||IIu||JJ55u||LL&//LL&//LL&//f))f))f))NNF%%NNF%%NNF%%NNF%%4 T(C-0 ( JJIIt{{
MM4;;JJ55t{{GGTYYFFDHHKKJJNNE$$OOS%%LL#--> %tHcM': 0 MM2 X  EE599""KK$$..OOUYY((66LL%))%%00LL%))%%00IIuyy""**V ,d533G3Q.R  NN?JJ;JJ;GG;	@ "D8);$<  IIu||%%,,D +T(C--@  IIu||%%--44E ,d8S=.A 
S ?$x}2E ?
ID3<O I
D34G Fhm9L F FJ4 4%-d8S=.A%B4 4 		44 GK5 5&.tHcM/B&C5 	5(6hm)< 6
4#+> 14#3F 1
8$x}:M 8

>c(m 
>IH I Gx}	x	'(GU8S=%9 h 	%((// 	hx>P 	R%((// Rd Rr/   