
    bi                    x   d 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
ddlZddlZddlmZ ddlmZmZmZmZmZmZmZmZ dd	lmZmZmZmZmZmZ dd
lm Z  ddl!m"Z" ddl#m$Z$  e       rddl%m&Z&  e       rddl'm(Z( ddl)m*Z*  ejV                  e,      Z-i dddddddddddddgdddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2i d3d4d5d6d7d8d9d:d;gd<d=d>gd?d@dAdBdCdDdEddFdGdHg dIdJdKdLgdMg dNdOdPdQdRdSdTdUgdVdWd&dXdYgg dZd[d\gd]d^d_g d`g dadb	Z.i ddcddiddcdeidfdcdgid#dcdhiddcdiid%dcdjidkdcdliddcdmiddcdnid!dcdoidpdcdqiddcdriddcdsid5dtdudvdwdtdxdvd7dydzdvd{dyd|dvi d9dcd}id<dcd~iddcdiddcdidAdcdiddcdidCdcdidEdcdidFdcdidHdcdiddcdiddcdiddcdiddcdidMdcdiddcdiddcdii ddcdiddcdiddcdiddcdiddcdidSdcdidVdcdiddcdiddcdiddcdiddcdiddcdiddcdiddcdiddcdiddcdiddcdidcdidcdidcdidcdidcdidcdidcdidZ/ddddddddddddZ0ddddddddddd͜
dddddҜdddddӜdԜdddddddddddٜ
dddddҜdddddӜdԜi ddړddۓddܓddݓddߓdddddddddddddddddddddddddddddddddddddd	ddZ1g dZ2dd ddddddddd	d
Z3ddgZ4dZ5dZ6dZ7dZ8ddgZ9dZ:ddgZ;g dZ< G d de=      Z>d Z?d Z@d ZAd ZB	 	 	 	 	 	 	 	 dRdZCdSdZDd ZEd ZFd  ZGd! ZHd" ZId# ZJd$ ZKd% ZLd& ZMd' ZNdTd(ZOd) ZP	 dUd*ZQdTd+ZRdVd,ZSdTd-ZTd. ZUd/ ZVd0 ZWd1 ZXdSd2ZYd3 ZZd4 Z[dTd5Z\	 dWd6Z]	 	 	 	 	 dXd7Z^	 dTd8Z_dYd9Z`d: Zad; Zbd< Zcd= Zdd> Zed? Zfd@ ZgdA Zh	 	 	 	 dZdBZidC ZjdD ZkdE ZldF ZmdG ZndH ZodI ZpdJ ZqdK ZrdL ZsdM ZtdN ZudO ZvdP ZwdQ Zxy([  z7Conversion script for the Stable Diffusion checkpoints.    N)nullcontext)BytesIO)urlparse   )load_state_dict)DDIMSchedulerDPMSolverMultistepSchedulerEDMDPMSolverMultistepSchedulerEulerAncestralDiscreteSchedulerEulerDiscreteSchedulerHeunDiscreteSchedulerLMSDiscreteSchedulerPNDMScheduler)SAFETENSORS_WEIGHTS_NAMEWEIGHTS_NAME	deprecateis_accelerate_availableis_transformers_availablelogging)DIFFUSERS_REQUEST_TIMEOUT)_get_model_file)empty_device_cache)AutoImageProcessor)init_empty_weights)load_model_dict_into_metav1z?model.diffusion_model.output_blocks.11.0.skip_connection.weightv2zMmodel.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weightxl_basezEconditioner.embedders.1.model.transformer.resblocks.9.mlp.c_proj.bias
xl_refinerzEconditioner.embedders.0.model.transformer.resblocks.9.mlp.c_proj.biasupscalez<model.diffusion_model.input_blocks.10.0.skip_connection.bias
controlnetz!control_model.time_embed.0.weight(controlnet_cond_embedding.conv_in.weightcontrolnet_xladd_embedding.linear_1.weightcontrolnet_xl_largezAdown_blocks.1.attentions.0.transformer_blocks.0.attn1.to_k.weightcontrolnet_xl_midz&down_blocks.1.attentions.0.norm.weightplayground-v2-5edm_mean
inpaintingz-model.diffusion_model.input_blocks.0.0.weightclipzLcond_stage_model.transformer.text_model.embeddings.position_embedding.weight	clip_sdxlzSconditioner.embedders.0.transformer.text_model.embeddings.position_embedding.weightclip_sd3zPtext_encoders.clip_l.transformer.text_model.embeddings.position_embedding.weight	open_clipz-cond_stage_model.model.token_embedding.weightopen_clip_sdxlz2conditioner.embedders.1.model.positional_embeddingopen_clip_sdxl_refinerz-conditioner.embedders.0.model.text_projectionopen_clip_sd3zPtext_encoders.clip_g.transformer.text_model.embeddings.position_embedding.weightstable_cascade_stage_bz$down_blocks.1.0.channelwise.0.weightstable_cascade_stage_cclip_txt_mapper.weightsd3z4joint_blocks.0.context_block.adaLN_modulation.1.biaszJmodel.diffusion_model.joint_blocks.0.context_block.adaLN_modulation.1.bias
sd35_largez&joint_blocks.37.x_block.mlp.fc1.weightz<model.diffusion_model.joint_blocks.37.x_block.mlp.fc1.weightanimatediffzjdown_blocks.0.motion_modules.0.temporal_transformer.transformer_blocks.0.attention_blocks.0.pos_encoder.peanimatediff_v2z9mid_block.motion_modules.0.temporal_transformer.norm.biasanimatediff_sdxl_betaz=up_blocks.2.motion_modules.0.temporal_transformer.norm.weightanimatediff_scribbleanimatediff_rgbz controlnet_cond_embedding.weightauraflow)zdouble_layers.0.attn.w2q.weightzdouble_layers.0.attn.w1q.weightcond_seq_linear.weightt_embedder.mlp.0.weightfluxz,double_blocks.0.img_attn.norm.key_norm.scalezBmodel.diffusion_model.double_blocks.0.img_attn.norm.key_norm.scale	ltx-video)z*model.diffusion_model.patchify_proj.weightz=model.diffusion_model.transformer_blocks.27.scale_shift_tablezpatchify_proj.weightz'transformer_blocks.27.scale_shift_tablez(vae.per_channel_statistics.mean-of-meansautoencoder-dcz.decoder.stages.1.op_list.0.main.conv.conv.biasautoencoder-dc-sanaencoder.project_in.conv.biasmochi-1-previewz0model.diffusion_model.blocks.0.attn.qkv_x.weightzblocks.0.attn.qkv_x.weighthunyuan-videoz@txt_in.individual_token_refiner.blocks.0.adaLN_modulation.1.biasz+model.diffusion_model.cap_embedder.0.weightzcap_embedder.0.weight)z#blocks.0.cross_attn.q_linear.weightz!blocks.0.cross_attn.q_linear.biasz$blocks.0.cross_attn.kv_linear.weightz"blocks.0.cross_attn.kv_linear.biasz%model.diffusion_model.head.modulationhead.modulation!decoder.middle.0.residual.0.gammazvace_blocks.0.after_proj.biasz4double_stream_blocks.0.block.adaLN_modulation.1.bias)net.x_embedder.proj.1.weight3net.blocks.block1.blocks.0.block.attn.to_q.0.weightz net.extra_pos_embedder.pos_emb_h)rG   z$net.blocks.0.self_attn.q_proj.weightz"net.pos_embedder.dim_spatial_range)	instruct-pix2pixlumina2sanawanwan_vaewan_vacehidream
cosmos-1.0
cosmos-2.0pretrained_model_name_or_pathz(stabilityai/stable-diffusion-xl-base-1.0z+stabilityai/stable-diffusion-xl-refiner-1.0
xl_inpaintz0diffusers/stable-diffusion-xl-1.0-inpainting-0.1z-playgroundai/playground-v2.5-1024px-aestheticz(stabilityai/stable-diffusion-x4-upscalerz1stable-diffusion-v1-5/stable-diffusion-inpaintinginpainting_v2z)stabilityai/stable-diffusion-2-inpaintingz"lllyasviel/control_v11p_sd15_cannyz#diffusers/controlnet-canny-sdxl-1.0z'diffusers/controlnet-canny-sdxl-1.0-midcontrolnet_xl_smallz)diffusers/controlnet-canny-sdxl-1.0-smallz stabilityai/stable-diffusion-2-1z+stable-diffusion-v1-5/stable-diffusion-v1-5zstabilityai/stable-cascadedecoder)rR   	subfolderstable_cascade_stage_b_litedecoder_litez stabilityai/stable-cascade-priorpriorstable_cascade_stage_c_lite
prior_litez/stabilityai/stable-diffusion-3-medium-diffusersz&stabilityai/stable-diffusion-3.5-largesd35_mediumz'stabilityai/stable-diffusion-3.5-mediumanimatediff_v1z&guoyww/animatediff-motion-adapter-v1-5z(guoyww/animatediff-motion-adapter-v1-5-2animatediff_v3z(guoyww/animatediff-motion-adapter-v1-5-3z+guoyww/animatediff-motion-adapter-sdxl-betaz&guoyww/animatediff-sparsectrl-scribblez!guoyww/animatediff-sparsectrl-rgbzfal/AuraFlow-v0.3flux-devzblack-forest-labs/FLUX.1-dev	flux-fillz!black-forest-labs/FLUX.1-Fill-dev
flux-depthz"black-forest-labs/FLUX.1-Depth-devflux-schnellz black-forest-labs/FLUX.1-schnellzdiffusers/LTX-Video-0.9.0ltx-video-0.9.1zdiffusers/LTX-Video-0.9.1ltx-video-0.9.5zLightricks/LTX-Video-0.9.5ltx-video-0.9.7zLightricks/LTX-Video-0.9.7-devautoencoder-dc-f128c512z,mit-han-lab/dc-ae-f128c512-mix-1.0-diffusersautoencoder-dc-f64c128z+mit-han-lab/dc-ae-f64c128-mix-1.0-diffusersautoencoder-dc-f32c32z*mit-han-lab/dc-ae-f32c32-mix-1.0-diffusersautoencoder-dc-f32c32-sanaz+mit-han-lab/dc-ae-f32c32-sana-1.0-diffuserszgenmo/mochi-1-previewz#hunyuanvideo-community/HunyuanVideorI   ztimbrooks/instruct-pix2pixrJ   zAlpha-VLLM/Lumina-Image-2.0rK   z1Efficient-Large-Model/Sana_1600M_1024px_diffuserswan-t2v-1.3Bz Wan-AI/Wan2.1-T2V-1.3B-Diffuserswan-t2v-14BzWan-AI/Wan2.1-T2V-14B-Diffuserswan-i2v-14Bz$Wan-AI/Wan2.1-I2V-14B-480P-Diffuserswan-vace-1.3Bz!Wan-AI/Wan2.1-VACE-1.3B-diffuserswan-vace-14Bz Wan-AI/Wan2.1-VACE-14B-diffusersrO   zHiDream-ai/HiDream-I1-Devcosmos-1.0-t2w-7Bz)nvidia/Cosmos-1.0-Diffusion-7B-Text2Worldz*nvidia/Cosmos-1.0-Diffusion-14B-Text2Worldz*nvidia/Cosmos-1.0-Diffusion-7B-Video2Worldz+nvidia/Cosmos-1.0-Diffusion-14B-Video2Worldz$nvidia/Cosmos-Predict2-2B-Text2Imagez%nvidia/Cosmos-Predict2-14B-Text2Imagez%nvidia/Cosmos-Predict2-2B-Video2Worldz&nvidia/Cosmos-Predict2-14B-Video2World)cosmos-1.0-t2w-14Bcosmos-1.0-v2w-7Bcosmos-1.0-v2w-14Bcosmos-2.0-t2i-2Bcosmos-2.0-t2i-14Bcosmos-2.0-v2w-2Bcosmos-2.0-v2w-14B   i      )r   r   rS   r'   r    r)   rT   r!   rI   r   r   time_embed.0.weightztime_embed.0.biasztime_embed.2.weightztime_embed.2.biaszinput_blocks.0.0.weightzinput_blocks.0.0.biaszout.0.weightz
out.0.biaszout.2.weightz
out.2.bias)
time_embedding.linear_1.weighttime_embedding.linear_1.biastime_embedding.linear_2.weighttime_embedding.linear_2.biasconv_in.weightconv_in.biaszconv_norm_out.weightzconv_norm_out.biaszconv_out.weightzconv_out.biaszlabel_emb.0.0.weightzlabel_emb.0.0.biaszlabel_emb.0.2.weightzlabel_emb.0.2.bias)zclass_embedding.linear_1.weightzclass_embedding.linear_1.biaszclass_embedding.linear_2.weightzclass_embedding.linear_2.bias)r$   zadd_embedding.linear_1.biaszadd_embedding.linear_2.weightzadd_embedding.linear_2.bias)layersclass_embed_typeaddition_embed_typezinput_hint_block.0.weightzinput_hint_block.0.biaszinput_hint_block.14.weightzinput_hint_block.14.bias)
r{   r|   r}   r~   r   r   r"   z&controlnet_cond_embedding.conv_in.biasz)controlnet_cond_embedding.conv_out.weightz'controlnet_cond_embedding.conv_out.biasencoder.conv_in.weightencoder.conv_in.biasencoder.conv_out.weightencoder.conv_out.biaszencoder.conv_norm_out.weightzencoder.norm_out.weightzencoder.conv_norm_out.biaszencoder.norm_out.biasdecoder.conv_in.weightdecoder.conv_in.biasdecoder.conv_out.weightdecoder.conv_out.biaszdecoder.conv_norm_out.weightzdecoder.norm_out.weightzdecoder.conv_norm_out.biaszdecoder.norm_out.biasquant_conv.weightquant_conv.biaspost_quant_conv.weightpost_quant_conv.biaspositional_embeddingztoken_embedding.weightzln_final.weightzln_final.biastext_projection)z/text_model.embeddings.position_embedding.weightz,text_model.embeddings.token_embedding.weightz"text_model.final_layer_norm.weightz text_model.final_layer_norm.biastext_projection.weightz
resblocks.ln_1ln_2z.c_fc.z.c_proj.z.attnz	ln_final.)	ztext_model.encoder.layers.layer_norm1layer_norm2z.fc1.z.fc2.z
.self_attnz(transformer.text_model.final_layer_norm.z8transformer.text_model.embeddings.token_embedding.weightz;transformer.text_model.embeddings.position_embedding.weight)r   transformer)unetr!   vaeopenclip)zAcond_stage_model.model.transformer.resblocks.23.attn.in_proj_biaszCcond_stage_model.model.transformer.resblocks.23.attn.in_proj_weightzBcond_stage_model.model.transformer.resblocks.23.attn.out_proj.biaszDcond_stage_model.model.transformer.resblocks.23.attn.out_proj.weightz9cond_stage_model.model.transformer.resblocks.23.ln_1.biasz;cond_stage_model.model.transformer.resblocks.23.ln_1.weightz9cond_stage_model.model.transformer.resblocks.23.ln_2.biasz;cond_stage_model.model.transformer.resblocks.23.ln_2.weightz=cond_stage_model.model.transformer.resblocks.23.mlp.c_fc.biasz?cond_stage_model.model.transformer.resblocks.23.mlp.c_fc.weightz?cond_stage_model.model.transformer.resblocks.23.mlp.c_proj.biaszAcond_stage_model.model.transformer.resblocks.23.mlp.c_proj.weightz&cond_stage_model.model.text_projectionscaled_linearg_QK?g~jt?linear  epsilon      ?FT   leading)beta_schedule
beta_startbeta_endinterpolation_typenum_train_timestepsprediction_typesample_max_valueset_alpha_to_oneskip_prk_stepssteps_offsettimestep_spacingzfirst_stage_model.vae.g{P?      ?model.diffusion_model.zcontrol_model.zcond_stage_model.transformer.z$conditioner.embedders.0.transformer.r   scheduler_type)zhttps://huggingface.co/zhuggingface.co/zhf.co/zhttps://hf.co/c                         e Zd Zd fd	Z xZS )SingleFileComponentErrorc                 F    || _         t        | 	  | j                          y N)messagesuper__init__)selfr   	__class__s     ^/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/diffusers/loaders/single_file_utils.pyr   z!SingleFileComponentError.__init__y  s    &    r   )__name__
__module____qualname__r   __classcell__)r   s   @r   r   r   x  s    ' 'r   r   c                 L    t        |       }|j                  r|j                  ryy)NTF)r   schemenetloc)urlresults     r   is_valid_urlr   ~  s    c]F}}r   c                 J   t        |       st        d      d}d }d}t        D ]  }| j                  |d      }  t	        j
                  ||       }|st        j                  d       ||fS |j                  d       d|j                  d       }|j                  d	      }||fS )
