
    ^(j )                    |   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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e#jN                        Z( G d de#jN                        Z) G d de)      Z* G d de)      Z+ G d de#jN                        Z, G d de#jN                        Z- G d de-      Z. G d de-      Z/ G d de-      Z0 G d de-      Z1 G d de#jN                        Z2 G d  d!e2      Z3 G d" d#e3      Z4 G d$ d%e#jN                        Z5 G d& d'e)      Z6 G d( d)e#jN                        Z7 G d* d+e7      Z8 G d, d-e(      Z9 G d. d/e-      Z: G d0 d1e)      Z; G d2 d3e#jN                        Z< G d4 d5e#jN                        Z= G d6 d7e=      Z> G d8 d9e#jN                        Z? G d: d;e#jN                        Z@ G d< d=e@      ZA G d> d?e#jN                        ZB G d@ dAeB      ZC G dB dCe#jN                        ZD G dD dEeD      ZE G dF dGeD      ZF G dH dIeD      ZG G dJ dKe#jN                        ZH G dL dMe#jN                        ZI G dN dOe#jN                        ZJ G dP dQeJ      ZK G dR dSe#jN                        ZL G dT dUeL      ZM G dV dWeL      ZN G dX dYe#jN                        ZO G dZ d[eO      ZP G d\ d]e#jN                        ZQ G d^ d_e#jN                        ZR G d` daeQ      ZS G db dce#jN                        ZT G dd deeT      ZU G df dgeU      ZV G dh die#jN                        ZW G dj dkeW      ZX G dl dme#jN                        ZY G dn doeY      ZZ G dp dqeY      Z[ G dr dseY      Z\ G dt dueY      Z] G dv dweY      Z^ G dx dyeY      Z_ G dz d{eY      Z` G d| d}eY      Za G d~ deY      Zb G d deY      Zc G d deY      Zd G d deY      Ze G d deY      Zf G d de#jN                        Zg G d deg      Zh G d deg      Zi G d de#jN                        Zj G d de#jN                        Zk G d de#jN                        Zl G d de#jN                        Zm G d dem      Zn G d de#jN                        Zo G d de#jN                        Zp G d de#jN                        Zq G d de#jN                        Zr G d deL      Zs G d deL      Zt G d deL      Zu G d deL      Zv G d de#jN                        Zw G d dew      Zx G d de#jN                        Zy G d de#jN                        Zz G d de#jN                        Z{ G d de#jN                        Z| G d de#jN                        Z} G d de}      Z~ G d de#jN                        Z G d de      Z G d de      Zg e;e5e9e(e)e*e+e:e,e-e.e0e1e/e6e7e8e3e4e<e>e=e?e@eAeBeCeEeDezeFeIeJeKeveueteseNeMeLeOePeQeSeVeUeXeWeTeceZeYe[e\e_e]e^eae`ebedeeefeiegehejekelemeneoeyepereqeGeHexeweRe{e|e}e~eeee2Zy)    N   )
model_base)utils)sd1_clip)	sdxl_clip)supported_models_base)latent_formats)diffusers_convertc                   X    e Zd ZddddddZdddZej                  Zd	Zd
 Z	d Z
i fdZy)SD15   @  FNcontext_dimmodel_channelsuse_linear_in_transformeradm_in_channelsuse_temporal_attention   	num_headsnum_head_channels      ?c                    t        |j                               }|D ]L  }|j                  d      s|j                  d      r'|j                  dd      }|j	                  |      ||<   N d|v r5|d   }|j
                  t        j                  k(  r|j                         |d<   i }d|d<   t        j                  ||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_prefixs          @/Users/danicosta/Desktop/Flux2/ComfyUI/comfy/supported_models.pyprocess_clip_state_dictzSD15.process_clip_state_dict;   s    "#A||;<Q\\R|E}II=?ij *q 1
1 
 MPZZ^_CyyEMM)`c`i`i`k
\].7*+44Z]ab
    c                 x    ddg}|D ]  }||v s|j                  |        ddi}t        j                  ||      S )N)clip_l.transformer.text_projection.weightclip_l.logit_scaler   r   )r$   r   r)   )r*   r+   pop_keyspr0   s        r1   "process_clip_state_dict_for_savingz'SD15.process_clip_state_dict_for_savingL   sJ    ?AUVAJq!  $%89..z>JJr3   c                 f    t        j                  t        j                  t        j                        S N)r   
ClipTargetr   SD1TokenizerSD1ClipModelr*   r+   s     r1   clip_targetzSD15.clip_targetU   s!    $//0E0ExG\G\]]r3   )__name__
__module____qualname__unet_configunet_extra_configr	   r   latent_formatmemory_usage_factorr2   r9   r@    r3   r1   r   r   *   sQ    %*"'K 
 #''M"K &( ^r3   r   c                   v    e Zd ZddddddZddej
                  d	Zej                  Z	d
Z
ddZd Zd Zi fdZy)SD20   r   TNFr   r   @   r   r   attn_precisionr   c                    | j                   d   dk(  rYdj                  |      }|j                  |d       }|4t        j                  |d      dkD  rt
        j                  j                  S t
        j                  j                  S )Nin_channels   z4{}output_blocks.11.1.transformer_blocks.0.norm1.biasF)unbiasedg
ףp=
?)	rD   formatgetr&   stdr   	ModelTypeV_PREDICTIONEPS)r*   r+   prefixr,   outs        r1   
model_typezSD20.model_typej   sp    M*a/FMMfUA..D)C599S5#AD#H!++888##'''r3   c                 |    i }d|d<   d|d<   t        j                  ||d      }t        j                  |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+   r0   s      r1   r2   zSD20.process_clip_state_dictr   sM    ;D784=0144Z]ab
99*iQfg
r3   c                 j    i }d|d<   t        j                  ||      }t        j                  |      }|S )Nzcond_stage_model.modelclip_h)r   r)   r
   convert_text_enc_state_dict_v20r_   s      r1   r9   z'SD20.process_clip_state_dict_for_savingz   s9    #;x 44ZP
&FFzR
r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   comfytext_encoderssd2_clipSD2TokenizerSD2ClipModelr?   s     r1   r@   zSD20.clip_target   sH    $//0C0C0L0L0Y0Y[`[n[n[w[w  \E  \E  F  	Fr3    )rA   rB   rC   rD   r&   r'   rE   r	   r   rF   rG   r[   r2   r9   r@   rH   r3   r1   rJ   rJ   X   s\    %)"'K -- #''M( &( Fr3   rJ   c                   0    e Zd ZddddddZdZdd	d
ddZy)SD21UnclipLrK   r   Ti   Fr   embedder.model.visual.  squaredcos_cap_v2	timestepsbeta_scheduler   noise_schedule_configtimestep_dimNrA   rB   rC   rD   clip_vision_prefixnoise_aug_configrH   r3   r1   rl   rl      s5    %)"'K 2?CVi1j|  Ar3   rl   c                   0    e Zd ZddddddZdZdd	d
ddZy)SD21UnclipHrK   r   T   Fr   rm   rn   ro   rp   rs   Nrv   rH   r3   r1   rz   rz      s9    %)"'K 2?CVi1j  }A  Br3   rz   c                   \    e Zd Zddddg dddZej
                  ZdZdd
Zd Z	d Z
i fdZy	)SDXLRefineri  T    
  )r   r   rQ   rQ   rQ   rQ   r   r   F)r   r   r   r   transformer_depthr   r   Nc                 0    t        j                  | |      S Ndevice)r   r}   r*   r+   rY   r   s       r1   	get_modelzSDXLRefiner.get_model       %%d6::r3   c                     i }i }d|d<   t        j                  ||d      }t        j                  |dd      }t        j                  ||      }|S )Nclip_g.r]   Tr   clip_g.transformer.)r   r)   r^   state_dict_key_replacer*   r+   keys_to_replacer0   s       r1   r2   z#SDXLRefiner.process_clip_state_dict   sY    ;D7844Z]ab
99*iQfg
11*oN
r3   c                     i }t        j                  |d      }d|v r|j                  d       d|d<   t        j                  ||      }|S )Nclip_gz5clip_g.transformer.text_model.embeddings.position_idszconditioner.embedders.0.model)r
   rb   r$   r   r)   )r*   r+   r0   state_dict_gs       r1   r9   z.SDXLRefiner.process_clip_state_dict_for_saving   sS    (HHU]^BlRTU#Bx 66|^Tr3   c                 f    t        j                  t        j                  t        j                        S r;   )r   r<   r   SDXLTokenizerSDXLRefinerClipModelr?   s     r1   r@   zSDXLRefiner.clip_target   s!    $//	0G0GIgIghhr3   rj   N)rA   rB   rC   rD   r	   SDXLrF   rG   r   r2   r9   r@   rH   r3   r1   r}   r}      sH    %)5"'K #''M; &( ir3   r}   c                   d    e Zd Zddg dddddZej
                  ZdZdd	ZddZ	d Z
