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Zd dlZd dl	Zd dl
Zd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddlmZ ddlmZ dd	lmZ d dl ZG d
d dej!Z"G dd dej!Z#G dd de#Z$G dd de#Z%G dd dej!Z&G dd dej!Z'G dd de'Z(G dd de'Z)G dd de'Z*G dd de'Z+G dd dej!Z,G d d! d!e,Z-G d"d# d#e-Z.G d$d% d%ej!Z/G d&d' d'e#Z0G d(d) d)ej!Z1G d*d+ d+e1Z2G d,d- d-e"Z3G d.d/ d/e'Z4G d0d1 d1e#Z5G d2d3 d3ej!Z6G d4d5 d5ej!Z7G d6d7 d7ej!Z8G d8d9 d9ej!Z9G d:d; d;e9Z:G d<d= d=ej!Z;G d>d? d?e;Z<G d@dA dAej!Z=G dBdC dCe=Z>G dDdE dEe=Z?G dFdG dGe=Z@G dHdI dIej!ZAG dJdK dKej!ZBG dLdM dMeBZCG dNdO dOej!ZDG dPdQ dQeDZEG dRdS dSeDZFG dTdU dUej!ZGG dVdW dWeGZHG dXdY dYej!ZIG dZd[ d[ej!ZJG d\d] d]eIZKG d^d_ d_ej!ZLG d`da daeLZMG dbdc dceMZNG ddde deej!ZOG dfdg dgeOZPG dhdi dieOZQG djdk dkeOZRG dldm dmeOZSG dndo doeOZTG dpdq dqeOZUG drds dseOZVG dtdu dueOZWG dvdw dweOZXG dxdy dyeOZYG dzd{ d{eOZZG d|d} d}ej!Z[G d~d de[Z\G dd de[Z]G dd dej!Z^G dd dej!Z_G dd de_Z`G dd dej!ZaG dd dej!ZbG dd dej!ZcG dd deDZdG dd deDZeG dd deDZfG dd deDZgG dd dej!ZhG dd dehZiG dd dej!ZjG dd dej!ZkG dd dej!Zlg e5e/e3e"e#e$e%e4e&e'e(e*e+e)e0e1e2e-e.e6e7e8e9e:e;e<e>e=eke?eAeBeCegefeeedeFeEeDeGeHeIeKeNeMeLeXeOePeQeTeReSeVeUeWeYeZe]e[e\e^e_e`eaejebece@eieheJelZmeme,g7 ZmdS )    N   )
model_base)utils)sd1_clip)	sdxl_clip)supported_models_base)latent_formats)diffusers_convertc                   @   sL   e Zd ZddddddZdddZejZd	Zd
d Z	dd Z
i fddZdS )SD15   @  FNcontext_dimmodel_channelsuse_linear_in_transformeradm_in_channelsuse_temporal_attention   	num_headsnum_head_channels      ?c                 C   s   t | }|D ]}|dr!|ds!|dd}||||< qd|v r6|d }|jtjkr6| |d< i }d|d< t	j
||dd}|S )Nzcond_stage_model.transformer.z(cond_stage_model.transformer.text_model.z?cond_stage_model.transformer.text_model.embeddings.position_idsclip_l.cond_stage_model.Tfilter_keys)listkeys
startswithreplacepopdtypetorchfloat32roundr   state_dict_prefix_replace)self
state_dictkxyidsreplace_prefix r.   4/mnt/c/Users/fbmor/ComfyUI/comfy/supported_models.pyprocess_clip_state_dict5   s   zSD15.process_clip_state_dictc                 C   s8   ddg}|D ]}||v r| | qddi}t||S )N)clip_l.transformer.text_projection.weightclip_l.logit_scaler   r   )r!   r   r&   )r'   r(   pop_keyspr-   r.   r.   r/   "process_clip_state_dict_for_savingF   s   
z'SD15.process_clip_state_dict_for_savingc                 C      t tjtjS N)r   
ClipTargetr   SD1TokenizerSD1ClipModelr'   r(   r.   r.   r/   clip_targetO      zSD15.clip_target)__name__
__module____qualname__unet_configunet_extra_configr   r
   latent_formatmemory_usage_factorr0   r5   r<   r.   r.   r.   r/   r
   $   s    		r
   c                   @   sZ   e Zd ZddddddZddejd	ZejZ	d
Z
dddZdd Zdd Zi fddZdS )SD20   r   TNFr   r   @   r   r   attn_precisionr    c                 C   sN   | j d dkr#d|}||d }|d ur#tj|dddkr#tjjS tjjS )Nin_channels   z4{}output_blocks.11.1.transformer_blocks.0.norm1.biasF)unbiasedg
ףp=
?)	rA   formatgetr#   stdr   	ModelTypeV_PREDICTIONEPS)r'   r(   prefixr)   outr.   r.   r/   
model_typed   s   
zSD20.model_typec                 C   s6   i }d|d< d|d< t j||dd}t |dd}|S )Nzclip_h.conditioner.embedders.0.model.zcond_stage_model.model.Tr   zclip_h.transformer.)r   r&   clip_text_transformers_convertr'   r(   r-   r.   r.   r/   r0   l   s   zSD20.process_clip_state_dictc                 C   s&   i }d|d< t ||}t|}|S )Nzcond_stage_model.modelclip_h)r   r&   r	   convert_text_enc_state_dict_v20rY   r.   r.   r/   r5   t   s
   
z'SD20.process_clip_state_dict_for_savingc                 C      t tjjjtjjjS r7   )r   r8   comfytext_encoderssd2_clipSD2TokenizerSD2ClipModelr;   r.   r.   r/   r<   {      zSD20.clip_targetrJ   )r>   r?   r@   rA   r#   r$   rB   r   r
   rC   rD   rV   r0   r5   r<   r.   r.   r.   r/   rE   R   s"    	
