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
   úK/home/ubuntu/vllm_env/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   