
    .`i$                         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 d dlmZ d dlmZmZ d d	lmZmZ d d
lmZmZ ddlmZmZmZ e G d dej                              Z G d de          ZdS )    )IterableN)support_torch_compile)
VllmConfig)FusedMoE)RMSNorm)LogitsProcessor)ParallelLMHeadVocabParallelEmbedding)default_weight_loadermaybe_remap_kv_scale_name)DeepseekV2DecoderLayerDeepseekV3ForCausalLM   )AutoWeightsLoadermaybe_prefixprocess_eagle_weightc            
            e Zd Zddddedededdf fd	Zd
ej        dej        fdZ	d
ej        dej        dej        de
ej        ej        f         fdZdee
eej        f                  dee         fdZ xZS )DeepseekV2Model r   )prefixstart_layer_idvllm_configr   r   returnNc          	          t                                                       j        j        j         _        j        } j        j         _        t           j        j         j        j	        |t          d                     _        t          j         fdt           j        j                  D                        _        t          j         j        j        j	        dz   j        j        j	        d           _        t)           j        j	         j        j                   _        t)           j        j	         j        j                   _        t)           j        j	         j        j                   _        d S )Nembed_tokensquant_configr   c                 f    g | ]-}t          t          d |z              j                  .S )zlayers.)r   config)r   r   r   ).0ir   selfr   r   s     }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/deepseek_eagle.py
<listcomp>z,DeepseekV2Model.__init__.<locals>.<listcomp>4   s]         ''0N!n:L0N0NOO;           F)bias)eps)super__init__speculative_configdraft_model_config	hf_configr   r   
vocab_sizer
   hidden_sizer   r   nn
ModuleListrangenum_hidden_layerslayersLinearmodelfcr   rms_norm_epsenormhnormnorm)r"   r   r   r   r   	__class__s   ```` r#   r*   zDeepseekV2Model.__init__    sk    	!4GQ"/+02K"K#%77	
 
 
 m       t{<==  	
 	
 )K)A-K)
 
 
 T[4$+:RSSS
T[4$+:RSSS
DK39QRRR			r%   	input_idsc                 ,    |                      |          S N)r   r"   r=   s     r#   embed_input_idszDeepseekV2Model.embed_input_idsH   s      +++r%   	positionshidden_statesc                 D   |                      |          }t          j        |                     |          |                     |          gd          }|                     |          }d }| j        D ]} ||||          \  }}|                     ||          \  }}||fS )N)dim)r   torchcatr9   r:   r7   r4   r;   )	r"   r=   rB   rC   input_embedsinputsresiduallayer_s	            r#   forwardzDeepseekV2Model.forwardK   s     ((33ZZ%%tzz-'@'@Ar
 
 
 [ 	 	E&+e' '#M88
  99]H==qm++r%   weightsc           	         g d}t          j        | ddd| j        j                  }t	          |                                           }t                      }|D ]/\  }}d|v r|D ]n\  }}	}
|	|vrd|v r||vr|                    |	|          }|dk    r||vr5|}|                    d	          r||vrQ||         }|j	        } ||||
            n|D ]D}|\  }}	}}
|	|vr|                    |	|          }||         }|j	        } |||||
|
            nW|                    d	          r||vrt          ||          }|||         }t          |dt                    } |||           |                    |           1|S )N))gate_up_proj	gate_projr   )rQ   up_projr   )fused_qkv_a_projq_a_projr   )rT   kv_a_proj_with_mqar   rR   	down_projrS   )ckpt_gate_proj_nameckpt_down_proj_nameckpt_up_proj_namenum_expertszrotary_emb.inv_freqzmlp.experts.rT   z.bias)shard_id	expert_idweight_loader)r   make_expert_params_mappingr   n_routed_expertsdictnamed_parameterssetreplaceendswithr^   r   getattrr   add)r"   rO   stacked_params_mappingexpert_params_mappingparams_dictloaded_paramsnameloaded_weight
param_nameweight_namer\   name_mappedparamr^   mappingr]   s                   r#   load_weightszDeepseekV2Model.load_weightsa   sW   "
 "
 "
 !) C + +'4!
 !
 !
 4002233"%%%#* D	$ D	$D-$,,5K ?8 ?81
Kd** #d**K0G0G"ll;
CC "444!44&D ==)) d+.E.E#D) % 3e]H===4 8 8GCJ@JY"$.. <<Z@@D'-E$)$7M!M%!)"+    E }}W-- !$k2I2I  5T;GGD| '-E$+0E% %M "M%777d####r%   )__name__
__module____qualname__r   strintr*   rG   TensorrA   tuplerN   r   rc   rs   __classcell__)r<   s   @r#   r   r      s9        &S &S &S  &S 	&S
 &S 
&S &S &S &S &S &SP, ,%, , , , ,,<, <, |	,
 
u|U\)	*, , , ,,ZHU33D-E$F Z3s8 Z Z Z Z Z Z Z Zr%   r   c                      e Zd Zd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j        dej        d	z  de	ej        ej        f         f
dZ
dej        dej        d	z  fdZdee	eej        f                  fdZd	S )EagleDeepseekV3ForCausalLMr   )r   r   r   c          	         t           j                            |            |j        j        j        | _        |j        }|j        	                    |j
                  }t          |d|          | _        t          | j        j        | j        j        |t!          |d                    | _        t%          | j        dd          }t'          | j        j        |          | _        | j        j        | _        |                                  d S )Nr6   )r   r   r   lm_headr   logit_scaleg      ?)scale)r0   Moduler*   r+   r,   r-   r   r   model_configget_num_layersparallel_configr   r6   r	   r.   r/   r   r   rf   r   logits_processorr3   num_moe_layersset_moe_parameters)r"   r   r   r   target_layer_numr   s         r#   r*   z#EagleDeepseekV3ForCausalLM.__init__   s   
	4   !4GQ"/&3BB'
 
 %#GDT
 
 

 &K"K#%	22	
 
 
 dk=#>> /K"+!
 !
 !

 #k;!!!!!r%   r=   r   c                 6    | j                             |          S r?   )r6   rA   r@   s     r#   rA   z*EagleDeepseekV3ForCausalLM.embed_input_ids   s    z)))444r%   NrB   rC   inputs_embedsc                 |    |$t          t          |           j         d          |                     |||          S )Nz( does not support multimodal inputs yet.)NotImplementedErrortypert   r6   )r"   r=   rB   rC   r   s        r#   rN   z"EagleDeepseekV3ForCausalLM.forward   sI     $%::&PPP   zz)Y>>>r%   c                 <    |                      | j        |          }|S r?   )r   r   )r"   rC   logitss      r#   compute_logitsz)EagleDeepseekV3ForCausalLM.compute_logits   s      &&t|]CCr%   rO   c                 z      fd}t           d           }|                    t          ||                     d S )Nc                 H    | \  }}d|vrd|z   }t          |           ||fS )Nr   zmodel.)r   )rJ   rl   rm   r"   s      r#   	transformz:EagleDeepseekV3ForCausalLM.load_weights.<locals>.transform   s<    "(D-$$$ t,,,&&r%   )skip_prefixes)r   rs   map)r"   rO   r   loaders   `   r#   rs   z'EagleDeepseekV3ForCausalLM.load_weights   s^    	' 	' 	' 	' 	' #
 
 
 	C	73344444r%   r?   )rt   ru   rv   r   rw   r*   rG   ry   rA   rz   rN   r   r   rs    r%   r#   r}   r}      s-       AC " " "z "3 " " " "65 5%, 5 5 5 5 .2? ?<? <? |	?
 |d*? 
u|U\)	*? ? ? ?| 
	   5HU33D-E$F 5 5 5 5 5 5r%   r}   )collections.abcr   rG   torch.nnr0   vllm.compilation.decoratorsr   vllm.configr   $vllm.model_executor.layers.fused_moer   $vllm.model_executor.layers.layernormr   +vllm.model_executor.layers.logits_processorr   3vllm.model_executor.layers.vocab_parallel_embeddingr	   r
   -vllm.model_executor.model_loader.weight_utilsr   r   &vllm.model_executor.models.deepseek_v2r   r   utilsr   r   r   r   r   r}   r   r%   r#   <module>r      s   % $ $ $ $ $        = = = = = = " " " " " " 9 9 9 9 9 9 8 8 8 8 8 8 G G G G G G                     
 I H H H H H H H H H \ \ \ \ \bi \ \ \~?5 ?5 ?5 ?5 ?5!6 ?5 ?5 ?5 ?5 ?5r%   