Ë
    Gêñi¯  ã                   óž   — 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y)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y)	ÚFpQuantQuantizec                 ó   — || _         y ©N©Úhf_quantizer©Úselfr   s     úd/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/integrations/fp_quant.pyÚ__init__zFpQuantQuantize.__init__"   ó
   € Ø(ˆÕó    NÚ
input_dictÚmodelÚmissing_keysÚreturnc                 ó  — t        |j                  «       «      d   \  }}|d   }t        j                  j	                  |«      }t        ||«      \  }}	||_        t        t        |j                  j                  t        j                  «      }
|
j                  |j                  «      5  |j                  «        d d d «       |j                  dd«      d   }|j                  |«       |j                  |› d�«       |j                  |› d�«       |j                  |› d�«       |j                  |› d�«       |j                  |› d�«       |j                  |› d	�«       |j                  |› d
�«       i S # 1 sw Y   Œ½xY w)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Ó5°aÑ8Ñˆ
�EØ�a‘ˆä—‘×#Ñ# EÓ*ˆÜ(¨°
Ó;‰	ˆ�ØˆŒô $+¬5°%·,±,×2CÑ2CÄUÇZÁZÓ#PÐ Ø%×,Ñ,¨U¯\©\Ó:ñ 	!Ø×ÑÔ ÷	!ð '×-Ñ-¨c°1Ó5°aÑ8Ðð 	×Ñ˜ZÔ(Ø×ÑÐ 1Ð2Ð2KÐLÔMØ×ÑÐ 1Ð2Ð2JÐKÔLØ×ÑÐ 1Ð2Ð2CÐDÔEØ×ÑÐ 1Ð2Ð2FÐGÔHØ×ÑÐ 1Ð2°(Ð;Ô<Ø×ÑÐ 1Ð2°'Ð:Ô;Ø×ÑÐ 1Ð2°)Ð<Ô=Øˆ	÷	!ð 	!ús   Â(E5Å5E>)NN)Ú__name__Ú
__module__Ú__qualname__r   r!   ÚTensorr"   ÚModuleÚlistÚstrÚdictr3   © r   r   r
   r
   !   sb   „ ò)ð )-Ø)-ñ	à—L‘Lðð �x‰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y)
ÚFpQuantDeserializec                 ó   — || _         y r   r   r   s     r   r   zFpQuantDeserialize.__init__H   r   r   Nr   r   Úfull_layer_namer   r   c                 ó  — t        |j                  «       «      d   \  }}t        |t        «      r|d   n|}t	        ||«      \  }}	|dk(  r‡t
        j                  j                  |d¬«      }
|
t
        j                  j                  t        j                  d«      «      t
        j                  j                  t        j                  d«      «      dœS |dk(  r¶t
        j                  j                  |«      }|t
        j                  j                  t        j                  d«      «      t
        j                  j                  t        j                  d«      «      t
        j                  j                  t        j                  d«      «      dœS y )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   s5  € ô " *×"2Ñ"2Ó"4Ó5°aÑ8Ñˆ
�EÜ& u¬dÔ3��a’¸ˆÜ(¨°
Ó;‰	ˆ�ð
 ˜Ò#ä—h‘h×(Ñ(ØØ#ð )ó ˆGð $ô !Ÿ8™8×-Ñ-¬e¯k©k¸!«nÓ=Ü"ŸX™X×/Ñ/´·±¸A³Ó?ñð ð ˜Ò$ä—x‘x×)Ñ)¨%Ó0ˆHð &ô !Ÿ8™8×-Ñ-¬e¯k©k¸!«nÓ=Ü!ŸH™H×.Ñ.¬u¯{©{¸1«~Ó>Ü Ÿ8™8×-Ñ-¬e¯k©k¸!«nÓ=ñð ð	 %r   )NNN)r4   r5   r6   r   r!   r7   r"   r8   r:   r9   r;   r3   r<   r   r   r>   r>   G   ss   „ ò)ð )-Ø&*Ø)-ñ)à—L‘Lð)ð �x‰x�‰ Ñ%ð)ð ˜t™ð	)ð
 ˜3‘i $Ñ&ð)ð 
ˆc�5—<‘<ÐÑ	 ô)r   r>   Úconfigc           
      ó@  — | j                   dk(  rt        j                  }n8| j                   dk(  rt        j                  }nt	        d| j                   › �«      ‚| j
                  dk(  rt        j                  }nX| j
                  dk(  rt        j                  }n8| 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Ò&Ü$×*Ñ*‰Ø	×	Ñ	 Ò	(Ü$×*Ñ*‰äÐ6°v×7KÑ7KÐ6LÐMÓNÐNà×Ñ Ò&Ü%×*Ñ*‰Ø	×	Ñ	 'Ò	)Ü%×+Ñ+‰Ø	×	Ñ	 'Ò	)Ü%×+Ñ+‰äÐ7¸×8MÑ8MÐ7NÐOÓPÐPäØ#Ø×,Ñ,Ø%Ø#×8Ñ8Ø"×6Ñ6Ø!×4Ñ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      sO   ðñ ã õñ
 ÔÝ=Ý%å @å .Ý >ô#�mô #ôL-˜ô -ð` -ô r   