d Zi fdZy
)r   r   Tr   r      r   
   r   r{      Fr   r   r   r   r   r   g?c                 P   d|v rdd|v r`t        j                         | _        d| j                  d<   d| j                  d<   d| j                  d<   t        j
                  j                  S d	|v rpt        |d	   j                               | j                  d<   d
|v r)t        |d
   j                               | j                  d<   t        j
                  j                  S d|v r-d|v rd| 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_5rF   sampling_settingsr   rV   EDMfloatitemV_PREDICTION_EDMrW   rX   )r*   r+   rY   s      r1   r[   zSDXL.model_type   s   #	Z(?!/!C!C!ED36D""<026D"";/27D"";/''+++"j027
CX8Y8^8^8`2aD"";/$
26;JG\<]<b<b<d6e&&{3''888#*$15&&v.''444''+++r3   Nc                     t        j                  | | j                  ||      |      }| j                         r|j	                          |S N)r[   r   )r   r   r[   inpaint_modelset_inpaintr*   r+   rY   r   rZ   s        r1   r   zSDXL.get_model   s;    oodtz6/R[abOO
r3   c                     i }i }d|d<   d|d<   t        j                  ||d      }t        j                  ||      }t        j                  |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   r^   r   s       r1   r2   zSDXL.process_clip_state_dict   sd    KjGH;D7844Z]ab
11*oN
99*iQfg
r3   c                 H   i }t        j                  |d      }|D ]  }|j                  d      s||   ||<    t        j                  d      j                  d      |d<   ddg}|D ]  }||v s|j                  |        d|d<   d	|d<   t        j                  ||      }|S )
Nr   clip_lM   )r   r   z5clip_l.transformer.text_model.embeddings.position_idsr5   r6   zconditioner.embedders.1.modelzconditioner.embedders.0)	r
   rb   r"   r&   arangeexpandr$   r   r)   )r*   r+   r0   r   r,   r7   r8   s          r1   r9   z'SDXL.process_clip_state_dict_for_saving   s    (HHU]^A||H%",Q-Q  QVP\P\]_P`PgPghoPpLM?AUVAL   #  $Cx #<x 66|^Tr3   c                 f    t        j                  t        j                  t        j                        S r;   )r   r<   r   r   SDXLClipModelr?   s     r1   r@   zSDXL.clip_target  s!    $//	0G0GI`I`aar3   ri   r   )rA   rB   rC   rD   r	   r   rF   rG   r[   r   r2   r9   r@   rH   r3   r1   r   r      sM    %)1"'K #''M,&
$ &( br3   r   c                   "    e Zd Zddg dddddZy)	SSD1Br   T)r   r   r   r   rQ   rQ   r{   r   Fr   NrA   rB   rC   rD   rH   r3   r1   r   r         %)/"'Kr3   r   c                   "    e Zd Zddg dddddZy)	Segmind_Vegar   T)r   r   r   r   r   r   r{   r   Fr   Nr   rH   r3   r1   r   r     r   r3   r   c                   "    e Zd Zddg dddddZy)	
KOALA_700Mr   T)r   r      r{   r   Fr   Nr   rH   r3   r1   r   r         %)&"'Kr3   r   c                   "    e Zd Zddg dddddZy)	KOALA_1Br   T)r   r      r{   r   Fr   Nr   rH   r3   r1   r   r   )  r   r3   r   c            	       ~    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Zi fdZy)SVD_img2vidr   r   Tr   r   r   r   r   r   r   r   rK   r   r   rP   r   r   r   r   r   use_temporal_resblockr   rL   rM   z/conditioner.embedders.0.open_clip.model.visual.g     @r   r   r   Nc                 4    t        j                  | |      }|S r   )r   r   r   s        r1   r   zSVD_img2vid.get_modelK      $$T&9
r3   c                      y r;   rH   r?   s     r1   r@   zSVD_img2vid.clip_targetO      r3   r   )rA   rB   rC   rD   r&   r'   rE   rw   r	   r   rF   r   r   r@   rH   r3   r1   r   r   3  sf    %)5"&!%	K -- K"''M&+%@ &( r3   r   c            	       4    e Zd Zdddg ddddddZdgZdd
Zy	)SV3D_ur   r   Tr   rK      r   z conditioner.embedders.1.encoder.Nc                 4    t        j                  | |      }|S r   )r   r   r   s        r1   r   zSV3D_u.get_model`      V4
r3   r   )rA   rB   rC   rD   vae_key_prefixr   rH   r3   r1   r   r   R  s0    %)5"&!%	K 99Nr3   r   c            	       .    e Zd Zdddg ddddddZd
d	Zy)SV3D_pr   r   Tr   rK   r~   r   Nc                 4    t        j                  | |      }|S r   )r   r   r   s        r1   r   zSV3D_p.get_modelq  r   r3   r   rA   rB   rC   rD   r   rH   r3   r1   r   r   d  s&    %)5"&!%	Kr3   r   c                   `    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Z
i fdZy)Stable_Zero123r   r   FNr   r   r   r   r   r   rP   r   r   )cc_projection.weightcc_projection.biaszcond_stage_model.model.visual.c                 D    t        j                  | ||d   |d         }|S )Nr   r   )r   cc_projection_weightcc_projection_bias)r   r   r   s        r1   r   zStable_Zero123.get_model  s:    ''VR\]sRt  JT  Ui  Jj  k
r3   c                      y r;   rH   r?   s     r1   r@   zStable_Zero123.clip_target  r   r3   r   )rA   rB   rC   rD   rE   required_keysrw   r	   r   rF   r   r@   rH   r3   r1   r   r   u  s\    %*"'K  !%"M
 :"''M &( r3   r   c                   Z    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Z	y)SD_X4UpscalerrK   r      TNF)r   r   rP   r   r   r   )TTTFrn   r   r   )disable_self_attentionsnum_classesr   r   -C6?{Gz?linear_start
linear_endc                 4    t        j                  | |      }|S r   )r   r   r   s        r1   r   zSD_X4Upscaler.get_model      &&tF;
r3   r   )
rA   rB   rC   rD   rE   r	   SD_X4rF   r   r   rH   r3   r1   r   r     sS    %)"'K $=	 #((M 
r3   r   c                       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 Zd	 ZddZi fdZy
)Stable_Cascade_Cstable_cascade_stagecshift       @vae.ztext_encoder.zclip_l_vision.c                 v   t        |j                               }dD ]  }dj                  |      t        fd|      }|D ]r  }|j	                  |      }|d t              dz     }|j                  d   dz  }t        d      D ]-  }	g d}
dj                  ||
|	   |      }|||	z  ||	dz   z   ||<   / t  |S )	N)weightbiasz
in_proj_{}c                 &    | j                        S r;   endswith)asuffixs    r1   <lambda>z:Stable_Cascade_C.process_unet_state_dict.<locals>.<lambda>  s    AJJv$6r3   r   r      )to_qto_kto_vz{}.{}.{})r    r!   rS   filterr$   lenshaperange)r*   r+   key_listr.   r!   k_fromweightsrY   
shape_fromr-   r8   k_tor  s               @r1   process_unet_state_dictz(Stable_Cascade_C.process_unet_state_dict  s    
)*#A!((+F6AD$..0 33v;?!34$]]1-2
qA0A%,,VQqT1=D'.z!|JA<N'OJt$ "	  $ r3   c                     t        j                  || j                  D ci c]  }|d c}d      }d|v r$|j                  d      j	                  dd      |d<   |S c c}w )Nrj   Tr   zclip_g.text_projectionr   r   z)clip_g.transformer.text_projection.weight)r   r)   text_encoder_key_prefixr$   	transposer*   r+   r,   s      r1   r2   z(Stable_Cascade_C.process_clip_state_dict  ss    44ZQUQmQmAnQmA!R%QmAn  }A  B
#z1FPnnUmFnFxFxyz|}F~JBC Bos   
A
Nc                 4    t        j                  | |      }|S r   )r   StableCascade_Cr   s        r1   r   zStable_Cascade_C.get_model      ((f=
r3   c                 f    t        j                  t        j                  t        j                        S r;   )r   r<   r   StableCascadeTokenizerStableCascadeClipModelr?   s     r1   r@   zStable_Cascade_C.clip_target  s"    $//	0P0PR[RrRrssr3   r   )rA   rB   rC   rD   rE   r	   SC_PriorrF   r&   bfloat16r'   supported_inference_dtypesr   r   r  rw   r  r2   r   r@   rH   r3   r1   r   r     su    K "++M"'..%--!@ 	 XN./) &( tr3   r   c                       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Zy)Stable_Cascade_Br   br   r   Nc                 4    t        j                  | |      }|S r   )r   StableCascade_Br   s        r1   r   zStable_Cascade_B.get_model  r  r3   r   )rA   rB   rC   rD   rE   r	   SC_BrF   r&   float16r  r'   r  r   rw   r   rH   r3   r1   r  r    sV    K "''M"'--!O 	 r3   r  c                   &    e Zd ZdddddddZddZy)	SD15_instructpix2pixr   r   FNr   r   c                 0    t        j                  | |      S r   )r   r&  r   s       r1   r   zSD15_instructpix2pix.get_model  s    ..tFCCr3   r   r   rH   r3   r1   r&  r&    s!    %*"'KDr3   r&  c                   ,    e Zd Zddg ddddddZdd
Zy	)SDXL_instructpix2pixr   Tr   r{   r   Fr   )r   r   r   r   r   r   rP   Nc                 R    t        j                  | | j                  ||      |      S r   )r   r)  r[   r   s       r1   r   zSDXL_instructpix2pix.get_model
  s%    ..tPZ\b@clrssr3   r   r   rH   r3   r1   r)  r)    s$    %)1"'Ktr3   r)  c                   .    e Zd ZddddddZdddZdd
