o
    پiy                  
   @   sd   d dl Z d dlZd dlZe eZdd Zdejdedededejf
d	d
Z	G dd dej
jZdS )    Nc                 C   s"   t d| }|rt|dS d S )Nzlayers\.(\d+)\.   )researchintgroup)weight_namematch r	   R/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/layers/utils/common.pyget_layer_id	   s   r   loaded_weight	input_dim	start_idx
shard_sizereturnc                 C   s   t | j| | d}|dkr3| |||}t| j}|| ||< tj|| j| jd}tj||g|dS t| j}|||< tj|| j| jdS )Nr   )dtypedevice)dim)	maxshapenarrowlisttorchzerosr   r   cat)r   r   r   r   
valid_sizeloaded_slice	pad_shapepadr	   r	   r
   pad_or_narrow_weight   s   



r   c                       s(   e Zd ZdZ fddZdd Z  ZS )PPMissingLayerzN
    A placeholder layer for missing layers in a pipeline parallel model.
    c                    s   t    |dd| _d S )Nreturn_tupleF)super__init__getr!   )selfargskwargs	__class__r	   r
   r#   /   s   
zPPMissingLayer.__init__c                 O   s,   |r|d nt t| }| jr|fS |S )z
        Return the first arg from args or the first value from kwargs.

        Wraps the input in a tuple if `self.return_tuple` is True.
        r   )nextitervaluesr!   )r%   r&   r'   inputr	   r	   r
   forward3   s   zPPMissingLayer.forward)__name__
__module____qualname____doc__r#   r.   __classcell__r	   r	   r(   r
   r    (   s    r    )loggingr   r   	getLoggerr/   loggerr   Tensorr   r   nnIdentityr    r	   r	   r	   r
   <module>   s"    

