
    i=6                     T   U d dl Z d dlmZ d dl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l-m.Z. g d	Z/e*ej`                  e)ejb                  ejd                  e jd                  ejf                  e jf                  ejh                  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|                  iZ?e@eef   eAd
<   i e*ej`                  e)ejb                  ej                  ej                  ej                  ej                  ej                  ej                  ejf                  ejf                  ejh                  ejh                  ejj                  ejj                  ejl                  ejl                  ejn                  ejn                  ejp                  ejp                  ej                  ej                  ejr                  ejr                  ejt                  ejt                  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jd                  ejd                  ejd                  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                  ej                  ej                  ej                  ej                  ej                  ejf                  ej                  ejh                  e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jd                  ejd                  ejd                  ejh                  ejh                  ejj                  ejj                  iZee@eef   eAd<   ejh                  ejh                  ejj                  ejj                  ejd                  ejd                  ej                  j                  j                  ejd                  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Zfe@eef   eAd<   ejv                  ejv                  ejd                  ejd                  ejd                  ejd                  ej                  j                  j                  ejd                  ej|                  ej|                  ej                  ej                  ejx                  ejx                  ejz                  ejz                  ej                  ej                  ejt                  ejt                  ejr                  ejr                  iZhe@eef   eAd<   ej                  hZjeke   eAd<   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Zse@eetz  ef   eAd<   ej                  e&ej                  e&ej                  e&ej                  e'iZye@eef   eAd<   ejd                  e	j                  j"                  jd                  iZ{e@eef   eAd<   ejd                  e	j                  j"                  j(                  jd                  iZ|e@eef   eAd<   deke   fdZ}de@eef   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Z	 	 d+dede@eef   dz  dedefdZ	 d,dede@eef   dz  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eke   fd#Zdeke   fd$Zde@eetz  ef   fd%Zd&eetz  defd'Zd(ej                  j                  dedz  fd)Zd(ej                  j                  defd*Zy)-    N)Callable)Any)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    e/var/www/html/engine/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)r-   r.   r   r/   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)r-   r.   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)r-   r.   r   r/   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      }|t	        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AssertionErrorstrr-   r.   )r9   r:   r;   all_mappingsstatic_quant_module_classs        r*   r   r      s}     '.*,'$ 	71'	L !- 0 01CT J (*3/A+B*CDEF
 	
 ==233r+    additional_dynamic_quant_mappingc                     |i }t        t        |      }|j                  | d      }|t        dt	        |        dz         t        j                  |      S )zfn Get the dynamically quantized module class corresponding to
    the floating point module class
    Nr=   r>   )r
   r   r?   r@   rA   r-   r.   )r9   rD   rB   dynamic_quant_module_classs       r*   r   r     su     (/+-($-/OL ".!1!12Dd!K!)*3/A+B*CDEF
 	
 ==344r+   c                  4    t        j                  t              S )z:Get default module mapping for quantization aware training)r-   r.   r   r/   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.
    )r-   r.   r   r4   r3   r   r5   r6   s    r*   r   r   !  s>    
 mm78G$11GBOO!OOGBLLNr+   c                      t         S )z9Get module mapping for post training dynamic quantization)r   r/   r+   r*   r   r   ,  s    00r+   c                      t         S )z@Get module mapping for post training dynamic sparse quantization)r   r/   r+   r*   r   r   1  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#   r-   r.   )#QCONFIG_PROPAGATE_MODULE_CLASS_LISTs    r*   r   r   6  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
    )	rL   r   valuesr   r   rM   r#   r-   r.   ).NUMERIC_SUITE_COMPARE_MODEL_OUTPUT_MODULE_LISTs    r*   r    r    C  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)r-   r.   r   r/   r+   r*   r!   r!   S  s     ==EFFr+   float_opc                 d    t         j                  |       }|t        dt        |        d      |S )z>Get the quantized operator corresponding to the float operatorz	Operator z) does not have corresponding quantized op)r   r?   r@   rA   )rT   quantized_ops     r*   r"   r"   Z  s>    ?CCHMLH&OP
 	
 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   r?   r   rW   s    r*   _get_special_act_post_processrZ   d  s!     .11$V,d r+   c                 @    | j                   xr t        |       t        v S rS   )trainingtyper   rY   s    r*   _has_special_act_post_processr^   p  s    ??QtF|/QQQr+   )NFrS   )r-   collections.abcr   typingr   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.qatr4   torch.ao.nn.qat.dynamicnnqatdtorch.ao.nn.quantizedr2   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ConvTranspose3dr5   r3   GRUCellLSTMCellRNNCellr'   r   dict__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#   rL   eluops	hardswishinstance_norm
layer_norm
leaky_reludropoutr   rA   HardsigmoidSigmoidSoftmaxTanhr   sparser   r   r   r   r   r   r   boolr   r   r   r   r   r   r   r    r!   r"   ModulerZ   r^   r/   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 &5=s||5=5= NNCOO5= NNCOO	5=
 JJ5= IIszz5= IIszz5= IIszz5= ++5= ++5= ++5= FFCGG5= LL#--5= OOS%%5= LL#--5=  LL#--!5=" s))#5=$ s))%5=& s))'5=( LL#--)5=* LL#--+5=, JJ55szz-5=. IIszz/5=0 HHcii15=2 HHcii35=6 75=: LL$--;5=< LL$--=5=> NNDOO?5=@ NNDOOA5=B NNDOOC5=D MM4>>E5=F t))G5=H NNDOOI5=J --NNDOO
OOSZZ
OOSZZ
OOSZZ



t
t
t
szz	LL#**	LL#**	LL#**i5= $d8S=&9 5r 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""**P ,d8c>83K.L  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 CG4 4%)(C-%84%?4 4 		46 DH5 5&*8S=&9D&@5 	5*6hm)< 6
4#+> 14#3F 1
8$x}:M 8

>c(m 
>IH I G$sNH; GX^  	%((// 	ho 	R%((// Rd Rr+   