Zy	)LotusDr   TFrQ   )r   r   r   r   rP   
sequentialrL   )r   r   Nc                 0    t        j                  | |      S r   )r   Lotusr   s       r1   r   zLotusD.get_model  s    V44r3   r   )rA   rB   rC   rD   rE   r   rH   r3   r1   r,  r,    s-    %)"'K $
5r3   r,  c                   V    e Zd ZdddZddiZi Zej                  ZdZ	dgZ
d
dZi fd	Zy)SD3   N)rP   pos_embed_scaling_factorr         @皙?text_encoders.c                 4    t        j                  | |      }|S r   )r   r1  r   s        r1   r   zSD3.get_model/  s    nnT&1
r3   c           
         d}d}d}| j                   d   }dj                  |      |v rd}dj                  |      |v rd}t        j                  j                  j                  |dj                  |            }d|v rd}t        j                  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   t5rH   )	r  rS   rd   re   sd3_clipt5_xxl_detectr   r<   SD3Tokenizer)r*   r+   r   r   r;  pref	t5_detects          r1   r@   zSD3.clip_target3  s   ++A.DKKDQU__FDKKDQU__F''00>>zKaKhKhimKno	"B$//0C0C0L0L0Y0Y[`[n[n[w[w  \A  \A  \s  IO  X^  ce  \s  ir  \s  t  	tr3   r   )rA   rB   rC   rD   r   rE   r	   r1  rF   rG   r  r   r@   rH   r3   r1   r1  r1    sP    $(K 	 "&&M/0 &( tr3   r1  c                   d    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	Zd
 Zd Zi fdZy)StableAudioaudio_modeldit1.0g     @@Q?r   r6  zpretransform.model.Nc                     t        j                  |ddid      }t        j                  |ddid      }t        j                  | |||      S )Nz'conditioner.conditioners.seconds_start.rj   Tr   'conditioner.conditioners.seconds_total.)seconds_start_embedder_weightsseconds_total_embedder_weightsr   )r   r)   r   StableAudio1)r*   r+   rY   r   seconds_start_sdseconds_total_sds         r1   r   zStableAudio.get_modelO  sr     :::HqsuGv  EI  J :::HqsuGv  EI  J&&tL\  ~N  W]  ^  	^r3   c                     t        |j                               D ]G  }|j                  d      s#|j                  d      s|j                  d      s7|j                  |       I |S )Nz.cross_attend_norm.betaz.ff_norm.betaz.pre_norm.beta)r    r!   r   r$   r  s      r1   r  z#StableAudio.process_unet_state_dictT  sS    joo'(Azz34

?8SWXWaWabrWsq! ) r3   c                 6    ddi}t        j                  ||      S Nrj   zmodel.model.r   r)   r_   s      r1   "process_unet_state_dict_for_savingz.StableAudio.process_unet_state_dict_for_savingZ      n-..z>JJr3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   sa_t5SAT5Tokenizer	SAT5Modelr?   s     r1   r@   zStableAudio.clip_target^  s:    $//0C0C0I0I0W0WY^YlYlYrYrY|Y|}}r3   r   )rA   rB   rC   rD   r   rE   r	   rJ  rF   r  r   r   r  rQ  r@   rH   r3   r1   rB  rB  B  sY    xK ',$?"//M/0+,N^
K &( ~r3   rB  c                   N    e Zd ZdddZdddZej                  ZdZdd	Z	i fd
Z
y)StableAudio3rD  T)rC  global_cond_shared_embedr   r   
multiplierr   r   Nc                     t        j                  |ddid      }|j                  dd       }t        j                  | |||      S )NrG  rj   Tr   z1conditioner.conditioners.prompt.padding_embedding)rI  padding_embeddingr   )r   r)   rT   r   rX  )r*   r+   rY   r   rL  r]  s         r1   r   zStableAudio3.get_modelp  sa     :::HqsuGv  EI  J&NN+^`de&&tL\  qB  KQ  R  	Rr3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   sa3SAT5GemmaTokenizerSAT5GemmaModelr?   s     r1   r@   zStableAudio3.clip_targetu  sH    $//0C0C0G0G0Z0Z\a\o\o\s\s  ]C  ]C  D  	Dr3   r   )rA   rB   rC   rD   r   r	   rX  rF   rG   r   r@   rH   r3   r1   rX  rX  a  sC    $(K 
 #//MR
 &( Dr3   rX  c                   X    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	Zi fd
Zy)AuraFlowcond_seq_dimr{   r   gGz?rZ  r   r6  Nc                 4    t        j                  | |      }|S r   )r   rc  r   s        r1   r   zAuraFlow.get_model      !!$v6
r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   aura_t5AuraT5TokenizerAuraT5Modelr?   s     r1   r@   zAuraFlow.clip_target  sH    $//0C0C0K0K0[0[]b]p]p]x]x  ^E  ^E  F  	Fr3   r   )rA   rB   rC   rD   r   rE   r	   r   rF   r   r  r   r@   rH   r3   r1   rc  rc  x  sQ    K
 
 "''MXN/0 &( Fr3   rc  c                   `    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Zi fdZy)PixArtAlphaimage_modelpixart_alphasqrt_linearr   r   rn   )rr   r   r   rq   r   r   r6  Nc                 P    t        j                  | |      }|j                         S r   )r   PixArtevalr   s        r1   r   zPixArtAlpha.get_model  s     V4xxzr3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   	pixart_t5PixArtTokenizerPixArtT5XXLr?   s     r1   r@   zPixArtAlpha.clip_target  sH    $//0C0C0M0M0]0]_d_r_r_|_|  `I  `I  J  	Jr3   r   )rA   rB   rC   rD   r   rE   r	   r   rF   rG   r   r  r   r@   rH   r3   r1   rl  rl    s]    ~K
 ( 	 "''MXN/0 &( Jr3   rl  c                   ,    e Zd ZddiZej
                  Zy)PixArtSigmarm  pixart_sigmaN)rA   rB   rC   rD   r	   r   rF   rH   r3   r1   rx  rx    s    ~K #''Mr3   rx  c                   t    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Zi fdZy
)
HunyuanDiTrm  hyditrN   _QK?g;On?r   g?r   r6  Nc                 4    t        j                  | |      }|S r   )r   r{  r   s        r1   r   zHunyuanDiT.get_model      ##D8
r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   r|  HyditTokenizer
HyditModelr?   s     r1   r@   zHunyuanDiT.clip_target  s:    $//0C0C0I0I0X0XZ_ZmZmZsZsZ~Z~r3   r   )rA   rB   rC   rD   r&   r'   rE   r   r	   r   rF   rG   r   r  r   r@   rH   r3   r1   r{  r{    sd    wK
 	%--
  
 #''MXN/0 &( @r3   r{  c                   "    e Zd ZddiZi ZdddZy)HunyuanDiT1rm  hydit1r}  rE  r   N)rA   rB   rC   rD   rE   r   rH   r3   r1   r  r    s&    xK  !r3   r  c                       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 ZdgZdgZdd	Zi fd
Zy)FluxfluxTrm  guidance_embedg@c                     i }t        |j                               D ];  }|}|j                  d      rdj                  |d t	        d              }||   ||<   = |S )Nz_norm.scale	{}.weight.scaler    r!   r   rS   r  r*   r+   out_sdr,   key_outs        r1   r  zFlux.process_unet_state_dict  sa    joo'(AG.%,,W_s8}n-EF(mF7O	 )
 r3   r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zFlux.get_model      ood62