NzOInvalid `pretrained_model_name_or_path` provided. Please set it to a valid URL.z#([^/]+)/([^/]+)/(?:blob/main/)?(.+)r    zFUnable to identify the repo_id and weights_name from the provided URL.r   /r      )	r   
ValueErrorVALID_URL_PREFIXESreplacerematchloggerwarninggroup)rR   patternweights_namerepo_idprefixr   s         r   !_extract_repo_id_and_weights_namer     s    56jkk4GLG$ Z(E(M(MfVX(Y%ZHHW;<E_`$$Q %++a.!12G;;q>LL  r   c                     t         j                  j                  | |      }d}t        t        fD ]B  }t         j                  j                  t         j                  j                  ||            sAd}D |S )NFT)ospathjoinr   r   isfile)cached_foldernamerR   weights_existr   s        r   "_is_model_weights_in_cached_folderr     s^    $&GGLL$E!M%'?@ !77>>"'',,'DlST M! r   c                 B    t        d | j                         D              S )Nc              3   ,   K   | ]  }|t         v   y wr   )SCHEDULER_LEGACY_KWARGS.0ks     r   	<genexpr>z._is_legacy_scheduler_kwargs.<locals>.<genexpr>  s     Cq++Cs   )anykeys)kwargss    r   _is_legacy_scheduler_kwargsr     s    CV[[]CCCr   c	                     |ddd}t         j                  j                  |       r| } n"t        |       \  }	}
t	        |	|
|||||||	      } t        | |      }d|v r
|d   }d|v r
|S )Nsingle_filepytorch)	file_type	framework)r   force_download	cache_dirproxieslocal_files_onlytokenrevision
user_agent)disable_mmap
state_dict)r   r   r   r   r   r   )pretrained_model_link_or_pathr   r   r   r   r   r   r   r   r   r   
checkpoints               r   load_single_file_checkpointr     s     #0yI
	ww~~34(E% !BB_ `(7%)-!
)
% !!>\ZJ *
$-
 *
$ r   c                 v   t         j                  j                  |       r&t        | d      5 }|j	                         } d d d        nRt        |       r<|rt        d      t        t        j                  | t              j                        } nt        d      t        j                  |       }|S # 1 sw Y    xY w)Nrz|`local_files_only` is set to True, but a URL was provided as `original_config_file`. Please provide a valid local file path.)timeoutzSInvalid `original_config_file` provided. Please set it to a valid file path or URL.)r   r   r   openreadr   r   r   requestsgetr   contentyaml	safe_load)original_config_filer   fporiginal_configs       r   fetch_original_configr	    s    	ww~~*+&, 	-#%779 	- 	- 
*	+: 
  'x||4HRk'l't'tu noonn%9:O#	- 	-s   B//B8c                     t         d   | v ryy)Nr*   TFCHECKPOINT_KEY_NAMESr   s    r   is_clip_modelr    s    F#z1r   c                     t         d   | v ryy)Nr+   TFr  r  s    r   is_clip_sdxl_modelr        K(J6r   c                     t         d   | v ryy)Nr,   TFr  r  s    r   is_clip_sd3_modelr    s    J':5r   c                     t         d   | v ryy)Nr-   TFr  r  s    r   is_open_clip_modelr    r  r   c                     t         d   | v ryy)Nr.   TFr  r  s    r   is_open_clip_sdxl_modelr    s    ,-;r   c                     t         d   | v ryy)Nr0   TFr  r  s    r   is_open_clip_sd3_modelr  
  s    O,
:r   c                     t         d   | v ryy)Nr/   TFr  r  s    r   is_open_clip_sdxl_refiner_modelr    s    45Cr   c           
          t        t        |      t        |      t        |      t	        |      t        |      t        |      g      }| j                  dk(  s| j                  dk(  r|ryy)NCLIPTextModelCLIPTextModelWithProjectionTF)r   r  r  r  r  r  r  r   )	class_objr   is_clip_in_checkpoints      r   is_clip_model_in_single_filer!    si    *%j)z*#J/+J7":.	
	 	o-1C1CGd1d
r   c                      t         d    v rZ t         d      j                  d   dk(  r>t         d    v r  t         d      j                  d   dk(  rd}|S t         d    v rd	}|S d}|S t         d    v r  t         d      j                  d   dk(  rd}|S t         d
    v rd
}|S t         d    v rd}|S t         d    v rd}|S t         d    v rd}|S t         fdt         d   D              r1t         d    v r"t         d    v rd}|S t         d    v rd}|S d}|S d}|S t         d    v r  t         d      j                  d   dk(  rd}|S t         d    v r  t         d      j                  d   dk(  rd}|S t         d    v r  t         d      j                  d   dk(  rd}|S t         d    v r  t         d      j                  d   dk(  rd}|S t         fdt         d   D              rVt         fdt         d   D              r;d v rd}nd } |   j                  d   d!k(  rd}|S  |   j                  d   d"k(  rd#}S t         fd$t         d%   D              rd%}|S t         d&    v rqt         d'    v rd'}|S t         d(    v rd(}|S t         d)    v rd)}|S  t         d*      j                  d   d+k(  rd*}|S  t         d&      j                  d   d,k(  rd-}|S d.}|S t         fd/t         d0   D              rWt         fd1d2D              r?d3 v rd3}nd4} |   j                  d   d5k(  rd6}|S  |   j                  d   d7k(  rd8}|S d9}|S d:}|S t         fd;t         d<   D              rAd= v }t        d>  D              rd?}|S |r d@   j                  d   dk(  rdA}|S dB v rdC}|S d<}|S t         dD    v rsdE}dF}t         dG    v rdH}|S  |   j                  d   dIk(  r |   j                  d   dJk(  rdK}|S  |   j                  d   dIk(  r |   j                  d   d7k(  rdL}|S dM}|S t         fdNt         dO   D              rdO}|S t         dP    v rdP}|S t         fdQt         dR   D              rdR}|S t         dS    v r  t         dS      j                  d   dTk(  rdS}|S t         fdUt         dV   D              rdV}|S t         fdWt         dX   D              rdX}|S t         fdYt         dZ   D              rd[ v rd[}nd\}t         d]    v r2 |   j                  d   dk(  rd^}|S  |   j                  d   d_k(  rMd`}|S  |   j                  d   dk(  rda}|S  |   j                  d   d_k(  r |   j                  d   dbk(  rdc}|S dd}S t         de    v rdc}|S t         df    v rdf}|S t         fdgt         dh   D              rT t         dh   d      j                  }|d   dik(  r|d   djk(  rdkndl}|S |d   dmk(  r|d   djk(  rdnndo}|S t	        dp| dq      t         fdrt         ds   D              rT t         ds   d      j                  }|d   dik(  r|d   dk(  rdtndu}|S |d   dmk(  r|d   dk(  rdvndw}|S t	        dp| dx      dy}|S )zNr)   r   	   r   rx   rT   r   rS   r'   r   r    c              3   &   K   | ]  }|v  
 y wr    r   keyr   s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>F       M3SJM   r!   r#   r%   r&   rU   r2   r   i   r[      r1   i@  rX   i  c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>i       F3SJFr*  r4   c              3   T   K   | ]  }|v r|   j                   d    dk(  nd ! yw)r$  i $  FNshaper'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>i  s8      ONQSJ->
3b!T)EIOs   %(zmodel.diffusion_model.pos_embed	pos_embedi   i @ r]   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>v  r)  r*  r5   r6   r9   r:   r7   r8   i@     r^   r_   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>       G3SJGr*  r>   c              3   &   K   | ]  }|v  
 y wr   r&  )r   gr   s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s      
 !AO
r*  )guidance_in.in_layer.biasz/model.diffusion_model.guidance_in.in_layer.biasz#model.diffusion_model.img_in.weightimg_in.weighti  ra      rb   r`   rc   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s     L3SJLr*  r?   zvae.encoder.conv_in.conv.biasc              3   >   K   | ]  }|j                  d         yw)z'transformer_blocks.47.scale_shift_tableN)endswithr   r(  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s     ]3s||EF]   rf    vae.encoder.conv_out.conv.weightre   @vae.decoder.last_time_embedder.timestep_embedder.linear_1.weightrd   r@   z!encoder.project_in.conv.conv.biasz#decoder.project_in.main.conv.weightrA   rj   @       ri   rh   rg   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s     R3SJRr*  rC   rD   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s     K3SJKr*  r;   rI      c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  s     J3SJJr*  rJ   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  r5  r*  rK   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  r-  r*  rL   z,model.diffusion_model.patch_embedding.weightzpatch_embedding.weightrN   rn   i   ro   rk      rl   rm   rM   rO   c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  r)  r*  rP   D   i   rp   rq   H   rr   rs   zUnexpected x_embedder shape: z when loading Cosmos 1.0 model.c              3   &   K   | ]  }|v  
 y wr   r&  r'  s     r   r   z-infer_diffusers_model_type.<locals>.<genexpr>  r)  r*  rQ   rt   ru   rv   rw   z when loading Cosmos 2.0 model.r   )r  r0  r   allr   )r   
model_typer(  has_vaeencoder_keydecoder_key
target_keyx_embedder_shapes   `       r   infer_diffusers_model_typerV  +  s	   \*j8+L9:@@CqH%3
CWX\C]8^8d8deg8hlp8p(JX W "),
:%JT Q &JP M 
d	#z	1jAUVZA[6\6b6bce6fjn6n
J G 
/	0J	>&
D A 
i	(J	6
~ { 
l	+z	9!
x u 
i	(J	6
r o 
M*>|*LM	M0J>#$9:jH2
h g &&9:jH0
d a 3
` ] &J\ W 	56*D+,DEFLLQOSWW2
P K 	56*D+,DEFLLQOSWW-
D  	56*D+,DEFLLRPTWW2
x s 	56*D+,DEFLLRPTWW-
l i 
F*>u*EF	F3 OUijoUpO L -
:3CCc?  #u,JV U _""1%/&JR O 
M*>|*LM	M!
L I 
m	,
	: 67:E/JD A ""34
B*J~ { ""23zA)Jx u ,-DEFLLRPTWW0Jr o ,];<BB1EK)Jl g *Jf c 
G*>v*FG	G 
%u
 
 5
B;%#$$Q'3.(
N M C&&q)S0)
J G (
F C (JB  
L*>{*KL	L1Z?]R\]]*Jx w $FGMMaPTXX*Jt s PS]]*Jp m %Jl i 
.	/:	=9; 56*D5J^ [ $**2."4K9P9V9VWX9Y]_9_0JX U $**2."4K9P9V9VWX9Y]`9`1JR M 3JL I 
R*>?P*QR	R&
F C 
o	.*	<$
@ } 
K*>z*JK	K
z u 	/0J>+,>?@FFqIQN'
n k 
J*>y*IJ	J
h e 
G*>v*FG	G
b _ 
F*>u*EF	F9ZGGJ1J
+z9*%++A.$6,
N M J'--a0D8+
J G 
#))!,4'JD C 
#))!,4J9O9U9UVW9X\^9^&J@ = 'J< 9 
i	(J	6"
4 1 
i	(J	6
. + 
M*>|*LM	M%&:<&H&KLRRA"$0@0Ct0K,QeJ$ # a B&0@0Ct0K,QeJ   <=M<NNmnoo	M*>|*LM	M%&:<&H&KLRRA"$0@0Ct0K,QeJ  a B&0@0Ct0K,QeJ  <=M<NNmnoo 
r   c                 X    t        |       }t        |   }t        j                  |      }|S r   )rV   DIFFUSERS_DEFAULT_PIPELINE_PATHScopydeepcopy)r   rP  
model_paths      r   fetch_diffusers_configr\     s*    +J7J1*=Jz*Jr   c                 6    |r|S t        |       }t        |   }|S r   )rV  'DIFFUSERS_TO_LDM_DEFAULT_IMAGE_SIZE_MAP)r   
image_sizerP  s      r   set_image_sizer`    s%    +J7J8DJr   c                 8   t        | j                               }g d}|D ]x  }dj                  |j                  d      dd        |v r'| |   j                  dkD  s;| |   d d d d ddf   | |<   Od|v sT| |   j                  dkD  sg| |   d d d d df   | |<   z y )N)zquery.weightz
key.weightzvalue.weight.r   r   zproj_attn.weight)listr   r   splitndim)r   r   	attn_keysr(  s       r   conv_attn_to_linearrh    s    
!"D>I ;88CIIcN23'(I5###a'",S/!Q1*"=
33&###a'",S/!Q'":
3;r   c                    |d}t        dd|       t        ||      }d| d   d   v r| d   d   d   | d   d   d   d   }n| d   d   d	   d   }|d
}t        dd|       |}n|d   }| d   d   d   d   d   }|d   D 	cg c]
  }	|d   |	z   }
}	g }d}t        t        |
            D ]5  }||d   v rdnd}|j	                  |       |t        |
      dz
  k7  s1|dz  }7 g }t        t        |
            D ]#  }||d   v rdnd}|j	                  |       |dz  }% |d   't        |d   t              r|d   nt        |d         }nd}dt        |d         dz
  z  }d|v r|d   nd}d|v r|d   nd}|r+|)|d   |d   z  }t        |d         D cg c]  }||z  	 }}d}d}d}d}d}|d    t        |d   t              r|d   n|d   d   }d|v r|d   d k(  r|d!v rd"}d#}nd$}d%|v sJ |d%   }||z  |||
|d&   ||||||||d'}|d(}t        dd|       ||d)<   d*|v r|d*   |d+<   d|v rt        |d   t              r|d   |d,<   |d-   |d-<   ||d.<   |S c c}	w c c}w )/R
    Creates a config for the diffusers based on the config of the LDM model.
    NzConfiguring UNet2DConditionModel with the `image_size` argument to `from_single_file`is deprecated and will be ignored in future versions.r_  1.0.0r_  unet_configmodelparamsnetwork_configzConfiguring UNet2DConditionModel with the `num_in_channels` argument to `from_single_file`is deprecated and will be ignored in future versions.in_channelsfirst_stage_configddconfigchannel_multmodel_channelsr   attention_resolutionsCrossAttnDownBlock2DDownBlock2Dr   CrossAttnUpBlock2D	UpBlock2Dtransformer_depthch_mult	num_headsuse_linear_in_transformerFnum_head_channelscontext_dimr   num_classes
sequential)r+  i   	text_time   
projectionadm_in_channelsnum_res_blocks)sample_sizerq  down_block_typesblock_out_channelslayers_per_blockcross_attention_dimattention_head_dimuse_linear_projectionr   r   addition_time_embed_dim%projection_class_embeddings_input_dimtransformer_layers_per_blockzConfiguring UNet2DConditionModel with the `upcast_attention` argument to `from_single_file`is deprecated and will be ignored in future versions.upcast_attentiondisable_self_attentionsonly_cross_attentionnum_class_embedsout_channelsup_block_types)r   r`  rangelenappend
isinstanceintrd  )r  r   r_  r  num_in_channelsdeprecation_messageunet_paramsrq  
vae_paramsmultr  r  
resolutioni
block_typer  r  vae_scale_factorhead_dimr  head_dim_multcr   r   r  r  r  configs                               r   %create_unet_diffusers_config_from_ldmr    s    D 	 	,)<=
zBJ 	1(;;G$X.}=I%g.x8GQ%g.x89IJ8T"D 	 	,)<=%!-0 )(34HI(ST^_JKVWeKfg4+&67$>ggJ3)*+ /9[I`=a/a+gt

+&'!++!OJ	 N3)*+ -7;G^;_-_)ep
j)q

 &'3 +&9:C@ +,k"567 	% ()$SI!67!;<+6++E{;'4H4OS^4^/0di  '(89[I\=]]M37N8S3TUa)UHU",0)K=!- +m4c: &]+A. 	 #}%5l*&1#*-'#/ $3334?@Q4R1 "%55",0'(89*&!6,2#:1V(DF  #D 	 	,)<=%5!" K/)45N)O%&#
