
    oi              	           S SK JrJr  S SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr   " S S\R                  R                  \5      rS	\R                  R                  S
\S\S\\R                  R                     4S jrg)    )AnyOptionalN)is_gptqmodel_available)OFTLayer)BaseTunerLayer)get_auto_gptq_quant_linearc                      ^  \ rS rSr          SS\S\S\S\S\S\S\S	\S
\S\S\4U 4S jjjrS\	R                  4S jrS\4U 4S jjrSrU =r$ )GPTQOFTLinear   adapter_nameroft_block_sizemodule_dropoutcoftepsblock_shareuse_cayley_neumannnum_cayley_neumann_termsfan_in_fan_outinit_weightsc                    > [         TU ]  5         [        R                  " X5        Xl        X l        U R                  UUUUUUUUU	U
S9
  g )N)r   r   r   r   r   r   r   r   )super__init__r   quant_linear_module_active_adapterupdate_layer)self
base_layerr   r   r   r   r   r   r   r   r   r   r   kwargs	__class__s                 N/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/oft/gptq.pyr   GPTQOFTLinear.__init__   s]      	$+ $. +))#%1%= 	 	
    xc                    U R                  U5      nU R                  (       a  U R                  U5      $ U R                   H  nX0R                  R	                  5       ;  a  M"  U R                  U   n[
        R                  " 5       (       + nU(       a1  UR                  nU R                  XR                  R                  5      nU" U5      nM     U R                  U5      nW(       a  UR                  W5      nU$ )N)r   disable_adaptersactive_adaptersoft_Rkeystorchis_autocast_enableddtype_cast_input_dtypeweightto)r   r$   resultactive_adapterr(   requires_conversionexpected_dtypes          r!   forwardGPTQOFTLinear.forward=   s    ))!,  ++A.."22NZZ__%66JJ~.E&+&?&?&A"A"!"**1ll.@.@AaA 3 ))!,YY~.Fr#   returnc                 *   > [         TU ]  5       nSU-   $ )Nzoft.)r   __repr__)r   repr    s     r!   r8   GPTQOFTLinear.__repr__V   s    g |r#   )r   r   )
   r   g        FgiUMu?FF   FT)__name__
__module____qualname____firstlineno__strintfloatboolr   r*   Tensorr4   r8   __static_attributes____classcell__)r    s   @r!   r
   r
      s    
  #!#(()$!"
 "
 	"

 "
 "
 "
 "
 "
 !"
 #&"
 "
 "
 "
H 2#  r#   r
   targetr   r   r6   c                 |   S n[        U [        5      (       a  U R                  5       nOU nUR                  SS 5      n[	        5       (       a5  SSKJn  [        XF5      (       a  [        X40 UD6nUR                  U l        U$ [        U5      nUb-  [        XG5      (       a  [        X40 UD6nUR                  U l        U$ )Ngptq_quantization_configr   )BaseQuantLinear)

isinstancer   get_base_layergetr   gptqmodel.nn_modules.qlinearrK   r
   qweightr   )rH   r   r   
new_moduletarget_base_layercfgrK   quant_linears           r!   dispatch_gptqrU   [   s    
 J&.))"113"
**/
6C@'99&vFvFJ.66FN  2#6#
3D(S(S&vFvFJ.66FNr#   )typingr   r   r*   peft.import_utilsr   peft.tuners.oft.layerr   peft.tuners.tuners_utilsr   
peft.utilsr   nnModuler
   rA   rU    r#   r!   <module>r^      sp    !  4 * 3 1@EHHOOX @FHHOO  ehhoo	r#   