r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S Nr   r9  rH   )r  rd   re   r<  r=  rS   r   r<   r  FluxTokenizer	flux_clipr*   r+   r?  r@  s       r1   r@   zFlux.clip_target  s    ++A.''00>>zKaKhKhimKno	$//0C0C0H0H0V0VX]XkXkXpXpXzXz  YH  ~G  YH  I  	Ir3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r$  r'   r  r  r   r  r   r@   rH   r3   r1   r  r    sp    K
 "''M"'..%--!O XN/0 &( Ir3   r  c                   H    e Zd ZddddZej
                  ej                  gZy)FluxInpaintr  T`   )rm  r  rP   N)rA   rB   rC   rD   r&   r  r'   r  rH   r3   r1   r  r    s'    K #(..%--!@r3   r  c                   (    e Zd ZdddZdddZddZy)	FluxSchnellr  Fr  r   rZ  Nc                 f    t        j                  | t         j                  j                  |      }|S r   )r   r  rV   FLOWr   s        r1   r   zFluxSchnell.get_model  s&    oodz/C/C/H/HQWX
r3   r   )rA   rB   rC   rD   r   r   rH   r3   r1   r  r    s$    K 
r3   r  c                        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Zd
dZi fd	Z xZS )Flux2rm  flux2r   g)\( @r   r6  c                 ^    t         |   |       | j                  dz  |d   dz  z  | _        y )N      @hidden_sizei,
  super__init__rG   r*   rD   	__class__s     r1   r  zFlux2.__init__&  s4    %#'#;#;y#I[YfMgjnMn#o r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zFlux2.get_model*      tF3
r3   c                 J   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        |      dkD  rdd|d<   t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S t        j                  j                  j	                  |dj                  |            }t        |      dkD  rdd|d<   t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S t        j                  j                  j	                  |dj                  |            }t        |      dkD  rwdj                  |      |vrd	|d
<   t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S y )Nr   {}qwen3_4b.transformer.qwen3_4br[   z{}qwen3_8b.transformer.qwen3_8bz{}mistral3_24b.transformer.zJ{}mistral3_24b.transformer.model.layers.39.post_attention_layernorm.weightTprunedrH   )r  rd   re   hunyuan_videollama_detectrS   r  r   r<   r  KleinTokenizerklein_teKleinTokenizer8BFlux2Tokenizerflux2_ter*   r+   r?  detects       r1   r@   zFlux2.clip_target.  s   ++A.$$22??
LeLlLlmqLrsv;?#-F< (33E4G4G4L4L4[4[]b]p]p]u]u]~]~  ^I  BH  ^I  J  J$$22??
LeLlLlmqLrsv;?#-F< (33E4G4G4L4L4]4]_d_r_r_w_w  `A  `A  `K  DJ  `K  L  L$$22??
LiLpLpquLvwv;?[bbcghpzz#'x (33E4G4G4L4L4[4[]b]p]p]u]u]~]~  ^I  BH  ^I  J  Jr3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   r&   r  r$  r'   r  r   r  r  r   r@   __classcell__r  s   @r1   r  r    so    wK
 	 "((M"'..%--!OXN/0p &( r3   r  c                        e Zd 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	Zdd
Zi fdZ xZS )LenszNMicrosoft Lens (3.8B dual-stream MMDiT, GPT-OSS-20B text features, Flux2 VAE).rm  lensr   g$C?r  r   r6  c                 $    t         |   |       y r;   r  r  r  s     r1   r  zLens.__init__X      %r3   c                 b    t        j                  | t         j                  j                  |      S r   )r   r  rV   FLUXr   s       r1   r   zLens.get_model[  s"    t
0D0D0I0IRXYYr3   c           	      J   | j                   d   }dD ]  }dj                  ||      }dj                  |      |v s)t        j                  j                  j                  ||      }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      c S  t        j                  t        j                  j                  j                  t        j                  j                  j                               S )Nr   )zgpt_oss.transformer.rj   z{}{}z{}layers.0.self_attn.sinksrH   )r  rS   rd   re   r  r  r   r<   gpt_ossLensTokenizerlens_te)r*   r+   r?  hintfull_prefixr  s         r1   r@   zLens.clip_target^  s    ++A.0D --d3K+22;?:M,,::GG
T_`,77''//==''//77A&A 	 1 %//''55''//1
 	
r3   r   )rA   rB   rC   __doc__rD   r   rE   r	   r  rF   rG   r&   r  r'   r  r   r  r  r   r@   r  r  s   @r1   r  r  C  st    X 	vK
 	 "((M"'..%--!@XN/0&Z &( 
r3   r  c                       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
Zi fdZy	)
GenmoMochirm  mochi_previewr         @rZ  r   r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zGenmoMochi.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r<  r=  rS   r   r<   genmoMochiT5Tokenizermochi_ter  s       r1   r@   zGenmoMochi.clip_target  s    ++A.''00>>zKaKhKhimKno	$//0C0C0I0I0Z0Z\a\o\o\u\u\~\~  ]L  BK  ]L  M  	Mr3   r   )rA   rB   rC   rD   r   rE   r	   MochirF   rG   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r  r  n  sj    K
 
 "((M"'..%--!@XN/0 &( Mr3   r  c                        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Zdd	Zi fd
Z xZS )LTXVrm  ltxvr   g(\@      @r   r6  c                 ^    t         |   |       |j                  dd      dz  dz  | _        y )Ncross_attention_dimr{   r  r  r  rT   rG   r  s     r1   r  zLTXV.__init__  s0    %$/OO4I4$PSW$W[^#^ r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zLTXV.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r<  r=  rS   r   r<   ltLTXVT5Tokenizerltxv_ter  s       r1   r@   zLTXV.clip_target  s    ++A.''00>>zKaKhKhimKno	$//0C0C0F0F0V0VX]XkXkXnXnXvXv  YD  zC  YD  E  	Er3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r'   r  r   r  r  r   r@   r  r  s   @r1   r  r    sp    vK
 	 "''M"'..%--!@XN/0_ &( Er3   r  c                   F     e Zd ZddiZej
                  Z fdZddZ xZ	S )LTXAVrm  ltxavc                 2    t         |   |       d| _        y )NgʡE?r  r  s     r1   r  zLTXAV.__init__  s    %#( r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zLTXAV.get_model  r  r3   r   )
rA   rB   rC   rD   r	   r  rF   r  r   r  r  s   @r1   r  r    s&    wK #((M)r3   r  c                       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	Zd
 Zd Zi fdZy)HunyuanVideorm  r  r         @?r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHunyuanVideo.get_model      %%d6:
r3   c                    i }t        |j                               D ]N  }|}|j                  dd      j                  dd      }|j                  dd      j                  dd      }|j                  d	d
      j                  dd      }|j                  dd      j                  dd      }|j                  dd      j                  dd      }|j                  dd      j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      j                  dd       }|j                  d!      rd"j	                  |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   rS   r  r  s        r1   r  z$HunyuanVideo.process_unet_state_dict  s   joo'(AGoo&@B_`hh  jD  Fd  eGoo&CEbckk  mJ  Lj  kGoonkBJJ<YefGooj(;CCJPXYGoo&;=[\ddez  }Y  ZGoo&68QRZZ[k  nE  FGoom]CGoo&;=OPGool4DEMMl\klG)%,,W_s8}n-EF(mF7O ) r3   c                 6    ddi}t        j                  ||      S rO  rP  r_   s      r1   rQ  z/HunyuanVideo.process_unet_state_dict_for_saving  rR  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}llama.transformer.rH   )
r  rd   re   r  r  rS   r   r<   HunyuanVideoTokenizerhunyuan_video_clipr*   r+   r?  hunyuan_detects       r1   r@   zHunyuanVideo.clip_target  s    ++A.,,::GG
TjTqTqrvTwx$//0C0C0Q0Q0g0gini|i|  jK  jK  j^  j^  jp  ao  jp  q  	qr3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r'   r  r   r  r   r  rQ  r@   rH   r3   r1   r  r    st    K
 	 "//M"'..%--!@XN/0$K &( qr3   r  c                       e Zd ZdddZddZy)HunyuanVideoI2Vr  !   rm  rP   Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHunyuanVideoI2V.get_model  r  r3   r   r   rH   r3   r1   r  r        &K
r3   r  c                       e Zd ZdddZddZy)HunyuanVideoSkyreelsI2Vr      r  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   z!HunyuanVideoSkyreelsI2V.get_model  s    00fE
r3   r   r   rH   r3   r1   r  r    r  r3   r  c                       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Zi fdZy)	CosmosT2Vcosmosr2  r  r   r   r   r   r   r   r5  r   r6  Nc                 4    t        j                  | |      }|S r   r   CosmosVideor   s        r1   r   zCosmosT2V.get_model  r   r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  r  rd   re   r<  r=  rS   r   r<   r   CosmosT5Tokenizerter  s       r1   r@   zCosmosT2V.clip_target      ++A.''00>>zKaKhKhimKno	$//0C0C0J0J0\0\^c^q^q^x^x^{^{  _I  H  _I  J  	Jr3   r   )rA   rB   rC   rD   r   rE   r	   Cosmos1CV8x8x8rF   rG   r&   r  r$  r'   r  r   r  r   r@   rH   r3   r1   r  r     st    K  "11M"'..%--!OXN/0 &( Jr3   r  c                       e Zd ZdddZddZy)	CosmosI2Vr      r  Nc                 6    t        j                  | d|      }|S NTimage_to_videor   r  r   s        r1   r   zCosmosI2V.get_model%  s    $$T$vN
r3   r   r   rH   r3   r1   r  r    s    K
r3   r  c                        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Zdd	Zi fd
Z xZS )CosmosT2IPredict2cosmos_predict2r2  r  r   r   r   r  c                 ^    t         |   |       |j                  dd      dz  dz  | _        y )Nr   r{   ffffff?r  r  s     r1   r  zCosmosT2IPredict2.__init__<  s/    %$/OO4Dd$Kd$RVZ#Z r3   c                 4    t        j                  | |      }|S r   r   CosmosPredict2r   s        r1   r   zCosmosT2IPredict2.get_model@      ''V<
r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  r  r  s       r1   r@   zCosmosT2IPredict2.clip_targetD  r	  r3   r   )rA   rB   rC   rD   r   rE   r	   Wan21rF   rG   r&   r  r$  r'   r  r  r   r@   r  r  s   @r1   r  r  )  sk    (K  "((M"'..%--!O[ &( Jr3   r  c                        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Zi fdZ fdZ xZS )
Animarm  animar   r4  rZ  c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zAnima.get_modelZ  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}qwen3_06b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r  AnimaTokenizerr  r  s       r1   r@   zAnima.clip_target^  s    ++A.$$22??
LfLmLmnrLst$//0C0C0I0I0X0XZ_ZmZmZsZsZvZv  [Ay  [A  B  	Br3   c                     | j                   j                  dd      dz  dz  | _        |t        j                  u r| xj                  dz  c_        t        |   ||fi |S )Nr   r{   r  ffffff?)rD   rT   rG   r&   r$  r  set_inference_dtype)r*   r%   manual_cast_dtypekwargsr  s       r1   r%  zAnima.set_inference_dtypec  s`    $($4$4$8$89I4$PSW$W[_#_ EMM!$$+$w*52CNvNNr3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r$  r'   r  r   r@   r%  r  r  s   @r1   r  r  I  sm    wK
 
 "((M"'..%--!O &( B
