o
    پi9                  	   @   s   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 d dlmZ eeZ				
	d!dedededefddZdedefddZG dd deeZG dd deeZG dd deZdedefddZG dd deZeeeegZd S )"    )VaeImageProcessor)LoRAPipeline)ComposedPipelineBase)Req)$QwenImageLayeredBeforeDenoisingStage)
ServerArgs)init_logger            ?ffffff?base_seq_lenmax_seq_len
base_shift	max_shiftc                 C   s,   || ||  }|||  }| | | }|S )N )image_seq_lenr   r   r   r   mbmur   r   f/home/ubuntu/.local/lib/python3.10/site-packages/sglang/multimodal_gen/runtime/pipelines/qwen_image.pycalculate_shift   s   r   batchserver_argsc                 C   sN   | j }| j}|jjj}t|| d t|| d  }t|dddd}d|fS )N   r	   i    r   g?r   )heightwidthpipeline_config
vae_configvae_scale_factorintr   )r   r   r   r   r   r   r   r   r   r   
prepare_mu#   s   
r!   c                   @   &   e Zd Zd Zg dZdefddZdS )QwenImagePipeline)text_encoder	tokenizervaetransformer	schedulerr   c                 C   s   | j tgd d S )N)prepare_extra_timestep_kwargs)add_standard_t2i_stagesr!   selfr   r   r   r   create_pipeline_stages@   s   z(QwenImagePipeline.create_pipeline_stagesN__name__
__module____qualname__pipeline_name_required_config_modulesr   r-   r   r   r   r   r#   5       r#   c                   @   r"   )QwenImageEditPipeline)	processorr(   r$   r%   r'   r&   r   c                 C   s0   t |jjjjd d}| j|dddtgd d S )Nr   )r   image_encodingr6   r$   )vae_image_processorprompt_encodingimage_processor_keyprompt_text_encoder_keyr)   )r   r   r   arch_configr   add_standard_ti2i_stagesr!   )r,   r   r8   r   r   r   r-   P   s   

z,QwenImageEditPipeline.create_pipeline_stagesNr.   r   r   r   r   r5   D   s    	r5   c                   @   s   e Zd Zd ZdS )QwenImageEditPlusPipelineN)r/   r0   r1   r2   r   r   r   r   r>   _   s    r>   c                 C   s    d}| j jd | d }d|fS )Ng      p@   r   r   )image_latentshape)r   r   base_seqlenr   r   r   r   prepare_mu_layeredc   s   rC   c                   @   r"   )QwenImageLayeredPipeline)r&   r%   r6   r'   r(   r   c              
   C   s\   |  t| d| d| d| d| d| jd | jtgd |   |   d S )Nr&   r%   r6   r'   r(   )r&   r%   r6   r'   r(   
model_path)prepare_extra_kwargs)	add_stager   
get_modulerE   'add_standard_timestep_preparation_stagerC   add_standard_denoising_stageadd_standard_decoding_stager+   r   r   r   r-   t   s   z/QwenImageLayeredPipeline.create_pipeline_stagesNr.   r   r   r   r   rD   i   r4   rD   N)r	   r
   r   r   )diffusers.image_processorr   ,sglang.multimodal_gen.runtime.pipelines_corer   Csglang.multimodal_gen.runtime.pipelines_core.composed_pipeline_baser   ;sglang.multimodal_gen.runtime.pipelines_core.schedule_batchr   \sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.qwen_image_layeredr   )sglang.multimodal_gen.runtime.server_argsr   1sglang.multimodal_gen.runtime.utils.logging_utilsr   r/   loggerr    floatr   r!   r#   r5   r>   rC   rD   
EntryClassr   r   r   r   <module>   s@   
