o
    پiC                     @   s   d dl mZ d dlmZmZ d dlZd dlmZ d dlm	Z	 eG dd dZ
dejd	eej d
ee
 fddZdejd
ee
 dejfddZdejd
ee
 dejfddZdejd
ee
 dejfddZdS )    )	dataclass)LiteralOptionalN)#get_global_expert_location_metadata)get_global_server_argsc                   @   sV   e Zd ZU ed ed< eej ed< ejed< ejed< eed< e	defdd	Z
d
S )ExpertLocationDispatchInfo)staticrandomep_dispatch_algorithm-partial_logical_to_rank_dispatch_physical_map#partial_logical_to_all_physical_map-partial_logical_to_all_physical_map_num_validnum_physical_expertslayer_idc                 C   sr   t  j}t }|d usJ |d u rd S | ||jd ur#|j|d d f nd |j|d d f |j|d d f |jdS )N)r
   r   r   r   r   )r   r
   r   %logical_to_rank_dispatch_physical_maplogical_to_all_physical_map%logical_to_all_physical_map_num_validr   )clsr   r
   expert_location_metadata r   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/eplb/expert_location_dispatch.pyinit_new#   s,   


z#ExpertLocationDispatchInfo.init_newN)__name__
__module____qualname__r   __annotations__r   torchTensorintclassmethodr   r   r   r   r   r      s   
 

r   router_logitscorrection_biasinfoc                 C   s8   |d ur|j dkr| dd |d urt|}| |fS )Nfake   
   )r
   uniform_r   
zeros_like)r    r!   r"   r   r   r   transform_select_experts_inputs@   s
   
r(   topk_idsreturnc                 C   sD   |d u r| S |j dkrt| |S |j dv rt| |S td|j  )Nr   )dynamicr#   zUnknown algorithm )r
   $_topk_ids_logical_to_physical_static%_topk_ids_logical_to_physical_dynamicNotImplementedErrorr)   r"   r   r   r   topk_ids_logical_to_physicalL   s   



r0   c                 C   s
   |j |  S )N)r   r/   r   r   r   r,   Y   s   
r,   c                 C   sR   | j }| j}|  } tjdd| j tj|d|j|   }|j| |f } | |} | S )Nr   i   )dtypedevice)	shaper2   flattenr   randintint32r   r   view)r)   r"   topk_ids_original_shaper2   chosen_dispatch_indexr   r   r   r-   _   s   
r-   )dataclassesr   typingr   r   r   sglang.srt.eplb.expert_locationr   sglang.srt.server_argsr   r   r   r(   r0   r,   r-   r   r   r   r   <module>   sF   '