O Or3   r  c                       e Zd ZdddZddZy)CosmosI2VPredict2r  r  r  Nc                 6    t        j                  | d|      }|S r  r  r   s        r1   r   zCosmosI2VPredict2.get_modelo  s    ''T&Q
r3   r   r   rH   r3   r1   r)  r)  i  s    (K
r3   r)  c                       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
Zi fdZy	)Lumina2rm  lumina2r   r  rZ  r$  r   r6  Nc                 4    t        j                  | |      }|S r   )r   r,  r   s        r1   r   zLumina2.get_model        f5
r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}gemma2_2b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r-  LuminaTokenizerr  r  s       r1   r@   zLumina2.clip_target  s    ++A.,,::GG
TnTuTuvzT{|$//0C0C0K0K0[0[]b]p]p]x]x]{]{  ^N  M  ^N  O  	Or3   r   )rA   rB   rC   rD   r   rG   rE   r	   r  rF   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r,  r,  s  sj    yK
 
 "''M"'..%--!@XN/0 &( Or3   r,  c                   p     e Zd ZdddZdddZdZej                  ej                  gZ	 fdZ
i fd	Z xZS )
ZImager-  i   )rm  dimr   r4  rZ  gffffff@c                    t         |   |       t        j                  j	                         r]|j                  dd      rJ| j                  j                         | _        | j                  j                  dt        j                         y y y )N
allow_fp16Fr   )r  r  rd   model_managementextended_fp16_supportrT   r  copyinsertr&   r$  r  s     r1   r  zZImage.__init__  sj    %!!779kool\a>b.2.M.M.R.R.TD+++221emmD ?c9r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   r  rH   )r  rd   re   r  r  rS   r   r<   z_imageZImageTokenizerr  r  s       r1   r@   zZImage.clip_target  s    ++A.,,::GG
TmTtTtuyTz{$//0C0C0K0K0[0[]b]p]p]x]x]{]{  ^N  M  ^N  O  	Or3   )rA   rB   rC   rD   r   rG   r&   r  r'   r  r  r@   r  r  s   @r1   r3  r3    sL     K 
 "'..%--!@E &( Or3   r3  c                   8    e Zd ZddiZej
                  ZdZddZy)ZImagePixelSpacerm  zimage_pixelrE  Nc                 0    t        j                  | |      S r   )r   r?  r   s       r1   r   zZImagePixelSpace.get_model  s    **4??r3   r   )	rA   rB   rC   rD   r	   r?  rF   rG   r   rH   r3   r1   r?  r?    s)    ~K
 #33M @r3   r?  c                       e Zd ZddiZi ZddiZej                  ZdZ	e
j                  e
j                  gZdgZdgZdd	Zd
 Zi fdZy)PixelDiTT2Irm  pixeldit_t2ir   r  {Gz?r   r6  Nc                 0    t        j                  | |      S r   )r   rC  r   s       r1   r   zPixelDiTT2I.get_model  r   r3   c                    t        d |j                         D              j                  d   }i }d}|j                         D ]4  \  }}|j                  d      s|j                  d      r*|j                  d      r|t	        d      d  }n|j                  d      r|t	        d      d  }d|v r||v r|j                  d   d	|z  z  }|j                  d
d  } |j
                  |d	|g| }	|j                  |      \  }
} |	d d ddf   j                  d|z  |z  g| j                         ||
 d| <    |	d d dd	f   j                  d|z  |z  g| j                         ||
 d| <   0|||<   7 |S )Nc              3   J   K   | ]  \  }}|j                  d       s|  yw)zpixel_embedder.proj.weightNr   ).0r,   vs      r1   	<genexpr>z6PixelDiTT2I.process_unet_state_dict.<locals>.<genexpr>  s#     f'9tq!QZZHd=e'9s   ##r   z.adaLN_modulation.0._repa_projectorznet_ema.zcore.znet.zpixel_blocks.r   r   r  z.adaLN_modulation_msa.z.adaLN_modulation_mlp.)	nextitemsr	  r"   r  viewsplitreshape
contiguous)r*   r+   	pixel_dimrZ   markerr,   rJ  p2trailvvbaser  s               r1   r  z#PixelDiTT2I.process_unet_state_dict  s   fz'7'7'9ffllmno	'$$&DAq||-.!,,z2J||G$c'lm$f%c&klO!#!WWQZA	M2QVVB95u5 wwvf?Qr!QqS&z?Q?QRSVXRX[dRd?mgl?m?x?x?ztf26(;<?Qr!QqS&z?Q?QRSVXRX[dRd?mgl?m?x?x?ztf26(;<A! '" 
r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   pixelditPixelDiTGemma2TokenizerPixelDiTGemma2TEr?   s     r1   r@   zPixelDiTT2I.clip_target  s?    $//((@@((99
 	
r3   r   )rA   rB   rC   rD   rE   r   r	   PixelDiTPixelrF   rG   r&   r  r'   r  r   r  r   r  r@   rH   r3   r1   rC  rC    so    ~K  	 #00M"'..%--!@XN/0;2 &( 
r3   rC  c                   (    e Zd ZddiZddiZdZddZy)	PiDrm  pidr   g      ?rE  Nc                 0    t        j                  | |      S r   )r   r_  r   s       r1   r   zPiD.get_model  s    ~~d622r3   r   )rA   rB   rC   rD   r   rG   r   rH   r3   r1   r_  r_    s*    uK
 	 3r3   r_  c                        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	Zdd
