
    .`iH                        d 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
 ddlmZmZ dd	lmZmZ dd
l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 ddlmZmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/  G d dej0                  Z1 G d dej0                  Z2 G d dej0                  Z3e
 G d dej0                              Z4 G d dej0        e&e'          Z5dS )z?Inference-only Jais2 model compatible with HuggingFace weights.    )IterableN)nn)Jais2Config)	Attention)support_torch_compile)CacheConfig
VllmConfig)get_pp_group$get_tensor_model_parallel_world_size)ReLUSquaredActivation)ColumnParallelLinearQKVParallelLinearRowParallelLinear)LogitsProcessor)QuantizationConfig)get_rope)ParallelLMHeadVocabParallelEmbedding)default_weight_loadermaybe_remap_kv_scale_name)IntermediateTensors   )SupportsLoRA
SupportsPP)AutoWeightsLoaderPPMissingLayerextract_layer_indexis_pp_missing_parameter'make_empty_intermediate_tensors_factorymake_layersmaybe_prefixc                   P     e Zd Z	 	 	 ddededededz  ded	ed
df fdZd Z xZ	S )Jais2MLPNF hidden_sizeintermediate_size
hidden_actquant_configbiasprefixreturnc                     t                                                       t          ||||| d          | _        t	          ||||| d          | _        t                      | _        d S )Nz.up_proj
input_sizeoutput_sizer)   r(   r*   z
.down_proj)super__init__r   up_projr   	down_projr   act_fn)selfr%   r&   r'   r(   r)   r*   	__class__s          t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/jais2.pyr1   zJais2MLP.__init__I   s     	+")%&&&
 
 
 +(#%(((
 
 
 ,--    c                     |                      |          \  }}|                     |          }|                     |          \  }}|S N)r2   r4   r3   )r5   x_s      r7   forwardzJais2MLP.forwardc   s>    ||A1KKNN~~a  1r8   )NFr$   )
__name__
__module____qualname__intstrr   boolr1   r=   __classcell__r6   s   @r7   r#   r#   H   s         37. .. . 	.
 )4/. . . 
. . . . . .4      r8   r#   c                        e Zd Z	 	 	 	 	 ddedededed	ed
edz  dededz  deddf fdZ	de
j        de
j        de
j        fdZ xZS )Jais2Attention    NFr$   configr%   	num_headsnum_kv_headsmax_position_embeddingsr(   r)   cache_configr*   r+   c
                    t                                                       t          |	          }
|| _        t	                      }|| _        | j        |z  dk    sJ | j        |z  | _        || _        | j        |k    r| j        |z  dk    sJ n|| j        z  dk    sJ t          d| j        |z            | _	        t          |d| j        | j        z            | _        | j        | j        z  | _        | j	        | j        z  | _        | j        dz  | _        || _        t!          || j        | j        | j        |||	 d          | _        t%          | j        | j        z  ||||	 d          | _        d	}||                                d
k    rd}t+          | j        |t          |dd           |          | _        t/          |d          rn|j        }t3          |t4                    r|}nQt3          |t6                    r|
t9          |          z  }||         }n!t;          t=          |           d          d }t?          | j        | j        | j        | j	        ||||	 d          | _         d S )Nr   r   head_dimg      	.qkv_proj)r%   	head_sizetotal_num_headstotal_num_kv_headsr)   r(   r*   z.o_projr-   TggufFrope_parameters)max_positionrU   is_neox_styleinterleaved_sliding_windowz is not supported.z.attn)rK   rM   r(   per_layer_sliding_windowr*   )!r0   r1   r   r%   r   rR   rJ   rS   maxrK   getattrrO   q_sizekv_sizescalingrL   r   qkv_projr   o_projget_namer   
rotary_embhasattrrX   
isinstancerA   listlen
ValueErrortyper   attn)r5   rI   r%   rJ   rK   rL   r(   r)   rM   r*   	layer_idxtp_sizerW   rX   sliding_windowsw_idxr6   s                   r7   r1   zJais2Attention.__init__k   s    	'//	&688(#g-2222-8"."g-- *W499999 T4499994#:g#EFFJ 0D4H H
 
 nt}4(4=8}d*'>$)#m 0#6%'''
 
 
 (+dm;#%%%%
 
 
 #(=(=(?(?6(I(I!M"M0#F,=tDD'	
 
 
 6788 	")/)J&4c:: !;6== "S)C%D%DD!;F!C 677KKK   "NNML*%%%3###	
 	
 	
			r8   	positionshidden_statesc                 "   |                      |          \  }}|                    | j        | j        | j        gd          \  }}}|                     |||          \  }}|                     |||          }|                     |          \  }	}|	S )N)dim)r_   splitr\   r]   rb   ri   r`   )
