o
    -i!                     @   s^   d dl 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 dejZdS )    )TYPE_CHECKINGN)PretrainedConfig)
LoRAConfig)PunicaWrapperBasec                   @   s  e Zd ZdejeejdB  B dejeejdB  B fddZdejeejdB  B dejeejdB  B fddZ	dd	ed
e	de
dB ddfddZdefddZdedejeej B dejeej B fddZdd Ze	ddejd
e	dede
dB def
ddZdS )BaseLayerWithLoRAlora_aNreturnc                 C      dS )z1Slice lora a if splitting for tensor parallelism.N )selfr   r
   r
   R/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/lora/layers/base.pyslice_lora_a      zBaseLayerWithLoRA.slice_lora_alora_bc                 C   r	   )z2Slice lora b if splitting with tensor parallelism.Nr
   )r   r   r
   r
   r   slice_lora_b   r   zBaseLayerWithLoRA.slice_lora_b	max_loraslora_configmodel_configc                 C   r	   )zInitializes lora matrices.Nr
   )r   r   r   r   r
   r
   r   create_lora_weights      z%BaseLayerWithLoRA.create_lora_weightsindexc                 C   r	   )z+Resets the lora weights at index back to 0.Nr
   )r   r   r
   r
   r   
reset_lora&   s   zBaseLayerWithLoRA.reset_lorac                 C   r	   )z!Overwrites lora tensors at index.Nr
   )r   r   r   r   r
   r
   r   set_lora*   r   zBaseLayerWithLoRA.set_lorac                 C   s
   || _ d S N)punica_wrapper)r   r   r
   r
   r   set_mapping3   s   
zBaseLayerWithLoRA.set_mappingsource_layerpacked_modules_listc                 C   s   t )z=Returns True if the layer can be replaced by this LoRA layer.)NotImplementedError)clsr   r   r   r   r
   r
   r   can_replace_layer9   s   	z#BaseLayerWithLoRA.can_replace_layerr   )__name__
__module____qualname__torchTensorlistr   r   intr   r   r   r   r   r   classmethodnnModuleboolr    r
   r
   r
   r   r      sV    



	
	r   )typingr   r$   torch.nnr)   transformersr   vllm.config.lorar   vllm.lora.punica_wrapperr   r*   r   r
   r
   r
   r   <module>   s   