Zi fdZ xZS )	WAN21_T2Vwan2.1t2vrm  r[   r          @g?r   r6  c                 l    t         |   |       | j                  j                  dd      dz  | _        y )Nr4  i  i  )r  r  rD   rT   rG   r  s     r1   r  zWAN21_T2V.__init__  s0    %#'#3#3#7#7t#Dt#K r3   c                 4    t        j                  | |      }|S r   r   WAN21r   s        r1   r   zWAN21_T2V.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}umt5xxl.transformer.rH   )r  rd   re   r<  r=  rS   r   r<   wanWanT5Tokenizerr  r  s       r1   r@   zWAN21_T2V.clip_target  s    ++A.''00>>zKcKjKjkoKpq	$//0C0C0G0G0V0VX]XkXkXoXoXrXrXu~X  A  	Ar3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r$  r  r'   r  r   r  r  r   r@   r  r  s   @r1   rc  rc    sw    K 	 "((M"'--!OXN/0L &( Ar3   rc  c                   :     e Zd ZddddZddiZ fdZd	dZ xZS )
WAN21_CausalAR_T2Vrd  re  T)rm  r[   	causal_arr         @c                 \    t         |   |       | j                  j                  dd        y )Nrq  )r  r  rD   r$   r  s     r1   r  zWAN21_CausalAR_T2V.__init__&  s&    %[$/r3   c                 0    t        j                  | |      S r   )r   WAN21_CausalARr   s       r1   r   zWAN21_CausalAR_T2V.get_model*      ((f==r3   r   )rA   rB   rC   rD   r   r  r   r  r  s   @r1   rp  rp    s,    K 	0>r3   rp  c                        e Zd ZddddZddZy)	WAN21_I2Vrd  i2v$   rm  r[   in_dimNc                 6    t        j                  | d|      }|S r  rj  r   s        r1   r   zWAN21_I2V.get_model5      tDH
r3   r   r   rH   r3   r1   rx  rx  .      Kr3   rx  c                        e Zd ZddddZddZy)WAN21_FunControl2Vrd  ry  0   r{  Nc                 6    t        j                  | d|      }|S NFr  rj  r   s        r1   r   zWAN21_FunControl2V.get_model@  s    tE&I
r3   r   r   rH   r3   r1   r  r  9  r  r3   r  c                        e Zd ZddddZddZy)WAN21_Camerard  camerar  r{  Nc                 6    t        j                  | d|      }|S r  r   r  r   s        r1   r   zWAN21_Camera.get_modelK      %%d5P
r3   r   r   rH   r3   r1   r  r  D  s    Kr3   r  c                        e Zd ZddddZddZy)WAN22_Camerard  z
camera_2.2rz  r{  Nc                 6    t        j                  | d|      }|S r  r  r   s        r1   r   zWAN22_Camera.get_modelV  r  r3   r   r   rH   r3   r1   r  r  O  s    "Kr3   r  c                   0     e Zd ZdddZ fdZddZ xZS )
WAN21_Vacerd  vacerf  c                 L    t         |   |       d| j                  z  | _        y )Ng333333?r  r  s     r1   r  zWAN21_Vace.__init__`  s#    %#&)A)A#A r3   c                 6    t        j                  | d|      }|S r  )r   r  r   s        r1   r   zWAN21_Vace.get_modeld      ##DvN
r3   r   rA   rB   rC   rD   r  r   r  r  s   @r1   r  r  Z  s    K
Br3   r  c                       e Zd ZdddZddZy)
WAN21_HuMord  humorf  Nc                 6    t        j                  | d|      }|S r  )r   r  r   s        r1   r   zWAN21_HuMo.get_modeln  r  r3   r   r   rH   r3   r1   r  r  h  s    K
r3   r  c                   0     e Zd ZdddZ fdZddZ xZS )	WAN22_S2Vrd  s2vrf  c                 $    t         |   |       y r;   r  r  s     r1   r  zWAN22_S2V.__init__x  r  r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zWAN22_S2V.get_model{      ""47
r3   r   r  r  s   @r1   r  r  r  s    K
&r3   r  c                   0     e Zd ZdddZ fdZddZ xZS )WAN22_Animaterd  animaterf  c                 $    t         |   |       y r;   r  r  s     r1   r  zWAN22_Animate.__init__  r  r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zWAN22_Animate.get_model  r   r3   r   r  r  s   @r1   r  r    s    K
&r3   r  c                   8    e Zd ZddddZej
                  ZddZy)	WAN22_T2Vrd  re  r  )rm  r[   out_dimNc                 6    t        j                  | d|      }|S r  )r   WAN22r   s        r1   r   zWAN22_T2V.get_model  r~  r3   r   )rA   rB   rC   rD   r	   Wan22rF   r   rH   r3   r1   r  r    s$    K #((Mr3   r  c                       e Zd ZdddZddZy)WAN21_FlowRVSrd  flow_rvsrf  Nc                 6    t        j                  | d|      }|S r  )r   r  r   s        r1   r   zWAN21_FlowRVS.get_model  s    &&tDP
r3   r   r   rH   r3   r1   r  r    s     K
r3   r  c                       e Zd ZdddZddZy)WAN21_SCAILrd  scailrf  Nc                 6    t        j                  | d|      }|S r  )r   r  r   s        r1   r   zWAN21_SCAIL.get_model  s    $$T%O
r3   r   r   rH   r3   r1   r  r    s    K
r3   r  c                   8     e Zd ZddddZ fdZddZd Z xZS )	WAN22_WanDancerrd  	wandancerrz  r{  c                 2    t         |   |       d| _        y )Nr  r  r  s     r1   r  zWAN22_WanDancer.__init__  s    %#& r3   c                 6    t        j                  | d|      }|S r  )r   r  r   s        r1   r   zWAN22_WanDancer.get_model  s    ((d6R
r3   c                 D   i }t        |j                               D ]  }d|v rsd|v ro|j                  d      rdnd}||   }|j                  d   dz  }|j	                  d| d      }|d | || d	| <   ||d
|z   || d| <   |d
|z  d  || d| <   z||   ||<    |S )Nmusic_encoderzself_attn.in_projr   r   r   r  in_proj_rj   zq_proj.r   zk_proj.zv_proj.)r    r!   r   r	  r#   )r*   r+   r  r,   r  tensordrY   s           r1   r  z'WAN22_WanDancer.process_unet_state_dict  s    joo'(A!#(;q(@%&ZZ%9v#ALLOq(XfX#6;5;BQZ&125;Aac]&125;AaCD\&12&qMq	 ) r3   r   )rA   rB   rC   rD   r  r   r  r  r  s   @r1   r  r    s"    !K'r3   r  c                   f    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 Zd	 ZddZi fdZy
)Hunyuan3Dv2rm  
hunyuan3d2r   rZ  g      @z%conditioner.main_image_encoder.model.r   c                     i }t        |j                               D ];  }|}|j                  d      rdj                  |d t	        d              }||   ||<   = |S Nr  r  r  r  s        r1   r  z#Hunyuan3Dv2.process_unet_state_dict  a    joo'(AG)%,,W_s8}n-EF(mF7O	 )
 r3   c                 6    ddi}t        j                  ||      S )Nrj   zmodel.rP  r_   s      r1   rQ  z.Hunyuan3Dv2.process_unet_state_dict_for_saving  s    h..z>JJr3   Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHunyuan3Dv2.get_model  r   r3   c                      y r;   rH   r?   s     r1   r@   zHunyuan3Dv2.clip_target  r   r3   r   )rA   rB   rC   rD   rE   r   rG   rw   r   r	   r  rF   r  rQ  r   r@   rH   r3   r1   r  r    s`    |K  
 @XN"..MK &( r3   r  c                   4    e Zd ZddiZej
                  ZddZy)Hunyuan3Dv2_1rm  hunyuan3d2_1Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHunyuan3Dv2_1.get_model  s    &&tf=
r3   r   )rA   rB   rC   rD   r	   r  rF   r   rH   r3   r1   r  r    s     ~K #00Mr3   r  c                   .    e Zd ZdddZej
                  Zy)Hunyuan3Dv2minir  r   )rm  depthN)rA   rB   rC   rD   r	   r  rF   rH   r3   r1   r  r    s    #K
 #22Mr3   r  c                       e Zd ZddiZi ZddiZdZej                  Z	e
j                  e
j                  e
j                  gZd	dZi fdZy)

TripoSplatrm  
triposplatr   r4  g333333?Nc                 0    t        j                  | |      S r   )r   r  r   s       r1   r   zTripoSplat.get_model  s    $$T&99r3   c                      y r;   rH   r?   s     r1   r@   zTripoSplat.clip_target  r   r3   r   )rA   rB   rC   rD   rE   r   rG   r	   r  rF   r&   r$  r  r'   r  r   r@   rH   r3   r1   r  r    sb     	|K  	 "--M"'--!O: &( r3   r  c                       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Zi fd	Zy)HiDreamrm  hidreamr   r4  r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHiDream.get_model4  r/  r3   c                      y r;   rH   r?   s     r1   r@   zHiDream.clip_target8  r   r3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r  r    sj    yK
 	
 "''M"'..%--!@XN/0 &( r3   r  c                       e Zd ZddiZdddZej                  ZdZe	j                  e	j                  gZdgZdgZd	d
iZddZd Zd Zd Zi fdZy)	HiDreamO1rm  
hidream_o1r4  rg  )r   noise_scalegL7A`?r   r6  fp8FNc                 0    t        j                  | |      S r   )r   r  r   s       r1   r   zHiDreamO1.get_modelO  s    ##D88r3   c                 R    t        |j                               D ]
  }d|v s||=  |S )Nzvisual.deepstack_merger_list)r    r!   )r*   r+   keys      r1   r  z!HiDreamO1.process_unet_state_dictR  s/    
)*C-4sO + r3   c                 0    dt        j                  d      iS )Npixel_space_vaer   )r&   r  r?   s     r1   process_vae_state_dictz HiDreamO1.process_vae_state_dictY  s    !5<<#455r3   c                 0    dt        j                  d      iS )N_hidream_o1_te_sentinelr   )r&   zerosr?   s     r1   r2   z!HiDreamO1.process_clip_state_dict]  s    )5;;q>::r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   r  HiDreamO1TokenizerHiDreamO1TEr?   s     r1   r@   zHiDreamO1.clip_targeta  s?    $//**==**66
 	
r3   r   )rA   rB   rC   rD   r   r	   HiDreamO1PixelrF   rG   r&   r  r'   r  r   r  optimizationsr   r  r  r2   r@   rH   r3   r1   r  r  ;  s{    |K
 
 #11M"'..%--!@XN/0ENM96; &( 
r3   r  c                       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 Zd
dZi fd	Zy)Chromarm  chromar[  r   g	@c                     i }t        |j                               D ];  }|}|j                  d      rdj                  |d t	        d              }||   ||<   = |S r  r  r  s        r1   r  zChroma.process_unet_state_dicty  r  r3   Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zChroma.get_model  r   r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r<  r=  rS   r   r<   rt  ru  	pixart_ter  s       r1   r@   zChroma.clip_target  s    ++A.''00>>zKaKhKhimKno	$//0C0C0M0M0]0]_d_r_r_|_|  `G  `G  `T  JS  `T  U  	Ur3   r   )rA   rB   rC   rD   rE   r   rd   r	   r  rF   rG   r&   r  r$  r'   r  r  r   r@   rH   r3   r1   r  r  g  sl    xK 	c ((--M"'..%--!O &( Ur3   r  c                   L    e Zd ZddiZej
                  j                  ZdZddZ	y)ChromaRadiancerm  chroma_radiancegI+?Nc                 0    t        j                  | |      S r   )r   r  r   s       r1   r   zChromaRadiance.get_model  rv  r3   r   )
rA   rB   rC   rD   rd   r	   r  rF   rG   r   rH   r3   r1   r  r    s/    (K ((77M  >r3   r  c                       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	Zi fd
Zy)ACESteprC  acer   r4  r   r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zACEStep.get_model  r/  r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   r  AceT5Tokenizer
AceT5Modelr?   s     r1   r@   zACEStep.clip_target  s:    $//0C0C0G0G0V0VX]XkXkXoXoXzXz{{r3   r   )rA   rB   rC   rD   rE   r   rd   r	   ACEAudiorF   rG   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r  r    sq    uK 	 ((11M"'..%--!@XN/0 &( |r3   r  c                        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	Zdd
Zi fdZ xZS )Omnigen2rm  omnigen2r   g@rZ  g333333?r   r6  c                     t         |   |       t        j                  j	                         r$t
        j                  g| j                  z   | _        y y r;   )r  r  rd   r7  r8  r&   r$  r  r  s     r1   r  zOmnigen2.__init__  s@    %!!779/4}}o@_@_._D+ :r3   c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zOmnigen2.get_model  rf  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}qwen25_3b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r  Omnigen2Tokenizerr  r  s       r1   r@   zOmnigen2.clip_target  s    ++A.,,::GG
TnTuTuvzT{|$//0C0C0L0L0^0^`e`s`s`|`|``  aR  CQ  aR  S  	Sr3   r   )rA   rB   rC   rD   r   rG   rE   r	   r  rF   r&   r  r'   r  r   r  r  r   r@   r  r  s   @r1   r  r    sq    zK
 
 "''M"'..%--!@XN/0`
 &( Sr3   r  c            	           e Zd ZddiZdddZdZdddd	d
dg dddZej                  Z	e
j                  e
j                  gZdgZdgZddZi fdZy)	Ideogram4rm  	ideogram4r   rZ  g333333'@   r   i 0  i   i   i@KL )      r  gh㈵>)num_attention_headsattention_head_dimintermediate_size	adaln_dimllm_features_dim
rope_thetamrope_sectionnorm_epsr   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zIdeogram4.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}qwen3vl_8b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r  Ideogram4Tokenizerr  r  s       r1   r@   zIdeogram4.clip_target  s    ++A.,,::GG
ToTvTvw{T|}$//0C0C0M0M0`0`bgbububb  cC  cC  cU  FT  cU  V  	Vr3   r   rA   rB   rC   rD   r   rG   rE   r	   r  rF   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r  r    s    {K
 
   "!"!%	 #((M"'..%--!@XN/0 &( Vr3   r  c                       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
