
    .`icE                        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 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/m0Z0  G d dej1                  Z2 G d dej1                  Z3 G d dej1                  Z4e
 G d dej1                              Z5 G d dej1        e(e)          Z6dS ) z?Inference-only Solar model compatible with HuggingFace weights.    )IterableN)nn)PretrainedConfig)	Attention)support_torch_compile)CacheConfig
VllmConfig)get_pp_group$get_tensor_model_parallel_world_size)
SiluAndMul)RMSNorm)MergedColumnParallelLinearQKVParallelLinearRowParallelLinear)LogitsProcessor)QuantizationConfig)get_rope)ParallelLMHeadVocabParallelEmbedding)default_weight_loadermaybe_remap_kv_scale_name)IntermediateTensors   )SupportsLoRA
SupportsPP)AutoWeightsLoaderPPMissingLayer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 )SolarMLPNF hidden_sizeintermediate_size
hidden_actquant_configbiasprefixreturnc                    t                                                       t          ||gdz  ||| d          | _        t	          ||||| d          | _        |dk    rt          d| d          t                      | _        d S )	N   .gate_up_proj)
input_sizeoutput_sizesr)   r(   r*   z
.down_projr/   output_sizer)   r(   r*   siluzUnsupported activation: z!. Only silu is supported for now.)	super__init__r   gate_up_projr   	down_proj
ValueErrorr   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/solar.pyr5   zSolarMLP.__init__E   s     	6"+,q0%+++
 
 
 +(#%(((
 
 
 X:XXX   !ll    c                     |                      |          \  }}|                     |          }|                     |          \  }}|S N)r6   r9   r7   )r:   xgate_up_s       r<   forwardzSolarMLP.forwardc   sD    &&q))
KK  ~~a  1r=   )NFr$   )
__name__
__module____qualname__intstrr   boolr5   rC   __classcell__r;   s   @r<   r#   r#   D   s         37# ## # 	#
 )4/# # # 
# # # # # #<      r=   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 )SolarAttention    NFr$   configr%   	num_headsnum_kv_headsmax_position_embeddingsr(   r)   cache_configr*   r+   c
           
         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d           | _
        | j
        | j        | j        z  | _
        | j        | j
        z  | _        | j        | j
        z  | _        | j
        dz  | _        || _        t          || j
        | j        | j        |||	 d          | _        t#          | j        | j
        z  ||||	 d          | _        t'          | j
        ||j        	          | _        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_projr1   )max_positionrope_parametersz.attn)rQ   rS   r(   r*   )r4   r5   r%   r   rX   rP   rY   maxrQ   getattrrU   q_sizekv_sizescalingrR   r   qkv_projr   o_projr   r[   
rotary_embr   attn)r:   rO   r%   rP   rQ   rR   r(   r)   rS   r*   tp_sizer;   s              r<   r5   zSolarAttention.__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
D99=  ,0DDDMnt}4(4=8}d*'>$)#m 0#6%'''
 
 
 (+dm;#%%%%
 
 
 #M0"2
 
 

 NML*%%###
 
 
			r=   	positionshidden_statesc                 "   |                      |          \  }}|                    | j        | j        | j        gd          \  }}}|                     |||          \  }}|                     |||          }|                     |          \  }	}|	S )N)dim)ra   splitr^   r_   rc   rd   rb   )
r:   rf   rg   qkvrB   qkvattn_outputoutputs
             r<   rC   zSolarAttention.forward   s    
 }--Q))T[$,E2)NN1ay!Q//1ii1a((KK,,	r=   )rN   NFNr$   )rD   rE   rF   r   rG   r   rI   r   rH   r5   torchTensorrC   rJ   rK   s   @r<   rM   rM   j   s        (,26+/C
 C
 C
 C
 	C

 C
 "%C
 )4/C
 C
 "D(C
 C
 
C
 C
 C
 C
 C
 C
J
<
 |
 
	
 
 
 
 
 
 
 
r=   rM   c                        e Zd Z	 	 	 ddededz  dedz  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 xZS )SolarDecoderLayerNr$   rO   rS   r(   r*   r+   c                 8   t                                                       |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                  | _        t          |j        |j                  | _        d S )NrR   rN   attention_biasFr)   num_key_value_headsz
.self_attn)	rO   r%   rP   rQ   rR   r(   r)   rS   r*   mlp_biasz.mlp)r%   r&   r'   r(   r)   r*   eps)r4   r5   r%   r]   rM   num_attention_heads	self_attnr#   r&   r'   mlpr   rms_norm_epsinput_layernormpost_attention_layernorm)r:   rO   rS   r(   r*   rR   rw   r;   s          r<   r5   zSolarDecoderLayer.__init__   sJ    	!-")&2KT"R"R !)95AA 
WFEF
 F
 ((0 -v/I  %<%%(((
 
 
 ($6(%U33???
 
 
  'v'9v?RSSS(/F$7)
 )
 )
%%%r=   rf   rg   residualc                     ||}|                      |          }n|                      ||          \  }}|                     ||          }|                     ||          \  }}|                     |          }||fS )N)rf   rg   )r   r}   r   r~   )r:   rf   rg   r   s       r<   rC   zSolarDecoderLayer.forward   s     $H 00??MM&*&:&:=(&S&S#M8' ' 
 
 #'"?"?x"X"Xx//h&&r=   )NNr$   )rD   rE   rF   r   r   r   rH   r5   rr   rs   tuplerC   rJ   rK   s   @r<   ru   ru      s         ,026'
 '
 '
 "D('
 )4/	'

 '
 
'
 '
 '
 '
 '
 '
R'<' |' ,%	'
 
u|U\)	*' ' ' ' ' ' ' 'r=   ru   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	z  d
ej        de	d	z  dej        d	z  dej        e	z  f
dZ
deeeej        f                  dee         fdZ xZS )
SolarModelr$   r*   vllm_configr*   c                   t                                                       |j        j        |j        |j        | _        | _        j        | _        t                      j	        sj
        r3t                      j        r t          | j        j                  | _        nt                      | _        t!          j        fd| d          \  | _        | _        | _        t                      j        r!t+          j        j                  | _        nt                      | _        t1          ddgj                  | _        d S )Nc                 *    t          |           S )N)rO   rS   r(   r*   )ru   )r*   rS   rO   r(   s    r<   <lambda>z%SolarModel.__init__.<locals>.<lambda>  s#    ,))	   r=   z.layersr   rz   rg   r   )r4   r5   model_config	hf_configrS   r(   rO   
vocab_sizer
   is_first_ranktie_word_embeddingsis_last_rankr   r%   embed_tokensr   r    num_hidden_layersstart_layer	end_layerlayersr   r   normr   make_empty_intermediate_tensors)r:   r   r*   rS   rO   r(   r;   s      @@@r<   r5   zSolarModel.__init__   s^   )3"/"/( +>>' 	1&	1+7>>+F	1 !7"! !D
 !/ 0 0D8C$      %%%	9
 	9
 	9
5$.$+ >>& 	) 28KLLLDII&((DI/Vj)6+=0
 0
,,,r=   	input_idsr+   c                 ,    |                      |          S r?   )r   r:   r   s     r<   embed_input_idszSolarModel.embed_input_ids(  s      +++r=   Nrf   intermediate_tensorsinputs_embedsc                 d   t                      j        r||}n|                     |          }d }n|J |d         }|d         }d }d }d }	d }
| j        r| j        j        d         n| j        j        d         }t          | j        | j                  D ]}|| j        j	        v r(|
                                }|
                                }	|| j        j        v r(|
                                }|
                                }
|| j        j        v r||z  |d|z
  z  z   }|	|z  |d|z
  z  z   }|| j        j        v r||z  |d|z
  z  z   }|
|z  |d|z
  z  z   }| j        |         } ||||          \  }}t                      j        st!          ||d          S |                     ||          \  }}|S )Nrg   r   r   r   )rg   r   )r
   r   r   trainingrO   bskcn_tvranger   r   bskcn_1clonebskcn_2bskcn_3bskcn_4r   r   r   r   )r:   r   rf   r   r   rg   r   	bskcn_h_1	bskcn_h_2	bskcn_r_1	bskcn_r_2r   ilayerrB   s                  r<   rC   zSolarModel.forward+  s    >>' 		8( - $ 4 4Y ? ?HH'3330AM+J7H				.2mX4;'**AUVWAXt'88 	 	ADK''')//11	$NN,,	DK''')//11	$NN,,	DK''' )H 4}H7U U$x/(a(l2KKDK''' )H 4}H7U U$x/(a(l2KKKNE&+e' '#M88 ~~* 	&"/XFF    99]H==qr=   weightsc                 b   g d}t          |                                           }t                      }|D ]w\  }}| j        ~| j                            |          x}rb||         }t          |dt                    }	|                                dk    r|n|d         } |	||           |                    |           |D ]i\  }
}}||vr|	                    ||
          }|
                    d          r||vr;t          ||           rL||         }|j        }	 |	|||            nk|
                    d          r||vrt          ||          }|&t          ||           r8||         }t          |dt                    }	 |	||           |                    |           y|S )N))rV   z.q_projrm   )rV   z.k_projrn   )rV   z.v_projro   )r.   z
.gate_projr   )r.   z.up_projr   weight_loaderr   z.bias)dictnamed_parameterssetr(   get_cache_scaler]   r   rj   addreplaceendswithr   r   r   )r:   r   stacked_params_mappingparams_dictloaded_paramsnameloaded_weight
scale_nameparamr   
param_nameweight_nameshard_ids                r<   load_weightszSolarModel.load_weights_  s   "
 "
 "
 4002233"%%%#* ,	$ ,	$D- ,"/??EEE
 - $J/ '@U V V%2%6%6%8%8A%=%=MM=QRCS  e]333!!*---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####r=   r?   )rD   rE   rF   r	   rH   r5   rr   rs   r   r   rC   r   r   r   r   rJ   rK   s   @r<   r   r      s"       AC &
 &
 &
z &
3 &
 &
 &
 &
 &
 &
P, ,%, , , , , .22 2<$&2 <2 2D8	2
 |d*2 
+	+2 2 2 2h8HU33D-E$F 83s8 8 8 8 8 8 8 8 8r=   r   c                   0    e Zd Zg dddgdZdd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j	        ez  f
dZdej	        dej	        fdZdeeeej	        f                  dee         fdZ xZS )SolarForCausalLM)q_projk_projv_proj	gate_projup_proj)ra   r6   input_embeddingsoutput_embeddings)r   lm_headr$   r   r   r*   c          	      >   t                                                       |j        j        }|j        }|| _        || _        t          |t          |d                    | _        t                      j
        rt          |j        |j        |t          |d                    | _        |j        r| j        j        j        | j        _        t%          |dd          }t'          |j        |          | _        nt+                      | _        | j        j        | _        d S )Nmodel)r   r*   r   )r(   r*   logit_scaleg      ?)scale)r4   r5   r   r   r(   rO   r   r!   r   r
   r   r   r   r%   r   r   r   weightr]   r   logits_processorr   r   )r:   r   r*   rO   r(   r   r;   s         r<   r5   zSolarForCausalLM.__init__  s   )3"/(#00
 
 

 >>& 	,)!")#FI66	  DL ) E&*j&=&D#!&-==K$3!% % %D!! *++DL J6 	,,,r=   r   r+   c                 6    | j                             |          S r?   )r   r   r   s     r<   r   z SolarForCausalLM.embed_input_ids  s    z)))444r=   Nrf   r   r   c                 6    |                      ||||          }|S r?   )r   )r:   r   rf   r   r   model_outputs         r<   rC   zSolarForCausalLM.forward  s)     zzy"6
 
 r=   rg   c                 <    |                      | j        |          }|S r?   )r   r   )r:   rg   logitss      r<   compute_logitszSolarForCausalLM.compute_logits  s    &&t|]CCr=   r   c                 J    t          |           }|                    |          S r?   )r   r   )r:   r   loaders      r<   r   zSolarForCausalLM.load_weights  s#    "4((""7+++r=   )NN)rD   rE   rF   packed_modules_mappingembedding_modulesr	   rH   r5   rr   rs   r   r   rC   r   r   r   r   r   rJ   rK   s   @r<   r   r     s       
 
 
 

 
 +& 
 BD  
  
  
z  
3  
  
  
  
  
  
D5 5%, 5 5 5 5 <@-1
 
<
 <
 2D8	

 |d*
 
+	+
 
 
 
EL U\    ,HU33D-E$F ,3s8 , , , , , , , ,r=   r   )7__doc__collections.abcr   rr   r   transformersr   vllm.attention.layerr   vllm.compilation.decoratorsr   vllm.configr   r	   vllm.distributedr
   r   %vllm.model_executor.layers.activationr   $vllm.model_executor.layers.layernormr   !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!   Moduler#   rM   ru   r   r    r=   r<   <module>r      s  2 F E $ $ $ $ $ $        ) ) ) ) ) ) * * * * * * = = = = = = / / / / / / / / O O O O O O O O < < < < < < 8 8 8 8 8 8         
 H G G G G G F F F F F F @ @ @ @ @ @               . - - - - - 0 0 0 0 0 0 0 0               # # # # #ry # # #LP P P P PRY P P Pf>' >' >' >' >'	 >' >' >'B X X X X X X X XvJ, J, J, J, J,ry,
 J, J, J, J, J,r=   