;}3Ms(S%0%?!"(8F>-FM} hF Vs   II c                     |d}t        dd|       t        ||      }| d   d   d   d   }t        | |      }|d   |d	   |d
   |d   |d   |d   |d   |d   |d   |d   |d   |d   |d   d}|S )NzoConfiguring ControlNetModel with the `image_size` argumentis deprecated and will be ignored in future versions.r_  rk  rl  rn  ro  control_stage_confighint_channelsrq  r  r  r  r  r  r  r   r   r  r  r  )conditioning_channelsrq  r  r  r  r  r  r  r   r   r  r  r  )r   r`  r  )r  r   r_  r   r  r  diffusers_unet_configcontrolnet_configs           r   +create_controlnet_diffusers_config_from_ldmr    s    D 	 	,)<=
zBJ!'*845KLXVKA/^hi "-_!=,];12DE34HI12DE45JK34HI!67N!O12DE45JK#89R#S1FGn1o(=>\(]  r   c           
         |d}t        dd|       t        ||      }d|v rd|v r|d   }|d   }nd}d}| d   d	   d
   d	   d   }||	|t        }n |d| d   d	   v r| d   d	   d   }n|t        }|d   D cg c]
  }|d   |z   }	}dgt	        |	      z  }
dgt	        |	      z  }||d   |d   |
||	|d   |d   |d	}|||j                  ||d       |S c c}w )rj  NzmConfiguring AutoencoderKL with the `image_size` argumentis deprecated and will be ignored in future versions.r_  rk  rl  r(   edm_stdrn  ro  rr  rs  scale_factorr|  chDownEncoderBlock2DUpDecoderBlock2Drq  out_ch
z_channelsr  )	r  rq  r  r  r  r  latent_channelsr  scaling_factor)latents_meanlatents_std)r   r`  PLAYGROUND_VAE_SCALING_FACTORLDM_VAE_DEFAULT_SCALING_FACTORr  update)r  r   r_  r  r  r  r  r  r  r  r  r  r  s                r   $create_vae_diffusers_config_from_ldmr    su    D 	 	,)<=
zBJZI$;!*- + )(34HI(ST^_J\%=KD[6

 ~9QRZ9['[(1(;NK		7>H>STd*T*T1TT,-4F0GG()C0B,CCN "!-0"8,,(0%l3&'78(
F K$;|KPQM% Us   ;Cc                 2   | D ]  }|j                  dd      j                  dd      j                  dd      j                  dd      j                  d	d
      j                  dd      }|r|j                  |d   |d         }|j                  |      ||<    y )Nzin_layers.0norm1zin_layers.2conv1zout_layers.0norm2zout_layers.3conv2zemb_layers.1time_emb_projskip_connectionconv_shortcutoldnewr   r  ldm_keysnew_checkpointr   mappingldm_keydiffusers_keys         r   #update_unet_resnet_ldm_to_diffusersr    s     @OOM73W]G,W^W-W^W-W^_5W&8 	 )11'%.'%.QM(2w(?}%@r   c                 j    | D ].  }|j                  |d   |d         }|j                  |      ||<   0 y )Nr  r  r  r  s         r   &update_unet_attention_ldm_to_diffusersr    s>     @G(2w(?}%@r   c                     | D ]>  }|j                  |d   |d         j                  dd      }|j                  |      ||<   @ y )Nr  r  nin_shortcutr  r  )r   r  r   r  r  r  s         r   "update_vae_resnet_ldm_to_diffusersr  
  sM     @GOOP^`op(2w(?}%@r   c                 V   | 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                  |      ||<   ||   j                  }t        |      dk(  r||   d d d d df   ||<   t        |      dk(  s||   d d d d ddf   ||<   & y )Nr  r  znorm.weightzgroup_norm.weightz	norm.biaszgroup_norm.biaszq.weightto_q.weightzq.bias	to_q.biaszk.weightto_k.weightzk.bias	to_k.biaszv.weightto_v.weightzv.bias	to_v.biasproj_out.weightto_out.0.weightproj_out.biasto_out.0.biasr   r      )r   r  r0  r  )r   r  r   r  r  r  r0  s          r   &update_vae_attentions_ldm_to_diffusersr    s     VOOGENGEN;W]$78W["34WZ/WX{+WZ/WX{+WZ/WX{+W&(9:W_o6 	 )3w(?}% }-33u:?,:=,I!QPQ',RN=)Z1_,:=,I!QPQST*,UN=)-Vr   c                 0   d| v }|r[i }| j                         D ]C  }|j                  d      r^| |   j                  dd      }|d   ||j                  dd      <   |d   ||j                  dd      <   |d	   ||j                  dd
      <   s|j                  d      r^| |   j                  dd      }|d   ||j                  dd      <   |d   ||j                  dd      <   |d	   ||j                  dd      <   |j                  d      r| |   }|||j                  dd      <   |j                  d      r| |   }|||j                  dd      <   <| |   ||<   F |S i }| j                         D ]  }|j                  d      r^| |   j                  dd      }|d   ||j                  dd      <   |d   ||j                  dd      <   |d	   ||j                  dd
      <   s|j                  d      r^| |   j                  dd      }|d   ||j                  dd      <   |d   ||j                  dd      <   |d	   ||j                  dd      <   |j                  d      r| |   }|||j                  dd      <   |j                  d      r| |   }|||j                  dd      <   <|j                  d      r| |   }|||j                  dd      <   i|j                  d      r| |   }|||j                  dd      <   | |   ||<    |S )Nr3   in_proj_weightr   r   zattn.in_proj_weightr  r   r  r   r  in_proj_biaszattn.in_proj_biasr  r  r  zout_proj.weightzattn.out_proj.weightr  zout_proj.biaszattn.out_proj.biasr  zclip_mapper.weightzclip_txt_pooled_mapper.weightzclip_mapper.biaszclip_txt_pooled_mapper.bias)r   r=  chunkr   )r   r   
is_stage_cr   r(  weightss         r   4convert_stable_cascade_unet_single_file_to_diffusersr  *  sP   )Z7J
??$ 	2C||,-$S///15PWXYPZ
3;;'<mLMPWXYPZ
3;;'<mLMPWXYPZ
3;;'<mLMn-$S///15LSTUJ
3;;':KHILSTUJ
3;;':KHILSTUJ
3;;':KHI/0$S/U\
3;;'=?PQRo.$S/QX
3;;';_MN",S/
3%	2` 9 
??$ 	2C||,-$S///15PWXYPZ
3;;'<mLMPWXYPZ
3;;'<mLMPWXYPZ
3;;'<mLMn-$S///15LSTUJ
3;;':KHILSTUJ
3;;':KHILSTUJ
3;;':KHI/0$S/U\
3;;'=?PQRo.$S/QX
3;;';_MN23$S/ah
3;;';=\]^01$S/]d
3;;'9;XYZ",S/
33	26 r   c                 t   i }t        | j                               }t        }t        d |D              dkD  r|rt        j                  d       t        j                  d       |D ]^  }|j                  d      sddj                  |j                  d      d	d
       z   }| j                  |      ||j                  |d      <   ` ngt        d |D              dkD  rt        j                  d       |D ]8  }|j                  |      s| j                  |      ||j                  |d      <   : i }	t        d   d   }
|
j                         D ]  \  }}||vr||   |	|<    d|v r3|d   dv r,t        d   d   }|j                         D ]  \  }}||   |	|<    d|v r4|d   dk(  r,t        d   d   }|j                         D ]  \  }}||   |	|<    d|v r|d   d|v r|d   |	d<   t        |D ch c]*  }d|v sdj                  |j                  d      d
d       , c}      }t        |      D ci c]  }||D cg c]  }d| |v s| c} }}}t        |D ch c]*  }d|v sdj                  |j                  d      d
d       , c}      }t        |      D ci c]  }||D cg c]  }d| |v s| c} }}}t        |D ch c]*  }d|v sdj                  |j                  d      d
d       , c}      }t        |      D ci c]  }||D cg c]  }d| |v s| c} }}}t        d	|      D ]  }|d	z
  |d   d	z   z  }|d	z
  |d   d	z   z  }||   D cg c]  }d| d|v sd| d|vs| }}t        ||	|d| dd | d!| d"       d| d#|v r8|j                  d| d#      |	d | d$<   |j                  d| d%      |	d | d&<   ||   D cg c]  }d| d'|v s| }}|st!        ||	|d| d'd | d(| d"        |j                         D ]P  }t#        |d	z
  d)      }|dz  d)k(  rt        ||   |	|d| d*| d"+       6t!        ||   |	|d| d,| d"+       R t        |      D ]  }||d   d	z   z  }||d   d	z   z  }||   D cg c]  }d| d|v sd| d|vs| }}t        ||	|d| dd-| d!| d"       ||   D cg c]  }d| d'|v sd| d.|vs| }}|rt!        ||	|d| d'd-| d(| d"       d| d/|v r |d| d/   |	d-| d0<   |d| d1   |	d-| d2<   d| d3|v s|d| d3   |	d-| d0<   |d| d4   |	d-| d2<    |	S c c}w c c}w c c}}w c c}w c c}w c c}}w c c}w c c}w c c}}w c c}w c c}w c c}w c c}w )5zN
    Takes a state dict and a config, and returns a converted checkpoint.
    c              3   >   K   | ]  }|j                  d         yw	model_emaN
startswithr   s     r   r   z.convert_ldm_unet_checkpoint.<locals>.<genexpr>l  s     
31<<$
3r?  d   z,Checkpoint has both EMA and non-EMA weights.zIn this conversion only the EMA weights are extracted. If you want to instead extract the non-EMA weights (useful to continue fine-tuning), please make sure to remove the `--extract_ema` flag.zmodel.diffusion_modelz
model_ema.r   rb  r   Nc              3   >   K   | ]  }|j                  d         ywr  r  r   s     r   r   z.convert_ldm_unet_checkpoint.<locals>.<genexpr>w  s     7Qq||K(7r?  zIn this conversion only the non-EMA weights are extracted. If you want to instead extract the EMA weights (usually better for inference), please make sure to add the `--extract_ema` flag.r   r   r   )timestepr  r   r  r  zlabel_emb.weightzclass_embedding.weightinput_blocksr   input_blocks.middle_blockmiddle_block.output_blockszoutput_blocks.r  .0.0.opdown_blocks.	.resnets.r  r  .0.op.weight.downsamplers.0.conv.weight
.0.op.bias.downsamplers.0.conv.bias.1.attentions.r   mid_block.resnets.r  mid_block.attentions.
up_blocks.z.1.convz.1.conv.weight.upsamplers.0.conv.weightz.1.conv.bias.upsamplers.0.conv.biasz.2.conv.weightz.2.conv.bias)rd  r   LDM_UNET_KEYsumr   r   r  r   re  r  r   DIFFUSERS_TO_LDM_MAPPINGitemsr  r  r  r  max)r   r  extract_emar   unet_state_dictr   unet_keyr(  flat_ema_keyr  ldm_unet_keysr  r  class_embed_keysaddition_embed_keyslayernum_input_blockslayer_idr  num_middle_blocksmiddle_blocksnum_output_blocksr  r  block_idlayer_in_block_idresnets
attentionss                               r   convert_ldm_unet_checkpointr"  b  s,   
 O
!"DH 
3d
33c9kEFn	
  	ZC~~56+bggciinQR6H.II=G^^L=YHb 9:	Z
 7$77#=NNm  	QC~~h'=G^^C=PHb 9:	Q N,V4X>M"/"5"5"7 Aw/)(7(@}%A
 	f$62D+EIc+c3F;<NO&6&<&<&> 	E"M7,;G,DN=)	E 	'f5J.K{.Z6v>?TU&9&?&?&A 	E"M7,;G,DN=)	E V#%&29K9^7FGY7ZN34 su[imr[rCHHU[[%5bq%9:st ./ 	/W3}XJ5OSV5V3WWL  t\jns\sSXXekk#&6r&:;tu /0 	/W3}XJ5OSV5V3WWM  u\kot\tSXXekk#&6r&:;uv /0 	/X3~hZ5PTW5W3XXM  1&' Ev&89A=>Uv.@'AA'EF (?
aS.Cs.JQ^_`^aafOgorOrC
 
 	,#A3b)L
)TeSf2gh		
 1#\*o=SbSfSfs,/TN\(3NOP RaQdQds*-RN\(3LMN &2!_Uc-s"8MQT8TcU
U2's"-XJl[lZm6no	1@ !!# C!GQ7a</c""/u 5@RS`Ra>bc	 3c""/u 5@UVcUd>ef	$ $% & 23a78(:!;a!?@ )+
s"/E/LSabcaddiQjruQuC
 
 	,$QCr*ZzSdRe3fg		
 )+
s"/E/LSabcaddkQltwQwC

 
 2(2.H:\ZkYl7mn	 A3n-@O^ >2PNZz1JKL N] <0NNZz1HIJ A3n-@O^ >2PNZz1JKL N] <0NNZz1HIJI&P _ tW uW vX
$ V@

s   .	U68%U62
V <U;	U;V 	V(%V"
V,V9V=V	V%V
V V)V-V 'V&5V&>V&&V+4V+(V06V0?V0'V55V5>V5;V VV c                 
   d| v r| S d| v r| }n^i }t        | j                               }t        }|D ]8  }|j                  |      s| j	                  |      ||j                  |d      <   : i }t        d   d   }|j                         D ]  \  }	}
|
|vr||
   ||	<    t        |D ch c]*  }d|v sdj                  |j                  d      d d       , c}      }t        |      D ci c]  }||D cg c]  }d	| |v s| c} }}}t        d
|      D ]  }|d
z
  |d   d
z   z  }|d
z
  |d   d
z   z  }||   D cg c]  }d	| d|v sd	| d|vs| }}t        |||d	| dd| d| d       d	| d|v r8|j	                  d	| d      |d| d<   |j	                  d	| d      |d| d<   ||   D cg c]  }d	| d|v s| }}|st        |||d	| dd| d| d        t        |      D ]:  }|j	                  d| d      |d| d<   |j	                  d| d      |d| d<   < t        |D ch c]*  }d|v sdj                  |j                  d      d d       , c}      }t        |      D ci c]  }||D cg c]  }d| |v s| c} }}}|j                         D ]P  }t        |d
z
  d      }	|dz  dk(  rt        ||   ||d| d |	 d!       6t        ||   ||d| d"|	 d!       R |j	                  d#      |d$<   |j	                  d%      |d&<   |D ch c]1  }d'|v r+d(|vr'd)|vr#dj                  |j                  d      d d       3 }}t        |      }t        d
|d
z         D ]D  }|d
z
  }d|z  }|j	                  d*| d      |d+| d<   |j	                  d*| d      |d+| d<   F |S c c}w c c}w c c}}w c c}w c c}w c c}w c c}w c c}}w c c}w ),Nr{   rz   r   r!   r   r  rb  r   r  r   r  r  r  r  r  r  r   r  r  r  r  r  zzero_convs.z	.0.weightzcontrolnet_down_blocks..weightz.0.biasz.biasr  r  r   r  r  r  zmiddle_block_out.0.weightzcontrolnet_mid_block.weightzmiddle_block_out.0.biaszcontrolnet_mid_block.biasinput_hint_blockzinput_hint_block.0zinput_hint_block.14zinput_hint_block.z!controlnet_cond_embedding.blocks.)rd  r   LDM_CONTROLNET_KEYr  r  r   r  r  r  r   re  r  r  r  r  )r   r  r   controlnet_state_dictr   controlnet_keyr(  r  ldm_controlnet_keysr  r  r  r  r  r  r  r  r  r   r!  r  r  cond_embedding_blocksnum_cond_embedding_blocksidxdiffusers_idxcond_block_ids                              r   convert_controlnet_checkpointr/  	  s    (:5 
* * !#JOO%&+ 	]C~~n-ISX[I\%ckk."&EF	] N2<@J"5";";"= Gw//(=g(F}%G 5JfEn`eNe%++c"2A&	'f
 ./ 	"7]3]8*;UY\;\3]]L  1&' Ev&89A=>Uv.@'AA'EF (?
aS.Cs.JQ^_`^aafOgorOrC
 
 	,!#A3b)L
)TeSf2gh		
 1#\*.CCShSlSls,/TN\(3NOP RgQjQjs*-RN\(3LMN &2!_Uc-s"8MQT8TcU
U2%'s"-XJl[lZm6no	1@ #$ q?T?X?X[fghfiirYs?t07;<=R=V=VYdefdggnWo=p059:q
 5JfEn`eNe%++c"2A&	'f
 /0 	"7]3]8*;UY\;\3]]M  !!# C!GQ7a</c"%"/u 5@RS`Ra>bc	 3c"%"/u 5@UVcUd>ef	$ 5J4M4MNi4jN012G2K2KLe2fN./
 +&,@,MTiqvTv 	S!"1%& 
 !$$9 :Q1A56 	
aCUjUnUng6V
:=/QR TiSlSle4T
:=/OP	
 } 	g ^
$ V  	g ^8sx   (	O2%O,
O 6OOO O&O&O& O+O+	O0%O0	
O:O5 O5$O:;6P O 5O:c           
         i }t        | j                               }d}t        D ]  t        fd|D              s} |D ]8  }|j	                  |      s| j                  |      ||j                  |d      <   : i }t        d   }|j                         D ]  \  }}	|	|vr||	   ||<    t        |d         }
t        |
      D ci c]  }||D cg c]  }d| |v s| c} }}}t        |
      D ]  }||   D cg c]  }d| |v sd| d|vs| }}t        |||d| dd| d	d
       d| d|v sI|j                  d| d      |d| d<   |j                  d| d      |d| d<    |D cg c]	  }d|v s| }}d}t        d|dz         D ]4  }|D cg c]  }d| |v s| }}t        |||d| d|dz
   d
       6 |D cg c]	  }d|v s| }}t        |||ddd
       t        |d         }t        |      D ci c]  }||D cg c]  }d| |v s| c} }}}t        |      D ]p  }|dz
  |z
  }||   D cg c]  }d| |v sd| d|vs| }}t        |||d| dd| d	d
       d| d |v sQ|d| d    |d!| d"<   |d| d#   |d!| d$<   r |D cg c]	  }d%|v s| }}d}t        d|dz         D ]4  }|D cg c]  }d&| |v s| }}t        |||d| d|dz
   d
       6 |D cg c]	  }d'|v s| }}t        |||ddd
       t        |       |S c c}w c c}}w c c}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}w c c}w c c}w )(Nr   c              3   @   K   | ]  }|j                          y wr   r  )r   r   ldm_vae_keys     r   r   z-convert_ldm_vae_checkpoint.<locals>.<genexpr>  s     7Qq||K(7s   r   r  zdown.z.downsamplez.blockr  z.resnetsr  r  zencoder.down.z.downsample.conv.weightencoder.down_blocks.r  z.downsample.conv.biasr  zencoder.mid.blockr   r   zencoder.mid.block_z
mid.block_r  zencoder.mid.attnz
mid.attn_1zmid_block.attentions.0r  zup.z	.upsampler	  zdecoder.up.z.upsample.conv.weightdecoder.up_blocks.r
  z.upsample.conv.biasr  zdecoder.mid.blockzdecoder.mid.block_zdecoder.mid.attn)rd  r   LDM_VAE_KEYSr   r  r  r   r  r  r  r  r  r  rh  )r   r  vae_state_dictr   vae_keyr(  r  vae_diffusers_ldm_mapr  r  num_down_blocksr  down_blocksr  r   mid_resnetsnum_mid_res_blocksmid_attentionsnum_up_blocks	up_blocksr  r2  s                        @r   convert_ldm_vae_checkpointr@    s+    N
!"DG# "7$77!G"  K>>'"7A~~c7JN3;;w34K N4U;"7"="="? @w.((6w(?}%@ &!345O_det_uS[.N3eH:4F#4M3NNK  ?# "-a.m3eA3K34FUSTRUU`KailKl3mm*#A3f-QCx6PQ		
 1#45GTbTfTfs"9:UN1!4OPQ SaRdRds"78SN1!4MNO  #1O34G34N3OKO1(1,- 
"-Q33EaS1IS1P3QQ*(,7I!a%5QR		

 &4Qc7IS7PcQNQ*]u@v
 /01M]bcp]qQY.L3c(4D4K3LLI  =!  1$q($X.
Cz2Bc2IPST\S]]fNgorNrC
 
 	+!(62Zs(;ST		
 
"78NJP^hZ'<=QN/s2KLM O]hZ':;ON/s2IJK& #1O34G34N3OKO1(1,- 
"-Q33EaS1IS1P3QQ*(,7I!a%5QR		

 &4Qc7IS7PcQNQ*]u@v '[ O
 n P R R M
" P R Rs   

MM	!M	%MMMM?	M	M'M4M	M#%M#
M-#M(0M(4M-M3&M3/M3>	M8M8&M=3M=	N$N	M(M-c                    t        | j                               }i }g }|j                  t               |r|j	                  |       |D ]A  }|D ]:  }|j                  |      s|j                  |d      }| j                  |      ||<   < C |S )Nr   )rd  r   extendLDM_CLIP_PREFIX_TO_REMOVEr  r  r   r  )r   remove_prefixr   text_model_dictremove_prefixesr(  r   r  s           r   convert_ldm_clip_checkpointrG    s    
!"DOO45}- E% 	EF~~f% #FB 71;1D.	EE r   c                    i }|dz   }||v rt        ||   j                  d         }n3t        | j                  d      r| j                  j                  }nt
        }t        |j                               }t        }t        d   d   }|j                         D ]N  \  }	}
