o
    ۷iv                  
   @   s   d dl Z d dlmZmZmZ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 jjdeee jjee jj ee jj f  ddfddZedde	fddZedde	fddZedde	fddZedde	fddZedde	fddZedde	fdd Zed!de	fd"d#Zed$de	fd%d&Zed'de	fd(d)Zed*de	fd+d,Zed-de	fd.d/Z ed0de	fd1d2Z!ed3de	fd4d5Z"ed6de	fd7d8Z#ed9de	fd:d;Z$ed<de	fd=d>Z%ed?de	fd@dAZ&edBde	fdCdDZ'edEde	fdFdGZ(edHde	fdIdJZ)edKde	fdLdMZ*edNde	fdOdPZ+edQde	fdRdSZ,edTde	fdUdVZ-edWde	fdXdYZ.edZde	fd[d\Z/ed]de	fd^d_Z0ed`de	fdadbZ1edcde	fdddeZ2edfde	fdgdhZ3edide	fdjdkZ4edlde	fdmdnZ5edode	fdpdqZ6edrde	fdsdtZ7edude	fdvdwZ8edxde	fdydzZ9ed{de	fd|d}Z:dS )    N)ListTupleUnionOptional   )ForwardPattern   )BlockAdapter)BlockAdapterRegister)ENV)init_loggertransformerallow_classesreturnc                 C   s   |d urt |ttfs|f}| j}|dr9|d ur2t | |s0J d| jj ddd |D  d S td d S td| jj d|	dd	  d
 d S )N	diffuserszTransformer class z not in allowed classes: c                 S   s   g | ]}|j qS  )__name__).0clsr   r   _/home/ubuntu/vllm_env/lib/python3.10/site-packages/cache_dit/caching/block_adapters/adapters.py
<listcomp>   s    z#_relaxed_assert.<locals>.<listcomp>zjNo allowed classes provided for transformer strict type check in BlockAdapter. Skipping strict type check.z	 is from .r   z; not diffusers, skipping strict type check in BlockAdapter.)

isinstancelisttuple
__module__
startswith	__class__r   loggerwarningsplit)r   r   _imported_module_r   r   r   _relaxed_assert   s$   

r"   Fluxc              
   K   s$  ddl m} ddlm} ddlm} |f}zddl m} ||f7 }W n ty-   d }Y nw t| j	| | j	j
j}| rz|dsz|dsztjsatd| | j	| j	j| j	jgtjtjgdd	|S td| | j	| j	j| j	j d
dg| tjd|S td| | j	| j	j| j	jgtjtjgdd	|S )Nr   FluxTransformer2DModelis_diffusers_at_least_0_3_5)FluxPatchFunctor)Flux2Transformer2DModelNunchakuFlux2Tpiper   blocksforward_patterncheck_forward_patterntransformer_blockssingle_transformer_blocks)r-   r   r.   blocks_namedummy_blocks_namespatch_functorr/   r   )r   r%   cache_dit.utilsr'    cache_dit.caching.patch_functorsr(   r)   ImportErrorr"   r   r   r   r   r   "CACHE_DIT_FLUX_ENABLE_DUMMY_BLOCKSr	   r1   r2   r   	Pattern_1	Pattern_3)r-   kwargsr%   r'   r(   supported_transformersr)   transformer_cls_namer   r   r   flux_adapter/   sp   
	
r?   Mochic                 K   :   ddl m} t| j| td| | j| jjtjdd|S )Nr   )MochiTransformer3DModelTr,   r   )r   rB   r"   r   r	   r1   r   	Pattern_0)r-   r<   rB   r   r   r   mochi_adapterw      rD   	CogVideoXc                 K   rA   )Nr   )CogVideoXTransformer3DModelTr,   r   )r   rG   r"   r   r	   r1   r   rC   )r-   r<   rG   r   r   r   cogvideox_adapter   rE   rH   Wanc              
   K   s   ddl m}m} ddlm} t| j||f | jjj}|	dr#| nd }t
| dd rPt| j||f td| | j| jg| jj| jjgtjtjg|ddd|S td| | j| jjtj|ddd|S )	Nr   )WanTransformer3DModelWanVACETransformer3DModel)WanVACEPatchFunctorWanVACEtransformer_2Tr-   r   r.   r/   r5   r0   has_separate_cfgr   )r   rJ   rK   r7   rL   r"   r   r   r   r   getattrrN   r	   r.   r   	Pattern_2)r-   r<   rJ   rK   rL   cls_namer5   r   r   r   wan_adapter   sR   
rT   HunyuanVideoc              	   K   s   ddl m} | jjj}|f}zddl m} ||f7 }W n ty&   d }Y nw t| j| |drDt	d	| | j| jj
tjddd|S t	d	| | j| jj
| jjgtjtjgddd|S )
Nr   )HunyuanVideoTransformer3DModel) HunyuanVideo15Transformer3DModelHunyuanVideo15Tr-   r   r.   r/   r0   rP   Fr-   r   r.   r/   r0   check_num_outputsr   )r   rV   r   r   r   rW   r8   r"   r   r	   r1   r   rC   r2   )r-   r<   rV   r>   r=   rW   r   r   r   hunyuanvideo_adapter   sF   

