
    Z j                         S r SSKrSSKJr  \" 5       (       a  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr   " S	 S
\
5      r " S S\
5      rS\4S jrg)zFP-Quant integration file    N   )is_fp_quant_available)FPQuantConfig)FPQuantDtype)ConversionOps)get_module_from_namec                       \ rS rSrS r  S
S\R                  S\R                  R                  S-  S\	\
   S-  S\\
\R                  4   4S jjrS	rg)FpQuantQuantize!   c                     Xl         g Nhf_quantizerselfr   s     s/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/integrations/fp_quant.py__init__FpQuantQuantize.__init__"       (    N
input_dictmodelmissing_keysreturnc                    [        UR                  5       5      S   u  pVUS   n[        R                  R	                  U5      n[        X%5      u  pXxl        [        [        UR                  R                  [        R                  5      n
U
R                  UR                  5         UR                  5         S S S 5        UR                  SS5      S   nUR                  U5        UR                  U S35        UR                  U S35        UR                  U S35        UR                  U S35        UR                  U S35        UR                  U S	35        UR                  U S
35        0 $ ! , (       d  f       N= f)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   convertFpQuantQuantize.convert%   sl    "*"2"2"45a8
a##E*(;	 $+5%,,2C2CUZZ#P %,,U\\:  ; '--c15a8 	Z( 122KLM 122JKL 122CDE 122FGH 12(;< 12':; 12)<=	 ;:s   $E11
E?r   )NN)__name__
__module____qualname____firstlineno__r   r#   Tensorr$   Moduleliststrdictr5   __static_attributes__ r   r   r
   r
   !   sg    ) )-)-	LL xx% 3i$&	 
c5<<	  r   r
   c                       \ rS rSrS r   SS\R                  S\R                  R                  S-  S\	S-  S\
\	   S-  S\\	\R                  4   4
S	 jjrS
rg)FpQuantDeserializeG   c                     Xl         g r   r   r   s     r   r   FpQuantDeserialize.__init__H   r   r   Nr   r   full_layer_namer   r   c                 (   [        UR                  5       5      S   u  pg[        U[        5      (       a  US   OUn[	        X&5      u  pUS:X  a  [
        R                  R                  USS9n
U
[
        R                  R                  [
        R                  " S5      5      [
        R                  R                  [
        R                  " S5      5      S.$ US:X  a  [
        R                  R                  U5      nU[
        R                  R                  [
        R                  " S5      5      [
        R                  R                  [
        R                  " S5      5      [
        R                  R                  [
        R                  " S5      5      S.$ g )Nr   r   F)requires_grad)r   .weightr    r    )r    rJ   r   r   )	r!   r"   
isinstancer=   r   r#   r$   r%   zeros)r   r   r   rG   r   r.   r/   r0   r1   r2   qweightdqweights               r   r5   FpQuantDeserialize.convertK   s2    "*"2"2"45a8
&ud33a(;	
 #hh((# ) G $ !88--ekk!n="XX//A?  $xx))%0H & !88--ekk!n=!HH..u{{1~> 88--ekk!n= 	 %r   r   )NNN)r7   r8   r9   r:   r   r#   r;   r$   r<   r>   r=   r?   r5   r@   rA   r   r   rC   rC   G   sx    ) )-&*)-)LL) xx%) t	)
 3i$&) 
c5<<	 ) )r   rC   configc                 D   U R                   S:X  a  [        R                  nO9U R                   S:X  a  [        R                  nO[	        SU R                    35      eU R
                  S:X  a  [        R                  nOZU R
                  S:X  a  [        R                  nO9U R
                  S:X  a  [        R                  nO[	        SU R
                   35      e[        UU R                  UU R                  U R                  U R                  U R                  U R                  S9$ )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)rV   r   MXFP4NVFP4
ValueErrorrX   BF16MXFP8FPQuantLinearConfigrW   rY   rZ   r[   r\   r]   )rP   rV   rX   s      r   adapt_fp_quant_configrd   w   s    w&$**				($**6v7K7K6LMNN&%**			'	)%++			'	)%++78M8M7NOPP#,,%#88"66!44,,%<<	 	r   )__doc__r#   utilsr   fp_quantr   rc   r   &transformers.utils.quantization_configcore_model_loadingr   quantizers.quantizers_utilsr   r
   rC   rd   rA   r   r   <module>rk      sR     
 =% @ . >#m #L- -`- r   