o
    ۷i                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 ddlmZ eeZd	e jjeB d
ee
 de jjfddZdS )    N)Optional)init_logger)
ModelMixin)ParallelismBackend)ParallelismConfig   ) maybe_enable_context_parallelism
controlnetparallelism_configreturnc              
   C   s   t | tjjtfsJ dt|  |d u r| S |jtjkr*t	
d|j d | S |jd us4|jd urWt| |d} d| _|| _t	d| jj dt|  d|d  | S t	
d	 | S )
NzIcontrolnet must be an instance of torch.nn.Module or ModelMixin, but got zParallelism backend zN is not supported for ControlNet now, skip context parallelism for ControlNet.r	   r
   TzParallelize ControlNet: z, id:z, zPlease set ulysses_size or ring_size in parallelism_config to enable context parallelism for ControlNet. Skipping parallelism for ControlNet.)
isinstancetorchnnModuler   typebackendr   NATIVE_DIFFUSERloggerwarningulysses_size	ring_sizer   _is_parallelized_parallelism_configinfo	__class____name__idstrifyr    r   `/home/ubuntu/vllm_env/lib/python3.10/site-packages/cache_dit/parallelism/controlnets/dispatch.py'maybe_enable_parallelism_for_controlnet   s>   	r!   )r   typingr   cache_dit.loggerr   diffusers.models.modeling_utilsr   cache_dit.parallelism.backendr   cache_dit.parallelism.configr   context_parallelismr   r   r   r   r   r!   r   r   r   r    <module>   s    
