
    .`iv7                        d Z ddlZddlmZ ddlmZ 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 dd	lmZmZmZ dd
lmZmZmZ ddlmZ ddlmZ ddlmZ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'm(Z(m)Z)m*Z*  G d dej+                  Z,d Z- G d dej+                  Z. G d dej+                  Z/ G d dej+                  Z0e G d dej+                              Z1 G d d ej+        e%          Z2dS )!z>Inference-only Jais model compatible with HuggingFace weights.    N)Iterable)islice)nn)	Attention)support_torch_compile)CacheConfig
VllmConfig)get_pp_groupget_tensor_model_parallel_rank$get_tensor_model_parallel_world_size)ColumnParallelLinearQKVParallelLinearRowParallelLinear)LogitsProcessor)QuantizationConfig)ParallelLMHeadVocabParallelEmbedding)default_weight_loader)IntermediateTensors)
JAISConfig   )
SupportsPP)is_pp_missing_parameter'make_empty_intermediate_tensors_factorymake_layersmaybe_prefixc                   @    e Zd Zdej        dej        dej        fdZdS )SwiGLUActivationx1x2returnc                 F    |t           j                            |          z  S N)r   
functionalsilu)selfr   r    s      s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/jais.pyforwardzSwiGLUActivation.forward@   s    BM&&r****    N)__name__
__module____qualname__torchTensorr(    r)   r'   r   r   ?   sC        +%, +EL +U\ + + + + + +r)   r   c                     d }t          j        |                                           r ||           S dt          j        t          j        |                     z  } ||          t	          d|z            dd d         d | |z
           z   S )Nc                     ddt          j        |           dz
   z   z  fdt          |           D             S )N      c                      g | ]
}|z  z  S r/   r/   ).0iratiostarts     r'   
<listcomp>zD_get_alibi_slopes.<locals>.get_slopes_power_of_2.<locals>.<listcomp>H   s"    333Qq 333r)   )mathlog2range)nr7   r8   s    @@r'   get_slopes_power_of_2z0_get_alibi_slopes.<locals>.get_slopes_power_of_2E   sN    ty||a/001233333%((3333r)   r2   r   )r:   r;   
is_integerfloor_get_alibi_slopes)r=   r>   closest_power_of_2s      r'   rA   rA   D   s    4 4 4
 y||   
$$Q'''$*TYq\\":"::!!"455$6 6771=>VDV@V>VWX	
r)   c            	       h     e Zd Z	 	 	 ddededz  dedz  def fdZdej	        d	ej	        fd
Z
 xZS )JAISAttentionN configcache_configquant_configprefixc           
         t                                                       |j        | _        |j        }t	                      }||z  dk    sJ ||z  | _        | j        |z  | _        t          |d          r|j        |_	        |j	        rdnd| _
        | j        | j
         z  | _        t          | j        | j        |d|| d          | _        t          | j        | j        d|| d          | _        t!                      }|| j        z  }|d	z   | j        z  }	t#          |          }
|
||	         }
t%          | j        | j        | j        |
||| d
          | _        d S )Nr   scale_qk_dot_by_dg      ?g      ?Tz.c_attnbiasrH   rI   .c_projr   .attn)scalealibi_slopesrG   rH   rI   )super__init__hidden_sizenum_attention_headsr   	num_headshead_dimhasattrrK   mup_scale_qk_dot_by_dattn_scale_powerrP   r   c_attnr   c_projr   rA   r   attn)r&   rF   rG   rH   rI   total_num_heads tensor_model_parallel_world_sizetp_rank
head_starthead_endrQ   	__class__s              r'   rS   zJAISAttention.__init__U   s    	!- 4+O+Q+Q(!AAQFFFF(,LL(O;6.// 	D+1+CF('-'C L]T%:$::
'M%%%%
 
 
 (%%%%
 
 
 122t~-
aK4>1(99#Jx$78NM*%%%###
 
 
			r)   hidden_statesr!   c                     |                      |          \  }}|                    dd          \  }}}|                     |||          }|                     |          \  }}|S )Nr3   )chunksdim)r[   chunkr]   r\   )r&   rd   qkv_qkvattn_outputs           r'   r(   zJAISAttention.forward   sd     ]++Q))1")--1aii1a(([11Qr)   NNrE   r*   r+   r,   r   r   r   strrS   r-   r.   r(   __classcell__rc   s   @r'   rD   rD   T   s         ,0260
 0
0
 "D(0
 )4/	0

 0
 0
 0
 0
 0
 0
d| 
       r)   rD   c            	       `     e Zd Z	 	 ddedededz  def fdZdej	        d	ej	        fd