rE   c                   @   s0   e Zd ZddddddZdZdd	d
ddZdS )SD21UnclipLrF   r   Ti   Fr   embedder.model.visual.  squaredcos_cap_v2	timestepsbeta_scheduler   noise_schedule_configtimestep_dimNr>   r?   r@   rA   clip_vision_prefixnoise_aug_configr.   r.   r.   r/   rd   ~       rd   c                   @   s0   e Zd ZddddddZdZdd	d
ddZdS )SD21UnclipHrF   r   T   Fr   re   rf   rg   rh   rk   Nrn   r.   r.   r.   r/   rr      rq   rr   c                   @   sR   e Zd Zddddg dddZejZdZdddZdd Z	dd Z
i fddZd
S )SDXLRefineri  T    
  )r   r   rL   rL   rL   rL   r   r   F)r   r   r   r   transformer_depthr   r   rJ   Nc                 C      t j| |dS N)device)r   rt   r'   r(   rT   rz   r.   r.   r/   	get_model      zSDXLRefiner.get_modelc                 C   s>   i }i }d|d< t j||dd}t |dd}t ||}|S )Nclip_g.rW   Tr   clip_g.transformer.)r   r&   rX   state_dict_key_replacer'   r(   keys_to_replacer-   r.   r.   r/   r0      s   z#SDXLRefiner.process_clip_state_dictc                 C   s:   i }t |d}d|v r|d d|d< t||}|S )Nclip_gz5clip_g.transformer.text_model.embeddings.position_idszconditioner.embedders.0.model)r	   r[   r!   r   r&   )r'   r(   r-   state_dict_gr.   r.   r/   r5      s   
z.SDXLRefiner.process_clip_state_dict_for_savingc                 C   r6   r7   )r   r8   r   SDXLTokenizerSDXLRefinerClipModelr;   r.   r.   r/   r<      r=   zSDXLRefiner.clip_targetrJ   N)r>   r?   r@   rA   r   SDXLrC   rD   r|   r0   r5   r<   r.   r.   r.   r/   rt      s    	

	rt   c                   @   s\   e Zd Zddg dddddZejZdZdd
dZdddZ	dd Z
dd Zi fddZdS )r   r   Tr   r      r   
   r   rs      Fr   r   rw   r   r   r   g?rJ   c                 C   s   d|v r d|v r t  | _d| jd< d| jd< d| jd< tjjS d	|v rBt|d	  | jd< d
|v r>t|d
  | jd< tjj	S d|v rSd|v rOd| jd< tjj
