§
    Ÿ²Åj�7  ã                   ó   — 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j3        e,ej4        ej5        e#j5        ej6        e#j6        ej7        e#j7        ej8        e#j8        ej9        e#j9        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jA        e#jA        iZBeeef         eCd	<   i e-ej3        “e,ej4        “ejD        ejD        “ejE        ejE        “ejF        ejF        “ej6        ej6        “ej7        ej7        “ej8        ej8        “ej9        ej9        “ej:        ej:        “ej;        ej;        “ejG        ejG        “ej<        ej<        “ej=        ej=        “ejH        ejH        “ejI        ejI        “ejJ        ejJ        “i ejK        ejK        “ejL        ejL        “ejM        ejM        “ejN        ejN        “ejO        jP        jQ        ej5        “ej5        ej5        “ejR        ejR        “ejF        ejF        “ejS        ejS        “ejT        ejU        “ejV        ejV        “ejW        ejW        “ejX        ejX        “ejY        ejY        “ejZ        ejZ        “ej[        ej[        “ej\        ej\        “¥i ej]        ej]        “ej^        ej^        “ej_        ej_        “ej`        ej6        “eja        ej7        “ejb        ej8        “ejc        ejX        “ejd        ejY        “eje        ejZ        “ejY        ejY        “ejZ        ejZ        “ej]        ej]        “ejf        ej5        “ej5        ej5        “ej7        ej7        “ej8        ej8        “¥Zgeeef         eCd
<   ej7        ej7        ej8        ej8        ej5        ej5        ejO        jP        jQ        ej5        ej`        ej`        eja        eja        ejb        ejb        ejc        ejc        ejd        ejd        eje        eje        ejY        ejY        ejZ        ejZ        ej]        ej]        ejf        ejf        iZheeef         eCd<   ej>        e j>        ej5        e j5        ej5        e j5        ejO        jP        jQ        e j5        ejA        e jA        eji        e ji        ej?        e j?        ej@        e j@        ej]        ej]        ej=        ej=        ej<        ej<        iZjeeef         eCd<   ejk        hZlee         eCd<   e'jm        ejn        j        jm        e'jo        ejn        j        jo        e'jp        ejn        j        jp        e'jq        ejn        j        jq        e'jr        ejn        j        jr        e'js        ejn        j        js        iZteeeeuf         ef         eCd<   ejv        e)ejw        e)ejx        e)ejy        e*iZzeeef         eCd<   ej5        ej{        j        j5        iZ|eeef         eCd<   ej5        ej{        j        j        j5        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„Z€deeef         fd„Z�deeef         fd„Z‚	 	 d+dedeeeef                  deƒdefd„Z„	 d,dedeeeef                  de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!„Zˆdeeef         fd"„Z‰dee         fd#„ZŠdee         fd$„Z‹deeeeuf         ef         fd%„ZŒd&eeeuf         defd'„Z�d(ej        jŽ        dee         fd)„Z�d(ej        jŽ        deƒfd*„Z�dS )-é    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_mappingsÚ2get_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_mappingsÚ0get_default_dynamic_sparse_quant_module_mappingsÚ$get_default_qconfig_propagation_listÚ&get_default_compare_output_module_listÚ0get_default_float_to_quantized_operator_mappingsÚget_quantized_operatorr   r   r   r   Ú_INCLUDE_QCONFIG_PROPAGATE_LISTr   r   r   r   Úreturnc                  óJ   — t           j        j        t           j        j        h} | S )z8These modules cannot have observers inserted by default.)r	   ÚquantizableÚLSTMÚMultiheadAttention)Úno_observerss    ú\C:\Projects\Historical\venv\Lib\site-packages\torch/ao/quantization/quantization_mappings.pyr   r   Ñ   s   € å”NÔ'­¬Ô)JÐK€LØÐó    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Ô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   á   s5   € åŒmÕ@ÑAÔA€GÝ"%Ô"2€G�EÔÑÝ"œ}€G�EŒOÑØ€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ÔEÐEr/   FÚfloat_module_classÚadditional_static_quant_mappingÚis_referencec                 óØ   — |€i }t          |rt          nt          |¦  «        }|                     | 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�   € ð 'Ð.Ø*,Ð'Ý$àð	2Õ6Ð6å1Ø'ñ	ô €Lð !-× 0Ò 0Ð1CÀTÑ JÔ JÐØ$Ð0Ð0Ø@¥sÐ+=Ñ'>Ô'>Ð@Ð@Ø
Añ	Bñ 1Ô0Ð0õ Œ=Ð2Ñ3Ô3Ð3r/   Ú additional_dynamic_quant_mappingc                 óÆ   — |€i }t          t          |¦  «        }|                     | 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     s‚   € ð (Ð/Ø+-Ð(Ý$Ý-Ð/Oñô €Lð ".×!1Ò!1Ð2DÀdÑ!KÔ!KÐØ%Ð1Ð1Ø@¥sÐ+=Ñ'>Ô'>Ð@Ð@Ø
Añ	Bñ 2Ô1Ð1õ Œ=Ð3Ñ4Ô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Ô5Ð5r/   c                  óœ   — t          j        t          ¦  «        } t          j        | t
          j        <   t          j        | t
          j        <   | S )z‹Get 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      s6   € õ
 ŒmÕ7Ñ8Ô8€GÝ$Ô1€G�BŒOÑÝ!œO€G�BŒLÑØ€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                               ¦   «         ¦  «        t          t                               ¦   «         ¦  «        z  t          t                               ¦   «         ¦  «        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  sx   € õ
 	Õ0×5Ò5Ñ7Ô7Ñ8Ô8Ý
