
    .`ie                         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 ddlmZmZmZmZ  G d	 d
e          Z G d de
          ZdS )    )IterableN)
VllmConfig)default_weight_loader)LlamaForCausalLM
LlamaModel   )LlamaDecoderLayer)AutoWeightsLoaderPPMissingLayerWeightsMapperis_pp_missing_parameterc                   p     e Zd Zdddedef fdZdeeeej	        f                  de
e         fdZ xZS )	TeleChat2Model )prefixvllm_configr   c                   |j         j        }ddddd|j         j        _        d|j         j        _        d|_        d|_        t                                          ||           | j        D ][}t          |t                    sDd |j        j        _        d|j        j        _        d |j        j        _        d|j        j        _        \d S )	Nn_layern_headffn_hidden_sizelayer_norm_epsilon)num_hidden_layersnum_attention_headsintermediate_sizerms_norm_epssiluTr   r   )model_config	hf_configattribute_map
hidden_actbiasmlp_biassuper__init__layers
isinstancer   	self_attnqkv_projskip_bias_addmlpgate_up_proj)selfr   r   r   layer	__class__s        x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/telechat2.pyr%   zTeleChat2Model.__init__*   s    ,6	 "+#+!20	<
 <
 *8 9? *5 	!	[@@@ [ 	< 	<Ee^44 <04(-9=(6.2	&+7;	&4	< 	<    weightsreturnc           	      `   ddg}t          |                                           }t                      }| j        j        }| j        j        |z  }|D ]\  }}d|v rg }	g }
t          |          D ]T}||z  dz  }|	                    ||||z   d d f                    |
                    |||z   |d|z  z                       Ut          j	        |	d          }	t          j	        |
d          }
|
                    dd          }t          ||           r||         }|j        } |||	d	            |||
d
           nd|v rE|
                    dd          }t          ||           r||         }|j        } |||d           n|D ]O\  }}}||vr|
                    ||          }t          ||           r2||         }|j        } ||||            n<t          ||           r||         }t          |dt                    } |||           |                    |           |S )N)r,   	gate_projr   )r,   up_projr   zself_attn.key_value   r   )dim	key_valuer)   kvqueryqweight_loader)dictnamed_parameterssetconfigr   hidden_sizerangeappendtorchcatreplacer   r>   getattrr   add)r-   r2   stacked_params_mappingparams_dictloaded_paramstotal_num_headshead_dimnameloaded_weightk_weightv_weightistartparamr>   
param_nameweight_nameshard_ids                     r0   load_weightszTeleChat2Model.load_weightsD   s   ,*"
 4002233"%%%+,;*o=#* -	$ -	$D-$,,//  AL1,EOOM%%(:J2JAAA2M$NOOOOO%eh&6X9M&OP    !9X1555 9X1555||K<<*466 #D) % 3eXs333eXs3333D||GZ88*466 #D) % 3e]C88889O 8 85JX"$.. <<Z@@D.tT:: ! '-E$)$7M!M%AAAE.tT:: ! '-E$+0E% %M "M%777d####r1   )__name__
__module____qualname__r   strr%   r   tuplerF   TensorrA   rZ   __classcell__)r/   s   @r0   r   r   )   s        AC < < <z <3 < < < < < <47HU33D-E$F 73s8 7 7 7 7 7 7 7 7r1   r   c            	           e Zd Z eddidddddd	          Zd
efdededee	j
                 fdZdeeeej        f                  dee         fdZdS )TeleChat2ForCausalLMztransformer.zmodel.z.layers.z.self_attn.z.embed_tokens.z.o_proj.z.norm.)z.h.z.self_attention.z.word_embeddings.z.dense.z.ln_f.)orig_to_new_prefixorig_to_new_substrr   r   r   
layer_typec                 $    t          ||          S )Nr   )r   )r-   r   r   rf   s       r0   _init_modelz TeleChat2ForCausalLM._init_model   s     +fEEEEr1   r2   r3   c                 z    t          | | j        j        rdgnd           }|                    || j                  S )Nzlm_head.)skip_prefixes)mapper)r
   rB   tie_word_embeddingsrZ   hf_to_vllm_mapper)r-   r2   loaders      r0   rZ   z!TeleChat2ForCausalLM.load_weights   sK    "+/;+JTJ<<PT
 
 
 ""743I"JJJr1   N)r[   r\   r]   r   rm   r	   r   r^   typennModulerh   r   r_   rF   r`   rA   rZ    r1   r0   rc   rc   ~   s        %H
  -!1!
 
	    &7	F FF F O	F F F FKHU33D-E$F K3s8 K K K K K Kr1   rc   )collections.abcr   rF   torch.nnrp   vllm.configr   -vllm.model_executor.model_loader.weight_utilsr    vllm.model_executor.models.llamar   r   llamar	   utilsr
   r   r   r   r   rc   rr   r1   r0   <module>rz      s0  . % $ $ $ $ $        " " " " " " O O O O O O I I I I I I I I $ $ $ $ $ $           R R R R RZ R R RjK K K K K+ K K K K Kr1   