o
    )i                  	   @   s   d Z ddlZddlmZmZ ddlZdeddfddZdejd	ee	e
ef  fd
dZdd Zdejjde	e
ee
 f fddZdejjdeee
e
ee
f  fddZdS )zUtils for model executor.    N)AnyOptionalseedreturnc                 C   s   ddl m} ||  d S )Nr   current_platform)vllm.platformsr   Zseed_everything)r   r    r	   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/model_executor/utils.pyset_random_seed   s   r   weightweight_attrsc                 C   sj   |du rdS |  D ](\}}t| |rJ d| ddlm} | r,|dkr,t|}t| || q
dS )a  Set attributes on a weight tensor.

    This method is used to set attributes on a weight tensor. This method
    will not overwrite existing attributes.

    Args:
        weight: The weight tensor.
        weight_attrs: A dictionary of attributes to set on the weight tensor.
    Nz'Overwriting existing tensor attribute: r   r   Zweight_loader)itemshasattrr   r   Zis_tpu_make_synced_weight_loadersetattr)r   r   keyvaluer   r	   r	   r
   set_weight_attrs   s   r   c                    s    fdd}|S )Nc                    s8    | g|R i | | j t dkrt|  d S d S )Ncpu)ZdevicetorchZ_sync)paramargskwargsoriginal_weight_loaderr	   r
   _synced_weight_loader6   s   z9_make_synced_weight_loader.<locals>._synced_weight_loaderr	   )r   r   r	   r   r
   r   4   s   r   modelc                    s   t | dd   d urt ni   r S |  D ]6}t |dd }|d ur*t|ni }t fdd| D rJtdt| j dt|j d 	| q S )NZpacked_modules_mappingc                 3   s(    | ]\}}| v o | |kV  qd S )Nr	   ).0kv
parent_mapr	   r
   	<genexpr>L   s    z-get_packed_modules_mapping.<locals>.<genexpr>zCan't update z;'s packed_modules_mapping safely because of conflicts from .)
getattrcopydeepcopychildrenanyr   
ValueErrortype__name__update)r   child	child_mapr	   r!   r
   get_packed_modules_mapping?   s"   r0   c                 C   sF   t | dd  }r| S |  D ]}t |dd }|d ur |   S qg S )NZget_expert_mapping)r%   r(   )r   r"   r.   r/   r	   r	   r
   get_moe_expert_mappingV   s   
r1   )__doc__r&   typingr   r   r   intr   ZTensordictstrr   r   nnModulelistr0   tupler1   r	   r	   r	   r
   <module>   s"   
#"