o
    à¥µiò  ã                   @   s   d dl mZ dd„ ZdS )é   )ÚPARALLELc                 C   s8   g }t j ¡ D ]\}}| t| ¡ ƒ¡ qt| t|ƒƒS )a¹  Check if a module is wrapped by parallel object.

    The following modules are regarded as parallel object:
     - torch.nn.parallel.DataParallel
     - torch.nn.parallel.distributed.DistributedDataParallel
    You may add you own parallel object by registering it to `modelscope.parallel.PARALLEL`.

    Args:
        module (nn.Module): The module to be checked.

    Returns:
        bool: True if the is wrapped by parallel object.
    )r   ÚmodulesÚitemsÚextendÚlistÚvaluesÚ
isinstanceÚtuple)ÚmoduleÚmodule_wrappersÚgroupÚmodule_dict© r   úV/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/trainers/parallel/utils.pyÚis_parallel   s   r   N)Úbuilderr   r   r   r   r   r   Ú<module>   s   