§
    ŠŠtj)6  ã                   ó0  — 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j0        e)ej1        ej2        e j2        ej3        e j3        ej4        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>        iZ?e@eef         eAd
<   i e*ej0        “e)ej1        “ejB        ejB        “ejC        ejC        “ejD        ejD        “ej3        ej3        “ej4        ej4        “ej5        ej5        “ej6        ej6        “ej7        ej7        “ej8        ej8        “ejE        ejE        “ej9        ej9        “ej:        ej:        “ejF        ejF        “ejG        ejG        “ejH        ejH        “i ejI        ejI        “ejJ        ejJ        “ejK        ejK        “ejL        ejL        “ejM        jN        jO        ej2        “ej2        ej2        “ejP        ejP        “ejQ        ejQ        “ejR        ejS        “ejT        ejT        “ejU        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\        ej]        ej]        ej^        ej3        ej_        ej4        ej`        ej5        eja        ejV        ejb        ejW        ejc        ejX        ejW        ejW        ejX        ejX        ej[        ej[        ejd        ej2        ej2        ej2        ej4        ej4        ej5        ej5        i¥Zee@eef         eAd<   ej4        ej4        ej5        ej5        ej2        ej2        ejM        jN        jO        ej2        ej^        ej^        ej_        ej_        ej`        ej`        eja        eja        ejb        ejb        ejc        ejc        ejW        ejW        ejX        ejX        ej[        ej[        ejd        ejd        iZfe@eef         eAd<   ej;        ej;        ej2        ej2        ej2        ej2        ejM        jN        jO        ej2        ej>        ej>        ejg        ejg        ej<        ej<        ej=        ej=        ej[        ej[        ej:        ej:        ej9        ej9        iZhe@eef         eAd<   eji        hZjeke         eAd<   e$jl        ejm        j        jl        e$jn        ejm        j        jn        e$jo        ejm        j        jo        e$jp        ejm        j        jp        e$jq        ejm        j        jq        e$jr        ejm        j        jr        iZse@eetz  ef         eAd<   eju        e&ejv        e&ejw        e&ejx        e'iZye@eef         eAd<   ej2        e	jz        j        j2        iZ{e@eef         eAd<   ej2        e	jz        j        j        j2        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„Z€de@eef         fd„Z�	 	 d,dede@eef         dz  de‚defd„Zƒ	 d-dede@eef         dz  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eke         fd$„Z‰deke         fd%„ZŠde@eetz  ef         fd&„Z‹d'eetz  defd(„ZŒd)ej        j�        dedz  fd*„ZŽd)ej        j�        de‚fd+„Z�dS ).é    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_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    úi/var/www/html/CA-Chatbot/venv/lib/python3.11/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)r-   r.   r   r/   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)r-   r.   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)r-   r.   r   r/   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¦  «        }|€"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”   € ð 'Ð.Ø*,Ð'Ý$àð	2Õ6Ð6å1Ø'ñ	ô €Lð !-× 0Ò 0Ð1CÀTÑ JÔ JÐØ Ð(ÝØD­3Ð/AÑ+BÔ+BÐDÐDØEñFñ
ô 
ð 	
õ Œ=Ð2Ñ3Ô3Ð3r+   Ú additional_dynamic_quant_mappingc                 óÐ   — |€i }t          t          |¦  «        }|                     | 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     s†   € ð (Ð/Ø+-Ð(Ý$Ý-Ð/Oñô €Lð ".×!1Ò!1Ð2DÀdÑ!KÔ!KÐØ!Ð)ÝØD­3Ð/AÑ+BÔ+BÐDÐDØEñFñ
ô 
ð 	
õ Œ=Ð3Ñ4Ô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Ô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.
    )r-   r.   r   r4   r3   r   r5   r6   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   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                               ¦   «         ¦  «        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#   r-   r.   )Ú#QCONFIG_PROPAGATE_MODULE_CLASS_LISTs    r*   r   r   6  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
    )	rL   r   Úvaluesr   r   rM   r#   r-   r.   )Ú.NUMERIC_SUITE_COMPARE_MODEL_OUTPUT_MODULE_LISTs    r*   r    r    C  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)r-   r.   r   r/   r+   r*   r!   r!   S  s   € õ Œ=ÕEÑFÔFÐFr+   Úfloat_opc                 ó~   — t                                | ¦  «        }|€ t          dt          | ¦  «        › d�¦  «        ‚|S )z>Get the quantized operator corresponding to the float operatorNz	Operator z) does not have corresponding quantized op)r   r?   r@   rA   )rT   Úquantized_ops     r*   r"   r"   Z  sI   € å?×CÒCÀHÑMÔM€LØÐÝØP�˜H™œÐPÐPÐPñ
ô 
ð 	
ð Ðr+   Úmodulec                 óP   — t                                t          | ¦  «        ¦  «        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
    )r   r?   r   ©rW   s    r*   Ú_get_special_act_post_processrZ   d  s!   € õ .×1Ò1Õ2NÈvÑ2VÔ2VÑWÔWÐWr+   c                 ó<   — | j         ot          | ¦  «        t          v S rS   )ÚtrainingÚtyper   rY   s    r*   Ú_has_special_act_post_processr^   n  s   € ØŒ?ÐQ�t F™|œ|Õ/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Ð 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ð ð ñ ð&5=ØˆsŒ|ð5=à�”ð5=ð „N�C”Oð5=ð „N�C”Oð	5=ð
 „J�”ð5=ð „IˆsŒzð5=ð „IˆsŒzð5=ð „IˆsŒzð5=ð Ô˜Ô+ð5=ð Ô˜Ô+ð5=ð Ô˜Ô+ð5=ð „FˆCŒGð5=ð „L�#”-ð5=ð „O�SÔ%ð5=ð „L�#”-ð5=ð  „L�#”-ð!5=ð" Ô�sÔ)ð#5=ð 5=ð$ Ô�sÔ)ð%5=ð& Ô�sÔ)ð'5=ð( „L�#”-ð)5=ð* „L�#”-ð+5=ð, „JÔÔ5°s´zð-5=ð. „IˆsŒzð/5=ð0 „HˆcŒið15=ð2 „HˆcŒið35=ð6 Ô˜œð75=ð: „L�$”-ð;5=ð< „L�$”-ð=5=ð> „N�D”Oð?5=ð@ „N�D”OðA5=ðB „N�D”OðC5=ðD „M�4”>ðE5=ðF Ô�tÔ)ðG5=ðH „N�D”OðI5=ð 5=ðJ Ô˜Ô-Ø„N�D”OØ
„O�S”ZØ
„O�S”ZØ
„O�S”ZØ
Ô˜œØ
Ô˜œØ
Ô˜œØ
Ô�t”Ø
Ô�t”Ø
Ô�t”Ø
Ô�s”zà	„L�#”*Ø	„L�#”*Ø	„L�#”*ði5=ð 5=Ð $ d¨8°S¨=Ô&9ð 5ð 5ñ 5ðr „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Ô"Ô*ðPÐ ,¨d°8¸c±>À8Ð3KÔ.Lð ð ñ ð „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ð CGØð4ð 4Ø ð4à%)¨(°C¨-Ô%8¸4Ñ%?ð4ð ð4ð 	ð	4ð 4ð 4ð 4ð6 DHð5ð 5Ø ð5à&*¨8°S¨=Ô&9¸DÑ&@ð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¸$Øˆs�N�HÐô;ð Gð Gð Gð Gð X°¡^ð ¸ð ð ð ð ðX¨%¬(¬/ð X¸hÈ¹oð Xð Xð Xð XðR¨%¬(¬/ð R¸dð Rð Rð Rð Rð Rð Rr+   