
    bi              	          d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	  e       rd dl
mZ  G d dej                  j                  e      Zd	ej                  j                  d
ededeej                  j                     fdZy)    )AnyOptionalN)is_aqlm_available)	LoraLayer)BaseTunerLayer)QuantizedLinearc                        e Zd Z	 	 	 	 	 	 	 ddedededededededef fd	Zd
ej                  fdZ
def fdZ xZS )AqlmLoraLinearadapter_namer
lora_alphalora_dropoutinit_lora_weights
use_rslorause_dora	lora_biasc
           
          |r"t        | j                  j                   d      t        |           t        j                  | |       || _        | j                  ||||||||	       y )Nz2 does not support DoRA yet, please set it to False)r   r   r   r   r   r   )
ValueError	__class____name__super__init__r   _active_adapterupdate_layer)self
base_layerr   r   r   r   r   r   r   r   kwargsr   s              P/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/peft/tuners/lora/aqlm.pyr   zAqlmLoraLinear.__init__   st      7 788jkll4,+!%/! 	 		
    xc                    | j                  |      }| j                  r|S | j                  D ]  }|| j                  j	                         vr | j                  |   }| j
                  |   }| j                  |   }| j                  |   }t        j                          }|r2|j                  }	| j                  ||j                  j                        } | | ||                  }
|r|
j                  	      }
|
|z  }
||
z  } |S N)r   disable_adaptersactive_adapterslora_Akeyslora_Br   scalingtorchis_autocast_enableddtype_cast_input_dtypeweightto)r   r    resultactive_adapterr%   r'   dropoutr(   requires_conversionexpected_dtypeoutputs              r   forwardzAqlmLoraLinear.forward<   s    #  M"22 	NT[[%5%5%77[[0F[[0F''7Gll>2G&+&?&?&A"A"!'**1fmm.A.ABF71:./F">2g%FfF#	$ r   returnc                 *    t         |          }d|z   S )Nzlora.)r   __repr__)r   repr   s     r   r8   zAqlmLoraLinear.__repr__W   s    g }r   )r      g        TFFF)r   
__module____qualname__strintfloatboolr   r)   Tensorr5   r8   __classcell__)r   s   @r   r
   r
      s    
 !"& 
 
 	

 
 
  
 
 
 
> 6#  r   r
   targetr   r   r6   c                     d }t        | t              r| j                         }n| }t               r.t        |t              rt        | |fi |}|j                  | _        |S r"   )
isinstancer   get_base_layerr   r   r
   codesqweight)rC   r   r   
new_moduletarget_base_layers        r   dispatch_aqlmrK   b   s\    
 J&.)"113"z*;_M#FLCFC
*00r   )typingr   r   r)   peft.import_utilsr   peft.tuners.lora.layerr   peft.tuners.tuners_utilsr   aqlmr   nnModuler
   r=   rK    r   r   <module>rT      sv    !  / , 3 $=UXX__i =LHHOO  ehhoo	r   