r\   	QwenImagec              	   K   s   zddl m} W n ty   d }Y nw t| j| | jj}|dr9ddlm	} t
| | j| jjtj| dddS t
d| | j| jjtjddd|S )	Nr   )QwenImageTransformer2DModelQwenImageControlNet)QwenImageControlNetPatchFunctorTrO   rY   r   )r   r^   r8   r"   r   r   r   r   r7   r`   r	   r1   r   r:   )r-   r<   r^   pipe_cls_namer`   r   r   r   qwenimage_adapter   s8   

rb   LTXc           
   	   K   s   ddl m} | jjj}|d}|rtjntj}zddl m	} ddl
m} |r*| nd }W n ty:   d }d }Y nw |f}	|d urG|	|f }	t| j|	 td| | j| jj||dd|S )	Nr   )LTXVideoTransformer3DModelLTX2)LTX2VideoTransformer3DModel)LTX2PatchFunctorFr-   r   r.   r/   r5   r0   r   )r   rd   r   r   r   r   r   rC   rR   rf   r7   rg   	Exceptionr"   r	   r1   )
r-   r<   rd   rS   is_ltx2r/   rf   rg   r5   r=   r   r   r   ltxvideo_adapter   s4   



rk   Allegroc                 K   rA   )Nr   )AllegroTransformer3DModelTr,   r   )r   rm   r"   r   r	   r1   r   rR   )r-   r<   rm   r   r   r   allegro_adapterI  rE   rn   CogView3Plusc                 K   rA   )Nr   )CogView3PlusTransformer2DModelTr,   r   )r   rp   r"   r   r	   r1   r   rC   )r-   r<   rp   r   r   r   cogview3plus_adapterX  rE   rq   CogView4c              	   K   <   ddl m} t| j| td| | j| jjtjddd|S )Nr   )CogView4Transformer2DModelTrY   r   )r   rt   r"   r   r	   r1   r   rC   )r-   r<   rt   r   r   r   cogview4_adapterg     ru   Cosmosc              	   K   rs   )Nr   )CosmosTransformer3DModelTrY   r   )r   rx   r"   r   r	   r1   r   rR   )r-   r<   rx   r   r   r   cosmos_adapterw  rv   ry   EasyAnimatec                 K   rA   )Nr   )EasyAnimateTransformer3DModelTr,   r   )r   r{   r"   r   r	   r1   r   rC   )r-   r<   r{   r   r   r   easyanimate_adapter  rE   r|   
SkyReelsV2c              	   K   rs   )Nr   )SkyReelsV2Transformer3DModelTrY   r   )r   r~   r"   r   r	   r.   r   r;   )r-   r<   r~   r   r   r   skyreelsv2_adapter  s   
r   StableDiffusion3c                 K   rA   )Nr   )SD3Transformer2DModelTr,   r   )r   r   r"   r   r	   r1   r   r:   )r-   r<   r   r   r   r   sd3_adapter  rE   r   ConsisIDc                 K   rA   )Nr   )ConsisIDTransformer3DModelTr,   r   )r   r   r"   r   r	   r1   r   rC   )r-   r<   r   r   r   r   consisid_adapter  rE   r   DiTc              	   K   J   ddl m} ddlm} t| j| td| | j| jjtj	| dd|S )Nr   )DiTTransformer2DModel)DiTPatchFunctorTrh   r   )
r   r   r7   r   r"   r   r	   r1   r   r;   )r-   r<   r   r   r   r   r   dit_adapter     r   Amusedc                 K   rA   )Nr   )UVit2DModelTr,   r   )r   r   r"   r   r	   transformer_layersr   r;   )r-   r<   r   r   r   r   amused_adapter  rE   r   Briac                 K   sd   zddl m} W n ty   d }Y nw t| j| td| | j| jj| jjgtj	tj	gdd|S )Nr   )BriaTransformer2DModelTr,   r   )
r   r   r8   r"   r   r	   r1   r2   r   rC   )r-   r<   r   r   r   r   bria_adapter  s&   r   Luminac                 K   sJ   ddl m} ddl m} t| j||f td| | j| jjtjdd|S )Nr   )Lumina2Transformer2DModel)LuminaNextDiT2DModelTr,   r   )	r   r   r   r"   r   r	   layersr   r;   )r-   r<   r   r   r   r   r   lumina2_adapter  s   r   OmniGenc                 K   rA   )Nr   )OmniGenTransformer2DModelTr,   r   )r   r   r"   r   r	   r   r   r;   )r-   r<   r   r   r   r   omnigen_adapter  rE   r   PixArtc                 K   rA   )Nr   )PixArtTransformer2DModelTr,   r   )r   r   r"   r   r	   r1   r   r;   )r-   r<   r   r   r   r   pixart_adapter  rE   r   Sanac                 K   rA   )Nr   )SanaTransformer2DModelTr,   r   )r   r   r"   r   r	   r1   r   r;   )r-   r<   r   r   r   r   sana_adapter-  rE   r   StableAudioc                 K   rA   )Nr   )StableAudioDiTModelTr,   r   )r   r   r"   r   r	   r1   r   r;   )r-   r<   r   r   r   r   stabledudio_adapter<  rE   r   VisualClozec                 K   s   ddl m} ddlm} t| j| | r-td| | j| jj| jjgt	j
t	j
gdd|S td| | j| jj| jjgt	j
t	jgdd|S )Nr   r$   r&   Tr,   r   )r   r%   r6   r'   r"   r   r	   r1   r2   r   r:   r;   )r-   r<   r%   r'   r   r   r   visualcloze_adapterK  s<   r   AuraFlowc                 K   rA   )Nr   )AuraFlowTransformer2DModelTr,   r   )r   r   r"   r   r	   r2   r   r;   )r-   r<   r   r   r   r   auraflow_adapterq  rE   r   Chromac              
   K   Z   ddl m} ddlm} t| j| td| | j| jj| jjgt	j
