o
    پi!!                     @  sn   d dl mZ d dlmZ dZerd dlmZ d dlmZ dd Z	dd	 Z
d
d Zdd Zdd ZdddZdS )    )annotations)TYPE_CHECKING    )
LoadConfig)ModelConfigc                 C  s6   ddl m} || |}|d urt|drt|dS d S )Nr   )_get_quantization_configweight_block_size)sglang.srt.model_loader.loaderr   hasattrgetattr)model_configload_configr   quant_config r   T/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/configs/update_config.pymay_get_weight_block_size   s
   

r   c                 C  s@   | d urt | dksJ d| d | d ksJ d| d S tS )N   z-Only len(weight_block_size) == 2 is supportedr      z>Only weight_block_size[0] == weight_block_size[1] is supported)lenDEFAULT_MOE_PADDING_SIZE)r   r   r   r   get_moe_padding_size   s   r   c                 C  sD   | }|d ur ||d  dkr dd l }| |||d |d   }|S )Nr   )mathlcm)tp_sizer   head_dimpad_sizer   r   r   r   get_num_heads_padding_size&   s   r   c                 C  s   ddl m} t| drLt| drN| j| dks| j| dkr@|}|| j|}|| j | j }|r8|| _|| _d S || _|| _d S |rP| j| _| j| _d S d S d S d S )Nr   pad_vocab_sizelinear_num_key_headslinear_num_value_heads)*sglang.srt.layers.vocab_parallel_embeddingr   r
   r   r    linear_num_key_heads_cpulinear_num_value_heads_cpu)r   r   is_post_updater   r   r"   r#   r   r   r    adjust_tp_num_heads_if_necessary3   s8   

r%   c                 C  s   |}t | drt | j|rt| j|}n
t | |rt| |}|| dkrOddlm} |||}t | drIt| j|| t | drGt| j|| | S t| || | S )N	hf_configr   r   hf_text_config)r
   r&   r   r!   r   setattrr'   )r   	attr_nameintermediate_padding_size
attr_valuer   r   r   r   update_intermediate_sizeY   s"   




r,   r   r   r   r   r   intreturnc                 C  s  t | |}| j| j_| j| j_|  | j_|  | j_| j| dks*|  | dkrt| jds8| j| j | j_	t| jdrNt| jdrN| jj
| jj | j_| j|   }|  }ddlm} t| jdri| jjn| jj	}t|||}|||}	|	| _|	| j_|	| j_|	| }
|
| _|
| j_|
| j_t| j|d |t| }t| d|} t| d	|} t| d
|} t| d|} t| jdr| jjjdkr| j| jj_| jjj| dkr| jjj| jjj | jj_	ddlm} t||}|| jjj|| jj_t| jjd	|| j_| S )Nr   r   qk_nope_head_dimqk_rope_head_dimr   qk_head_dimTmoe_intermediate_sizeintermediate_sizeintermediate_size_mlpshared_expert_intermediate_sizevision_configsiglip_vision_model)r   num_attention_headsr&   original_num_attention_headsr'   get_total_num_kv_headsoriginal_total_num_kv_headsr
   hidden_sizer   r/   r0   r1   r!   r   r   num_key_value_headsr%   r   r,   r6   
model_type)r   r   r   r   query_heads_per_kvtotal_kv_headsr   r   r   r=   r8   r*   r   r   r   #adjust_config_with_unaligned_cpu_tpp   s   








rA   N)r   r   r   r   r   r-   r.   r   )
__future__r   typingr   r   sglang.srt.configs.load_configr   sglang.srt.configs.model_configr   r   r   r   r%   r,   rA   r   r   r   r   <module>   s    
&