
    .`iP                         d dl Z d dlmZ d dlmc mZ d dlmZ d dl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)VocabParallelEmbedding)current_platform   )BaseLayerWithLoRAc                   0    e Zd Zdedd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e
j        de
j        fdZe	 ddej        dedededz  def
d            Zed             Z xZS )VocabParallelEmbeddingWithLoRA
base_layerreturnNc                 ^    t                                                       || _        |  |  d S N)super__init__r   )selfr   	__class__s     }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/lora/layers/vocal_parallel_embedding.pyr   z'VocabParallelEmbeddingWithLoRA.__init__   s2    $5444    	max_loraslora_configmodel_configc                 `   | j         j        dk    r| j         j        j        | j         j        | j         j        | j         j        z            | _        | j         j        j        | j         j        z
  | j         j        j	        | j         j        z
  f| _
        | j         j        j        | j         j        d                              d           nd | _
        d | _        t          j        || j         j        |j        f|j        | j         j        j                  | _        t          j        |d| j         j        |j        f|j        | j         j        j                  | _        | j                            | j        j        d         | j        j        d         z  | j        j        d                   | _        d S )Nr   )dtypedevicer      )r   "num_added_embeddings_per_partitionweightdata num_org_embeddings_per_partitionembeddings_weightsshard_indicesadded_vocab_start_indexorg_vocab_sizeadded_vocab_end_indexembeddings_slicefill_torchzerosmax_lora_rank
lora_dtyper   lora_a_stackedembedding_dimlora_b_stackedviewshapelora_a_stacked_2d)r   r   r   r   s       r   create_lora_weightsz2VocabParallelEmbeddingWithLoRA.create_lora_weights   s    ?=AA&*o&<&A@4?Cs/DDE E'D#
 -E/01-C/01%D! O"'@BBeAhhhh$(D!&*D##k.)
 (?)0
 
 
 $k-)	 (?)0	
 	
 	
 "&!4!9!9%a(4+>+DQ+GG%a("
 "
r   indexc                 .    d| j         |<   d| j        |<   d S )Nr   )r+   r-   )r   r2   s     r   
reset_loraz)VocabParallelEmbeddingWithLoRA.reset_loraI   s"    %&E"%&E"""r   lora_alora_bc                    t          |t          j                  sJ t          |t          j                  sJ |                     |           | j        |d |j        d         d |j        d         f                             |j        d           | j        |dd |j        d         d |j        d         f                             |d           d S )Nr   r   T)non_blocking)	
isinstancer'   Tensorr4   r+   r/   copy_Tr-   )r   r2   r5   r6   s       r   set_loraz'VocabParallelEmbeddingWithLoRA.set_loraM   s     &%,/////&%,///// 	E#4V\!_#46GQ6GGHNNH4 	O 	
 	
 	
 	E1&7Q&79J6<?9JJKQQ 	R 	
 	
 	
 	
 	
r   xc                 D   |j         d         }| j        j        d         d |         }t          j        ||z   | j                  }| j                            |          }|}|j        dk    r/|	                    |j         d         |j         d         z  d          }|j        dk    r/|	                    |j         d         |j         d         z  d          }| j        
                    ||| j        d          }t          j                    s|}|                    |          S )Nr   r      T)	add_input)r/   punica_wrapper_embeddings_indicesF	embeddingr0   r   forwardndimr.   add_lora_embeddingr-   r   can_update_inplaceview_as)r   r>   
num_tokens	indices_1full_lora_a_embeddingsfull_outputfull_output_orglora_outputs           r   rG   z&VocabParallelEmbeddingWithLoRA.forward`   s<    WQZ
';A>{
{K	!"	M""
 "
 o--a00%q  %**!!${'8';;R K "&!++%;%@%@&,Q/2H2Nq2QQ& &"
 ,0+>+Q+Q/1DPT ,R ,
 ,
  244 	&%K""?333r   source_layerpacked_modules_listc                 .    t          |          t          u S r   )typer   )clsrR   r   rS   r   s        r   can_replace_layerz0VocabParallelEmbeddingWithLoRA.can_replace_layer   s     L!!%;;;r   c                     | j         j        S r   )r   r   )r   s    r   r   z%VocabParallelEmbeddingWithLoRA.weight   s    %%r   r   )__name__
__module____qualname__r   r   intr   r   r1   r4   r'   r:   listr=   rG   classmethodnnModuleboolrW   propertyr   __classcell__)r   s   @r   r
   r
      s       5#9 5d 5 5 5 5 5 5 15	/
 /
/
  /
 '-	/

 
/
 /
 /
 /
b' ' ' ' '

 tEL11
 tEL11	
 
 
 
&4 4%, 4 4 4 4@  15< <i<  < "	<
 '-< 
< < < [< & & X& & & & &r   r
   )r'   torch.nnr_   torch.nn.functional
functionalrE   transformersr   vllm.config.lorar   3vllm.model_executor.layers.vocab_parallel_embeddingr   vllm.platformsr   baser   r
    r   r   <module>rm      s   
                 ) ) ) ) ) ) ' ' ' ' ' ' V V V V V V + + + + + + # # # # # #{& {& {& {& {&%6 {& {& {& {& {&r   