t	jg| ddd|S )Nr   )ChromaTransformer2DModel)ChromaPatchFunctorTrO   r   )r   r   r7   r   r"   r   r	   r1   r2   r   r:   r;   )r-   r<   r   r   r   r   r   chroma_adapter  s$   r   ShapEc                 K   rA   )Nr   )PriorTransformerTr,   r   )r   r   r"   priorr	   r1   r   r;   )r-   r<   r   r   r   r   shape_adapter  rE   r   HiDreamc              
   K   r   )Nr   )HiDreamImageTransformer2DModel)HiDreamPatchFunctorT)r-   r   r.   r/   r5   r0   r[   r   )r   r   r7   r   r"   r   r	   double_stream_blockssingle_stream_blocksr   rC   r;   )r-   r<   r   r   r   r   r   hidream_adapter  s$   r   
HunyuanDiTc              	   K   sR   ddl m}m} ddlm} t| j||f td| | j| jjt	j
| dd|S )Nr   )HunyuanDiT2DModelHunyuanDiT2DControlNetModelHunyuanDiTPatchFunctorTrh   r   )r   r   r   r7   r   r"   r   r	   r.   r   r;   )r-   r<   r   r   r   r   r   r   hunyuandit_adapter  s    r   HunyuanDiTPAGc              	   K   r   )Nr   )r   r   Trh   r   )
r   r   r7   r   r"   r   r	   r.   r   r;   )r-   r<   r   r   r   r   r   hunyuanditpag_adapter  r   r   
Kandinsky5c              
   K   sZ   zddl m} W n ty   d }Y nw t| j| td| | j| jjtjdddd|S )Nr   )Kandinsky5Transformer3DModelTF)r-   r   r.   r/   rP   r0   r[   r   )	r   r   r8   r"   r   r	   visual_transformer_blocksr   r;   )r-   r<   r   r   r   r   kandinsky5_adapter  s"   r   PRXc              	   K   sX   zddl m} W n ty   d }Y nw t| j| td| | j| jjtjddd|S )Nr   )PRXTransformer2DModelTFrZ   r   )	r   r   r8   r"   r   r	   r.   r   r;   )r-   r<   r   r   r   r   prx_adapter  s    r   HunyuanImagec              	   K   f   zddl m} W n ty   d }Y nw t| j| td| | j| jj| jjgtj	tj	gddd|S )Nr   )HunyuanImageTransformer2DModelT)r-   r   r.   r/   rP   r0   r   )
r   r   r8   r"   r   r	   r1   r2   r   rC   )r-   r<   r   r   r   r   hunyuan_image_adapter  s(   r   
ChronoEditc              	   K   sX   zddl m} W n ty   d }Y nw t| j| td| | j| jjtjddd|S )Nr   )ChronoEditTransformer3DModelTrY   r   )	r   r   r8   r"   r   r	   r.   r   rR   )r-   r<   r   r   r   r   chronoedit_adapter-  s    r   ZImagec              	   K   s   ddl m} zddlm} W n ty   d }Y nw t| do#| jd u}t| j| t	d| | j| jj
tj|r9| nd dd|S )Nr   )ZImageControlNetPatchFunctor)ZImageTransformer2DModel
controlnetFrh   r   )r7   r   r   r   r8   hasattrr   r"   r   r	   r   r   r;   )r-   r<   r   r   has_controlnetr   r   r   zimage_adapterA  s$   	r   	OvisImagec              	   K   r   )Nr   )OvisImageTransformer2DModelTrY   r   )
r   r   r8   r"   r   r	   r1   r2   r   r:   )r-   r<   r   r   r   r   ovis_image_adapterY  (   r   LongCatImagec              	   K   r   )Nr   )LongCatImageTransformer2DModelTrY   r   )
r   r   r8   r"   r   r	   r1   r2   r   r:   )r-   r<   r   r   r   r   longcat_image_adapterr  r   r   )N);torchtypingr   r   r   r   r/   r   block_adaptersr	   block_registersr
   cache_dit.envsr   cache_dit.loggerr   r   r   nnModuler"   registerr?   rD   rH   rT   r\   rb   rk   rn   rq   ru   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    

	
#G50#(%