S tjjS )Nedm_meanedm_std      ?
sigma_data      T@	sigma_maxMb`?	sigma_minzedm_vpred.sigma_maxzedm_vpred.sigma_minv_predztsnrTzsnr)r   SDXL_Playground_2_5rC   sampling_settingsr   rQ   EDMfloatitemV_PREDICTION_EDMrR   rS   )r'   r(   rT   r.   r.   r/   rV      s    




zSDXL.model_typeNc                 C   s,   t j| | |||d}|  r|  |S N)rV   rz   )r   r   rV   inpaint_modelset_inpaintr'   r(   rT   rz   rU   r.   r.   r/   r|      s   zSDXL.get_modelc                 C   sF   i }i }d|d< d|d< t j||dd}t ||}t |dd}|S )Nzclip_l.transformer.text_modelz.conditioner.embedders.0.transformer.text_modelr~   zconditioner.embedders.1.model.Tr   r   )r   r&   r   rX   r   r.   r.   r/   r0      s   zSDXL.process_clip_state_dictc                 C   s   i }t |d}|D ]}|dr|| ||< q
tdd|d< ddg}|D ]}||v r3|| q(d|d< d	|d< t||}|S )
Nr   clip_lM   )r   r   z5clip_l.transformer.text_model.embeddings.position_idsr1   r2   zconditioner.embedders.1.modelzconditioner.embedders.0)	r	   r[   r   r#   arangeexpandr!   r   r&   )r'   r(   r-   r   r)   r3   r4   r.   r.   r/   r5      s    

z'SDXL.process_clip_state_dict_for_savingc                 C   r6   r7   )r   r8   r   r   SDXLClipModelr;   r.   r.   r/   r<     r=   zSDXL.clip_targetrc   r   )r>   r?   r@   rA   r   r   rC   rD   rV   r|   r0   r5   r<   r.   r.   r.   r/   r      s    	

r   c                   @   "   e Zd Zddg dddddZdS )	SSD1Br   T)r   r   r   r   rL   rL   rs   r   Fr   Nr>   r?   r@   rA   r.   r.   r.   r/   r         
r   c                   @   r   )	Segmind_Vegar   T)r   r   r   r   r   r   rs   r   Fr   Nr   r.   r.   r.   r/   r     r   r   c                   @   r   )	
KOALA_700Mr   T)r   r      rs   r   Fr   Nr   r.   r.   r.   r/   r     r   r   c                   @   r   )	KOALA_1Br   T)r   r      rs   r   Fr   Nr   r.   r.   r.   r/   r   #  r   r   c                	   @   s^   e Zd Zdddg ddddddZdd	ejd
ZdZej	Z
dddZdddZi fddZdS )SVD_img2vidr   r   Tr   r   r   r   r   r   r   r   rF   r   r   rK   r   rw   r   r   r   use_temporal_resblockr   rG   rH   z/conditioner.embedders.0.open_clip.model.visual.g     @r   r   r   rJ   Nc                 C      t j| |d}|S ry   )r   r   r   r.   r.   r/   r|   E     zSVD_img2vid.get_modelc                 C      d S r7   r.   r;   r.   r.   r/   r<   I     zSVD_img2vid.clip_targetr   )r>   r?   r@   rA   r#   r$   rB   ro   r   r
   rC   r   r|   r<   r.   r.   r.   r/   r   -  s&    

r   c                	   @   s6   e Zd Zdddg ddddddZdgZdddZd
S )SV3D_ur   r   Tr   rF      r   z conditioner.embedders.1.encoder.rJ   Nc                 C   r   ry   )r   r   r   r.   r.   r/   r|   Z  r   zSV3D_u.get_modelr   )r>   r?   r@   rA   vae_key_prefixr|   r.   r.   r.   r/   r   L  s    r   c                	   @   s0   e Zd Zdddg ddddddZdd
dZd	S )SV3D_pr   r   Tr   rF   ru   r   rJ   Nc                 C   r   ry   )r   r   r   r.   r.   r/   r|   k  r   zSV3D_p.get_modelr   r>   r?   r@   rA   r|   r.   r.   r.   r/   r   ^  s    r   c                   @   sR   e Zd ZdddddddZdddZddd	Zd
ZejZ	dddZ
i fddZdS )Stable_Zero123r   r   FNr   r   r   r   r   r   rK   r   r   )cc_projection.weightcc_projection.biaszcond_stage_model.model.visual.rJ   c                 C   s   t j| ||d |d d}|S )Nr   r   )rz   cc_projection_weightcc_projection_bias)r   r   r   r.   r.   r/   r|     s   zStable_Zero123.get_modelc                 C   r   r7   r.   r;   r.   r.   r/   r<     r   zStable_Zero123.clip_targetr   )r>   r?   r@   rA   rB   required_keysro   r   r
   rC   r|   r<   r.   r.   r.   r/   r   o  s$    

r   c                   @   sJ   e Zd ZdddddddZg dd	d
ddZejZdddZdddZ	dS )SD_X4UpscalerrF   r      TNF)r   r   rK   r   r   r   )TTTFrf   r   r   )disable_self_attentionsnum_classesr   r   -C6?{Gz?linear_start
linear_endrJ   c                 C   r   ry   )r   r   r   r.   r.   r/   r|     r   zSD_X4Upscaler.get_modelr   )
r>   r?   r@   rA   rB   r   SD_X4rC   r   r|   r.   r.   r.   r/   r     s$    
r   c                   @   sh   e Zd ZddiZi ZejZej	ej
gZddiZdgZdgZdZdd	 Zd
d ZdddZi fddZdS )Stable_Cascade_Cstable_cascade_stagecshift       @vae.ztext_encoder.zclip_l_vision.c                    s   t | }dD ]N}d| t fdd|}|D ];}||}|d t d   }|jd d }tdD ]}	g d}
d	||
|	 |}|||	 ||	d   ||< q7qq|S )
N)weightbiasz
in_proj_{}c                    s
   |   S r7   )endswith)asuffixr.   r/   <lambda>  s   
 z:Stable_Cascade_C.process_unet_state_dict.<locals>.<lambda>r   r      )to_qto_kto_vz{}.{}.{})r   r   rN   filterr!   lenshaperange)r'   r(   key_listr+   r   k_fromweightsrT   
shape_fromr*   r4   k_tor.   r   r/   process_unet_state_dict  s   

z(Stable_Cascade_C.process_unet_state_dictc                 C   s>   t j|dd | jD dd}d|v r|ddd|d< |S )	Nc                 S   s   i | ]}|d qS rc   r.   ).0r)   r.   r.   r/   
<dictcomp>  s    z<Stable_Cascade_C.process_clip_state_dict.<locals>.<dictcomp>Tr   zclip_g.text_projectionr   r   z)clip_g.transformer.text_projection.weight)r   r&   text_encoder_key_prefixr!   	transposer;   r.   r.   r/   r0     s   z(Stable_Cascade_C.process_clip_state_dictrJ   Nc                 C   r   ry   )r   StableCascade_Cr   r.   r.   r/   r|     r   zStable_Cascade_C.get_modelc                 C   r6   r7   )r   r8   r   StableCascadeTokenizerStableCascadeClipModelr;   r.   r.   r/   r<     r=   zStable_Cascade_C.clip_targetr   )r>   r?   r@   rA   rB   r   SC_PriorrC   r#   bfloat16r$   supported_inference_dtypesr   r   r   ro   r   r0   r|   r<   r.   r.   r.   r/   r     s    
r   c                   @   sD   e Zd ZddiZi ZejZej	ej
ejgZddiZdZd	ddZdS )
Stable_Cascade_Br   br   r   NrJ   c                 C   r   ry   )r   StableCascade_Br   r.   r.   r/   r|     r   zStable_Cascade_B.get_modelr   )r>   r?   r@   rA   rB   r   SC_BrC   r#   float16r   r$   r   r   ro   r|   r.   r.   r.   r/   r     s    r   c                   @   s(   e Zd ZdddddddZd
dd	ZdS )SD15_instructpix2pixr   r   FNr   r   rJ   c                 C   rx   ry   )r   r   r{   r.   r.   r/   r|     r}   zSD15_instructpix2pix.get_modelr   r   r.   r.   r.   r/   r     s    	r   c                   @   s.   e Zd Zddg ddddddZdddZd
S )SDXL_instructpix2pixr   Tr   rs   r   Fr   )r   r   rw   r   r   r   rK   rJ   Nc                 C   s   t j| | |||dS r   )r   r   rV   r{   r.   r.   r/   r|     rb   zSDXL_instructpix2pix.get_modelr   r   r.   r.   r.   r/   r     s    
r   c                   @   s0   e Zd ZddddddZdddZdddZd
S )LotusDr   TFrL   )r   r   r   r   rK   
sequentialrG   )r   r   rJ   Nc                 C   rx   ry   )r   Lotusr{   r.   r.   r/   r|     r}   zLotusD.get_modelr   )r>   r?   r@   rA   rB   r|   r.   r.   r.   r/   r     s    	r   c                   @   sH   e Zd ZdddZddiZi ZejZdZ	dgZ
dd	d
Zi fddZdS )SD3   N)rK   pos_embed_scaling_factorr         @皙?text_encoders.rJ   c                 C   r   ry   )r   r   r   r.   r.   r/   r|   )  r   zSD3.get_modelc              	   C   s   d}d}d}| j d }d||v rd}d||v rd}tjj|d|}d|v r.d}ttjjjtjjjd	|||d|S )
NFr   z7{}clip_l.transformer.text_model.final_layer_norm.weightTz7{}clip_g.transformer.text_model.final_layer_norm.weight{}t5xxl.transformer.dtype_t5)r   r   t5r.   )	r   rN   r]   r^   sd3_clipt5_xxl_detectr   r8   SD3Tokenizer)r'   r(   r   r   r  pref	t5_detectr.   r.   r/   r<   -  s   
*zSD3.clip_targetr   )r>   r?   r@   rA   r   rB   r   r   rC   rD   r   r|   r<   r.   r.   r.   r/   r     s    
r   c                   @   sZ   e Zd ZddiZdddZi ZejZdgZ	dgZ
dd
dZdd Zdd Zi fddZd	S )StableAudioaudio_modelzdit1.0g     @@Q?r   r  zpretransform.model.rJ   Nc                 C   s:   t j|ddidd}t j|ddidd}tj| |||dS )Nz'conditioner.conditioners.seconds_start.rJ   Tr   z'conditioner.conditioners.seconds_total.)seconds_start_embedder_weightsseconds_total_embedder_weightsrz   )r   r&   r   StableAudio1)r'   r(   rT   rz   seconds_start_sdseconds_total_sdr.   r.   r/   r|   I  s   zStableAudio.get_modelc                 C   s>   t | D ]}|ds|ds|dr|| q|S )Nz.cross_attend_norm.betaz.ff_norm.betaz.pre_norm.beta)r   r   r   r!   )r'   r(   r)   r.   r.   r/   r   N  s
   
z#StableAudio.process_unet_state_dictc                 C      ddi}t ||S NrJ   zmodel.model.r   r&   rY   r.   r.   r/   "process_unet_state_dict_for_savingT     z.StableAudio.process_unet_state_dict_for_savingc                 C   r\   r7   )r   r8   r]   r^   sa_t5SAT5Tokenizer	SAT5Modelr;   r.   r.   r/   r<   X  rb   zStableAudio.clip_targetr   )r>   r?   r@   rA   r   rB   r   r  rC   r   r   r|   r   r  r<   r.   r.   r.   r/   r  <  s    

r  c                   @   sJ   e Zd ZddiZdddZi ZejZdgZ	dgZ
dd
dZi fddZd	S )AuraFlowcond_seq_dimrs   r   gGz?
multiplierr   r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   k  r   zAuraFlow.get_modelc                 C   r\   r7   )r   r8   r]   r^   aura_t5AuraT5TokenizerAuraT5Modelr;   r.   r.   r/   r<   o  rb   zAuraFlow.clip_targetr   )r>   r?   r@   rA   r   rB   r   r   rC   r   r   r|   r<   r.   r.   r.   r/   r  [  s    
r  c                   @   sR   e Zd ZddiZdddddZi ZejZdZ	d	gZ
d
gZdddZi fddZdS )PixArtAlphaimage_modelpixart_alphasqrt_linearr   r   rf   )rj   r   r   ri   r   r   r  rJ   Nc                 C   s   t j| |d}| S ry   )r   PixArtevalr   r.   r.   r/   r|     s   zPixArtAlpha.get_modelc                 C   r\   r7   )r   r8   r]   r^   	pixart_t5PixArtTokenizerPixArtT5XXLr;   r.   r.   r/   r<     rb   zPixArtAlpha.clip_targetr   )r>   r?   r@   rA   r   rB   r   r
   rC   rD   r   r   r|   r<   r.   r.   r.   r/   r$  r  s    
r$  c                   @   s   e Zd ZddiZejZdS )PixArtSigmar%  pixart_sigmaN)r>   r?   r@   rA   r   r   rC   r.   r.   r.   r/   r-    s    
r-  c                   @   sT   e Zd ZddiZdejiZdddZej	Z
dZdgZd	gZdddZi fddZdS )
HunyuanDiTr%  hyditrI   _QK?g;On?r   g?r   r  rJ   Nc                 C   r   ry   )r   r/  r   r.   r.   r/   r|     r   zHunyuanDiT.get_modelc                 C   r\   r7   )r   r8   r]   r^   r0  HyditTokenizer
HyditModelr;   r.   r.   r/   r<     rb   zHunyuanDiT.clip_targetr   )r>   r?   r@   rA   r#   r$   rB   r   r   r   rC   rD   r   r   r|   r<   r.   r.   r.   r/   r/    s    
r/  c                   @   s"   e Zd ZddiZi ZdddZdS )HunyuanDiT1r%  hydit1r1  r  r   N)r>   r?   r@   rA   rB   r   r.   r.   r.   r/   r4    s    
r4  c                   @   sb   e Zd ZdddZi Zi ZejZdZ	e
je
je
jgZdd ZdgZdgZdddZi fddZd
S )FluxfluxTr%  guidance_embedg@c                 C   sL   i }t | D ]}|}|drd|d td  }|| ||< q|S )Nz_norm.scale	{}.weight.scaler   r   r   rN   r   r'   r(   out_sdr)   key_outr.   r.   r/   r        
zFlux.process_unet_state_dictr   r  rJ   Nc                 C   r   ry   )r   r6  r   r.   r.   r/   r|     r   zFlux.get_modelc                 C   B   | j d }tjj|d|}ttjjj	tjjj
di |S Nr   r  r.   )r   r]   r^   r  r	  rN   r   r8   r7  FluxTokenizer	flux_clipr'   r(   r  r  r.   r.   r/   r<        
"zFlux.clip_targetr   )r>   r?   r@   rA   r   rB   r   r6  rC   rD   r#   r   r   r$   r   r   r   r   r|   r<   r.   r.   r.   r/   r6    s    	
r6  c                   @   s$   e Zd ZddddZejejgZdS )FluxInpaintr7  T`   )r%  r9  rK   N)r>   r?   r@   rA   r#   r   r$   r   r.   r.   r.   r/   rG    s    rG  c                   @   s*   e Zd ZdddZdddZd
dd	ZdS )FluxSchnellr7  Fr8  r   r  rJ   Nc                 C   s   t j| t jj|d}|S r   )r   r6  rQ   FLOWr   r.   r.   r/   r|     s   zFluxSchnell.get_modelr   )r>   r?   r@   rA   r   r|   r.   r.   r.   r/   rI    s    rI  c                       sh   e Zd ZddiZddiZi ZejZe	j
e	je	jgZdgZdgZ fddZdddZi fddZ  ZS )Flux2r%  flux2r   g)\( @r   r  c                    s(   t  | | jd |d d  | _d S )N      @hidden_sizei,
  super__init__rD   r'   rA   	__class__r.   r/   rQ  	  s   zFlux2.__init__rJ   Nc                 C   r   ry   )r   rK  r   r.   r.   r/   r|     r   zFlux2.get_modelc                 C   s   | j d }tjj|d|}t|dkr+d|d< ttjj	j
tjj	jdi |S tjj|d|}t|dkrQd|d< ttjj	jtjj	jdi |S tjj|d|}t|dkr~d||vrmd	|d
< ttjj	jtjj	jdi |S d S )Nr   {}qwen3_4b.transformer.qwen3_4brV   z{}qwen3_8b.transformer.qwen3_8bz{}mistral3_24b.transformer.zJ{}mistral3_24b.transformer.model.layers.39.post_attention_layernorm.weightTprunedr.   )r   r]   r^   hunyuan_videollama_detectrN   r   r   r8   r7  KleinTokenizerklein_teKleinTokenizer8BFlux2Tokenizerflux2_ter'   r(   r  detectr.   r.   r/   r<     s   
"""zFlux2.clip_targetr   )r>   r?   r@   rA   r   rB   r   rK  rC   r#   r   r   r$   r   r   r   rQ  r|   r<   __classcell__r.   r.   rS  r/   rK    s    
rK  c                   @   sZ   e Zd ZddiZdddZi ZejZdZ	e
je
jgZdgZdgZdddZi fddZd
S )
GenmoMochir%  mochi_previewr         @r  r   r   r  rJ   Nc                 C   r   ry   )r   rc  r   r.   r.   r/   r|   9  r   zGenmoMochi.get_modelc                 C   rA  rB  )r   r]   r^   r  r	  rN   r   r8   genmoMochiT5Tokenizermochi_terE  r.   r.   r/   r<   =  rF  zGenmoMochi.clip_targetr   )r>   r?   r@   rA   r   rB   r   MochirC   rD   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   rc  %  s    
rc  c                       sh   e Zd ZddiZddiZi ZejZdZ	e
je
jgZdgZdgZ fdd	ZdddZi fddZ  ZS )LTXVr%  ltxvr   g(\@      @r   r  c                    &   t  | |ddd d | _d S )Ncross_attention_dimrs   rl  rP  rQ  rO   rD   rR  rS  r.   r/   rQ  U     zLTXV.__init__rJ   Nc                 C   r   ry   )r   rj  r   r.   r.   r/   r|   Y  r   zLTXV.get_modelc                 C   rA  rB  )r   r]   r^   r  r	  rN   r   r8   ltLTXVT5Tokenizerltxv_terE  r.   r.   r/   r<   ]  rF  zLTXV.clip_targetr   )r>   r?   r@   rA   r   rB   r   rj  rC   rD   r#   r   r$   r   r   r   rQ  r|   r<   rb  r.   r.   rS  r/   rj  B  s    
rj  c                       s4   e Zd ZddiZejZ fddZd	ddZ  Z	S )
LTXAVr%  ltxavc                    s   t  | d| _d S )NgʡE?rO  rR  rS  r.   r/   rQ  i  s   
zLTXAV.__init__rJ   Nc                 C   r   ry   )r   rt  r   r.   r.   r/   r|   m  r   zLTXAV.get_modelr   )
r>   r?   r@   rA   r   rt  rC   rQ  r|   rb  r.   r.   rS  r/   rt  b  s    rt  c                   @   sh   e Zd ZddiZddiZi ZejZdZ	e
je
jgZdgZdgZdd
dZdd Zdd Zi fddZd	S )HunyuanVideor%  rY  r         @?r   r  rJ   Nc                 C   r   ry   )r   rv  r   r.   r.   r/   r|     r   zHunyuanVideo.get_modelc                 C   s   i }t | D ]m}|}|dddd}|dddd}|d	d
dd}|dddd}|dddd}|dddd}|dd}|dd}|dddd }|d!rod"|d td!  }|| ||< q|S )#Nztxt_in.t_embedder.mlp.0.ztxt_in.t_embedder.in_layer.ztxt_in.t_embedder.mlp.2.ztxt_in.t_embedder.out_layer.ztxt_in.c_embedder.linear_1.ztxt_in.c_embedder.in_layer.ztxt_in.c_embedder.linear_2.ztxt_in.c_embedder.out_layer.z_mod.linear.z	_mod.lin.z
_attn_qkv.z
_attn.qkv.zmlp.fc1.zmlp.0.zmlp.fc2.zmlp.2.z_attn_q_norm.weightz_attn.norm.query_norm.weightz_attn_k_norm.weightz_attn.norm.key_norm.weightz.q_norm.weightz.norm.query_norm.weightz.k_norm.weightz.norm.key_norm.weightz_attn_proj.z_attn.proj.z.modulation.linear.z.modulation.lin.z
_in.mlp.2.z_in.out_layer.z
_in.mlp.0.z_in.in_layer.r;  r:  )r   r   r    r   rN   r   r=  r.   r.   r/   r     s    
z$HunyuanVideo.process_unet_state_dictc                 C   r  r  r  rY   r.   r.   r/   r    r  z/HunyuanVideo.process_unet_state_dict_for_savingc                 C   sB   | j d }tjj|d|}ttjjjtjjj	di |S )Nr   z{}llama.transformer.r.   )
r   r]   r^   rY  rZ  rN   r   r8   HunyuanVideoTokenizerhunyuan_video_clipr'   r(   r  hunyuan_detectr.   r.   r/   r<     rF  zHunyuanVideo.clip_targetr   )r>   r?   r@   rA   r   rB   r   rv  rC   rD   r#   r   r$   r   r   r   r|   r   r  r<   r.   r.   r.   r/   rv  q  s    
rv  c                   @       e Zd ZdddZdddZdS )	HunyuanVideoI2VrY  !   r%  rK   rJ   Nc                 C   r   ry   )r   r~  r   r.   r.   r/   r|     r   zHunyuanVideoI2V.get_modelr   r   r.   r.   r.   r/   r~    
    r~  c                   @   r}  )	HunyuanVideoSkyreelsI2VrY      r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   z!HunyuanVideoSkyreelsI2V.get_modelr   r   r.   r.   r.   r/   r    r  r  c                   @   sb   e Zd ZdddZddddZi ZejZdZ	e
je
je
jgZd	gZd
gZdddZi fddZdS )	CosmosT2Vcosmosr   r  r   r   r   r   r   r   r  r   r  rJ   Nc                 C   r   ry   r   CosmosVideor   r.   r.   r/   r|     r   zCosmosT2V.get_modelc                 C   rA  rB  r   r]   r^   r  r	  rN   r   r8   r  CosmosT5TokenizerterE  r.   r.   r/   r<     rF  zCosmosT2V.clip_targetr   )r>   r?   r@   rA   r   rB   r   Cosmos1CV8x8x8rC   rD   r#   r   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r    s     
r  c                   @   r}  )		CosmosI2Vr     r  rJ   Nc                 C      t j| d|d}|S NTimage_to_videorz   r  r   r.   r.   r/   r|        zCosmosI2V.get_modelr   r   r.   r.   r.   r/   r    r  r  c                       sf   e Zd ZdddZddddZi ZejZdZ	e
je
je
jgZ fdd	ZdddZi fddZ  ZS )CosmosT2IPredict2cosmos_predict2r   r  r   r   r   r  c                    rm  )Nr   rs   ffffff?ro  rR  rS  r.   r/   rQ    rp  zCosmosT2IPredict2.__init__rJ   Nc                 C   r   ry   r   CosmosPredict2r   r.   r.   r/   r|     r   zCosmosT2IPredict2.get_modelc                 C   rA  rB  r  rE  r.   r.   r/   r<     rF  zCosmosT2IPredict2.clip_targetr   )r>   r?   r@   rA   r   rB   r   Wan21rC   rD   r#   r   r   r$   r   rQ  r|   r<   rb  r.   r.   rS  r/   r    s    
r  c                       sb   e Zd ZddiZdddZi ZejZdZ	e
je
je
jgZddd	Zi fd
dZ fddZ  ZS )Animar%  animar   r  r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zAnima.get_modelc                 C   rA  )Nr   z{}qwen3_06b.transformer.r.   )r   r]   r^   rY  rZ  rN   r   r8   r  AnimaTokenizerr  r`  r.   r.   r/   r<     rF  zAnima.clip_targetc                    sF   | j ddd d | _|tju r|  jd9  _t j||fi |S )Nr   rs   r  ffffff?)rA   rO   rD   r#   r   rP  set_inference_dtype)r'   r"   manual_cast_dtypekwargsrS  r.   r/   r    s   
zAnima.set_inference_dtyper   )r>   r?   r@   rA   r   rB   r   r  rC   rD   r#   r   r   r$   r   r|   r<   r  rb  r.   r.   rS  r/   r     s    
r  c                   @   r}  )	CosmosI2VPredict2r  r  r  rJ   Nc                 C   r  r  r  r   r.   r.   r/   r|   &  r  zCosmosI2VPredict2.get_modelr   r   r.   r.   r.   r/   r     r  r  c                   @   Z   e Zd ZddiZdddZdZi ZejZ	e
je
jgZdgZdgZdddZi fddZd
S )Lumina2r%  lumina2r   re  r  r  r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   >  r   zLumina2.get_modelc                 C   rA  )Nr   z{}gemma2_2b.transformer.r.   )r   r]   r^   rY  rZ  rN   r   r8   r  LuminaTokenizerr  r{  r.   r.   r/   r<   B  rF  zLumina2.clip_targetr   )r>   r?   r@   rA   r   rD   rB   r   r6  rC   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r  *      
r  c                       sL   e Zd ZdddZdddZdZejejgZ	 fdd	Z
i fd
dZ  ZS )ZImager  i   )r%  dimr   r  r  gffffff@c                    sJ   t  | tj r!|ddr#| j | _| jdt	j
 d S d S d S )N
allow_fp16Fr   )rP  rQ  r]   model_managementextended_fp16_supportrO   r   copyinsertr#   r   rR  rS  r.   r/   rQ  V  s
   zZImage.__init__c                 C   rA  )Nr   rU  r.   )r   r]   r^   rY  rZ  rN   r   r8   z_imageZImageTokenizerr  r{  r.   r.   r/   r<   \  rF  zZImage.clip_target)r>   r?   r@   rA   r   rD   r#   r   r$   r   rQ  r<   rb  r.   r.   rS  r/   r  G  s    r  c                   @   s(   e Zd ZddiZejZdZdddZdS )	ZImagePixelSpacer%  zimage_pixelr  rJ   Nc                 C   rx   ry   )r   r  r{   r.   r.   r/   r|   l  r}   zZImagePixelSpace.get_modelr   )	r>   r?   r@   rA   r   r  rC   rD   r|   r.   r.   r.   r/   r  a  s    r  c                       sn   e Zd ZdddZddiZi ZejZdZ	e
je
je
jgZdgZdgZ fd	d
ZdddZi fddZ  ZS )	WAN21_T2Vwan2.1t2vr%  rV   r   g       @g?r   r  c                    s$   t  | | jddd | _d S )Nr  i  i  )rP  rQ  rA   rO   rD   rR  rS  r.   r/   rQ    s   zWAN21_T2V.__init__rJ   Nc                 C   r   ry   r   WAN21r   r.   r.   r/   r|     r   zWAN21_T2V.get_modelc                 C   rA  )Nr   z{}umt5xxl.transformer.r.   )r   r]   r^   r  r	  rN   r   r8   wanWanT5Tokenizerr  rE  r.   r.   r/   r<     rF  zWAN21_T2V.clip_targetr   )r>   r?   r@   rA   r   rB   r   r  rC   rD   r#   r   r   r$   r   r   r   rQ  r|   r<   rb  r.   r.   rS  r/   r  o  s    
r  c                   @   "   e Zd ZddddZd	ddZdS )
	WAN21_I2Vr  i2v$   r%  rV   in_dimrJ   Nc                 C   r  r  r  r   r.   r.   r/   r|     r  zWAN21_I2V.get_modelr   r   r.   r.   r.   r/   r        r  c                   @   r  )
WAN21_FunControl2Vr  r  0   r  rJ   Nc                 C   r  NFr  r  r   r.   r.   r/   r|     r  zWAN21_FunControl2V.get_modelr   r   r.   r.   r.   r/   r    r  r  c                   @   r  )
WAN21_Camerar  camerar  r  rJ   Nc                 C   r  r  r   r  r   r.   r.   r/   r|     r  zWAN21_Camera.get_modelr   r   r.   r.   r.   r/   r    r  r  c                   @   r  )
WAN22_Camerar  z
camera_2.2r  r  rJ   Nc                 C   r  r  r  r   r.   r.   r/   r|     r  zWAN22_Camera.get_modelr   r   r.   r.   r.   r/   r    r  r  c                       0   e Zd ZdddZ fddZd
dd	Z  ZS )
WAN21_Vacer  vacer  c                    s   t  | d| j | _d S )Ng333333?rO  rR  rS  r.   r/   rQ    s   zWAN21_Vace.__init__rJ   Nc                 C   r  r  )r   r  r   r.   r.   r/   r|     r  zWAN21_Vace.get_modelr   r>   r?   r@   rA   rQ  r|   rb  r.   r.   rS  r/   r    s    r  c                   @   r}  )	
WAN21_HuMor  humor  rJ   Nc                 C   r  r  )r   r  r   r.   r.   r/   r|     r  zWAN21_HuMo.get_modelr   r   r.   r.   r.   r/   r    r  r  c                       r  )	WAN22_S2Vr  s2vr  c                       t  | d S r7   rP  rQ  rR  rS  r.   r/   rQ    r=   zWAN22_S2V.__init__rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zWAN22_S2V.get_modelr   r  r.   r.   rS  r/   r        r  c                       r  )WAN22_Animater  animater  c                    r  r7   r  rR  rS  r.   r/   rQ    r=   zWAN22_Animate.__init__rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zWAN22_Animate.get_modelr   r  r.   r.   rS  r/   r    r  r  c                   @   s(   e Zd ZddddZejZd	ddZdS )
	WAN22_T2Vr  r  r  )r%  rV   out_dimrJ   Nc                 C   r  r  )r   WAN22r   r.   r.   r/   r|     r  zWAN22_T2V.get_modelr   )r>   r?   r@   rA   r   Wan22rC   r|   r.   r.   r.   r/   r    s    r  c                   @   r}  )	WAN21_FlowRVSr  flow_rvsr  rJ   Nc                 C   r  r  )r   r  r   r.   r.   r/   r|     r  zWAN21_FlowRVS.get_modelr   r   r.   r.   r.   r/   r    r  r  c                   @   r}  )	WAN21_SCAILr  scailr  rJ   Nc                 C   r  r  )r   r  r   r.   r.   r/   r|     r  zWAN21_SCAIL.get_modelr   r   r.   r.   r.   r/   r    r  r  c                   @   s\   e Zd ZddiZi ZdddZdZdZdgZe	j
Zdd	 Zd
d ZdddZi fddZdS )Hunyuan3Dv2r%  
hunyuan3d2r   r  g      @z%conditioner.main_image_encoder.model.r   c                 C   L   i }t | D ]}|}|drd|d td  }|| ||< q|S Nr;  r:  r<  r=  r.   r.   r/   r   "  r@  z#Hunyuan3Dv2.process_unet_state_dictc                 C   r  )NrJ   zmodel.r  rY   r.   r.   r/   r  +  r  z.Hunyuan3Dv2.process_unet_state_dict_for_savingrJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   /  r   zHunyuan3Dv2.get_modelc                 C   r   r7   r.   r;   r.   r.   r/   r<   3  r   zHunyuan3Dv2.clip_targetr   )r>   r?   r@   rA   rB   r   rD   ro   r   r   r  rC   r   r  r|   r<   r.   r.   r.   r/   r    s    	
r  c                   @   s$   e Zd ZddiZejZdddZdS )Hunyuan3Dv2_1r%  hunyuan3d2_1rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   =  r   zHunyuan3Dv2_1.get_modelr   )r>   r?   r@   rA   r   r  rC   r|   r.   r.   r.   r/   r  6  s
    r  c                   @   s   e Zd ZdddZejZdS )Hunyuan3Dv2minir  r   )r%  depthN)r>   r?   r@   rA   r   r  rC   r.   r.   r.   r/   r  A  s
    
r  c                   @   sX   e Zd ZddiZddiZi Zi ZejZe	j
e	jgZdgZdgZdd	d
Zi fddZdS )HiDreamr%  hidreamr   r  r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   _  r   zHiDream.get_modelc                 C   r   r7   r.   r;   r.   r.   r/   r<   c  r   zHiDream.clip_targetr   )r>   r?   r@   rA   r   rB   r   r6  rC   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r  I  s    
r  c                   @   sZ   e Zd ZddiZi ZddiZejjZ	dZ
ejejejgZdd Zdd
dZi fddZd	S )Chromar%  chromar   r   g	@c                 C   r  r  r<  r=  r.   r.   r/   r   x  r@  zChroma.process_unet_state_dictrJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zChroma.get_modelc                 C   rA  rB  )r   r]   r^   r  r	  rN   r   r8   r*  r+  	pixart_terE  r.   r.   r/   r<     rF  zChroma.clip_targetr   )r>   r?   r@   rA   rB   r   r]   r   r6  rC   rD   r#   r   r   r$   r   r   r|   r<   r.   r.   r.   r/   r  f  s    
	r  c                   @   s*   e Zd ZddiZejjZdZdddZ	dS )	ChromaRadiancer%  chroma_radiancegI+?rJ   Nc                 C   rx   ry   )r   r  r{   r.   r.   r/   r|     r}   zChromaRadiance.get_modelr   )
r>   r?   r@   rA   r]   r   r  rC   rD   r|   r.   r.   r.   r/   r    s    r  c                   @   sZ   e Zd ZddiZi ZddiZejjZ	dZ
ejejgZdgZdgZdd
dZi fddZd	S )ACEStepr  acer   r  r   r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zACEStep.get_modelc                 C   r\   r7   )r   r8   r]   r^   r  AceT5Tokenizer
AceT5Modelr;   r.   r.   r/   r<     rb   zACEStep.clip_targetr   )r>   r?   r@   rA   rB   r   r]   r   ACEAudiorC   rD   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r    s    
r  c                       sj   e Zd ZddiZdddZdZi ZejZ	e
je
jgZdgZdgZ fd	d
ZdddZi fddZ  ZS )Omnigen2r%  omnigen2r   g@r  g333333?r   r  c                    s.   t  | tj rtjg| j | _d S d S r7   )rP  rQ  r]   r  r  r#   r   r   rR  rS  r.   r/   rQ    s   
zOmnigen2.__init__rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zOmnigen2.get_modelc                 C   rA  )Nr   z{}qwen25_3b.transformer.r.   )r   r]   r^   rY  rZ  rN   r   r8   r  Omnigen2Tokenizerr  r{  r.   r.   r/   r<     rF  zOmnigen2.clip_targetr   )r>   r?   r@   rA   r   rD   rB   r   r6  rC   r#   r   r$   r   r   r   rQ  r|   r<   rb  r.   r.   rS  r/   r    s    
r  c                   @   r  )	QwenImager%  
qwen_imager   gffffff?r  rx  r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zQwenImage.get_modelc                 C   rA  Nr   z{}qwen25_7b.transformer.r.   )r   r]   r^   rY  rZ  rN   r   r8   r  QwenImageTokenizerr  r{  r.   r.   r/   r<     rF  zQwenImage.clip_targetr   )r>   r?   r@   rA   r   rD   rB   r   r  rC   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r    r  r  c                   @   sJ   e Zd ZdddZddiZejZdZe	j
e	jgZddd	Zi fd
dZdS )HunyuanImage21rY  N)r%  
vec_in_dimr   g      @gffffff!@rJ   c                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zHunyuanImage21.get_modelc                 C   rA  r  )r   r]   r^   rY  rZ  rN   r   r8   hunyuan_imageHunyuanImageTokenizerr  r{  r.   r.   r/   r<     rF  zHunyuanImage21.clip_targetr   )r>   r?   r@   rA   r   r   r  rC   rD   r#   r   r$   r   r|   r<   r.   r.   r.   r/   r    s    
r  c                   @   s4   e Zd Zdg dddZddiZejZd
dd	ZdS )HunyuanImage21RefinerrY  )r   r   r   N)r%  
patch_sizer  r   rM  rJ   c                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zHunyuanImage21Refiner.get_modelr   )	r>   r?   r@   rA   r   r   r  rC   r|   r.   r.   r.   r/   r    s    r  c                   @   sN   e Zd ZdddZddiZdZejejej	gZ
ejZdd	d
Zi fddZdS )HunyuanVideo15rY    )r%  vision_in_dimr   rw  rM  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   *  r   zHunyuanVideo15.get_modelc                 C   B   | j d }tjj|d|}ttjjjtjj	j
di |S r  r   r]   r^   rY  rZ  rN   r   r8   HunyuanVideo15Tokenizerr  r  r{  r.   r.   r/   r<   .  rF  zHunyuanVideo15.clip_targetr   r>   r?   r@   rA   r   rD   r#   r   r   r$   r   r   r  rC   r|   r<   r.   r.   r.   r/   r    s    
r  c                   @   sP   e Zd ZddddZddiZdZejejej	gZ
ejZdd
dZi fddZd	S )HunyuanVideo15_SR_DistilledrY  r  b   )r%  r   rK   r   r   rM  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   C  r   z%HunyuanVideo15_SR_Distilled.get_modelc                 C   r  r  r  r{  r.   r.   r/   r<   G  rF  z'HunyuanVideo15_SR_Distilled.clip_targetr   r  r.   r.   r.   r/   r  4  s    
r  c                   @   sX   e Zd ZddiZddiZi ZejZdZ	e
je
jgZdgZdgZdd
dZi fddZd	S )
Kandinsky5r%  
kandinsky5r   g      $@      ?r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   `  r   zKandinsky5.get_modelc                 C   rA  r  )r   r]   r^   rY  rZ  rN   r   r8   r  Kandinsky5Tokenizerr  r{  r.   r.   r/   r<   d  rF  zKandinsky5.clip_targetr   )r>   r?   r@   rA   r   rB   r   rv  rC   rD   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r  M  s    
r  c                   @   s@   e Zd ZddddZddiZejZdZdd
dZ	i fddZ
d	S )Kandinsky5Imager  rv   rG   )r%  	model_dimvisual_embed_dimr   r  r	  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|   x  r   zKandinsky5Image.get_modelc                 C   rA  r  )r   r]   r^   rY  rZ  rN   r   r8   r  Kandinsky5TokenizerImager  r{  r.   r.   r/   r<   |  rF  zKandinsky5Image.clip_targetr   )r>   r?   r@   rA   r   r   r6  rC   rD   r|   r<   r.   r.   r.   r/   r  j  s    
r  c                   @   s\   e Zd ZddiZi ZdddZejjZ	dZ
ejejgZdgZdgZdddZi fddZd
S )	ACEStep15r  zace1.5r   r  r  g@r   r  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zACEStep15.get_modelc                 C   s   | j d }tjj|d|}tjj|d|}d|v r&|}d|d< n
d|v r0|}d|d< ttjjj	tjjj
di |S )	Nr   z{}qwen3_2b.transformer.rU  dtype_llamaqwen3_2blm_modelrV  r.   )r   r]   r^   rY  rZ  rN   r   r8   ace15ACE15Tokenizerr  )r'   r(   r  	detect_2b	detect_4bra  r.   r.   r/   r<     s   

"zACEStep15.clip_targetr   )r>   r?   r@   rA   rB   r   r]   r   
ACEAudio15rC   rD   r#   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r    s    
r  c                   @   sd   e Zd ZddddddgdZi Zi ZejZdZ	e
je
je
jgZd	gZd
gZdddZi fddZdS )LongCatImager7  FNi   r   r   )r%  r9  r  context_in_dimtxt_ids_dimsg      @r   r  rJ   c                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zLongCatImage.get_modelc                 C   rA  r  )r   r]   r^   rY  rZ  rN   r   r8   longcat_imageLongCatImageTokenizerr  r{  r.   r.   r/   r<     rF  zLongCatImage.clip_targetr   )r>   r?   r@   rA   r   rB   r   r6  rC   rD   r#   r   r   r$   r   r   r   r|   r<   r.   r.   r.   r/   r    s     
r  c                   @   s6   e Zd Zdd iZejejgZdddZi fddZ	dS )	
RT_DETR_v4r%  rJ   Nc                 C   r   ry   )r   r  r   r.   r.   r/   r|     r   zRT_DETR_v4.get_modelc                 C   r   r7   r.   r;   r.   r.   r/   r<     r   zRT_DETR_v4.clip_targetr   )
r>   r?   r@   rA   r#   r   r$   r   r|   r<   r.   r.   r.   r/   r    s    
r  )nr#   rJ   r   r   r   r   comfy.text_encoders.sd2_clipr]   comfy.text_encoders.sd3_clipcomfy.text_encoders.sa_t5comfy.text_encoders.aura_t5comfy.text_encoders.pixart_t5comfy.text_encoders.hyditcomfy.text_encoders.fluxcomfy.text_encoders.genmocomfy.text_encoders.lt!comfy.text_encoders.hunyuan_videocomfy.text_encoders.cosmoscomfy.text_encoders.lumina2comfy.text_encoders.wancomfy.text_encoders.acecomfy.text_encoders.omnigen2comfy.text_encoders.qwen_image!comfy.text_encoders.hunyuan_imagecomfy.text_encoders.kandinsky5comfy.text_encoders.z_imagecomfy.text_encoders.animacomfy.text_encoders.ace15!comfy.text_encoders.longcat_imager   r   r	   comfy.model_managementBASEr
   rE   rd   rr   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r-  r/  r4  r6  rG  rI  rK  rc  rj  rt  rv  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  r  r  r  r  r  r  r  r  r  r  modelsr.   r.   r.   r/   <module>   s    .,&H



.$%	- 2


  
!


'$"( . 