||
z   }
|
|vr|
|v r|
j                  d      r!||
   j                  j                         ||	<   G||
   ||	<   P |D ]  }||v r	|j                  |dz         s|j                  |dz   d      }	t        d   d   }|j                         D ]7  \  }}|	j                  ||      j                  d	d      j                  d
d      }	9 |j                  d	      r|j!                  |      }|d |d d f   j#                         j%                         ||	dz   <   |||dz  d d f   j#                         j%                         ||	dz   <   ||dz  d d d f   j#                         j%                         ||	dz   <   :|j                  d
      r|j!                  |      }|d | j#                         j%                         ||	dz   <   |||dz   j#                         j%                         ||	dz   <   ||dz  d  j#                         j%                         ||	dz   <   |j!                  |      ||	<    |S )Nr   r   hidden_sizer   r   ztransformer.r   r   z.in_proj_weightz.in_proj_biasz.q_proj.weightr   z.k_proj.weightz.v_proj.weightz.q_proj.biasz.k_proj.biasz.v_proj.bias)r  r0  hasattrr  rI  !LDM_OPEN_CLIP_TEXT_PROJECTION_DIMrd  r    SD_2_TEXT_ENCODER_KEYS_TO_IGNOREr  r  r=  T
contiguousr  r   r  clonedetach)
text_modelr   r   rE  text_proj_keytext_proj_dimr   keys_to_ignoreopenclip_diffusers_ldm_mapr  r  r(   transformer_diffusers_to_ldm_mapnew_keyold_keyweight_values                   r   convert_open_clip_checkpointrZ    s&   
 O..M
"J}5;;A>?	""M	2"))559
!"D5N!9*!Eh!O"<"B"B"D 	Aw7"*$n$-.-7-@-B-B-M-M-OOM*-7-@OM*	A  A. ~~f~56F^$;R@+CJ+OP]+^( @ F F H 	GW%%gw7??@QSUV^^_nprs 	
 <<)*%>>#.L@L^m^]^M^@_@e@e@g@n@n@pOM,<<=]]Q->>ABHHJQQS M,<<= AM]]^M^M`bcMc@d@j@j@l@s@s@uOM,<<=\\/*%>>#.L>J>M>Z>`>`>b>i>i>kOMN:;]]Q->?EEGNNP MN:; ?K=[\K\K^>_>e>e>g>n>n>pOMN:;-7^^C-@OM*?AB r   c                 8   |rd|i}nt        |      }|rSt        j                  d       t        |      st	        |      r
d}||d<   d}nt        |      r
d}||d<   d}n	d}||d<   d} | j                  j                  di |||d}t               rt        nt        }	 |	       5   | |      }
d d d        
j                  j                  j                  j                  j                  d	   }t        |      rt!        |      }n.t	        |      r(|t"        d
      j                  d	   |k(  rt!        |      }nt%        |      rA|t"        d      j                  d	   |k(  r%t!        |d      }t'        j(                  |      |d<   nt        |      rd}t+        |
||      }nt-        |      r-|t"        d      j                  d	   |k(  rd}t+        |
||      }n[t/        |      rd}t+        |
||      }n?t1        |      r)|t"        d      j                  d	   |k(  rt!        |d      }nt3        d      t               rt5        |
||       t7                n|
j9                  |d       ||
j;                  |       |
j=                          |
S # 1 sw Y   xY w)NrR   zDetected legacy CLIP loading behavior. Please run `from_single_file` with `local_files_only=False once to update the local cache directory with the necessary CLIP model config files. Attempting to load CLIP model from legacy cache directory.openai/clip-vit-large-patch14r   stabilityai/stable-diffusion-2text_encoder(laion/CLIP-ViT-bigG-14-laion2B-39B-b160krW   r   r$  r+   r,   z!text_encoders.clip_l.transformer.r   cond_stage_model.model.)r   r.   zconditioner.embedders.1.model.zconditioner.embedders.0.model.r0   z!text_encoders.clip_g.transformer.zDThe provided checkpoint does not seem to contain a valid CLIP model.dtypeF)strictr&  )r\  r   r   r  r  r  config_classfrom_pretrainedr   r   r   rQ  
embeddingsposition_embeddingweightr0  rG  r  r  torcheyerZ  r  r  r  r   r   r   r   toeval)clsr   rW   r  torch_dtyper   is_legacy_loadingclip_configmodel_configctxrn  position_embedding_dimdiffusers_format_checkpointr   s                 r   $create_diffusers_clip_model_from_ldmrv  D  s    16:'
3
 M	
 $(::(F9K6AF23I
+:K6AF23&I EK6AF23I33##33ufu	dtuL 7 9
{C	 "L!" #--88KKRRXXY[\Z &A*&M# 	:&+K89??CG]]&A*&M# 	*%+J78>>rBF\\&A*Nq&r#@E		J`@a#$<=	J	'*&B5*]c&d# 	 
++,<=>DDRHLbb1&B5*]c&d#	(	41&B5*]c&d# 	z*+O<=CCBGKaa&A*Nq&r# _`` !%)DKX9%H	JJLLq" "s   &	JJc                 P   |j                  dd       }|j                  dd       }|d}t        dd|       |d}t        dd|       t        }t        |      }	d|v r|d   nd }
|rt	        |d   d	   d
d      }nd}||d<   |	dk(  r||
dk(  rdnd}n|xs d}||d<   |	dv rd}nV|	dk(  rd}nN|r/|d   d	   j                  d      }|d   d	   j                  d      }nd}d}||d<   ||d<   d|d<   d|d<   d|d<   |d k(  r| j                  ddd!d"ddd d#d$      S || j                  |      S |d%k(  rd"|d&<   t        j
                  |      }|S |d'k(  rt        j
                  |      }|S |d(k(  rt        j
                  |      }|S |dk(  rt        j
                  |      }|S |d)k(  rt        j
                  |      }|S |d*k(  rt        j
                  |      }|S |d+k(  rt        j
                  |      }|S |dk(  rd,d-dd.d"ddd/d0d1d2d3d4d5dd6}t        d9i |}|S t        d7| d8      ):Nr   r   a&  Please pass an instance of a Scheduler object directly to the `scheduler` argument in `from_single_file`

Example:

from diffusers import StableDiffusionPipeline, DDIMScheduler

scheduler = DDIMScheduler()
pipe = StableDiffusionPipeline.from_single_file(<checkpoint path>, scheduler=scheduler)
rk  a~  Please configure an instance of a Scheduler with the appropriate `prediction_type` and pass the object directly to the `scheduler` argument in `from_single_file`.

Example:

from diffusers import StableDiffusionPipeline, DDIMScheduler

scheduler = DDIMScheduler(prediction_type="v_prediction")
pipe = StableDiffusionPipeline.from_single_file(<checkpoint path>, scheduler=scheduler)
r  global_steprn  ro  	timestepsr   r   r   iY r   v_prediction)r   r   euler
playgroundedm_dpm_solver_multisteplinear_start
linear_endg{Gz?g(\µ?r   r   r   r   Fclip_sampler   low_res_schedulerg-C6?Tfixed_small)r   r   r   r  r   r   trained_betasvariance_typepndmr   lmsheunzeuler-ancestraldpmddimzdpmsolver++gףp=
?zerog      @r   r   g      T@gMb`?r   midpoint)algorithm_typedynamic_thresholding_ratioeuler_at_finalfinal_sigmas_typelower_order_finalr   r   rhor   
sigma_data	sigma_max	sigma_minsolver_ordersolver_typethresholdingzScheduler of type z doesn't exist!r&  )r  r   SCHEDULER_DEFAULT_CONFIGrV  getattrfrom_configr   r   r   r   r   r	   r   r
   r   )rn  r   component_namer  r   r   r   r  scheduler_configrP  rx  r   r   r   	schedulers                  r   _legacy_load_schedulerr    sN    ZZ 0$7Njj!2D9O!h 	 	"G-@A"h 	 	#W.AB/+zBJ/<
/J*]+PTK%og&>x&H+W[\".A*+T"+6&+@inO *6Y*9&'.. 	|	#3(1(;??OJ&w/9==lKH JH)3&'/$,;)*/'/4+, ,, !0$#'+#,!%!.	
 	
 /00	6	!-1)*!--.>?	V S 
5	 (445EF	P M 
6	!)556FG	J G 
7	"*667GH	D A 
,	,3??@PQ	> ; 
5	 /;;<LM	8 5 
6	!!--.>?	2 / 
5	5+*/#!'!%#'( #%!
" 3F5EF	
  -n-=_MNNr   c                     |rd|i}nt        |      }t        |      st        |      r
d}||d<   d}nt        |      r
d}||d<   d}n	d}||d<   d} | j                  di |||d}|S )	NrR   r\  r   r]  	tokenizerr_  r`  r&  )r\  r  r  r  rf  )rn  r   r  r   rq  rW   r  s          r   _legacy_load_clip_tokenizerr  4  s    16:'
3Z $6z$B52=./		J	'62=./	 A2=./	###efe	TdeIr   c                 p    ddl m} t        j                  d| |      }|j                  d| |      }||dS )Nr   )StableDiffusionSafetyCheckerz'CompVis/stable-diffusion-safety-checker)r   ro  )safety_checkerfeature_extractor))pipelines.stable_diffusion.safety_checkerr  r   rf  )r   ro  r  r  r  s        r   _legacy_load_safety_checkerr  N  sQ     Y*::1DTbm 2AA1DTbm B N -CTUUr   c                 d    | j                  dd      \  }}t        j                  ||gd      }|S Nr   r   dimr  rj  cat)ri  r  shiftscale
new_weights        r   swap_scale_shiftr  `  s2    <<q<)LE5E5>q1Jr   c                 d    | j                  dd      \  }}t        j                  ||gd      }|S r  r  )ri  projgater  s       r   swap_proj_gater  f  s2    aQ'JD$D$<Q/Jr   c                     g }| j                         D ]5  }d|v st        |j                  d      d         }|j                  |       7 t	        t        t        |                  S )Nzattn2.rb  r   )r   r  re  r  tuplesortedset)r   attn2_layersr(  	layer_nums       r   get_attn2_layersr  l  s`    L  +s?CIIcN1-.I	*	+ L)*++r   c                 *    | d   j                   d   }|S )Ncontext_embedder.weightr   r/  )r   caption_projection_dims     r   get_caption_projection_dimr  w  s    '(ABHHK!!r   c                    i }t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - t        t	        d | D                    d   dz   }t        |       }t        |       }t        d | j                         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<   t        |      D ]9  }	t        j                  | j                  d|	 d       d!d"#      \  }
}}t        j                  | j                  d|	 d$      d!d"#      \  }}}t        j                  | j                  d|	 d%      d!d"#      \  }}}t        j                  | j                  d|	 d&      d!d"#      \  }}}t        j                  |
g      |d'|	 d(<   t        j                  |g      |d'|	 d)<   t        j                  |g      |d'|	 d*<   t        j                  |g      |d'|	 d+<   t        j                  |g      |d'|	 d,<   t        j                  |g      |d'|	 d-<   t        j                  |g      |d'|	 d.<   t        j                  |g      |d'|	 d/<   t        j                  |g      |d'|	 d0<   t        j                  |g      |d'|	 d1<   t        j                  |g      |d'|	 d2<   t        j                  |g      |d'|	 d3<   |rp| j                  d|	 d4      |d'|	 d5<   | j                  d|	 d6      |d'|	 d7<   | j                  d|	 d8      |d'|	 d9<   | j                  d|	 d:      |d'|	 d;<   | j                  d|	 d<      |d'|	 d=<   | j                  d|	 d>      |d'|	 d?<   |	|dz
  k(  s8| j                  d|	 d@      |d'|	 dA<   | j                  d|	 dB      |d'|	 dC<   |	|v r~t        j                  | j                  d|	 dD      d!d"#      \  }}}t        j                  | j                  d|	 dE      d!d"#      \  }}}t        j                  |g      |d'|	 dF<   t        j                  |g      |d'|	 dG<   t        j                  |g      |d'|	 dH<   t        j                  |g      |d'|	 dI<   t        j                  |g      |d'|	 dJ<   t        j                  |g      |d'|	 dK<   |r8| j                  d|	 dL      |d'|	 dM<   | j                  d|	 dN      |d'|	 dO<   | j                  d|	 dP      |d'|	 dQ<   | j                  d|	 dR      |d'|	 dS<   | j                  d|	 dT      |d'|	 dU<   | j                  d|	 dV      |d'|	 dW<   |	|dz
  k(  s9| j                  d|	 dX      |d'|	 dY<   | j                  d|	 dZ      |d'|	 d[<   nNt        | j                  d|	 dX      |#      |d'|	 dY<   t        | j                  d|	 dZ      |#      |d'|	 d[<   | j                  d|	 d\      |d'|	 d]<   | j                  d|	 d^      |d'|	 d_<   | j                  d|	 d`      |d'|	 da<   | j                  d|	 db      |d'|	 dc<   |	|dz
  k(  r| j                  d|	 dd      |d'|	 de<   | j                  d|	 df      |d'|	 dg<   | j                  d|	 dh      |d'|	 di<   | j                  d|	 dj      |d'|	 dk<   < | j                  dl      |dm<   | j                  dn      |do<   t        | j                  dp      |#      |dq<   t        | j                  dr      |#      |ds<   |S )tNr   r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) yw)joint_blocksrb  r   r   Nr  re  r   s     r   r   zBconvert_sd3_transformer_checkpoint_to_diffusers.<locals>.<genexpr>  s,     ]a[\I\#aggc1oa01]   	/#/r$  r   c              3   $   K   | ]  }d |v  
 yw)ln_qNr&  r>  s     r   r   zBconvert_sd3_transformer_checkpoint_to_diffusers.<locals>.<genexpr>  s     AfmA   r1  pos_embed.pos_embedx_embedder.proj.weightpos_embed.proj.weightx_embedder.proj.biaspos_embed.proj.biasr=   1time_text_embed.timestep_embedder.linear_1.weightt_embedder.mlp.0.bias/time_text_embed.timestep_embedder.linear_1.biast_embedder.mlp.2.weight1time_text_embed.timestep_embedder.linear_2.weightt_embedder.mlp.2.bias/time_text_embed.timestep_embedder.linear_2.biasr  context_embedder.biaszy_embedder.mlp.0.weight-time_text_embed.text_embedder.linear_1.weightzy_embedder.mlp.0.bias+time_text_embed.text_embedder.linear_1.biaszy_embedder.mlp.2.weight-time_text_embed.text_embedder.linear_2.weightzy_embedder.mlp.2.bias+time_text_embed.text_embedder.linear_2.biaszjoint_blocks.z.x_block.attn.qkv.weightr   r   r  z.context_block.attn.qkv.weightz.x_block.attn.qkv.biasz.context_block.attn.qkv.biastransformer_blocks..attn.to_q.weight.attn.to_q.bias.attn.to_k.weight.attn.to_k.bias.attn.to_v.weight.attn.to_v.biasz.attn.add_q_proj.weightz.attn.add_q_proj.biasz.attn.add_k_proj.weightz.attn.add_k_proj.biasz.attn.add_v_proj.weightz.attn.add_v_proj.biasz.x_block.attn.ln_q.weightz.attn.norm_q.weightz.x_block.attn.ln_k.weightz.attn.norm_k.weightz.context_block.attn.ln_q.weightz.attn.norm_added_q.weightz.context_block.attn.ln_k.weightz.attn.norm_added_k.weightz.x_block.attn.proj.weightz.attn.to_out.0.weightz.x_block.attn.proj.biasz.attn.to_out.0.biasz.context_block.attn.proj.weightz.attn.to_add_out.weightz.context_block.attn.proj.biasz.attn.to_add_out.biasz.x_block.attn2.qkv.weightz.x_block.attn2.qkv.bias.attn2.to_q.weight.attn2.to_q.bias.attn2.to_k.weight.attn2.to_k.bias.attn2.to_v.weight.attn2.to_v.biasz.x_block.attn2.ln_q.weightz.attn2.norm_q.weightz.x_block.attn2.ln_k.weightz.attn2.norm_k.weightz.x_block.attn2.proj.weight.attn2.to_out.0.weightz.x_block.attn2.proj.bias.attn2.to_out.0.biasz".x_block.adaLN_modulation.1.weight.norm1.linear.weightz .x_block.adaLN_modulation.1.biasz.norm1.linear.biasz(.context_block.adaLN_modulation.1.weightz.norm1_context.linear.weightz&.context_block.adaLN_modulation.1.biasz.norm1_context.linear.biasz.x_block.mlp.fc1.weightz.ff.net.0.proj.weightz.x_block.mlp.fc1.biasz.ff.net.0.proj.biasz.x_block.mlp.fc2.weightz.ff.net.2.weightz.x_block.mlp.fc2.biasz.ff.net.2.biasz.context_block.mlp.fc1.weightz.ff_context.net.0.proj.weightz.context_block.mlp.fc1.biasz.ff_context.net.0.proj.biasz.context_block.mlp.fc2.weightz.ff_context.net.2.weightz.context_block.mlp.fc2.biasz.ff_context.net.2.biasfinal_layer.linear.weightr  final_layer.linear.biasr  %final_layer.adaLN_modulation.1.weightnorm_out.linear.weight#final_layer.adaLN_modulation.1.biasnorm_out.linear.bias)rd  r   popr   r  r  r  r   r  rj  r  r  r  )r   r   converted_state_dictr   r   
num_layersdual_attention_layersr  has_qk_normr  sample_qsample_ksample_v	context_q	context_k	context_vsample_q_biassample_k_biassample_v_biascontext_q_biascontext_k_biascontext_v_bias	sample_q2	sample_k2	sample_v2sample_q2_biassample_k2_biassample_v2_biass                               r   /convert_sd3_transformer_checkpoint_to_diffusersr  |  su   
!"D T#q(BL..QRBSJqyy!92>?T c]:]]^_abeffJ,Z87
CAz/@AAK 3=..2M./4>NNC[4\012<..AW2X./ Q[P^P^!QLM OYnn]tNuJKPZP^P^!QLM OYnn]tNuJK 7AnnE^6_234>NNCZ4[01 MWNN[tLuHIJT..YpJqFGLVNN[tLuHIJT..YpJqFG : L',{{NN]1#-EFGPQ(
$(H +0++NN]1#-KLMqVW+
'	9i 7<kkNN]1#-CDEqa7
3}m :?NN]1#-IJKQTU:
6 LQ99V^U_K`21#5FGHINTaSbIc21#_EFKP99V^U_K`21#5FGHINTaSbIc21#_EFKP99V^U_K`21#5FGHINTaSbIc21#_EFQVQZQZ\e[fQg21#5LMNOTyyZhYiOj21#5JKLQVQZQZ\e[fQg21#5LMNOTyyZhYiOj21#5JKLQVQZQZ\e[fQg21#5LMNOTyyZhYiOj21#5JKL Q[Q_Q_s";<R #6qc9L!MN R\Q_Q_s";<R #6qc9L!MN XbWeWes"ABX #6qc9R!ST XbWeWes"ABX #6qc9R!ST
 PZ~~A378P
21#5JKL NX^^A356N
21#5HIJ Z!^#U_UcUcs"ABV #6qc9P!QR T^SaSas"?@T #6qc9N!OP %%.3kkqc1JKLaUV/+Iy) >C[[qc1HIJAST>:NNN QVPYPY[dZePf #6qc9K!LMNSiiYgXhNi #6qc9I!JKPUPYPY[dZePf #6qc9K!LMNSiiYgXhNi #6qc9I!JKPUPYPY[dZePf #6qc9K!LMNSiiYgXhNi #6qc9I!JK V`VdVd#A3&@AW$':1#=Q%RS WaVdVd#A3&@AW$':1#=Q%RS
 U_TbTbs"<=U #6qc9O!PQ S]R`R`s":;S #6qc9M!NO
 OYnnA3@AO
21#5IJK MWNNA3>?M
21#5GHI Z!^#ZdZhZhs"JK[ #6qc9U!VW YcXfXfs"HIY #6qc9S!TU [kqc1YZ[*[ #6qc9U!VW Yiqc1WXY*Y #6qc9S!TU PZ~~A356P
21#5JKL NX^^A334N
21#5HIJ KU..A356K
21#5EFG ISA334I
21#^DE Z!^#[e[i[is"?@\ #6qc9V!WX ZdYgYgs"=>Z #6qc9T!UV WaVdVds"?@W #6qc9Q!RS U_TbTbs"=>U #6qc9O!PQUL^ /9nn=X.Y*+,6NN;T,U)5E>?E[612 4D<=CY4/0  r   c                     d| v ryy)Nz-text_encoders.t5xxl.transformer.shared.weightTFr&  r  s    r   is_t5_in_single_filer	  >  s    6*Dr   c                     t        | j                               }i }dg}|D ]A  }|D ]:  }|j                  |      s|j                  |d      }| j	                  |      ||<   < C |S )Nz text_encoders.t5xxl.transformer.r   )rd  r   r  r   r  )r   r   rE  rF  r(  r   r  s          r   &convert_sd3_t5_checkpoint_to_diffusersr  E  sy    
!"DO9:O E% 	EF~~f% #FB 71;1D.	EE r   c                    |rd|i}nt        |      } | j                  j                  di |||d}t               rt        nt
        } |       5   | |      }d d d        t        |      }	t               rt        |	|       t                nj                  |	       | j                  d uxr |t        j                  k(  }
|
r|j                  }ng }|[|j                         D ]H  \  }t        fd|D              s|j                  j!                  t        j"                        |_        J |S # 1 sw Y   xY w)NrR   r`  rb  c              3   D   K   | ]  }|j                  d       v   yw)rb  N)re  )r   module_to_keep_in_fp32r   s     r   r   z<create_diffusers_t5_model_from_checkpoint.<locals>.<genexpr>v  s      pAW)TZZ_<ps    r&  )r\  re  rf  r   r   r   r  r   r   r   _keep_in_fp32_modulesrj  float16named_parametersr   datarl  float32)rn  r   rW   r  ro  r   rr  rs  rn  ru  use_keep_in_fp32_moduleskeep_in_fp32_modulesparamr   s                @r   )create_diffusers_t5_model_from_checkpointr  T  s-    16:'
333##33ufu	dtuL 7 9
{C	 "L!" #I"T !%)DKX9: # 9 9 EiK[`[h[hLh$::!' 113 	:KD%p[opp"ZZ]]5==9
	:
 L/" "s   	D55D>c                    i }| j                         D ]o  \  }}d|v r|||j                  dd      j                  dd      j                  dd      j                  dd	      j                  d
