
    鬜iP                         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     ^/mnt/e/genesis-system/.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        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cudadevicepre_forwardrsplitdiscard)r   r   r   r   kwargs
target_keyvaluer$   module_prefix_target_keys              r   convertzFpQuantQuantize.convert%   sb    "*"2"2"45a8
Ea##E*(
;	 ZZ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   EE)NN)__name__
__module____qualname__r   r!   Tensorr"   Moduleliststrdictr0    r   r   r
   r
   !   sb    ) )-)-	LL xx% 3i$&	 
c5<<	 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__G   r   r   Nr   r   full_layer_namer   r   c                    t        |j                               d   \  }}t        |t              r|d   n|}t	        ||      \  }}	|dk(  rt
        j                  j                  |d      }
|
t
        j                  j                  t        j                  d            t
        j                  j                  t        j                  d            dS |dk(  rt
        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   r@   r   r   )	r   r    
isinstancer6   r   r!   r"   r#   zeros)r   r   r   r=   r   r*   r+   r,   r-   r.   qweightdqweights               r   r0   zFpQuantDeserialize.convertJ   s5    "*"2"2"45a8
E&ud3a(
;	
 #hh((# ) G $ !88--ekk!n="XX//A?  $xx))%0H & !88--ekk!n=!HH..u{{1~> 88--ekk!n= 	 %r   )NNN)r1   r2   r3   r   r!   r4   r"   r5   r7   r6   r8   r0   r9   r   r   r;   r;   F   ss    ) )-&*)-)LL) xx%) t	)
 3i$&) 
c5<<	 )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)rK   r   MXFP4NVFP4
ValueErrorrM   BF16MXFP8FPQuantLinearConfigrL   rN   rO   rP   rQ   rR   )rE   rK   rM   s      r   adapt_fp_quant_configrY   v   s    w&$**				($**6v7K7K6LMNN&%**			'	)%++			'	)%++78M8M7NOPP#,,%#88"66!44,,%<<	 	r   )__doc__r!   utilsr   fp_quantr   rX   r   &transformers.utils.quantization_configcore_model_loadingr   quantizers.quantizers_utilsr   r
   r;   rY   r9   r   r   <module>r`      sO     
 =% @ . >"m "J- -`- r   