§
    ‚Štj¯  ã                   ó²   — d Z ddlZddlmZ  e¦   «         rddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  G d	„ d
e
¦  «        Z G d„ de
¦  «        Zdefd„ZdS )zFP-Quant integration fileé    Né   )Úis_fp_quant_available)ÚFPQuantConfig)ÚFPQuantDtype)ÚConversionOps)Úget_module_from_namec                   ó‚   — e Zd Zd„ Z	 	 ddej        dej        j        dz  dee	         dz  de
e	ej        f         fd„ZdS )	ÚFpQuantQuantizec                 ó   — || _         d S ©N©Úhf_quantizer©Úselfr   s     ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/integrations/fp_quant.pyÚ__init__zFpQuantQuantize.__init__"   ó   € Ø(ˆÔÐÐó    NÚ
input_dictÚmodelÚmissing_keysÚreturnc                 ón  — t          |                     ¦   «         ¦  «        d         \  }}|d         }t          j                             |¦  «        }t          ||¦  «        \  }}	||_        t          t          |j        j	        t          j
        ¦  «        }
|
                     |j        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     dd¦  «        d         }|                     |¦  «         |                     |› d�¦  «         |                     |› d�¦  «         |                     |› d�¦  «         |                     |› d�¦  «         |                     |› d�¦  «         |                     |› d	�¦  «         |                     |› d
�¦  «         i S )Nr   ú.é   z.backward_hadamard_matrixz.forward_hadamard_matrixz.act_global_scalez.weight_global_scaleú.qweightú.scalesú	.dqweight)ÚtupleÚitemsÚtorchÚnnÚ	Parameterr   ÚweightÚgetattrÚdeviceÚtypeÚcudaÚpre_forwardÚrsplitÚdiscard)r   r   r   r   ÚkwargsÚ
target_keyÚvaluer$   ÚmoduleÚ_Útorch_accelerator_moduleÚprefix_target_keys               r   ÚconvertzFpQuantQuantize.convert%   s  € õ " *×"2Ò"2Ñ"4Ô"4Ñ5Ô5°aÔ8Ñˆ
�EØ�a”ˆå”×#Ò# EÑ*Ô*ˆÝ(¨°
Ñ;Ô;‰	ˆ�ØˆŒõ $+­5°%´,Ô2CÅUÄZÑ#PÔ#PÐ Ø%×,Ò,¨U¬\Ñ:Ô:ð 	!ð 	!Ø×ÒÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð '×-Ò-¨c°1Ñ5Ô5°aÔ8Ðð 	×Ò˜ZÑ(Ô(Ð(Ø×ÒÐ 1ÐLÐLÐLÑMÔMÐMØ×ÒÐ 1ÐKÐKÐKÑLÔLÐLØ×ÒÐ 1ÐDÐDÐDÑEÔEÐEØ×ÒÐ 1ÐGÐGÐGÑHÔHÐHØ×ÒÐ 1Ð;Ð;Ð;Ñ<Ô<Ð<Ø×ÒÐ 1Ð:Ð:Ð:Ñ;Ô;Ð;Ø×ÒÐ 1Ð<Ð<Ð<Ñ=Ô=Ð=Øˆ	s   Â0CÃCÃC)NN)Ú__name__Ú
__module__Ú__qualname__r   r!   ÚTensorr"   ÚModuleÚlistÚstrÚdictr3   © r   r   r
   r
   !   sŠ   € € € € € ð)ð )ð )ð )-Ø)-ð	ð à”Lðð ŒxŒ Ñ%ðð ˜3”i $Ñ&ð	ð 
ˆc�5”<ÐÔ	 ðð ð ð ð ð r   r
   c                   óŽ   — e Zd Zd„ Z	 	 	 d	dej        dej        j        dz  dedz  de	e         dz  de
eej        f         f
d„ZdS )
ÚFpQuantDeserializec                 ó   — || _         d S r   r   r   s     r   r   zFpQuantDeserialize.__init__H   r   r   Nr   r   Úfull_layer_namer   r   c                 óF  — t          |                     ¦   «         ¦  «        d         \  }}t          |t          ¦  «        r|d         n|}t	          ||¦  «        \  }}	|dk    r…t
          j                             |d¬¦  «        }