r5   rn   ro   qkvr<   qkvattn_outputoutputs
             r7   r=   zJais2Attention.forward   s    
 }--Q))T[$,E2)NN1ay!Q//1ii1a((KK,,	r8   )rH   NFNr$   )r>   r?   r@   r   rA   r   rC   r   rB   r1   torchTensorr=   rD   rE   s   @r7   rG   rG   j   s        (,26+/Z
 Z
Z
 Z
 	Z

 Z
 "%Z
 )4/Z
 Z
 "D(Z
 Z
 
Z
 Z
 Z
 Z
 Z
 Z
x
<
 |
 
	
 
 
 
 
 
 
 
r8   rG   c            
            e Zd Z	 ddedededdf fdZdej        d	ej        d
ej        dz  de	ej        ej        f         fdZ
dededz  fdZ xZS )Jais2DecoderLayerr$   vllm_configrI   r*   r+   Nc                    t                                                       |p|j        j        }|j        }|                     |          }|j        | _        t          |dd          }t          |dd          pt          |dd          }t          || j        |j	        t          |d|j	                  ||||| d	  	        | _
        t          | j        |j        |j        |t          |d	d          | d
          | _        t          j        |j        |j                  | _        t          j        |j        |j                  | _        d S )NrL   rH   attention_biasFr)   num_key_value_headsz
.self_attn)	rI   r%   rJ   rK   rL   r(   r)   rM   r*   mlp_biasz.mlp)r%   r&   r'   r(   r)   r*   eps)r0   r1   model_config	hf_configrM   get_quant_configr%   r[   rG   num_attention_heads	self_attnr#   r&   r'   mlpr   	LayerNormlayer_norm_epsinput_layernormpost_attention_layernorm)	r5   r~   rI   r*   rM   r(   rL   r   r6   s	           r7   r1   zJais2DecoderLayer.__init__   s    	=;3="/,,[99!-")&2KT"R"R !)95AA 
WFEF
 F
 ((0 -v/I  %<%%(((
 
 
 ($6(%U33???
 
 
  "|F$9 
  
  
 )+F$9)
 )
 )
%%%r8   rn   ro   residualc                 
   ||}|                      |          }n|                      ||z             ||z   }}|                     ||          }|                     ||z             ||z   }}|                     |          }||fS )N)rn   ro   )r   r   r   r   )r5   rn   ro   r   s       r7   r=   zJais2DecoderLayer.forward  s     $H 00??MM $$]X%=>>( $M ' ' 
 
 ))-(*BCCH$   //h&&r8   c                     |j         S )z?Get quantization config for this layer. Override in subclasses.)r(   )r5   r~   s     r7   r   z"Jais2DecoderLayer.get_quant_config   s    ''r8   r$   )r>   r?   r@   r	   r   rB   r1   rz   r{   tupler=   r   r   rD   rE   s   @r7   r}   r}      s        
 	-
 -
-
 -
 	-

 
-
 -
 -
 -
 -
 -
^'<' |' ,%	'
 
u|U\)	*' ' ' '8(J (;MPT;T ( ( ( ( ( ( ( (r8   r}   c                   D    e Zd Zdefdededeej                 f fdZ	de
j        de
j        fdZ	 dde
j        d	z  d
e
j        ded	z  de
j        d	z  de
j        ez  ee
j        ee
j                 f         z  f
dZdeeee
j        f                  dee         fdZ xZS )
Jais2Modelr$   r~   r*   
layer_typec                    t                                                       j        j        j        }| _        || _        j        | _        j        | _        j        | _	        t                      j        sj        r;t                      j        r(t          | j        j        j        |          | _        nt#                      | _        t%          j        fd| d          \  | _        | _        | _        t                      j        r&t/          j        j        j                  | _        nt#                      | _        t7          ddgj                  | _        d S )N)org_num_embeddingsr(   c                       |           S )N)rI   r~   r*    )r*   rI   r   r~   s    r7   <lambda>z%Jais2Model.__init__.<locals>.<lambda>E  s!    ::'   r8   z.layersr*   r   ro   r   )r0   r1   r   r   r(   rI   pad_token_idpadding_idx
vocab_sizeorg_vocab_sizer
   is_first_ranktie_word_embeddingsis_last_rankr   r%   embed_tokensr   r    num_hidden_layersstart_layer	end_layerlayersr   r   r   normr   make_empty_intermediate_tensors)r5   r~   r*   r   r(   rI   r6   s    ` ` @r7   r1   zJais2Model.__init__'  s~    	)3"/(!. +$/>>' 
	1&
	1+7>>+F
	1 !7"#)#4)	! ! !D !/ 0 0D8C$     
 %%%9
 9
 9
5$.$+ >>& 	)V%7V=RSSSDII&((DI/Vj)6+=0
 0
,,,r8   	input_idsr+   c                 ,    |                      |          S r:   )r   r5   r   s     r7   embed_input_idszJais2Model.embed_input_idsU  s      +++r8   Nrn   intermediate_tensorsinputs_embedsc                    t                      j        r||}n|                     |          }d }n|J |d         }|d         }t          | j        | j                  D ]}| j        |         } ||||          \  }} t                      j        st          ||d          S | 	                    ||z             |}	}|S )Nro   r   )ro   r   )
r
   r   r   ranger   r   r   r   r   r   )