d      j                  dd      <   q |S )Npos_encoderz.norms.0z.norm1z.norms.1z.norm2z.ff_normz.norm3z.attention_blocks.0.attn1z.attention_blocks.1.attn2z.temporal_transformerr   )r  r   )r   r   r  r   vs        r   +convert_animatediff_checkpoint_to_diffusersr  }  s      " 1A  !		*h/X.X..9.90"5  r   c                 *   i }t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - t        t	        d | D                    d   dz   }t        t	        d | D                    d   dz   }d}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<   t        d | D              }
|
rP| j                  d      |d<   | j                  d      |d<   | j                  d      |d <   | j                  d!      |d"<   | j                  d#      |d$<   | j                  d%      |d&<   | j                  d'      |d(<   | j                  d)      |d*<   t        |      D ]1  }d+| d,}| j                  d-| d.      || d/<   | j                  d-| d0      || d1<   | j                  d-| d2      || d3<   | j                  d-| d4      || d5<   t        j                  | j                  d-| d6      d7d89      \  }}}t        j                  | j                  d-| d:      d7d89      \  }}}t        j                  | j                  d-| d;      d7d89      \  }}}t        j                  | j                  d-| d<      d7d89      \  }}}t        j                  |g      || d=<   t        j                  |g      || d><   t        j                  |g      || d?<   t        j                  |g      || d@<   t        j                  |g      || dA<   t        j                  |g      || dB<   t        j                  |g      || dC<   t        j                  |g      || dD<   t        j                  |g      || dE<   t        j                  |g      || dF<   t        j                  |g      || dG<   t        j                  |g      || dH<   | j                  d-| dI      || dJ<   | j                  d-| dK      || dL<   | j                  d-| dM      || dN<   | j                  d-| dO      || dP<   | j                  d-| dQ      || dR<   | j                  d-| dS      || dT<   | j                  d-| dU      || dV<   | j                  d-| dW      || dX<   | j                  d-| dY      || dZ<   | j                  d-| d[      || d\<   | j                  d-| d]      || d^<   | j                  d-| d_      || d`<   | j                  d-| da      || db<   | j                  d-| dc      || dd<   | j                  d-| de      || df<   | j                  d-| dg      || dh<   4 t        |      D ]  }di| d,}| j                  dj| dk      || dl<   | j                  dj| dm      || dn<   t        ||z        }||||f}t        j                  | j                  dj| do      |d89      \  }}}}t        j                  | j                  dj| dp      |d89      \  }}} }!t        j                  |g      || d=<   t        j                  |g      || d><   t        j                  |g      || d?<   t        j                  |g      || d@<   t        j                  |g      || dA<   t        j                  | g      || dB<   t        j                  |g      || dq<   t        j                  |!g      || dr<   | j                  dj| ds      || dJ<   | j                  dj| dt      || dL<   | j                  dj| du      || dv<   | j                  dj| dw      || dx<    | j                  dy      |dv<   | j                  dz      |dx<    |	| j                  d{            |d|<    |	| j                  d}            |d~<   |S )Nr   r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) ywdouble_blocks.rb  r   r   Nr  r   s     r   r   zCconvert_flux_transformer_checkpoint_to_diffusers.<locals>.<genexpr>  -     _aIY]^I^#aggc1oa01_r  r$  r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) ywsingle_blocks.rb  r   r   Nr  r   s     r   r   zCconvert_flux_transformer_checkpoint_to_diffusers.<locals>.<genexpr>  -      fQP`dePeQWWS!_Q%7!8 fr        @   c                 d    | j                  dd      \  }}t        j                  ||gd      }|S r  r  ri  r  r  r  s       r   r  zJconvert_flux_transformer_checkpoint_to_diffusers.<locals>.swap_scale_shift  2    ||A1|-uYYu~15
r   ztime_in.in_layer.weightr  ztime_in.in_layer.biasr  ztime_in.out_layer.weightr  ztime_in.out_layer.biasr  zvector_in.in_layer.weightr  zvector_in.in_layer.biasr  zvector_in.out_layer.weightr  zvector_in.out_layer.biasr  c              3   $   K   | ]  }d |v  
 yw)guidanceNr&  r   s     r   r   zCconvert_flux_transformer_checkpoint_to_diffusers.<locals>.<genexpr>  s     ;1zQ;r  zguidance_in.in_layer.weightz1time_text_embed.guidance_embedder.linear_1.weightr8  z/time_text_embed.guidance_embedder.linear_1.biaszguidance_in.out_layer.weightz1time_text_embed.guidance_embedder.linear_2.weightzguidance_in.out_layer.biasz/time_text_embed.guidance_embedder.linear_2.biastxt_in.weightr  txt_in.biasr  r9  x_embedder.weightimg_in.biasx_embedder.biasr  rb  r!  z.img_mod.lin.weightnorm1.linear.weightz.img_mod.lin.biasnorm1.linear.biasz.txt_mod.lin.weightnorm1_context.linear.weightz.txt_mod.lin.biasnorm1_context.linear.bias.img_attn.qkv.weightr   r   r  .txt_attn.qkv.weight.img_attn.qkv.bias.txt_attn.qkv.biasattn.to_q.weightattn.to_q.biasattn.to_k.weightattn.to_k.biasattn.to_v.weightattn.to_v.biasattn.add_q_proj.weightattn.add_q_proj.biasattn.add_k_proj.weightattn.add_k_proj.biasattn.add_v_proj.weightattn.add_v_proj.bias.img_attn.norm.query_norm.scaleattn.norm_q.weight.img_attn.norm.key_norm.scaleattn.norm_k.weight.txt_attn.norm.query_norm.scaleattn.norm_added_q.weight.txt_attn.norm.key_norm.scaleattn.norm_added_k.weight.img_mlp.0.weightff.net.0.proj.weight.img_mlp.0.biasff.net.0.proj.bias.img_mlp.2.weightff.net.2.weight.img_mlp.2.biasff.net.2.bias.txt_mlp.0.weightff_context.net.0.proj.weight.txt_mlp.0.biasff_context.net.0.proj.bias.txt_mlp.2.weightff_context.net.2.weight.txt_mlp.2.biasff_context.net.2.bias.img_attn.proj.weightattn.to_out.0.weight.img_attn.proj.biasattn.to_out.0.bias.txt_attn.proj.weightattn.to_add_out.weight.txt_attn.proj.biasattn.to_add_out.biassingle_transformer_blocks.r%  z.modulation.lin.weightznorm.linear.weightz.modulation.lin.biasznorm.linear.bias.linear1.weight.linear1.biasproj_mlp.weightproj_mlp.bias.norm.query_norm.scale.norm.key_norm.scale.linear2.weightr  .linear2.biasr  r  r  r  r  r  r  )rd  r   r  r   r  r   r  rj  r  r  r  re  )"r   r   r  r   r   r  num_single_layers	mlp_ratio	inner_dimr  has_guidancer  block_prefixr  r  r  r  r  r  r  r  r  r  r  r   mlp_hidden_dim
split_sizeqr  mlpq_biask_biasv_biasmlp_biass"                                     r   0convert_flux_transformer_checkpoint_to_diffusersr}    sH   
!"D T#q(BL..QRBSJqyy!92>?T c_:__`acdghhJS f* ffghjknooII Q[P^P^!QLM OYnn]tNuJKPZP^P^"QLM OYnn]uNvJK MWNN[vLwHIJT..YrJsFGLVNN$MHI KU..YsJtFG ;
;;LT^TbTb)U
PQ S]R`R`'S
NO U_TbTb*U
PQ S]R`R`(S
NO
 7Ann_6U234>NN=4Q01 1;0O,-.8nn].K*+ : T