|
t
          j                             t          j        d¦  «        ¦  «        t
          j                             t          j        d¦  «        ¦  «        dœS |dk    r³t
          j                             |¦  «        }|t
          j                             t          j        d¦  «        ¦  «        t
          j                             t          j        d¦  «        ¦  «        t
          j                             t          j        d¦  «        ¦  «        dœS d S )Nr   r   F)Úrequires_grad)r   ú.weightr   r   )r   rC   r   r   )	r   r    Ú
isinstancer9   r   r!   r"   r#   Úzeros)r   r   r   r@   r   r,   r-   r.   r/   r0   ÚqweightÚdqweights               r   r3   zFpQuantDeserialize.convertK   sb  € õ " *×"2Ò"2Ñ"4Ô"4Ñ5Ô5°aÔ8Ñˆ
�EÝ& u­dÑ3Ô3Ð>��a”�¸ˆÝ(¨°
Ñ;Ô;‰	ˆ�ð
 ˜Ò#Ð#å”h×(Ò(ØØ#ð )ñ ô ˆGð $õ !œ8×-Ò-­e¬k¸!©n¬nÑ=Ô=Ý"œX×/Ò/µ´¸A±´Ñ?Ô?ðð ð ð ˜Ò$Ð$å”x×)Ò)¨%Ñ0Ô0ˆHð &õ !œ8×-Ò-­e¬k¸!©n¬nÑ=Ô=Ý!œH×.Ò.­u¬{¸1©~¬~Ñ>Ô>Ý œ8×-Ò-­e¬k¸!©n¬nÑ=Ô=ðð ð ð	 %Ð$r   )NNN)r4   r5   r6   r   r!   r7   r"   r8   r:   r9   r;   r3   r<   r   r   r>   r>   G   s›   € € € € € ð)ð )ð )ð )-Ø&*Ø)-ð)ð )à”Lð)ð ŒxŒ Ñ%ð)ð ˜t™ð	)ð
 ˜3”i $Ñ&ð)ð 
ˆc�5”<ÐÔ	 ð)ð )ð )ð )ð )ð )r   r>   Úconfigc           
      ó¸  — | j         dk    rt          j        }n/| j         dk    rt          j        }nt	          d| j         › �¦  «        ‚| j        dk    rt          j        }nG| j        dk    rt          j        }n/| j        dk    rt          j        }nt	          d| j        › �¦  «        ‚t          || j	        || j
        | j        | j        | j        | j        ¬¦  «        S )NÚmxfp4Únvfp4zUnsupported forward dtype: Úbf16Úmxfp8zUnsupported backward dtype: )Úforward_dtypeÚforward_methodÚbackward_dtypeÚstore_master_weightsÚhadamard_group_sizeÚpseudoquantizationÚtransform_initÚmodules_to_not_convert)rN   r   ÚMXFP4ÚNVFP4Ú
ValueErrorrP   ÚBF16ÚMXFP8ÚFPQuantLinearConfigrO   rQ   rR   rS   rT   rU   )rH   rN   rP   s      r   Úadapt_fp_quant_configr\   w   sï   € ØÔ˜wÒ&Ð&Ý$Ô*ˆˆØ	Ô	 Ò	(Ð	(Ý$Ô*ˆˆåÐM°vÔ7KÐMÐMÑNÔNÐNàÔ Ò&Ð&Ý%Ô*ˆˆØ	Ô	 'Ò	)Ð	)Ý%Ô+ˆˆØ	Ô	 'Ò	)Ð	)Ý%Ô+ˆˆåÐO¸Ô8MÐOÐOÑPÔPÐPåØ#ØÔ,Ø%Ø#Ô8Ø"Ô6Ø!Ô4ØÔ,Ø%Ô<ð	ñ 	ô 	ð 	r   )Ú__doc__r!   Úutilsr   Úfp_quantr   r[   r   Ú&transformers.utils.quantization_configÚcore_model_loadingr   Úquantizers.quantizers_utilsr   r
   r>   r\   r<   r   r   ú<module>rc      s  ðð Ð à €€€ðð ð ð ð ð ð
 ÐÑÔð &Ø=Ð=Ð=Ð=Ð=Ð=Ø%Ð%Ð%Ð%Ð%Ð%à @Ð @Ð @Ð @Ð @Ð @à .Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >ð#ð #ð #ð #ð #�mñ #ô #ð #ðL-ð -ð -ð -ð -˜ñ -ô -ð -ð` -ð ð ð ð ð ð r   