r5   r   rn   r   r   ro   r   ilayerr<   s
             r7   r=   zJais2Model.forwardX  s     >>' 		8( - $ 4 4Y ? ?HH'3330AM+J7Ht'88 	P 	PAKNE&+eI}h&O&O#M88~~* 	&"/XFF    99]X%=>>qr8   weightsc                 x   g d}t          |                                           }t                      }|D ]\  }}d|v rd|v sd|v r| j        d| j                            |          x}rH||         }t          |dt                    }	|d         } |	||           |                    |           d|v rt          ||          }||D ]i\  }
}}||vr|	                    ||
          }|
                    d          r||vr;t          ||           rL||         }|j        }	 |	|||            nk|
                    d          r||vrt          ||          }|1t          ||           rC||         }t          |dt                    }	 |	||           |                    |           |S )	N))rP   z.q_projru   )rP   z.k_projrv   )rP   z.v_projrw   zrotary_emb.inv_freqzrotary_emb.cos_cachedzrotary_emb.sin_cachedweight_loaderr   scalez.bias)dictnamed_parameterssetr(   get_cache_scaler[   r   addr   replaceendswithr   r   )r5   r   stacked_params_mappingparams_dictloaded_paramsnameloaded_weight
scale_nameparamr   
param_nameweight_nameshard_ids                r7   load_weightszJais2Model.load_weightsv  s?   "
 "
 "
 4002233"%%%#* 3	$ 3	$D-$,,&$..2IT2Q2Q  ,"/??EEE
 - $J/ '@U V V -a 0e]333!!*---$0{CC<5K 4 41
Kd**||K<<==)) d+.E.E*466 #D) % 3e]H=== ==)) d+.E.E0{CC<*466 #D) '@U V Ve]333d####r8   r:   )r>   r?   r@   r}   r	   rB   rh   r   Moduler1   rz   r{   r   r   r   re   r=   r   r   r   rD   rE   s   @r7   r   r   %  sM       
 &7	,
 ,
,
 ,
 O	,
 ,
 ,
 ,
 ,
 ,
