o
    
Û¾iŠ  ã                   @   s(   d dl Z d dlmZ G dd„ deƒZdS )é    N)ÚPretrainedConfigc                       sš   e Zd ZdZ							dd	ed
ededededededB f‡ fdd„Zedeej	B dd fdd„ƒZ
edd„ ƒZedd„ ƒZejdefdd„ƒZ‡  ZS )ÚMedusaConfigÚmedusaé   é}  é   é   é@   é
   NÚhidden_sizeÚ
vocab_sizeÚ	num_headsÚnum_hidden_layersÚ	max_pathsÚtopkÚtruncated_vocab_sizec           	         sh   || _ || _|| _|| _|| _|| _tdƒ| _|d u r|n|| _d|vr)dg|d< t	ƒ j
di |¤Ž d S )Ni   ÚarchitecturesÚMedusaModel© )r   r   r   r   r   r   ÚintÚmax_seq_lenr   ÚsuperÚ__init__)	Úselfr   r   r   r   r   r   r   Úkwargs©Ú	__class__r   úZ/home/ubuntu/.local/lib/python3.10/site-packages/vllm/transformers_utils/configs/medusa.pyr      s   
ÿ
zMedusaConfig.__init__Úpretrained_model_name_or_pathÚreturnc                 K   sp   | j |fi |¤Ž\}}t| ¡ ƒD ]}d|v r.d|v r#| |¡|d< qd|v r.| |¡|d< q| j|fi |¤ŽS )NÚnumÚheadsr   Úlayersr   )Úget_config_dictÚlistÚkeysÚpopÚ	from_dict)Úclsr   r   Úconfig_dictÚkr   r   r   Úfrom_pretrained&   s   ÿ
ÿ€zMedusaConfig.from_pretrainedc                 C   s   dS )Nr   r   ©r   r   r   r   Únum_attention_heads7   s   z MedusaConfig.num_attention_headsc                 C   s   | j S ©N©r   r,   r   r   r   Únum_lookahead_tokens;   s   z!MedusaConfig.num_lookahead_tokensr0   c                 C   s
   || _ d S r.   r/   )r   r0   r   r   r   r0   ?   s   
)r   r   r   r   r	   r
   N)Ú__name__Ú
__module__Ú__qualname__Ú
model_typer   r   ÚclassmethodÚstrÚosÚPathLiker+   Úpropertyr-   r0   ÚsetterÚ__classcell__r   r   r   r   r   	   sH    øþýüûúùøþü

r   )r7   Útransformersr   r   r   r   r   r   Ú<module>   s   