
    .`i                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ ddlmZ dd	lmZ  G d
 de          ZdS )    N)PretrainedConfig)
LoRAConfig)divide)ColumnParallelLinear
LinearBaseReplicatedLinearRowParallelLinear)current_platform   )BaseLayerWithLoRA)_get_lora_devicec            	       >    e Zd Zdef fdZ	 ddedededz  ddfdZd	efd
Z	d	ede
j        ee
j                 z  de
j        ee
j                 z  fdZdde
j        de
j        dz  de
j        fdZede
j        fd            Zede
j        dz  fd            Z xZS )BaseLinearLayerWithLoRA
base_layerc                     t                                                       || _        | j        j        | _        | j        j        | _        | j        j        | _        t          | j                  | _        |  |  |  d S N)super__init__r   
input_sizetp_sizetp_rankr   device)selfr   	__class__s     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/lora/layers/base_linear.pyr   z BaseLinearLayerWithLoRA.__init__   sm    $/4..&t77+    N	max_loraslora_configmodel_configreturnc                      _         t           j        t                    rj         j        nt           j        t                    r0j        sj        nt          j         j	                   j        nQt           j        t                    r0j        j        s j        nt           j         j	                  nt          t           fdt           j                  D                        _        t           fdt           j                  D                        _         j        d         j        d         f _        d S )Nc           	   3   j   K   | ]-}t          j        d j        j        j                  V  .dS r   )dtyper   N)torchzerosr   
lora_dtyper   ).0_lora_a_out_sizer   r   r   s     r   	<genexpr>z>BaseLinearLayerWithLoRA.create_lora_weights.<locals>.<genexpr>A   sc       
$
 
$
  K!,{  
$
 
$
 
$
 
$
 
$
 
$
r   c           	   3   j   K   | ]-}t          j        d j        j        j                  V  .dS r#   )r%   r&   max_lora_rankr'   r   )r(   r)   lora_b_out_sizer   r   r   s     r   r+   z>BaseLinearLayerWithLoRA.create_lora_weights.<locals>.<genexpr>L   sd       
$
 
$
  K)!,{  
$
 
$
 
$
 
$
 
$
 
$
r   r      )r   
isinstancer   r   r-   output_sizer   fully_sharded_lorasr   r   r	   NotImplementedErrortuplerangen_sliceslora_a_stackedlora_b_stackedshapeoutput_slices)r   r   r   r   r*   r.   s   ``` @@r   create_lora_weightsz+BaseLinearLayerWithLoRA.create_lora_weights#   s    'do'788 	&)7O".OO)=>> 	& #6E))K5t|DD 
 #.OO):;; 	&)7O #6<  D,dl;; O &%# 
$
 
$
 
$
 
$
 
$
 
$
 
$
 4=))
$
 
$
 
$
 

 

 $ 
$
 
$
 
$
 
$
 
$
 
$
 
$
 4=))
$
 
$
 
$
 

 

 #1!4:1=?r   indexc                 t    t          | j                  D ]"}d| j        |         |<   d| j        |         |<   #d S )Nr   )r5   r6   r7   r8   )r   r<   s_indexs      r   
reset_loraz"BaseLinearLayerWithLoRA.reset_loraY   sL    T]++ 	4 	4G23D(/23D(//	4 	4r   lora_alora_bc                    t          |t          j                  sJ t          |t          j                  sJ t          | j                  t          | j                  cxk    r| j        cxk    rdk    sn J |                     |           | j        dk    r*| 	                    |          }| 
                    |          }| j        d         |dd |j        d         d |j        d         f                             |d           | j        d         |dd |j        d         d |j        d         f                             |d           d S )Nr   r   T)non_blocking)r0   r%   Tensorlenr7   r8   r6   r?   r   slice_lora_aslice_lora_br9   copy_)r   r<   r@   rA   s       r   set_loraz BaseLinearLayerWithLoRA.set_lora^   su    &%,/////&%,/////#$$D,?(@(@VVVVDMVVVVUVVVVVVV 	<!&&v..F&&v..FAua):6<?):<Mfl1o<MMNTT 	U 	
 	
 	
 	Aua):6<?):<Mfl1o<MMNTT 	U 	
 	
 	
 	
 	
r   xbiasc                    | j         j                            | j         ||          }|j        dk    r|j        nd }|j        dk    r7|j        dk    r,|                    dd          }|                    dd          }| j                            ||| j        | j	        d| j
                  }t          j                    s|}||                    |          }|S )N   r   r   g      ?)r   quant_methodapplyndimr9   flattenpunica_wrapperadd_lora_linearr7   r8   r:   r
   can_update_inplacereshape)r   rJ   rK   outputoriginal_shapelora_outputs         r   rO   zBaseLinearLayerWithLoRA.applyz   s    -33DOQMM)/)9)9t
 6Q;;6;!++^^Aq))F		!QA+/+>+N+NAt*D,?dFX,
 ,
  244 	! F %^^N33Fr   c                 8   t          | j        d          r| j        j        S t          | j        d          r| j        j        S t          | j        d          r| j        j        S t          | j        d          r| j        j        S t          d| j                   )Nweightweight_packedqweightBzUnsupported base layer: )hasattrr   rZ   r[   r\   r]   
ValueErrorr   s    r   rZ   zBaseLinearLayerWithLoRA.weight   s     4?H-- 	K?))T_o66 		K?00T_i00 	K?**T_c** 	K?$$IIIJJJr   c                 H    t          | j        d          r| j        j        S d S )NrK   )r^   r   rK   r`   s    r   rK   zBaseLinearLayerWithLoRA.bias   s&    4?F++ 	?''4r   r   )__name__
__module____qualname__r   r   intr   r   r;   r?   r%   rD   listrI   rO   propertyrZ   rK   __classcell__)r   s   @r   r   r      s       
: 
 
 
 
 
 
  15	4@ 4@4@  4@ '-	4@
 
4@ 4@ 4@ 4@l4 4 4 4 4


 tEL11
 tEL11	
 
 
 
8 u| 5<$+> %,    2 K K K K XK  elT)    X    r   r   )r%   transformersr   vllm.config.lorar   vllm.distributed.utilsr   !vllm.model_executor.layers.linearr   r   r   r	   vllm.platformsr
   baser   utilsr   r    r   r   <module>rq      s   
  ) ) ) ) ) ) ' ' ' ' ' ' ) ) ) ) ) )            , + + + + + # # # # # # # # # # # #S S S S S/ S S S S Sr   