,QCq1 FP^^QC23F
~-@AB DN>>QC01D
~->?@ NX^^QC23N
~-HIJ LV>>QC01L
~-FGH (-{{:>>NSTRUUiBj3kmntu'v$(H*/++NN^A3.BCDaQ+
'	9i 7<kkNN^A3.@ABA17
3}m :?NN^A3.@ABA1:
6 CH))XJBW~-=>?@E		=/@Z~^<=BG))XJBW~-=>?@E		=/@Z~^<=BG))XJBW~-=>?@E		=/@Z~^<=HM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCHM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCHM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCDNNNQC>?E
~-?@A EONNQC<=E
~-?@A KU..QC>?K
~-EFG KU..QC<=K
~-EFG GQnnQC01G
~-ABC EONNUcdecffuSvDw~-?@AAKR`ab`cctPuAv~_=>?I~~P^_`^aapNq?r~];<NXnnQC01O
~-IJK MWNNQC/M
~-GHI JTQC01J
~-DEF HR~~QC/H
~-BCD GQnnQC45G
~-ABC EONNQC23E
~-?@A ISQC45I
~-CDE GQnnQC23G
~-ABCeT
n $% !q3A3a8DNNNQC56E
~-?@A CM..QC34C
~-=>? Y23I~F
{{:>>N1#_2U#VXbhij1a+0;;NN^A3m<=zq,
( CH))QC.~-=>?@E		6(@S~^<=BG))QC.~-=>?@E		6(@S~^<=BG))QC.~-=>?@E		6(@S~^<=AFC5AQ~_=>?Dyy(?T~];<DNNNQC56E
~-?@A EONNQC34E
~-?@A BLR`ab`ccrPsAt~_=>?I~~P^_`^aanNo?p~];<C!qF /9nn=X.Y*+,6NN;T,U)5E>?612 4D<=4/0  r   c                    t        | j                               D ci c]  }d|vs|| j                  |       }}dddddd}i }t        |j                               D ]B  }|}|j                         D ]  \  }}|j	                  ||      } |j                  |      ||<   D t        |j                               D ](  }|j                         D ]  \  }	}
|	|vr |
||        * |S c c}w )Nr   r   proj_in
time_embednorm_qnorm_k)r   patchify_projadaln_singleq_normk_norm)rd  r   r  r  r   )r   r   r(  r  TRANSFORMER_KEYS_RENAME_DICTTRANSFORMER_SPECIAL_KEYS_REMAPrW  replace_key
rename_keyspecial_keyhandler_fn_inplaces              r   /convert_ltx_transformer_checkpoint_to_diffusersr  U	  s$   @DZ__EV@Wl[`hk[kC!44ll #%"$$  &("(--/0 F'C'I'I'K 	?#Kook:>G	?(<(@(@(EW%	F (--/0 :/M/S/S/U 	:+K+#%s$89	::  1 ms
   	C*C*c                 v   t        | j                               D ci c]  }d|v s|| j                  |       }}dt        fd}i dddddddd	d
ddddddddddddd
ddddddddddddddddd d!d"d#d$d%	}dd&dd	ddddd
d'd(d)}i dddd&ddd
d	dddddddddd
ddddddddddddd*dd+d,dd'd(d-}|||d.}|d/   j                  d0   d1k(  r|j                  |       nd2|v r|j                  |       t        |j                               D ]B  }|}	|j                         D ]  \  }
}|	j                  |
|      }	 |j                  |      ||	<   D t        |j                               D ](  }|j                         D ]  \  }}||vr |||        * |S c c}w )3Nr   r(  c                 &    |j                  |        y r   r  r(  r   s     r   remove_keys_z=convert_ltx_vae_checkpoint_to_diffusers.<locals>.remove_keys_t	      sr   r   up_blocks.0	mid_blockup_blocks.1up_blocks.2zup_blocks.1.upsamplers.0up_blocks.3up_blocks.4zup_blocks.2.conv_inup_blocks.5zup_blocks.2.upsamplers.0up_blocks.6up_blocks.7zup_blocks.3.conv_inup_blocks.8zup_blocks.3.upsamplers.0zup_blocks.9zdown_blocks.0zdown_blocks.1zdown_blocks.0.downsamplers.0zdown_blocks.2zdown_blocks.0.conv_outzdown_blocks.3zdown_blocks.4zdown_blocks.1.downsamplers.0zdown_blocks.5zdown_blocks.1.conv_outzdown_blocks.2.downsamplers.0zconv_shortcut.convr   norm3r  r  )	down_blocks.6down_blocks.7down_blocks.8zdown_blocks.9r  
res_blocksz
norm3.norm$per_channel_statistics.mean-of-meansz#per_channel_statistics.std-of-meanszup_blocks.0.upsamplers.0time_embedderscale_shift_table)r  r  r  r  r  r  r  r  r  last_time_embedderlast_scale_shift_tabler  r  zdown_blocks.3.downsamplers.0)r  r  r  )zper_channel_statistics.channelr  z#per_channel_statistics.mean-of-stdsr@  r   r+  rA  )rd  r   r  strr0  r  r  r   )r   r   r(  r  r  VAE_KEYS_RENAME_DICTVAE_091_RENAME_DICTVAE_095_RENAME_DICTVAE_SPECIAL_KEYS_REMAPrW  r  r  r  r  s                 r   'convert_ltx_vae_checkpoint_to_diffusersr  q	  sx   @DZ__EV@Wi[aeh[hC!44ii#  	{	
 	} 	1 	} 	, 	1 	} 	, 	1 	} 	  	7!" 	1#$ 	%& 	7'( 	1)* )7($-0>/<=F #1$1$1$1$-"5 { 	1 	}	
 	1 	} 	1 	} 	1 	} 	 	7 	 	7  	!" 	7#$ 	%& 	7'( %-"5/6 +70</; >?EEaHDP##$78	KOc	c##$78(--/0 F';'A'A'C 	?#Kook:>G	?(<(@(@(EW%	F (--/0 :/E/K/K/M 	:+K+#%s$89	::  O js
   	F6F6c                    t        | j                               D ci c]  }|| j                  |       }}dt        fd}dt        fd}i ddddddd	d
ddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)}d*d+d,}||d-}d.|vr|j	                  |       t        |j                               D ]E  }|d d  }	|j                         D ]  \  }
}|	j                  |
|      }	 |j                  |      ||	<   G t        |j                               D ](  }|j                         D ]  \  }}||vr |||        * |S c c}w )/Nr(  c                    |j                  |       }t        j                  |dd      \  }}}| j                  d      \  }}}|j	                         || d<   |j	                         || d<   |j	                         || d<   y )Nr   r   r  z.qkv.conv.weightz.to_q.weightz.to_k.weightz.to_v.weight)r  rj  r  
rpartitionsqueeze)r(  r   qkvrw  r   r  parent_module_s           r   
remap_qkv_zBconvert_autoencoder_dc_checkpoint_to_diffusers.<locals>.remap_qkv_	  s    nnS!++c1!,1a!nn-?@q!56YY[
m_L1256YY[
m_L1256YY[
m_L12r   c                 x    | j                  d      \  }}}|j                  |       j                         || d<   y )Nz.proj.conv.weightz.to_out.weight)r  r  r  )r(  r   r  r  s       r   remap_proj_conv_zHconvert_autoencoder_dc_checkpoint_to_diffusers.<locals>.remap_proj_conv_	  s;    !nn-@Aq!7A~~c7J7R7R7T
m_N34r   zmain.r   zop_list.context_moduleattnlocal_moduleconv_outz
aggreg.0.0zto_qkv_multiscale.0.proj_inz
aggreg.0.1zto_qkv_multiscale.0.proj_outzdepth_conv.conv
conv_depthzinverted_conv.convconv_invertedzpoint_conv.conv
conv_pointzpoint_conv.normnormz
conv.conv.zconv.z
conv1.convr  z
conv2.convr  z
conv2.normz	proj.normnorm_outencoder.project_in.convzencoder.conv_inzencoder.project_out.0.convzencoder.conv_outzencoder.down_blockszdecoder.conv_inzdecoder.norm_outzdecoder.conv_outzdecoder.up_blocks)zencoder.stageszdecoder.project_in.convzdecoder.project_out.0decoder.project_out.2.convzdecoder.stageszencoder.conv_in.convzdecoder.conv_out.conv)r  r  )zqkv.conv.weightzproj.conv.weightrB   )rd  r   r  r  r  r  r   )r   r   r(  r  r  r  AE_KEYS_RENAME_DICTAE_F32C32_F64C128_F128C512_KEYSAE_SPECIAL_KEYS_REMAPrW  r  r  r  r  s                 r   .convert_autoencoder_dc_checkpoint_to_diffusersr  	  sA   @DZ__EV@WXC!44XXA AUc U 	B 	&	
 	
 	3 	4 	< 	o 	< 	6 	g 	g  	g!" 	f#$ 	Z%( 	"#4)* 	%&8+, 0#4!3&8-7> $:&='# &, &-AA""#BC(--/0 Fa&':'@'@'B 	?#Kook:>G	?(<(@(@(EW%	F (--/0 :/D/J/J/L 	:+K+#%s$89	::  I Ys   Ec                 	   i }t        | j                               }|D ]+  }d|v s| j                  |      | |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<   d}t	        |      D ]  }d | d!}d"| d!}| j                  |d#z         ||d$z   <   | j                  |d%z         ||d&z   <   ||d'z
  k  r5| j                  |d(z         ||d)z   <   | j                  |d*z         ||d+z   <   n4| j                  |d(z         ||d,z   <   | j                  |d*z         ||d-z   <   | j                  |d.z         }	|	j                  d/d01      \  }
}}|
||d2z   <   |||d3z   <   |||d4z   <   | j                  |d5z         ||d6z   <   | j                  |d7z         ||d8z   <   | j                  |d9z         ||d:z   <   | j                  |d;z         ||d<z   <   | j                  |d=z         }	|	j                  d/d01      \  }
}}|
||d>z   <   |||d?z   <   |||d@z   <   | j                  |dAz         ||dBz   <   | j                  |dCz         ||dDz   <   ||d'z
  k  r4| j                  |dEz         ||dFz   <   | j                  |dGz         ||dHz   <   t        | j                  |dIz               ||dJz   <   | j                  |dKz         ||dLz   <   ||d'z
  k  sZt        | j                  |dMz               ||dNz   <   | j                  |dOz         ||dPz   <    t        | j                  dQ      d01      |dR<   t        | j                  dS      d01      |dT<   | j                  dU      |dV<   | j                  dW      |dX<   | j                  dY      |dY<   |S )ZNr   r   r  patch_embed.proj.weightr  patch_embed.proj.biasr=   z,time_embed.timestep_embedder.linear_1.weightr  z*time_embed.timestep_embedder.linear_1.biasr  z,time_embed.timestep_embedder.linear_2.weightr  z*time_embed.timestep_embedder.linear_2.biaszt5_y_embedder.to_kv.weightztime_embed.pooler.to_kv.weightzt5_y_embedder.to_kv.biasztime_embed.pooler.to_kv.biaszt5_y_embedder.to_q.weightztime_embed.pooler.to_q.weightzt5_y_embedder.to_q.biasztime_embed.pooler.to_q.biaszt5_y_embedder.to_out.weightztime_embed.pooler.to_out.weightzt5_y_embedder.to_out.biasztime_embed.pooler.to_out.biaszt5_yproj.weightztime_embed.caption_proj.weightzt5_yproj.biasztime_embed.caption_proj.bias0   r  rb  blocks.zmod_x.weightr3  z
mod_x.biasr4  r   zmod_y.weightr5  z
mod_y.biasr6  znorm1_context.linear_1.weightznorm1_context.linear_1.biaszattn.qkv_x.weightr   r   r  zattn1.to_q.weightzattn1.to_k.weightzattn1.to_v.weightzattn.q_norm_x.weightzattn1.norm_q.weightzattn.k_norm_x.weightzattn1.norm_k.weightzattn.proj_x.weightzattn1.to_out.0.weightzattn.proj_x.biaszattn1.to_out.0.biaszattn.qkv_y.weightzattn1.add_q_proj.weightzattn1.add_k_proj.weightzattn1.add_v_proj.weightzattn.q_norm_y.weightzattn1.norm_added_q.weightzattn.k_norm_y.weightzattn1.norm_added_k.weightzattn.proj_y.weightzattn1.to_add_out.weightzattn.proj_y.biaszattn1.to_add_out.biaszmlp_x.w1.weightrP  zmlp_x.w2.weightrT  zmlp_y.w1.weightrX  zmlp_y.w2.weightr\  zfinal_layer.mod.weightr  zfinal_layer.mod.biasr  r  r  r  r  pos_frequencies)rd  r   r  r   r  r  r  r  )r   r   r  r   r   r  r  rt  
old_prefix
qkv_weightrw  r  s               r   1convert_mochi_transformer_checkpoint_to_diffusersr  $
  s    
!"D T#q(BL..QRBSJqyy!92>?T
 7AnnE]6^234>NNCY4Z01 LV>>ZsKtGHISXoIpEFKU>>ZsKtGHISXoIpEF=G^^Lh=i9:;E>>Jd;e78<FNNKf<g89:D..Ib:c67>HnnMj>k:;<FNNKf<g89=G^^L]=^9:;E>>/;Z78 J: H,QCq1qc^
 FP^^T^aoToEp\,AABCM>>R\_kRkCl\,??@zA~Q[Q_Q_^+R 0M!MN PZ~~\)P 0K!KL T^SaSa^+T 0O!OP R\Q_Q_\)R 0M!MN
  ^^J1D$DE
""1!",1aCD\,??@CD\,??@CD\,??@EO^^//F
\,AAB FP^^//F
\,AAB HR~~--H
\,CCD FP^^T^asTsEt\,AAB  ^^J1D$DE
""1!",1aIJ\,EEFIJ\,EEFIJ\,EEFKU>>//L
\,GGH LV>>//L
\,GGH zA~MW^^11N 0I!IJ LV>>//L 0G!GH
 GUNN:(99:G
\,BBC BLPZ]nPnAo\,==>zA~R`z,==>S 0N!NO NX^^..N 0I!IJMHV 6FjnnUmFntu5v123CJNNSiDjpq3r/0.8nn=X.Y*+,6NN;T,U).8nn=N.O*+r   c                    d }d }d }d }d }i dddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d%d*d+dd,d-d.d/d0d1d2d3}|||||d4}d5 }	t        | j                               D ];  }
|
d d  }|j                         D ]  \  }}|j                  ||      }  |	| |
|       = t        | j                               D ](  }
|j                         D ]  \  }}||
vr ||
|         * | S )6Nc                     |j                  |       }|j                  dd      \  }}t        j                  ||gd      }||| j	                  dd      <   y )Nr   r   r  final_layer.adaLN_modulation.1norm_out.linear)r  r  rj  r  r   )r(  r   ri  r  r  r  s         r   remap_norm_scale_shift_zOconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_norm_scale_shift_
  sQ    $||A1|-uYYu~15
Wa
3;;?ARSTr   c                 :   d }d| v rz|j                  |       }|j                  dd      \  }}}|| || j                  dd            <   || || j                  dd            <   || || j                  dd            <   y |j                  |       | ||       <   y )	Nc                    | j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d	d
      }|j                  dd      }|j                  dd      }|S )Nzindividual_token_refiner.blocksztoken_refiner.refiner_blocksadaLN_modulation.1r  txt_incontext_embeddert_embedder.mlp.0*time_text_embed.timestep_embedder.linear_1t_embedder.mlp.2*time_text_embed.timestep_embedder.linear_2
c_embedderztime_text_embed.text_embedderrx  ff)r   )r(  rW  s     r   r  zYconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_txt_in_.<locals>.rename_key
  s    kk"CEcdGoo&:<MNGooh0BCGoo&8:fgGoo&8:fgGool4STGooeT2GNr   self_attn_qkvr   r   r  	attn.to_q	attn.to_k	attn.to_vr  r  r   )r(  r   r  ri  to_qto_kto_vs          r   remap_txt_in_zEconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_txt_in_
  s    	 c!^^C(F%||A1|5D$PTJz#++o{"KLMPTJz#++o{"KLMPTJz#++o{"KLM*4..*=Jz#'r   c                     |j                  |       }|j                  dd      \  }}}||| j                  dd      <   ||| j                  dd      <   ||| j                  dd      <   y )Nr   r   r  img_attn_qkvr  r  r  r  r(  r   ri  r  r  r  s         r   remap_img_attn_qkv_zKconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_img_attn_qkv_
  sh    $!<<q<1dD?C
3;;~{;<?C
3;;~{;<?C
3;;~{;<r   c                     |j                  |       }|j                  dd      \  }}}||| j                  dd      <   ||| j                  dd      <   ||| j                  dd      <   y )Nr   r   r  txt_attn_qkvzattn.add_q_projzattn.add_k_projzattn.add_v_projr  r  s         r   remap_txt_attn_qkv_zKconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_txt_attn_qkv_
  sk    $!<<q<1dDEI
3;;~/@ABEI
3;;~/@ABEI
3;;~/@ABr   c                    d}d| v r|j                  |       }||||j                  d      d|z  z
  f}t        j                  ||d      \  }}}}| j	                  dd      j                  d      }	|||	 d	<   |||	 d
<   |||	 d<   |||	 d<   y d| v r|j                  |       }
||||
j                  d      d|z  z
  f}t        j                  |
|d      \  }}}}| j	                  dd      j                  d      }	|||	 d<   |||	 d<   |||	 d<   |||	 d<   y | j	                  dd      }	|	j	                  dd      }	|	j	                  dd      }	|	j	                  dd      }	|j                  |       ||	<   y )Nr(  zlinear1.weightr   r   r  single_blockssingle_transformer_blocksrh  r  r  r  z.proj_mlp.weightzlinear1.biasri  r  r  r  z.proj_mlp.biaslinear2proj_outr  attn.norm_qr  attn.norm_k)r  sizerj  re  r   removesuffix)r(  r   rI  linear1_weightrv  rw  r   r  rx  rW  linear1_biasry  rz  r{  r|  s                  r    remap_single_transformer_blocks_zXconvert_hunyuan_video_transformer_to_diffusers.<locals>.remap_single_transformer_blocks_
  s   s"'^^C0N%{KATATUVAWZ[^iZiAijJ ;;~zqILAq!Skk/3NO\\]noG89J'"34589J'"34589J'"3457:J'"234s"%>>#.L%{KARARSTAUXY\gXgAghJ/4{{<YZ/[,FFFHkk/3NO\\]lmG6<J'/236<J'/236<J'/235=J'.12 kk/3NOGooi<Gooh>Gooh>G",.."5Jwr   img_in
x_embedderztime_in.mlp.0r  ztime_in.mlp.2r  zguidance_in.mlp.0z*time_text_embed.guidance_embedder.linear_1zguidance_in.mlp.2z*time_text_embed.guidance_embedder.linear_2zvector_in.in_layerz&time_text_embed.text_embedder.linear_1zvector_in.out_layerz&time_text_embed.text_embedder.linear_2double_blockstransformer_blocksimg_attn_q_normr  img_attn_k_normr  img_attn_projzattn.to_out.0txt_attn_q_normzattn.norm_added_qtxt_attn_k_normzattn.norm_added_ktxt_attn_projzattn.to_add_outzimg_mod.linearnorm1.linear	img_norm1
norm1.norm	img_norm2r  r  znorm1_context.linearnorm2_context
ff_contextznorm.linearz	norm.normznorm_out.normr  
net.0.projnet.2r  )img_mlpztxt_mod.linear	txt_norm1	txt_norm2txt_mlpself_attn_projzmodulation.linearpre_normzfinal_layer.norm_finalfinal_layer.linearfc1fc2input_embedder)r  r  r  r  r  c                 ,    | j                  |      | |<   y r   r  )r   rX  rW  s      r   update_state_dict_zJconvert_hunyuan_video_transformer_to_diffusers.<locals>.update_state_dict_  s    (nnW5
7r   )rd  r   r  r   )r   r   r  r  r  r  r  r  r  r  r(  rW  r  r  r  r  s                   r   .convert_hunyuan_video_transformer_to_diffusersr  
  s   b>(DJ6<$,$E$ 	E$ 	I	$
 	I$ 	F$ 	G$ 	-$ 	=$ 	=$ 	$ 	.$ 	.$ 	*$ 	.$  	\!$" 	W#$$ 0!$)*"1(#=$ D  ++9*A&"6 JOO%& 5a&'C'I'I'K 	?#Kook:>G	?:sG4	5 JOO%& 0/M/S/S/U 	0+K+#%sJ/	00 r   c                    i }t        | j                               }| j                  dd       |d<   | j                  dd       |d<   | j                  dd       |d<   | j                  dd       |d<   | j                  dd       |d	<   | j                  d
d       |d<   d } ||d      } ||d      }t        |      D ]  }ddd}dddd}	|j	                         D ]F  \  }
}|	j	                         D ].  \  }}| j                  d| d|
 d| dd       |d| d| d| d<   0 H ddd}|j	                         D ](  \  }
}| j                  d| d|
 dd       |d| d| d<   * d d!d"d#d$}d%d&d'd(d)}||fD ]=  }|j	                         D ](  \  }}| j                  d| d*| dd       |d| d*| d<   * ?  t        |      D ]  }dddd}|j	                         D ](  \  }}| j                  d+| d,| dd       |d-| d.| d<   * | j                  d+| d/d       |d-| d0<   d d!d"d#d)}|j	                         D ](  \  }}| j                  d+| d*| dd       |d-| d*| d<   *  | j                  d1d       |d2<   | j                  d3d       }|t        |d 4      |d5<   nd |d5<   | j                  d6      |d7<   | j                  d8      |d9<   | j                  d:      |d;<   |S )<Nregister_tokensr=   ztime_step_proj.linear_1.weightr  ztime_step_proj.linear_1.biasr  ztime_step_proj.linear_2.weightr  ztime_step_proj.linear_2.biasr<   r  c                     t               }| D ]5  }||v st        |j                  d      d         }|j                  |       7 t	        |      S )Nrb  r   )r  r  re  addr  )r   