Z
 xZS )JAISMLPNrE   intermediate_sizerF   rH   rI   c                 V   t                                                       |j        }|j        dk    | _        t          ||d|| d          | _        | j        rt          ||d|| d          nd | _        t          ||d|| d          | _	        t                      | _        d S )NswigluTz.c_fcrL   z.c_fc2rN   )rR   rS   rT   activation_functionry   r   c_fcc_fc2r   r\   r   act)r&   rw   rF   rH   rI   rT   rc   s         r'   rS   zJAISMLP.__init__   s     	(0H<(%###
 
 
	 { !) (((     	
 (%%%%
 
 
 $%%r)   rd   r!   c                    | j         r|                     |          \  }}|                     |          \  }}| j         r|                     ||          n|                     |          }|                     |          \  }}|S r#   )ry   r|   r{   r}   r\   )r&   rd   hidden_states2rk   s       r'   r(   zJAISMLP.forward   s    ; 	: $

= 9 9NA99]33q {)DHH]N333-(( 	
  ;;}55qr)   )NrE   )r*   r+   r,   intr   r   rr   rS   r-   r.   r(   rs   rt   s   @r'   rv   rv      s        
 37$& $&$& $& )4/	$&
 $& $& $& $& $& $&L
U\ 
el 
 
 
 
 
 
 
 
r)   rv   c            	       h     e Zd Z	 	 	 ddededz  dedz  def fdZdej	        d	ej	        fd
Z
 xZS )	JAISBlockNrE   rF   rG   rH   rI   c                 h   t                                                       |j        }|j        |j        nd|z  }t	          j        ||j                  | _        t          |||| d          | _	        t	          j        ||j                  | _
        t          |||| d          | _        d S )N   epsrO   rI   z.mlp)rR   rS   rT   n_innerr   	LayerNormlayer_norm_epsilonln_1rD   r]   ln_2rv   mlp)r&   rF   rG   rH   rI   rT   	inner_dimrc   s          r'   rS   zJAISBlock.__init__   s     	(&,n&@FNNa+o	L&2KLLL	!L,&7G7G7G
 
 
	 L&2KLLL	9flf???SSSr)   rd   r!   c                     |}|                      |          }|                     |          }||z   }|}|                     |          }|                     |          }||z   }|S )N)rd   )r   r]   r   r   )r&   rd   residualro   feed_forward_hidden_statess        r'   r(   zJAISBlock.forward   sz     !		-00ii'   
 
 $h. 		-00%)XXm%<%<" #==r)   rp   rq   rt   s   @r'   r   r      s         ,026T TT "D(T )4/	T
 T T T T T T$| 
       r)   r   c                        e Zd Zdddedef fdZdej        dej        fdZ	 	 ddej        d
ej        de	d	z  dej        d	z  de	ej        z  f
dZ
 xZS )	JAISModelrE   r   vllm_configrI   c                   t                                                       |j        j        |j        |j        | _        j        rJ j        rJ j	        rJ j
        | _        t          j        | j                  | _        j        dk    rt!          j        j        | j                  nd | _        t)          d          rj        | _        nj        | _        t/          j        fd| d          \  | _        | _        | _        t!          j        | j        j                  | _        t?          dgj                   | _!        d S )Nalibiembeddings_scalec                 *    t          |           S )N)rF   rG   rH   rI   )r   )rI   rG   rF   rH   s    r'   <lambda>z$JAISModel.__init__.<locals>.<lambda>  s"    9))	   r)   z.hr   r   rd   )"rR   rS   model_config	hf_configrG   rH   rF   add_cross_attentionscale_attn_by_inverse_layer_idxreorder_and_upcast_attnrT   	embed_dimr   
vocab_sizewteposition_embedding_typer   	Embeddingmax_position_embeddingswperX   r   mup_embeddings_scaler   num_hidden_layersstart_layer	end_layerhr   r   ln_fr   n_embdmake_empty_intermediate_tensors)r&   r   rI   rG   rF   rH   rc   s      @@@r'   rS   zJAISModel.__init__   s}   )3"/"/----99991111+)&*;T^LL -88 L7HHH 	
 6-.. 	@$*$;D!!$*$?D!3>$      ===	4
 	4
 	4
0$.$& LV5NOOO	/Vv}0
 0
,,,r)   	input_idsr!   c                 ,    |                      |          S r#   )r   r&   r   s     r'   embed_input_idszJAISModel.embed_input_ids  s    xx	"""r)   Nposition_idsintermediate_tensorsinputs_embedsc                    t                      j        rl||                     |          }| j        |                     |          }||z   }n|}|t	          j        t          | j                  |j                  z  }n|J |d         }t          | j
        | j        | j                  D ]} ||          }t                      j        st          d|i          S |                     |          }|S )N)dtyperd   )r
   is_first_rankr   r   r-   tensorfloatr   r   r   r   r   r   is_last_rankr   r   )r&   r   r   r   r   position_embedsrd   layers           r'   r(   zJAISModel.forward  s    >>' 	B$ $ 4 4Y ? ?x#"&((<"8"8 - ? -U\d+,,M4G   MM (3330AMDFD$4dnEE 	1 	1E!E-00MM~~* 	I&'GHHH		-00r)   NN)r*   r+   r,   r	   rr   rS   r-   r.   r   r   r(   rs   rt   s   @r'   r   r      s        AC %
 %
 %