Zi fdZy	)	QwenImagerm  
qwen_imager   gffffff?rZ  r  r   r6  Nc                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zQwenImage.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S Nr   z{}qwen25_7b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r  QwenImageTokenizerr  r  s       r1   r@   zQwenImage.clip_target  s    ++A.,,::GG
TnTuTuvzT{|$//0C0C0N0N0a0achcvcv  dB  dB  dE  dE  dW  HV  dW  X  	Xr3   r   )rA   rB   rC   rD   r   rG   rE   r	   r  rF   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r  r    sj    |K
 
 "((M"'..%--!@XN/0 &( Xr3   r  c                   |    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Zi fdZy)
HunyuanImage21r  N)rm  
vec_in_dimr   rr  gffffff!@c                 4    t        j                  | |      }|S r   )r   r  r   s        r1   r   zHunyuanImage21.get_model)  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r  r  rS   r   r<   hunyuan_imageHunyuanImageTokenizerr  r  s       r1   r@   zHunyuanImage21.clip_target-      ++A.,,::GG
TnTuTuvzT{|$//0C0C0Q0Q0g0gini|i|  jK  jK  jN  jN  j`  Q_  j`  a  	ar3   r   )rA   rB   rC   rD   r   r	   r  rF   rG   r&   r  r'   r  r   r@   rH   r3   r1   r  r    sT    &K 	 #11M"'..%--!@ &( ar3   r  c                   D    e Zd Zdg dddZddiZej                  ZddZy)	HunyuanImage21Refinerr  )r   r   r   N)rm  
patch_sizer  r   r  c                 4    t        j                  | |      }|S r   )r   r%  r   s        r1   r   zHunyuanImage21Refiner.get_model?  s    ..tFC
r3   r   )	rA   rB   rC   rD   r   r	   r%  rF   r   rH   r3   r1   r%  r%  2  s3    &K 	 #88Mr3   r%  c                       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Zi fd	Zy)HunyuanVideo15r    )rm  vision_in_dimr   r  r  Nc                 4    t        j                  | |      }|S r   )r   r)  r   s        r1   r   zHunyuanVideo15.get_modelQ  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  r  rd   re   r  r  rS   r   r<   HunyuanVideo15Tokenizerr!  r  r  s       r1   r@   zHunyuanVideo15.clip_targetU      ++A.,,::GG
TnTuTuvzT{|$//0C0C0Q0Q0i0ikpk~k~  lM  lM  lP  lP  lb  Sa  lb  c  	cr3   r   rA   rB   rC   rD   r   rG   r&   r$  r  r'   r  r	   r)  rF   r   r@   rH   r3   r1   r)  r)  C  sZ    &K 	 "'--!O"11M &( cr3   r)  c                       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	Zi fd
Zy)HunyuanVideo15_SR_Distilledr  r*  b   )rm  r+  rP   r   r   r  Nc                 4    t        j                  | |      }|S r   )r   r3  r   s        r1   r   z%HunyuanVideo15_SR_Distilled.get_modelj  s    44T&I
r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  r.  r  s       r1   r@   z'HunyuanVideo15_SR_Distilled.clip_targetn  r0  r3   r   r1  rH   r3   r1   r3  r3  [  s]    &K 	 "'--!O"11M &( cr3   r3  c                       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	Zi fd
Zy)
Kandinsky5rm  
kandinsky5r         $@      ?r   r6  Nc                 4    t        j                  | |      }|S r   )r   r8  r   s        r1   r   zKandinsky5.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r  r  rS   r   r<   r9  Kandinsky5Tokenizerr  r  s       r1   r@   zKandinsky5.clip_target  s    ++A.,,::GG
TnTuTuvzT{|$//0C0C0N0N0b0bdidwdw  eC  eC  eF  eF  eX  IW  eX  Y  	Yr3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r'   r  r   r  r   r@   rH   r3   r1   r8  r8  t  si    |K
 	 "//M"'..%--!@XN/0 &( Yr3   r8  c                   N    e Zd ZddddZddiZej                  ZdZdd	Z	i fd
Z
y)Kandinsky5Imager9  r   rL   )rm  	model_dimvisual_embed_dimr   r4  r;  Nc                 4    t        j                  | |      }|S r   )r   r@  r   s        r1   r   zKandinsky5Image.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r  r  rS   r   r<   r9  Kandinsky5TokenizerImager  r  s       r1   r@   zKandinsky5Image.clip_target  s    ++A.,,::GG
TnTuTuvzT{|$//0C0C0N0N0g0gini|i|  jH  jH  jK  jK  j]  N\  j]  ^  	^r3   r   )rA   rB   rC   rD   r   r	   r  rF   rG   r   r@   rH   r3   r1   r@  r@    sD    #K 	 #''M &( ^r3   r@  c                       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
Zi fdZy	)	ACEStep15rC  zace1.5r   r4  rZ  g@r   r6  Nc                 4    t        j                  | |      }|S r   )r   rG  r   s        r1   r   zACEStep15.get_model  r  r3   c                    | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  j                  j	                  |dj                  |            }d|v r|}d|d<   nd|v r|}d|d<   t        j                  t        j                  j                  j                  t        j                  j                  j                  di       S )	Nr   z{}qwen3_2b.transformer.r  dtype_llamaqwen3_2blm_modelr  rH   )r  rd   re   r  r  rS   r   r<   ace15ACE15Tokenizerr  )r*   r+   r?  	detect_2b	detect_4br  s         r1   r@   zACEStep15.clip_target  s    ++A.''55BB:OhOoOoptOuv	''55BB:OhOoOoptOuv	I%F!+F:i'F!+F:$//0C0C0I0I0X0XZ_ZmZmZsZsZvZv  [Ay  [A  B  	Br3   r   )rA   rB   rC   rD   rE   r   rd   r	   
ACEAudio15rF   rG   r&   r  r'   r  r   r  r   r@   rH   r3   r1   rG  rG    sr    xK 
 ((33M"'..%--!@XN/0 &( Br3   rG  c                       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Zi fdZy)LongCatImager  FNi   r   r   )rm  r  r  context_in_dimtxt_ids_dimsg      @r   r6  c                 4    t        j                  | |      }|S r   )r   rS  r   s        r1   r   zLongCatImage.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S r  )r  rd   re   r  r  rS   r   r<   longcat_imageLongCatImageTokenizerr  r  s       r1   r@   zLongCatImage.clip_target  r#  r3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   rG   r&   r  r$  r'   r  r   r  r   r@   rH   r3   r1   rS  rS    sv    AK "''M"'..%--!OXN/0 &( ar3   rS  c                   V    e Zd Zdd iZej
                  ej                  gZddZi fdZ	y)
RT_DETR_v4rm  Nc                 4    t        j                  | |      }|S r   )r   r[  r   s        r1   r   zRT_DETR_v4.get_model  r  r3   c                      y r;   rH   r?   s     r1   r@   zRT_DETR_v4.clip_target  r   r3   r   )
rA   rB   rC   rD   r&   r$  r'   r  r   r@   rH   r3   r1   r[  r[    s2    |K #(--!? &( r3   r[  c                       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
Zi fdZy	)
ErnieImagerm  ernieg     @@r4  rZ  r:  r   r6  Nc                 4    t        j                  | |      }|S r   )r   r_  r   s        r1   r   zErnieImage.get_model  r  r3   c                 P   | j                   d   }t        j                  j                  j	                  |dj                  |            }t        j                  t        j                  j                  j                  t        j                  j                  j                  di |      S )Nr   z{}ministral3_3b.transformer.rH   )r  rd   re   r  r  rS   r   r<   r`  ErnieTokenizerr  r  s       r1   r@   zErnieImage.clip_target  s    ++A.,,::GG
TrTyTyz~T  A$//0C0C0I0I0X0XZ_ZmZmZsZsZvZv  [I  zH  [I  J  	Jr3   r   r  rH   r3   r1   r_  r_     sj    wK
 
 "((M"'..%--!@XN/0 &( Jr3   r_  c                       e Zd Zdd iZej
                  ej                  ej                  gZdgZ	dZ
d Zd Zd	dZi fdZy)
SAM3rm  $detector.backbone.language_backbone.rj   c                     t        | di       }t        j                  |dddd      }t        j                  |dd      }|j	                         D ci c]  \  }}|j                  d      r|| c}}S c c}}w )	N_clip_stashrj   )rf  zbackbone.language_backbone.Tr   zencoder.zsam3_clip.transformer.zresizer.)getattrr   r)   r^   rN  r"   )r*   r+   	clip_keysr,   rJ  s        r1   r2   zSAM3.process_clip_state_dict$  s    D-4	33Ihj  LN  @O  ]a  b	88JPhi	!*!2S!2A!,,z:R1!2SSSs   A6-A6c                    t        |j                               D ci c]  }d|v sd|vs||j                  |        c}| _        t        |j                               D ]7  }|j	                  d      s|j                  |      |d|t        d      d  z   <   9 t        |j                               D cg c]	  }d|v s| c}D ]  }|j                  |        t        |j                               D cg c]  }|j                  d      s| c}D ]s  }|j                  |      }|j                  dd      \  }}|d	k(  rd
nd}|j                  d   dz  }|d | ||dz   |z   <   ||d|z   ||dz   |z   <   |d|z  d  ||dz   |z   <   u t        |j                               D ]S  }d|vr|j                  dd      j                  dd      j                  dd      }||k7  s@|j                  |      ||<   U |S c c}w c c}w c c}w )Nlanguage_backboneresizerztracker.model.ztracker.z.attn.freqs_cis)z.in_proj_weightz.in_proj_biasz	.in_proj_r   r   z.weightz.biasr   r  z.q_projr   z.k_projz.v_projzsam_mask_decoder.transformer.z
.mlp.lin1.z.mlp.0.z
.mlp.lin2.z.mlp.2.z.norm_final_attn.z.norm_final.)
r    r!   r$   rh  r"   r  r   rsplitr	  r#   )	r*   r+   r,   trX  r  sr  new_ks	            r1   r  zSAM3.process_unet_state_dict*  s4   :>z?P:Q  F:QQUhlmUmr{  DE  sEAz~~a00:Q  Fjoo'(A||,-EO^^TUEV
:#.>*?*@(AAB ) "*//"34O48IQ8N!4OANN1 P "*//"34i4

Cg8h!4iAq!A88K3LD&#x/	WA
aA/0!uJti'!+,/01Q3xJti'!+,/01wJti'!+, j joo'(A.a7IIlI6>>|YW__`s  vD  EEz$.NN1$5
5! ) 1 F P js'   	G<G<G<5	H?H7HHNc                 0    t        j                  | |      S r   )r   re  r   s       r1   r   zSAM3.get_modelE  s    tF33r3   c                     dd l }t        j                  |j                  j                  j
                  |j                  j                  j                        S )Nr   )comfy.text_encoders.sam3_clipr   r<   re   	sam3_clipSAM3TokenizerWrapperSAM3ClipModelWrapper)r*   r+   rd   s      r1   r@   zSAM3.clip_targetH  sS    ,$//0C0C0M0M0b0bdidwdw  eB  eB  eW  eW  X  	Xr3   r   )rA   rB   rC   rD   r&   r$  r  r'   r  r  unet_extra_prefixr2   r  r   r@   rH   r3   r1   re  re    sO     &)K"'--!OEFT64 &( Xr3   re  c                       e Zd Zdd iZy)SAM31rm  Nr   rH   r3   r1   rz  rz  M  s     '*Kr3   rz  c                        e Zd ZddiZdddddZi Zej                  Ze	j                  e	j                  e	j                  gZdgZd	gZ fd