key_prefixr   r   r  s        r   calculate_layerszNconvert_auraflow_transformer_checkpoint_to_diffusers.<locals>.calculate_layers)  sM     	&AQQ0	

9%	& 6{r   double_layers)r  single_layersr  r  )mlpXmlpClinear_1linear_2out_projection)c_fc1c_fc2c_projzdouble_layers.rb  r$  zjoint_transformer_blocks.r  norm1_context)modXmodCz	.1.weightz.linear.weightr  r  r  to_out.0)w2qw2kw2vw2o
add_q_proj
add_k_proj
add_v_proj
to_add_out)w1qw1kw1vw1oz.attn.zsingle_layers.z.mlp.rg  z.ff.z.modCX.1.weightr  zfinal_linear.weightr  zmodF.1.weightr  r  positional_encodingr  zinit_x_linear.weightr  zinit_x_linear.biasr  )rd  r   r  r  r  r  )r   r   r  state_dict_keysr   mmdit_layerssingle_dit_layersr  path_mappingweight_mappingorig_k
diffuser_kr   r  x_attn_mappingcontext_attn_mappingattn_mappingr  norm_weights                      r   4convert_auraflow_transformer_checkpoint_to_diffusersrG    s'   :??,-O /9nn=NPT.U*+ >H^^Legk=l9:;E>>Jacg;h78=G^^Legk=l9:;E>>Jacg;h78 7AnnE]_c6d23 $OPL(_U <   $l;#-
N^_"."4"4"6 	FJ&,,. 1`j`n`n$QCq!G<da$'@1ZLPQRSQTT[%\]	 !(A"."4"4"6 	FJ_i_m_m 1VHI6` #<QCqN![\	 "(vjY'3LQ]frs+-AB 	L$**, 1XbXfXf$QCvaS8$Y$'@6!G%TU	)6 $% &GWXMMO 	DAqS]SaSa 573TT #=aSQCw!OP	 V`UcUcQC/V
9!<PQR
 "(vjY"((* 	DAqU_UcUc 6!G4dV #=aSqc!QR	( /9nn=RTX.Y*+ ..$7K9I+[_9`569=562<..AV2W./4>NNCY4Z012<..AU2V./r   c                    i }| j                  dd        t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - dddddd	d
ddddd}ddd}ddddd}ddd}d }	|D ]  }
|
}|j	                         D ]  \  }}|j                  ||      } |j	                         D ]  \  }}|j                  ||      } |j	                         D ]  \  }}|j                  ||      } |j	                         D ]  \  }}|j                  ||      } d|v r(|j                   |	| j                  |
      |             | j                  |
      ||<    |S )Nznorm_final.weightr   r   z#time_caption_embed.caption_embedderz-time_caption_embed.timestep_embedder.linear_1z-time_caption_embed.timestep_embedder.linear_2r  
.to_out.0.r  r  r%  r&  linear_3r  )cap_embedderr  r  	attentionz.out.r  r  w1w2w3r  r  r  )attention_norm1attention_norm2zcontext_refiner.0.norm1zcontext_refiner.0.norm2zcontext_refiner.1.norm1zcontext_refiner.1.norm2)z!context_refiner.0.attention_norm1z!context_refiner.0.attention_norm2z!context_refiner.1.attention_norm1z!context_refiner.1.attention_norm2norm_out.linear_1norm_out.linear_2)r  r  c                     d}dx}}t        j                  | |||gd      \  }}}|j                  dd      ||j                  dd      ||j                  dd      |iS )	Ni 	  ry   r   r  r  r  r  r  )rj  re  r   )tensorr  q_dimk_dimv_dimr  r  r  s           r    convert_lumina_attn_to_diffuserszFconvert_lumina2_to_diffusers.<locals>.convert_lumina_attn_to_diffusers  ss     ;;vue/D!LdD !!%0$!!%0$!!%0$
 	