z %
3 %
 %
 %
 %
 %
 %
N# #%, # # # # <@-1 < l 2D8	
 |d* 
u|	+       r)   r   c                       e Zd Zdddedef fdZdej        dej        fdZ	 	 ddej        d
ej        de	d	z  dej        d	z  de	ej        z  f
dZ
dej        dej        d	z  fdZdeeeej        f                  dee         fdZ xZS )JAISLMHeadModelrE   r   r   rI   c                D   t                                                       |j        j        }|j        }|| _        || _        t          |t          |d                    | _        | j        j	        r| j        j
        | _        n9t          | j        j        | j        j        t          |d                    | _        t          |d          r|j        | _        n|j        |j        z  | _        t)          |j        | j                  | _        | j        j        | _        d S )Ntransformer)r   rI   lm_headr   width_scale)r   rP   )rR   rS   r   r   rH   rF   r   r   r   tie_word_embeddingsr   r   r   r   rT   rX   r   output_logits_scalemup_output_alphamup_width_scaler   logits_processorr   )r&   r   rI   rF   rH   rc   s        r'   rS   zJAISLMHeadModel.__init__:  s#   )3"/($#L,O,O
 
 
 ;* 	+/DLL)&'#FI66  DL
 6=)) 	X'-'9D$$'-'>AW'WD$ /(0H!
 !
 !
 < 	,,,r)   r   r!   c                 6    | j                             |          S r#   )r   r   r   s     r'   r   zJAISLMHeadModel.embed_input_idsV  s    //	:::r)   N	positionsr   r   c                 6    |                      ||||          }|S r#   )r   )r&   r   r   r   r   rd   s         r'   r(   zJAISLMHeadModel.forwardY  s+     ((y"6
 
 r)   rd   c                 <    |                      | j        |          }|S r#   )r   r   )r&   rd   logitss      r'   compute_logitszJAISLMHeadModel.compute_logitse  s      &&t|]CCr)   weightsc                    t          |                     d                    }t                      }|D ]\  }}d|v r
d|v sd|v rd|v r|                    d          sd|z   }t	          ||           rC||         }dD ]1}||vr|                    d	          s|                                }2t          |d
t                    } |||           |	                    |           |S )NF)remove_duplicatezlm_head.weightz
.attn.biasz.attn.masked_biasrelative_peztransformer.)r[   r\   r{   z.weightweight_loader)
dictnamed_parametersset
startswithr   endswithtgetattrr   add)	r&   r   params_dictloaded_paramsnameloaded_weightparamconv1d_weight_namer   s	            r'   load_weightszJAISLMHeadModel.load_weightsl  s=   400%0HHII"%%%#* 	$ 	$D-4'' t##':d'B'B $$??>22 -%,&tT22 %E 'C 2 2"%T11}}Y//  - 1 1#E?<QRRMM%///d####r)   r   )r*   r+   r,   r	   rr   rS   r-   r.   r   r   r(   r   r   tupler   r   rs   rt   s   @r'   r   r   9  sM       AC 
 
 
z 
3 
 
 
 
 
 
8; ;%, ; ; ; ; <@-1
 
<
 <
 2D8	

 |d*
 
u|	+
 
 
 
| 
	   !HU33D-E$F !3s8 ! ! ! ! ! ! ! !r)   r   )3__doc__r:   collections.abcr   	itertoolsr   r-   r   vllm.attention.layerr   vllm.compilation.decoratorsr   vllm.configr   r	   vllm.distributedr
   r   r   !vllm.model_executor.layers.linearr   r   r   +vllm.model_executor.layers.logits_processorr   'vllm.model_executor.layers.quantizationr   3vllm.model_executor.layers.vocab_parallel_embeddingr   r   -vllm.model_executor.model_loader.weight_utilsr   vllm.sequencer   vllm.transformers_utils.configsr   
interfacesr   utilsr   r   r   r   Moduler   rA   rD   rv   r   r   r   r/   r)   r'   <module>r      s  , E D  $ $ $ $ $ $              * * * * * * = = = = = = / / / / / / / /         
         
 H G G G G G F F F F F F        P O O O O O - - - - - - 6 6 6 6 6 6 " " " " " "           + + + + +ry + + +

 
 
 ; ; ; ; ;BI ; ; ;|1 1 1 1 1bi 1 1 1h$ $ $ $ $	 $ $ $N H H H H H	 H H HVT T T T Tbi T T T T Tr)   