ZddZi fdZ xZS )CogVideoX_T2Vrm  	cogvideoxr}  g~jt?linearT)r   r   rr   r   r   r6  c                 x    |j                  dd      dk\  rt        j                  | _        t        |   |       y )Nr	  r   r  )rT   r	   CogVideoX1_5rF   r  r  r  s     r1   r  zCogVideoX_T2V.__init__e  s4     ??0!4:!/!<!<D%r3   c                    | j                   j                  d      T| j                   j                  dd       | j                   j                  dd       | j                   j                  dd       t        j                  | |      }|S )	Npatch_size_tsample_heightr  sample_width   sample_framesQ   r   rD   rT   
setdefaultr   	CogVideoXr   s        r1   r   zCogVideoX_T2V.get_modelm  sr    /;''<''<''<""47
r3   c                     t        j                  t        j                  j                  j
                  t        j                  j                  j                        S r;   )r   r<   rd   re   cogvideoCogVideoXT5Tokenizerr<  
T5XXLModelr?   s     r1   r@   zCogVideoX_T2V.clip_targetv  sH    $//0C0C0L0L0a0achcvcvcc  dK  dK  L  	Lr3   r   )rA   rB   rC   rD   r   rE   r	   r  rF   r&   r  r$  r'   r  r   r  r  r   r@   r  r  s   @r1   r|  r|  Q  sv    {K
  !	 ",,M"'..%--!OXN/0& &( Lr3   r|  c                       e Zd ZdddZddZy)CogVideoX_I2Vr}  r  r  Nc                    | j                   j                  d      T| j                   j                  dd       | j                   j                  dd       | j                   j                  dd       t        j                  | d|	      }|S 
Nr  r  r  r  r  r  r  Tr  r  r   s        r1   r   zCogVideoX_I2V.get_model  t    /;''<''<''<""4VL
r3   r   r   rH   r3   r1   r  r  y      "K
r3   r  c                       e Zd ZdddZddZy)CogVideoX_Inpaintr}  r  r  Nc                    | j                   j                  d      T| j                   j                  dd       | j                   j                  dd       | j                   j                  dd       t        j                  | d|	      }|S r  r  r   s        r1   r   zCogVideoX_Inpaint.get_model  r  r3   r   r   rH   r3   r1   r  r    r  r3   r  )r&   rj   r   r   r   r   comfy.text_encoders.sd2_cliprd   comfy.text_encoders.sd3_clipcomfy.text_encoders.sa_t5comfy.text_encoders.sa3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.ideogram4comfy.text_encoders.animacomfy.text_encoders.ace15!comfy.text_encoders.longcat_imagecomfy.text_encoders.erniecomfy.text_encoders.cogvideocomfy.text_encoders.hidream_o1comfy.text_encoders.pixelditr   r	   r
   comfy.model_managementBASEr   rJ   rl   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r  r&  r)  r,  r1  rB  rX  rc  rl  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r,  r3  r?  rC  r_  rc  rp  rx  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)  r3  r8  r@  rG  rS  r[  r_  re  rz  r|  r  r  modelsrH   r3   r1   <module>r     s
        # #    " $       ( ! "   # % ( % " $     (   # % # #   ,^ %% ,^\*F %% *FX
A$ 
A
B$ 
B$i',, $iLFb %% FbPD 4  t ',, >[ $V "*// >D 8,t,11 ,t\' (D4 Dt4 t5T 5""t

$
$ "tH~',, ~>D; D.F$)) F.J',, J6(+ (@&++ @8
* 
#I %% #IJA$ A$ +D +\(
 %% (
VM&++ M:E %% E@D 0q(-- 0qdl l J%** J>	 J-22 J@O!&& O@) O#(( O:OW O4@v @2
',, 2
h3+ 3A%** AB> >&		 		 		9 		9 	  	 I 	 I ) i >%',, %N	K 	3k 3&++ 0#(( :*
%** *
X"U"'' "UH>V >|#(( |8 S$))  SD$V%** $VLX%** X:a\ a2L "c\ c0c, c2Y&++ Y:^j ^0%B%** %BPa(-- a@&++ J&++ J<,X %% ,X^+D +&L).. &LPM  [

[
[
 [
 		[

 	[
 [
 [
 [
 [
 	[
 
[
 [
 [
 [
 [
  ![
" #[
$ %[
& '[
( )[
* +[
, -[
. /[
0 1[
2 3[
4 5[
6 7[
8 9[
: 	;[
< =[
> ?[
@ A[
B 	C[
D 
E[
F  G[
H I[
J K[
L M[
N O[
P Q[
R S[
T U[
V W[
X Y[
Z [[
\ ][
^ _[
` a[
b c[
d e[
f g[
h i[
j k[
l m[
n o[
p q[
r s[
t u[
v w[
x y[
z {[
| }[
~ [
@ A[
B C[
D E[
F G[
H I[
J K[
L M[
N O[
P Q[
R S[
T U[
V W[
X Y[
Z [[
\ 
][
^ 	_[
` a[
b c[
d 
e[
f g[
h i[
j 	k[
l 
m[
n o[
p q[
r s[
t u[
r3   