Õ)×.Ò.Ñ0Ô0Ñ
1Ô
1ñ	2å
Õ3×8Ò8Ñ:Ô:Ñ
;Ô
;ñ	<õ *ñ	*ð (õ Œ=Ð<Ñ=Ô=Ð=r/   c                  ó  — t          t                               ¦   «         ¦  «        t          t                               ¦   «         ¦  «        z  t          t                               ¦   «         ¦  «        z  t          t                               ¦   «         ¦  «        z  t          t                               ¦   «         ¦  «        z  t          t                               ¦   «         ¦  «        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Ô9Ñ:Ô:Ý
Õ)×0Ò0Ñ2Ô2Ñ
3Ô
3ñ	4å
Õ3×:Ò:Ñ<Ô<Ñ
=Ô
=ñ	>õ Õ2×7Ò7Ñ9Ô9Ñ
:Ô
:ñ	;õ Õ)×.Ò.Ñ0Ô0Ñ
1Ô
1ñ		2õ
 Õ3×8Ò8Ñ:Ô:Ñ
;Ô
;ñ	<õ *ñ	*ð 3õ Œ=ÐGÑHÔHÐHr/   c                  ó4   — t          j        t          ¦  «        S ©N)r1   r2   r   r3   r/   r.   r%   r%   Q  s   € õ Œ=ÕEÑFÔFÐFr/   Úfloat_opc                 óv   — t                                | 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  sE   € å?×CÒCÀHÈdÑSÔS€LàÐ Ð ØK•3�x‘=”=ÐKÐKÐKñ 	!Ô Ð àÐr/   Úmodulec                 óR   — t                                t          | ¦  «        d¦  «        S )zÝGet 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         ot          | ¦  «        t          v S rV   )ÚtrainingÚtyper   r\   s    r.   Ú_has_special_act_post_processra   m  s   € ØŒ?ÐQ�t F™|œ|Õ/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Å      sj  ðØ €€€€Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø CÐ CÐ CÐ CÐ CÐ Cðð ð €ð8 ˆsŒ|Ø�”Ø„IˆtŒ{Ø„IˆtŒ{Ø„IˆtŒ{Ø„IˆtŒ{ØÔ˜Ô,ØÔ˜Ô,ØÔ˜Ô,Ø„L�$”.Ø„O�TÔ&Ø„J�”Ø„K�”Ø„J�”Ø„GˆTŒYðGÐ .°°X¸s°]Ô0Cð ð ñ ð&6=ØˆsŒ|ð6=à�”ð6=ð „N�C”Oð6=ð „N�C”Oð	6=ð
 „J�”ð6=ð „IˆsŒzð6=ð „IˆsŒzð6=ð „IˆsŒzð6=ð Ô˜Ô+ð6=ð Ô˜Ô+ð6=ð Ô˜Ô+ð6=ð „FˆCŒGð6=ð „L�#”-ð6=ð „O�SÔ%ð6=ð „L�#”-ð6=ð  „L�#”-ð!6=ð" Ô�sÔ)ð#6=ð 6=ð$ Ô�sÔ)ð%6=ð& Ô�sÔ)ð'6=ð( „L�#”-ð)6=ð* „L�#”-ð+6=ð, „JÔÔ5°s´zð-6=ð. „IˆsŒzð/6=ð0 „HˆcŒið16=ð2 „J�”ð36=ð4 „HˆcŒið56=ð8 Ô˜œð96=ð< „L�$”-ð=6=ð> „L�$”-ð?6=ð@ „N�D”OðA6=ðB „N�D”OðC6=ðD „N�D”OðE6=ðF „M�4”>ðG6=ðH Ô�tÔ)ðI6=ð 6=ð 6=ðJ „N�D”OðK6=ðL Ô˜Ô-ðM6=ðN „N�D”OðO6=ðP „O�S”ZðQ6=ðR „O�S”ZðS6=ðT „O�S”ZðU6=ðV Ô˜œðW6=ðX Ô˜œðY6=ðZ Ô˜œð[6=ð\ Ô�t”ð]6=ð^ Ô�t”ð_6=ð` Ô�t”ða6=ðb Ô�s”zðc6=ðf 
„L�#”*ðg6=ðh 
„L�#”*ði6=ðj 
„L�#”*ðk6=ð 6=Ð $ d¨8°S¨=Ô&9ð 6ð 6ñ 6ðt „IˆuŒ|Ø„IˆuŒ|Ø„IˆuŒ|Ø„JÔÔ5°u´|à„L�&”/Ø„L�&”/Ø„L�&”/ØÔ�fÔ)ØÔ�fÔ)ØÔ�fÔ)Ø„N�FÔ%Ø„N�FÔ%Ø„N�FÔ%Ø„N�FÔ%ð4Ð ˜T (¨C -Ô0ð ð ñ ð( „J�”Ø„IˆtŒ{Ø
„M�4”;Ø„JÔÔ5°t´{Ø„GˆTŒYØ„FˆDŒHØ„K�”Ø„J�”Ø„N�EÔ$Ø„O�SÔ%Ø„L�#”-ð>Ð % t¨H°c¨MÔ':ð ð ñ ð0 „Mð2Ð   X¤ð ð ñ ð „Eˆ5Œ9ÔÔ"Ø„K�”Ô$Ô.Ø„O�U”YÔ(Ô6Ø„L�%”)Ô%Ô0Ø„L�%”)Ô%Ô0Ø„IˆuŒyÔ"Ô*ðVÐ ,¨d°5¸À3¸Ô3GÈÐ3QÔ.Rð ð ñ ð „NÐ?Ø„JÐ;Ø„JÐ;Ø„GÐ;ð	@Ð " D¨°8Ð);Ô$<ð ð ñ ð „IˆuŒ|Ô%Ô,ðDÐ +¨T°(¸C°-Ô-@ð ð ñ ð „IˆuŒ|Ô%Ô-Ô4ðEÐ ,¨d°8¸S°=Ô.Að ð ñ ð
˜˜Sœð ð ð ð ð?°$°xÀ°}Ô2Eð ?ð ?ð ?ð ?ð
I¸DÀÈ3ÀÔ<Oð Ið Ið Ið Ið
°D¸À3¸Ô4Gð ð ð ð ðF¸¸hÈ¸mÔ9Lð Fð Fð Fð Fð FJØð4ð 4Ø ð4à%-¨d°8¸S°=Ô.AÔ%Bð4ð ð4ð 	ð	4ð 4ð 4ð 4ð4 GKð5ð 5Ø ð5à&.¨t°H¸c°MÔ/BÔ&Cð5ð 	ð5ð 5ð 5ð 5ð(6¨¨h¸¨mÔ)<ð 6ð 6ð 6ð 6ð
¨4°¸#°Ô+>ð ð ð ð ð1°4¸À#¸Ô3Fð 1ð 1ð 1ð 1ð
8¸$¸xÈ¸}Ô:Mð 8ð 8ð 8ð 8ð

>¨c°(¬mð 
>ð 
>ð 
>ð 
>ðI°°H´ð Ið Ið Ið Ið GØˆˆx˜ˆ}Ô	˜xÐ	'Ô(ðGð Gð Gð Gð U¨8°S¨=Ô%9ð ¸hð ð ð ð ð	¨%¬(¬/ð 	¸hÀxÔ>Pð 	ð 	ð 	ð 	ðR¨%¬(¬/ð R¸dð Rð Rð Rð Rð Rð Rr/   