o
    -iX                     @   s,   d dl mZmZ d dlZG dd deZdS )    )ABCabstractmethodNc                   @   sV   e Zd Zee	ddejdededededejdB deejejejf fd	d
Z	dS )AbstractEplbPolicyNweightnum_replicas
num_groups	num_nodes	num_ranksold_global_expert_indicesreturnc                 C   s   t )a   
        Entry point for expert-parallelism load balancer.

        Parameters:
            weight: [layers, num_logical_experts], the load statistics
                for all logical experts
            num_replicas: number of physical experts, must be a multiple of
                `num_ranks`
            num_groups: number of expert groups
            num_nodes: number of server nodes
            num_ranks: number of ranks, must be a multiple of `num_nodes`
            old_global_expert_indices: [layers, num_logical_experts], the old global
                expert indices. Used to avoid unnecessary weight copying
                for experts moving within one rank.
        Returns:
            physical_to_logical_map: [layers, num_replicas], the expert
                index of each replica
            logical_to_physical_map: [layers, num_logical_experts, X],
                the replica indices for each expert
            expert_count: [layers, num_logical_experts], number of
                physical replicas for each logical expert
        )NotImplementedError)clsr   r   r   r   r	   r
    r   b/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/distributed/eplb/policy/abstract.pyrebalance_experts
   s   !z$AbstractEplbPolicy.rebalance_experts)N)
__name__
__module____qualname__classmethodr   torchTensorinttupler   r   r   r   r   r   	   s&    r   )abcr   r   r   r   r   r   r   r   <module>   s   