\, ,%, , , , , .2 <$& < 2D8	
 |d* 
+	+eEL$u|BT4T.U	U   <=HU33D-E$F =3s8 = = = = = = = =r8   r   c                   B    e Zd Zdg diZdddZddded	ef fd
Zdded	e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	j
        e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 )Jais2ForCausalLMr_   )q_projk_projv_projinput_embeddingsoutput_embeddings)r   lm_headr$   r   r~   r*   c          	      X   t                                                       |j        j        }|j        }|| _        |                     |t          |d                    | _        t                      j
        rt          |j        |j        |t          |d                    | _        |j        r)| j                            | j        j                  | _        t%          |dd          }t'          |j        |          | _        nt+                      | _        | j        j        | _        d S )Nmodelr~   r*   r   )r(   r*   logit_scaleg      ?)r   )r0   r1   r   r   r(   rI   _init_modelr!   r   r
   r   r   r   r%   r   r   tie_weightsr   r[   r   logits_processorr   r   )r5   r~   r*   rI   r(   r   r6   s         r7   r1   zJais2ForCausalLM.__init__  s%   )3"/%%#L,I,I & 
 

 >>& 	,)!")#FI66	  DL ) Q#|77
8OPP!&-==K$3!% % %D!! *++DL J6 	,,,r8   c                 $    t          ||          S )Nr   )r   )r5   r~   r*   s      r7   r   zJais2ForCausalLM._init_model  s    k&AAAAr8   r   r+   c                 6    | j                             |          S r:   )r   r   r   s     r7   r   z Jais2ForCausalLM.embed_input_ids  s    z)))444r8   Nrn   r   r   c                 6    |                      ||||          }|S r:   )r   )r5   r   rn   r   r   model_outputs         r7   r=   zJais2ForCausalLM.forward  s)     zzy"6
 
 r8   ro   c                 <    |                      | j        |          }|S r:   )r   r   )r5   ro   logitss      r7   compute_logitszJais2ForCausalLM.compute_logits  s      &&t|]CCr8   r   c                 l    t          | | j        j        rdgnd           }|                    |          S )Nzlm_head.)skip_prefixes)r   rI   r   r   )r5   r   loaders      r7   r   zJais2ForCausalLM.load_weights  sC    "+/;+JTJ<<PT
 
 
 ""7+++r8   r   )NN)r>   r?   r@   packed_modules_mappingembedding_modulesr	   rB   r1   r   rz   r{   r   r   r=   r   r   r   r   r   rD   rE   s   @r7   r   r     s       222
 +& 
 BD 
 
 
z 
3 
 
 
 
 
 
<B Bz B3 B B B B5 5%, 5 5 5 5 <@-1
 
<
 <
 2D8	

 |d*
 
+	+
 
 
 
| 
	   ,HU33D-E$F ,3s8 , , , , , , , ,r8   r   )6__doc__collections.abcr   rz   r   transformersr   vllm.attention.layerr   vllm.compilation.decoratorsr   vllm.configr   r	   vllm.distributedr
   r   %vllm.model_executor.layers.activationr   !vllm.model_executor.layers.linearr   r   r   +vllm.model_executor.layers.logits_processorr   'vllm.model_executor.layers.quantizationr   +vllm.model_executor.layers.rotary_embeddingr   3vllm.model_executor.layers.vocab_parallel_embeddingr   r   -vllm.model_executor.model_loader.weight_utilsr   r   vllm.sequencer   
interfacesr   r   utilsr   r   r   r   r   r    r!   r   r#   rG   r}   r   r   r   r8   r7   <module>r      s$  4 F E $ $ $ $ $ $        $ $ $ $ $ $ * * * * * * = = = = = = / / / / / / / /        H G G G G G         
 H G G G G G F F F F F F @ @ @ @ @ @               . - - - - - 0 0 0 0 0 0 0 0                     ry   Dg g g g gRY g g gTN( N( N( N( N(	 N( N( N(b M M M M M M M M`F, F, F, F, F,ry,
 F, F, F, F, F,r8   