r   r  )r  rd  r   r   r  r  )r   r   r  r   r   LUMINA_KEY_MAPATTENTION_NORM_MAPCONTEXT_REFINER_MAPFINAL_LAYER_MAPrY  r(  r  r  s                r   convert_lumina2_to_diffusersr^  t  s    NN&- 
!"D T#q(BL..QRBSJqyy!92>?T
 >KK,N ("
 .G-F-F-F	 +>1O


  F'--/ 	8DAq)11!Q7M	8#))+ 	8DAq)11!Q7M	8&,,. 	8DAq)11!Q7M	8"((* 	8DAq)11!Q7M	8 M! ''(HX[I\^k(lm2<..2E /F   r   c                 r   i }t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - t        t	        d | D                    d   dz   }| j                  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       | j                  d      |d<   | j                  d      |d<   | j                  d      |d<   | j                  d      |d<   | j                  d       |d!<   t        |      D ]Y  }| j                  d"| d#      |d$| d#<   t        j                  | j                  d"| d%      d&d'(      \  }}}	t        j                  |g      |d$| d)<   t        j                  |g      |d$| d*<   t        j                  |	g      |d$| d+<   | j                  d"| d,      |d$| d-<   | j                  d"| d.      |d$| d/<   | j                  d"| d0      |d$| d1<   | j                  d"| d2      |d$| d3<   t        j                  | j                  d"| d4      d5d'(      \  }
}t        j                  | j                  d"| d6      d5d'(      \  }}|
|d$| d7<   ||d$| d8<   ||d$| d9<   ||d$| d:<   | j                  d"| d;      |d$| d<<   | j                  d"| d=      |d$| d><   | j                  d"| d?      |d$| d@<   | j                  d"| dA      |d$| dB<   | j                  d"| dC      |d$| dD<   | j                  d"| dE      |d$| dF<   | j                  d"| dG      |d$| dH<   \ | j                  dI      |dJ<   | j                  dK      |dL<   | j                  dM      |dN<   |S )ONr   r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) yw)blocksrb  r   r   Nr  r   s     r   r   z8convert_sana_transformer_to_diffusers.<locals>.<genexpr>  s+     WaUV#aggc1oa01Wr  r$  r   r1  r  r  r  r  r=   z0time_embed.emb.timestep_embedder.linear_1.weightr  z.time_embed.emb.timestep_embedder.linear_1.biasr  z0time_embed.emb.timestep_embedder.linear_2.weightr  z.time_embed.emb.timestep_embedder.linear_2.biaszt_block.1.weightztime_embed.linear.weightzt_block.1.biasztime_embed.linear.biaszy_embedder.y_embeddingzy_embedder.y_proj.fc1.weightz"caption_projection.linear_1.weightzy_embedder.y_proj.fc1.biasz caption_projection.linear_1.biaszy_embedder.y_proj.fc2.weightz"caption_projection.linear_2.weightzy_embedder.y_proj.fc2.biasz caption_projection.linear_2.biaszattention_y_norm.weightzcaption_norm.weightr  z.scale_shift_tabler  z.attn.qkv.weightr   r   r  z.attn1.to_q.weightz.attn1.to_k.weightz.attn1.to_v.weightz.attn.proj.weightz.attn1.to_out.0.weightz.attn.proj.biasz.attn1.to_out.0.biasz.cross_attn.q_linear.weightr  z.cross_attn.q_linear.biasr  z.cross_attn.kv_linear.weightr   z.cross_attn.kv_linear.biasr  r  r  r  z.cross_attn.proj.weightr  z.cross_attn.proj.biasr  z.mlp.inverted_conv.conv.weightz.ff.conv_inverted.weightz.mlp.inverted_conv.conv.biasz.ff.conv_inverted.biasz.mlp.depth_conv.conv.weightz.ff.conv_depth.weightz.mlp.depth_conv.conv.biasz.ff.conv_depth.biasz.mlp.point_conv.conv.weightz.ff.conv_point.weightr  r  r  r  zfinal_layer.scale_shift_tabler  )	rd  r   r  r   r  r  rj  r  r  )r   r   r  r   r   r  r  r  r  r  linear_sample_klinear_sample_vlinear_sample_k_biaslinear_sample_v_biass                 r   %convert_sana_transformer_to_diffusersrf    s   
!"D T#q(BL..QRBSJqyy!92>?T cW:WWXY[\_``J NN;6@nnE]6^234>NNCY4Z01 PZ~~!PKL NX^^\sMtIJOY~~!PKL NX^^\sMtIJ7A~~FX7Y345?^^DT5U12 NN+,AKPnAo=>?I~~Nj?k;<AKPnAo=>?I~~Nj?k;<2<..AZ2[./: =
LVNNaS*+M
21#5GHI
 (-{{:>>GA3N^B_3`bcij'k$(HLQIIW_V`La21#5GHILQIIW_V`La21#5GHILQIIW_V`La21#5GHI Q[P^P^aS)*Q
21#5KLM OYnnaS(O
21#5IJK
 MWNNaS34M
21#5GHI KU..aS12K
21#5EFG ,1;;NNWQC'CDEqa,
( 6;[[NNWQC'ABCQA6
22 M\21#5GHIL[21#5GHIJ^21#5EFGJ^21#5EFG Q[P^P^aS/0Q
21#5KLM OYnnaS-.O
21#5IJK
 S]R`R`aS67S
21#5MNO Q[P^P^aS45Q
21#5KLM PZ~~aS34P
21#5JKL NX^^aS12N
21#5HIJ PZ~~aS34P
21#5JKLw=
@ /9nn=X.Y*+,6NN;T,U)0:?^0_,-r   c                    i }t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - i ddddddd	d
dddddddddddddddddddddd d!d"d#d d$d%d&d'd(d)d*d+d,d-d"d.}t        | j                               D ]E  }|d d  }|j	                         D ]  \  }}	|j                  ||	      } | j                  |      ||<   G |S )/Nr   r   ztime_embedding.0z)condition_embedder.time_embedder.linear_1ztime_embedding.2z)condition_embedder.time_embedder.linear_2ztext_embedding.0z)condition_embedder.text_embedder.linear_1ztext_embedding.2z)condition_embedder.text_embedder.linear_2ztime_projection.1zcondition_embedder.time_proj
cross_attnattn2	self_attnattn1z.o.rI  z.q.z.to_q.z.k.z.to_k.z.v.z.to_v.z.k_img.z.add_k_proj.z.v_img.z.add_v_proj.z.norm_k_img.z.norm_added_k.rE   r  z	head.headr  
modulationzffn.net.0.projz	ffn.net.2norm__placeholderr  r  z'condition_embedder.image_embedder.norm1z/condition_embedder.image_embedder.ff.net.0.projz*condition_embedder.image_embedder.ff.net.2z'condition_embedder.image_embedder.norm2r  )zffn.0zffn.2r  r  rm  zimg_emb.proj.0zimg_emb.proj.1zimg_emb.proj.3zimg_emb.proj.4before_proj
after_proj)rd  r   r  r   r  )
r   r   r  r   r   r  r(  rW  r  r  s
             r   $convert_wan_transformer_to_diffusersrp  %  s   
!"D T#q(BL..QRBSJqyy!92>?T"$G"$G"$ 	G"$ 	G	"$
 	;"$ 	g"$ 	W"$ 	|"$ 	x"$ 	x"$ 	x"$ 	>"$ 	>"$ 	("$ 	."$  	Z!"$" 	)#"$$ " %$CKFC  C"$ H JOO%& <a&'C'I'I'K 	?#Kook:>G	? )3s(;W%<  r   c                    i }i ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*}d+d,d-d.d/d0d1d2d3d4d5
}d6d7d8d9d:d;d<}d=d>d?d@dA}| j                         D ]  \  }}||v r||   }	|||	<   ||v r||   }	|||	<   %||v r||   }	|||	<   4||v r||   }	|||	<   C|dBk(  r||dC<   N|dDk(  r||dE<   Y|dFk(  r||dG<   d|dHk(  r||dI<   o|j                  dJ      r|j                  dJdK      }	dL|	v r|	j                  dLdM      }	ndN|	v r|	j                  dNdO      }	ndP|	v r|	j                  dPdQ      }	nrdR|	v r|	j                  dRdS      }	n[dT|	v r|	j                  dTdU      }	nDdV|	v r|	j                  dVdW      }	n-dX|	v r|	j                  dXdY      }	ndZ|	v r|	j                  dZd[      }	|||	<   P|j                  d\      r|j                  d]      }
t	        |
d^         }d_|v r|d`v rda}|}n+|dbv rdc}|ddz
  }n|dev rd^}|dfz
  }n|dgv rdh}|diz
  }n|||<   dL|v r
dj| dk| dM}	nHdN|v r
dj| dk| dO}	n:dP|v r
dj| dk| dQ}	n,dR|v r
dj| dk| dS}	ndT|v r
dj| dk| dU}	ndV|v r
dj| dk| dW}	n|}	|||	<   dl|v rU|ddk(  r%|j                  dldm      }	|	j                  dndo      }	n$|j                  d\dj      }	|	j                  dldp      }	|||	<   odq|v sdr|v rj|dhk(  r|j                  d\| ds      }	nH|dtk(  r|j                  d\| du      }	n-|dvk(  r|j                  d\| dw      }	n|j                  d\dj      }	|||	<   |j                  d\dj      }	|||	<   |||<    |S )xNz!encoder.middle.0.residual.0.gammaz'encoder.mid_block.resnets.0.norm1.gammaz encoder.middle.0.residual.2.biasz&encoder.mid_block.resnets.0.conv1.biasz"encoder.middle.0.residual.2.weightz(encoder.mid_block.resnets.0.conv1.weightz!encoder.middle.0.residual.3.gammaz'encoder.mid_block.resnets.0.norm2.gammaz encoder.middle.0.residual.6.biasz&encoder.mid_block.resnets.0.conv2.biasz"encoder.middle.0.residual.6.weightz(encoder.mid_block.resnets.0.conv2.weightz!encoder.middle.2.residual.0.gammaz'encoder.mid_block.resnets.1.norm1.gammaz encoder.middle.2.residual.2.biasz&encoder.mid_block.resnets.1.conv1.biasz"encoder.middle.2.residual.2.weightz(encoder.mid_block.resnets.1.conv1.weightz!encoder.middle.2.residual.3.gammaz'encoder.mid_block.resnets.1.norm2.gammaz encoder.middle.2.residual.6.biasz&encoder.mid_block.resnets.1.conv2.biasz"encoder.middle.2.residual.6.weightz(encoder.mid_block.resnets.1.conv2.weightrF   z'decoder.mid_block.resnets.0.norm1.gammaz decoder.middle.0.residual.2.biasz&decoder.mid_block.resnets.0.conv1.biasz"decoder.middle.0.residual.2.weightz(decoder.mid_block.resnets.0.conv1.weightz!decoder.middle.0.residual.3.gammaz'decoder.mid_block.resnets.0.norm2.gammaz decoder.middle.0.residual.6.biasz&decoder.mid_block.resnets.0.conv2.biasz(decoder.mid_block.resnets.0.conv2.weightz'decoder.mid_block.resnets.1.norm1.gammaz&decoder.mid_block.resnets.1.conv1.biasz(decoder.mid_block.resnets.1.conv1.weightz'decoder.mid_block.resnets.1.norm2.gammaz&decoder.mid_block.resnets.1.conv2.biasz(decoder.mid_block.resnets.1.conv2.weight)z"decoder.middle.0.residual.6.weightz!decoder.middle.2.residual.0.gammaz decoder.middle.2.residual.2.biasz"decoder.middle.2.residual.2.weightz!decoder.middle.2.residual.3.gammaz decoder.middle.2.residual.6.biasz"decoder.middle.2.residual.6.weightz)encoder.mid_block.attentions.0.norm.gammaz,encoder.mid_block.attentions.0.to_qkv.weightz*encoder.mid_block.attentions.0.to_qkv.biasz*encoder.mid_block.attentions.0.proj.weightz(encoder.mid_block.attentions.0.proj.biasz)decoder.mid_block.attentions.0.norm.gammaz,decoder.mid_block.attentions.0.to_qkv.weightz*decoder.mid_block.attentions.0.to_qkv.biasz*decoder.mid_block.attentions.0.proj.weightz(decoder.mid_block.attentions.0.proj.bias)
zencoder.middle.1.norm.gammazencoder.middle.1.to_qkv.weightzencoder.middle.1.to_qkv.biaszencoder.middle.1.proj.weightzencoder.middle.1.proj.biaszdecoder.middle.1.norm.gammazdecoder.middle.1.to_qkv.weightzdecoder.middle.1.to_qkv.biaszdecoder.middle.1.proj.weightzdecoder.middle.1.proj.biaszencoder.norm_out.gammar   r   zdecoder.norm_out.gammar   r   )zencoder.head.0.gammazencoder.head.2.biaszencoder.head.2.weightzdecoder.head.0.gammazdecoder.head.2.biaszdecoder.head.2.weightr   r   r   r   )zconv1.weightz
conv1.biaszconv2.weightz
conv2.biaszencoder.conv1.weightr   zencoder.conv1.biasr   zdecoder.conv1.weightr   zdecoder.conv1.biasr   zencoder.downsamples.r3  z.residual.0.gammaz.norm1.gammaz.residual.2.biasz.conv1.biasz.residual.2.weightz.conv1.weightz.residual.3.gammaz.norm2.gammaz.residual.6.biasz.conv2.biasz.residual.6.weightz.conv2.weightz.shortcut.biasz.conv_shortcut.biasz.shortcut.weightz.conv_shortcut.weightzdecoder.upsamples.rb  r   residual)r   r   r   r   )r        r   r  )rF  r#  
   rF  )         r   rv  r4  r  z
.shortcut.z.resnets.0.conv_shortcut.zdecoder.upsamples.4zdecoder.up_blocks.1z.conv_shortcut.z
.resample.z.time_conv.z decoder.up_blocks.0.upsamplers.0   z decoder.up_blocks.1.upsamplers.0   z decoder.up_blocks.2.upsamplers.0)r  r  r   re  r  )r   r   r  middle_key_mappingattention_mappinghead_mappingquant_mappingr(  valuerW  parts	block_idxnew_block_idx
resnet_idxs                 r   convert_wan_vae_to_diffusersr  [  s   +-V 	+,T 	-.X	
 	,-V 	+,T 	-.X 	,-V 	+,T 	-.X 	,-V 	+,T 	-.X 	,-V  	+,T!" 	-.X#$ 	,-V%& 	+,T'( /Y-V,T.X-V,T.X5@ (S*X(T(T&P'R*X(T(T&P$ !96!: 86!:	L ,'0,	M !&&( {.
U$$(-G,1 )%%',G,1 )L "3'G,1 )M!#C(G,1 )**=B !9:((;@ !78**=B !9:((;@ !78^^23kk"8:PQG #g-!//*=~N#w.!//*<mL%0!//*>P$/!//*=~N#w.!//*<mL%0!//*>P!W,!//*:<QR#w.!//*<>UV,1 ) ^^01IIcNEE!HI S 	)$%M!*J)+$%M!*QJ*,$%M!*QJ,.$%M!*RJ 16(- '#- 2=/:,VbcG'3. 2=/:,VabG)S0 2=/:,VcdG(C/ 2=/:,VbcG'3. 2=/:,VabG)S0 2=/:,VcdG!G05$W- $>!kk,8STG%oo.CEZ[G!kk*>@TUG%ool<MNG05$W- $(<>!kk,>yk*JLnoG!^!kk,>yk*JLnoG"_!kk,>yk*JLnoG!kk*>@TUG05$W-++&:<PQ05$W- ). %w{.z  r   c                     t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - | S )Nr   r   )rd  r   r  r   )r   r   r   r   s       r   (convert_hidream_transformer_to_diffusersr  !  sT    
!"D T#q(BL..QRBSJqyy!92>?T r   c                    i }t        | j                               }|D ]+  }d|v s| j                  |      | |j                  dd      <   - t        t	        d | D                    d   dz   }t        t	        d | D                    d   dz   }t        t	        d | D                    d   dz   }d}d	}	d
 }
| j                  d      |d<   | j                  d      |d<   | j                  d      |d<   | j                  d      |d<   t        |      D ]  }d| d}| j                  d| d      || d<   | j                  d| d      || d<   | j                  d| d      || d<   | j                  d| d      || d<   | j                  d| d      |d| d<    | j                  d      |d<   | j                  d      |d<   | j                  d       |d!<   | j                  d"      |d#<   t        |      D ]  }d$| d}t        j                  | j                  d%| d&      d'd()      \  }}}t        j                  | j                  d%| d*      d'd()      \  }}}t        j                  | j                  d%| d+      d'd()      \  }}}t        j                  | j                  d%| d,      d'd()      \  }}}t        j                  |g      || d-<   t        j                  |g      || d.<   t        j                  |g      || d/<   t        j                  |g      || d0<   t        j                  |g      || d1<   t        j                  |g      || d2<   t        j                  |g      || d3<   t        j                  |g      || d4<   t        j                  |g      || d5<   t        j                  |g      || d6<   t        j                  |g      || d7<   t        j                  |g      || d8<   | j                  d%| d9      || d:<   | j                  d%| d;      || d<<   | j                  d%| d=      || d><   | j                  d%| d?      || d@<   | j                  d%| dA      || dB<   | j                  d%| dC      || dD<   | j                  d%| dE      || dF<   | j                  d%| dG      || dH<   | j                  d%| dI      || dJ<   | j                  d%| dK      || dL<   | j                  d%| dM      || dN<   | j                  d%| dO      || dP<   | j                  d%| dQ      || dR<   | j                  d%| dS      || dT<   | j                  d%| dU      || dV<   | j                  d%| dW      || dX<    t        |      D ]  }dY| d}t        |	|z        }|	|	|	|f}t        j                  | j                  dZ| d[      |d()      \  }}}}t        j                  | j                  dZ| d\      |d()      \  }}} }!t        j                  |g      || d-<   t        j                  |g      || d.<   t        j                  |g      || d/<   t        j                  |g      || d0<   t        j                  |g      || d1<   t        j                  | g      || d2<   t        j                  |g      || d]<   t        j                  |!g      || d^<   | j                  dZ| d_      || d:<   | j                  dZ| d`      || d<<   | j                  dZ| da      || db<   | j                  dZ| dc      || dd<    | j                  de      |db<   | j                  df      |dd<   |S )gNr   r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) ywr   r  r   s     r   r   zEconvert_chroma_transformer_checkpoint_to_diffusers.<locals>.<genexpr>2  r"  r  r$  r   c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) ywr$  r  r   s     r   r   zEconvert_chroma_transformer_checkpoint_to_diffusers.<locals>.<genexpr>3  r&  r  c              3   b   K   | ]'  }d |v st        |j                  dd      d          ) yw) distilled_guidance_layer.layers.rb  r   r   Nr  r   s     r   r   zEconvert_chroma_transformer_checkpoint_to_diffusers.<locals>.<genexpr>5  s-     hQ@bfg@gQWWS!_Q'(hr  r'  r(  c                 d    | j                  dd      \  }}t        j                  ||gd      }|S r  r  r*  s       r   r  zLconvert_chroma_transformer_checkpoint_to_diffusers.<locals>.swap_scale_shift<  r+  r   z%distilled_guidance_layer.in_proj.biasz'distilled_guidance_layer.in_proj.weightz&distilled_guidance_layer.out_proj.biasz(distilled_guidance_layer.out_proj.weightr  rb  z.in_layer.biaszlinear_1.biasz.in_layer.weightzlinear_1.weightz.out_layer.biaszlinear_2.biasz.out_layer.weightzlinear_2.weightzdistilled_guidance_layer.norms.z.scaler$  r.  r  r/  r  r9  r0  r1  r2  r  r!  r7  r   r   r  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  r%  rh  ri  rj  rk  rl  rm  rn  r  ro  r  r  r  )rd  r   r  r   r  r  rj  r  r  r  re  )"r   r   r  r   r   r  rp  num_guidance_layersrq  rr  r  r  rt  r  r  r  r  r  r  r  r  r  r  r  r   ru  rv  rw  r  rx  ry  rz  r{  r|  s"                                     r   2convert_chroma_transformer_checkpoint_to_diffusersr  *  s/
   
!"D T#q(BL..QRBSJqyy!92>?T c_:__`acdghhJS f* ffghjknooSh*hhijlmpqq  II EONN/E@A GQnn1GBC FP^^0FAB HR~~2HCD &' 
9!A>?I~~.qc@@
~];< BL.qc1ABB
~_=> @J~~.qcA@
~];< BL.qc1BCB
~_=> NX^^-aS7N
>qcIJ
& 7Ann_6U234>NN=4Q01 1;0O,-.8nn].K*+ : E
,QCq1',{{:>>NSTRUUiBj3kmntu'v$(H*/++NN^A3.BCDaQ+
'	9i 7<kkNN^A3.@ABA17
3}m :?NN^A3.@ABA1:
6 CH))XJBW~-=>?@E		=/@Z~^<=BG))XJBW~-=>?@E		=/@Z~^<=BG))XJBW~-=>?@E		=/@Z~^<=HM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCHM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCHM		S\R]H^~-CDEFKiiQ_P`Fa~-ABCDNNNQC>?E
~-?@A EONNQC<=E
~-?@A KU..QC>?K
~-EFG KU..QC<=K
~-EFG GQnnQC01G
~-ABC EONNUcdecffuSvDw~-?@AAKR`ab`cctPuAv~_=>?I~~P^_`^aapNq?r~];<NXnnQC01O
~-IJK MWNNQC/M
~-GHI JTQC01J
~-DEF HR~~QC/H
~-BCD GQnnQC45G
~-ABC EONNQC23E
~-?@A ISQC45I
~-CDE GQnnQC23G
~-ABCGE
P $% q3A3a8Y23I~F
{{:>>N1#_2U#VXbhij1a+0;;NN^A3m<=zq,
( CH))QC.~-=>?@E		6(@S~^<=BG))QC.~-=>?@E		6(@S~^<=BG))QC.~-=>?@E		6(@S~^<=AFC5AQ~_=>?Dyy(?T~];<DNNNQC56E
~-?@A EONNQC34E
~-?@A BLR`ab`ccrPsAt~_=>?I~~P^_`^aanNo?p~];<5q8 /9nn=X.Y*+,6NN;T,U)r   c           	      x   t        | j                               D ci c]  }|| j                  |       }}dt        fd}dt        fd}i dddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-}|||||d.}i ddd/dd0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBddCddDd#dEdFdGddHd!dIdJdKd*d+d,dL}||||||||dM}	dN}
dO| v r|}|}n|}|	}t        |j                               }|D ]g  }|d d  }|j	                  |
      r|j                  |
      }|j                         D ]  \  }}|j                  ||      } |j                  |      ||<   i t        |j                               }|D ](  }|j                         D ]  \  }}||vr |||        * |S c c}w )PNr(  c                 &    |j                  |        y r   r  r  s     r   r  zHconvert_cosmos_transformer_checkpoint_to_diffusers.<locals>.remove_keys_  r  r   c                     t        | j                  d      d   j                  d            }| }d| }d| }||j                  |      z   }|j                  |       ||<   y )Nrb  r   blockblocks.blockr  )r  re  removeprefixr  )r(  r   block_indexrW  r  
new_prefixs         r   rename_transformer_blocks_zVconvert_cosmos_transformer_checkpoint_to_diffusers.<locals>.rename_transformer_blocks_  si    #))C.+88AB#K=1
*;-8
w33J??(nnS1
7r   zt_embedder.1ztime_embed.t_embedderaffline_normztime_embed.normz.blocks.0.block.attnr  z.blocks.1.block.attnr  z.blocks.2.blockz.ffz.blocks.0.adaLN_modulation.1z.norm1.linear_1z.blocks.0.adaLN_modulation.2z.norm1.linear_2z.blocks.1.adaLN_modulation.1z.norm2.linear_1z.blocks.1.adaLN_modulation.2z.norm2.linear_2z.blocks.2.adaLN_modulation.1z.norm3.linear_1z.blocks.2.adaLN_modulation.2z.norm3.linear_2zto_q.0r  zto_q.1r  zto_k.0r  zto_k.1r  zto_v.0r  layer1r  r  r  patch_embedlearnable_pos_embedrR  rS  r  )layer2zproj.1r  extra_pos_embedderr  zfinal_layer.adaLN_modulation.2r  )r  zlogvar.0.freqszlogvar.0.phaseszlogvar.1.weightpos_embedder.seqt_embedding_normra  r  zadaln_modulation_self_attn.1znorm1.linear_1zadaln_modulation_self_attn.2znorm1.linear_2zadaln_modulation_cross_attn.1znorm2.linear_1zadaln_modulation_cross_attn.2znorm2.linear_2zadaln_modulation_mlp.1znorm3.linear_1zadaln_modulation_mlp.2znorm3.linear_2rj  rk  rh  ri  q_projk_projv_projoutput_projr.  r  r  zff.net.0.projzff.net.2zpatch_embed.proj)z
mlp.layer1z
mlp.layer2zx_embedder.proj.1zfinal_layer.adaln_modulation.1zfinal_layer.adaln_modulation.2r  )accum_video_sample_counteraccum_image_sample_counteraccum_iterationaccum_train_in_hoursr  zpos_embedder.dim_spatial_rangezpos_embedder.dim_temporal_range_extra_stateznet.rH   )rd  r   r  r  r  r  r  r   )r   r   r(  r  r  r  'TRANSFORMER_KEYS_RENAME_DICT_COSMOS_1_0)TRANSFORMER_SPECIAL_KEYS_REMAP_COSMOS_1_0'TRANSFORMER_KEYS_RENAME_DICT_COSMOS_2_0)TRANSFORMER_SPECIAL_KEYS_REMAP_COSMOS_2_0
PREFIX_KEYr  r  r<  rW  r  r  r  r  s                      r   2convert_cosmos_transformer_checkpoint_to_diffusersr    s   @DZ__EV@WXC!44XX# 2 2///)/ 	/ 		/
 	5/ 	'(9/ 	'(9/ 	'(9/ 	'(9/ 	'(9/ 	'(9/ 	&/ 	(/ 	&/ 	(/  	&!/" 	,#/$ #3*=*=(1/+8 3&''(1-///-/ 	&/ 	'(8	/
 	'(8/ 	()9/ 	()9/ 	!"2/ 	!"2/ 	W/ 	g/ 	&/ 	&/ 	&/ 	z/  	(!/" 	(#/$ & /*=*=(//+6 '3&2' ,(*6+7$	1- J<
J'N$)R&'N$)R&/4467O Fa&j)**:6G'C'I'I'K 	?#Kook:>G	?(<(@(@(EW%F /4467O :/M/S/S/U 	:+K+#%s$89	::  [ Ys   F7)FNNNNNFN)Fr   )NNN)NN)ra  )r   NNNF)NF)r   NNN)y__doc__rY  r   r   
contextlibr   ior   urllib.parser   r  rj  r  models.modeling_utilsr   
schedulersr   r	   r
   r   r   r   r   r   utilsr   r   r   r   r   r   utils.constantsr   utils.hub_utilsr   utils.torch_utilsr   transformersr   
accelerater   models.model_loading_utilsr   
get_loggerr   r   r  rX  r^  r  rL  r  r5  r  r  r  r&  rC  rK  r   r   	Exceptionr   r   r   r   r   r   r	  r  r  r  r  r  r  r  r!  rV  r\  r`  rh  r  r  r  r  r  r  r  r  r"  r/  r@  rG  rZ  rv  r  r  r  r  r  r  r  r  r	  r  r  r  r}  r  r  r  r  r  rG  r^  rf  rp  r  r  r  r  r&  r   r   <module>r     s}   >  	 	 "  !    3	 	 	  8 - 2 /-F			H	%Q
KQ
YQ VQ Y	Q
 MQ +2Q 4Q ^Q AQ zQ AQ  Z!Q" f#Q$ b%Q& @'Q( J)Q* M+Q, g-Q. D/Q0 61Q2 
>T3Q: 0F;QB CQD QEQF \GQH FIQJ 9KQL  MQX 6LYQ`  aQn FoQp 9qQr JLhisQt WuQv H=?VW 45FG2/E
YQ fJ$/1[\J$24abJ$ 24fgJ$ 79hi	J$
 /1[\J$ 24ghJ$ 57bcJ$ 24XYJ$ ;=bcJ$ 9;deJ$ ;=hiJ$ 	*,N
OJ$ 	*,Y
ZJ$ @\ktuJ$ ")E#$J$& )K'J$. ")K!$/J$6 
')Z7J$< ')Q=J$B ')RCJ$H 68`aIJ$J 68bcKJ$L 68bcMJ$N =?lmOJ$P <>fgQJ$R 79\]SJ$T 02EFUJ$V 02PQWJ$X 13VWYJ$Z 24XY[J$\ 46XY]J$^ 13NO_J$` 79TUaJ$b 79UVcJ$d 79YZeJ$f  ?AopgJ$h >@mniJ$j =?klkJ$l !#BDq"rmJ$n 79PQoJ$p 57\]qJ$r 8:VWsJ$t /1NOuJ$v ,.abwJ$x 46XYyJ$z 35VW{J$| 35[\}J$~ 57Z[J$@ 46XYAJ$B /1LMCJ$D 9;fgEJ$F ;<hi9;gh:<ij9;ab:<cd9;bc:<deSJ$  \ 

+ '$ /D,?.C,?73$2".-)
 0F-A/E-A	
 .D+?-C+?	 
'8 /D,?.C,?738S6O9U7Q
 0F-A/E-A	
 .D+?-C+?	 
'4 ": 6 	"#< 	 !8	
 	'(A 	%&= 	!": 	 6 	"#< 	 !8 	'(A 	%&= 	0 	, 	!":  	 6!( @V<T2C0?&7
 +7!!!8CH`Ka

O[ z$  $ %" !  %f-!(  # '% #*  %) !,.>? _ 'y '!(D 
%P,&Rj	; Z^@F@0f@@@V45pdN|~eP* %?J cT 	GT4V$,"
 D$ &R &B J 8h VE Po dDY xE Pf R3 lC Lf Rn r   