
    wi$                       d 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  e            rddl m!Z!  e            rddl"m#Z# ddlm$Z$  ej%        e&          Z'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/Z(d0d1id0d2id0d3id0d4id0d5id0d6id0d7id0d8id0d9id0d:id;d<d=d;d>d=d?d@d=d?dAd=d0dBidCZ)dDdDdDdDdEdEdEdEdFdEdG
Z*dHdIdJdKdLdMdNdOdPdQdR
dSdTdUdVdWdSdTdUdVdXdYdHdIdJdKdLdMdZd[d\d]d^
dSdTdUdVdWdSdTdUdVdXdYi d_d_d`d`dadadbdbdcdddedfdgdgdhdhdididjdjdkdldmdndododpdpdqdqdrdrdsdtdudvdwdxdydzd{d|d}d~ddtdsd	ddZ+g dZ,ddddddddddddZ-dZ.dZ/dZ0dZ1dZ2g dZ3dZ4dDZ5g dZ6 G d de7          Z8d Z9d Z:d Z;	 	 	 	 	 	 	 ddZ<ddZ=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGddZHd ZI	 ddZJddZKddZLddZMd ZNd ZOd ZPd ZQddZRd ZSd ZTd ZU	 ddZV	 	 	 	 	 ddZW	 ddZXddZYd ZZd Z[d Z\d Z]d Z^	 	 	 	 ddZ_dS )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)_get_model_file)AutoImageProcessor)init_empty_weights)load_model_dict_into_meta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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sd3zJmodel.diffusion_model.joint_blocks.0.context_block.adaLN_modulation.1.biaspretrained_model_name_or_pathz(stabilityai/stable-diffusion-xl-base-1.0z+stabilityai/stable-diffusion-xl-refiner-1.0z0diffusers/stable-diffusion-xl-1.0-inpainting-0.1z-playgroundai/playground-v2.5-1024px-aestheticz(stabilityai/stable-diffusion-x4-upscalerz$runwayml/stable-diffusion-inpaintingz)stabilityai/stable-diffusion-2-inpaintingz"lllyasviel/control_v11p_sd15_cannyz stabilityai/stable-diffusion-2-1zrunwayml/stable-diffusion-v1-5zstabilityai/stable-cascadedecoder)r-   	subfolderdecoder_litez stabilityai/stable-cascade-priorprior
prior_litez/stabilityai/stable-diffusion-3-medium-diffusers)r   r   
xl_inpaintr   r   r!   inpainting_v2r   r   v1r)   stable_cascade_stage_b_liter*   stable_cascade_stage_c_liter,      i   i   )
r   r   r3   r   r   r!   r4   r   r   r5   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)zadd_embedding.linear_1.weightz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?   z(controlnet_cond_embedding.conv_in.weightz&controlnet_cond_embedding.conv_in.biasz)controlnet_cond_embedding.conv_out.weightz'controlnet_cond_embedding.conv_out.biaszencoder.conv_in.weightzencoder.conv_in.biaszencoder.conv_out.weightzencoder.conv_out.biaszencoder.conv_norm_out.weightzencoder.norm_out.weightzencoder.conv_norm_out.biaszencoder.norm_out.biaszdecoder.conv_in.weightzdecoder.conv_in.biaszdecoder.conv_out.weightzdecoder.conv_out.biaszdecoder.conv_norm_out.weightzdecoder.norm_out.weightzdecoder.conv_norm_out.biaszdecoder.norm_out.biaszquant_conv.weightzquant_conv.biaszpost_quant_conv.weightz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.biasz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.g{P?      ?model.diffusion_model.zcontrol_model.)zcond_stage_model.transformer.z$conditioner.embedders.0.transformer.z!text_encoders.clip_l.transformer.conditioner.embedders.0.model.)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 )SingleFileComponentErrorNc                 b    || _         t                                          | j                    d S N)messagesuper__init__)selfrf   	__class__s     s/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/diffusers/loaders/single_file_utils.pyrh   z!SingleFileComponentError.__init__  s*    &&&&&    re   )__name__
__module____qualname__rh   __classcell__)rj   s   @rk   rc   rc     s=        ' ' ' ' ' ' ' ' ' 'rl   rc   c                 D    t          |           }|j        r	|j        rdS dS )NTF)r   schemenetloc)urlresults     rk   is_valid_urlrv     s*    c]]F}  t5rl   c                    t          |           st          d          d}d }d}t          D ]}|                     |d          } t	          j        ||           }|st                              d           ||fS |                    d           d|                    d           }|                    d	          }||fS )
NzOInvalid `pretrained_model_name_or_path` provided. Please set it to a valid URL.z#([^/]+)/([^/]+)/(?:blob/main/)?(.+)re    zFUnable to identify the repo_id and weights_name from the provided URL.rR   /r      )	rv   
ValueErrorVALID_URL_PREFIXESreplacerematchloggerwarninggroup)r-   patternweights_namerepo_idprefixr   s         rk   !_extract_repo_id_and_weights_namer     s    566 ljkkk4GLG$ Z Z(E(M(MfVX(Y(Y%%HW;<<E %_```$$Q22%++a..22G;;q>>LL  rl   c                     t           j                            | |          }d}t          t          fD ]A}t           j                            t           j                            ||                    rd}B|S )NFT)ospathjoinr   r   isfile)cached_foldernamer-   weights_existr   s        rk   "_is_model_weights_in_cached_folderr   )  se    $&GLL$E$E!M%'?@ ! !7>>"',,'DlSSTT 	! Mrl   c                     t           j                            |           r| } n*t          |           \  }}	t	          ||	|||||||	  	        } t          |           }
d|
v r|
d         }
d|
v |
S )N)r   force_download	cache_dirresume_downloadproxieslocal_files_onlytokenrevision
state_dict)r   r   r   r   r   r   )pretrained_model_link_or_pathr   r   r   r   r   r   r   r   r   
checkpoints              rk   load_single_file_checkpointr   4  s     
w~~344 
(E%% !BB_ ` `(7%)+-
)
 
)
 
)
% !!>??J *
$
$-
 *
$
$ rl   c                    t           j                            |           r=t          | d          5 }|                                } d d d            n# 1 swxY w Y   nVt          |           r8|rt          d          t          t          j	        |           j
                  } nt          d          t          j        |           }|S )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.zSInvalid `original_config_file` provided. Please set it to a valid file path or URL.)r   r   r   openreadrv   r{   r   requestsgetcontentyaml	safe_load)original_config_filer   fporiginal_configs       rk   fetch_original_configr   X  s   	w~~*++ p&,, 	-#%7799 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 
*	+	+ 
p 	:  
  'x|4H'I'I'QRR nooon%9::Os   AAAc                 (    t           d         | v rdS dS )Nr"   TFCHECKPOINT_KEY_NAMESr   s    rk   is_clip_modelr   n  s    F#z11t5rl   c                 (    t           d         | v rdS dS )Nr#   TFr   r   s    rk   is_clip_sdxl_modelr   u      K(J66t5rl   c                 (    t           d         | v rdS dS )Nr$   TFr   r   s    rk   is_clip_sd3_modelr   |  s    J':55t5rl   c                 (    t           d         | v rdS dS )Nr%   TFr   r   s    rk   is_open_clip_modelr     r   rl   c                 (    t           d         | v rdS dS )Nr&   TFr   r   s    rk   is_open_clip_sdxl_modelr     s    ,-;;t5rl   c                 $    t          |            d S re   )is_open_clip_sdxl_refiner_modelr   s    rk   is_open_clip_sd3_modelr     s    #J/////rl   c                 (    t           d         | v rdS dS )Nr(   TFr   r   s    rk   r   r     s    O,
::t5rl   c           
          t          t          |          t          |          t          |          t	          |          t          |          t          |          g          }| j        dk    s| j        dk    r|rdS dS )NCLIPTextModelCLIPTextModelWithProjectionTF)anyr   r   r   r   r   r   rm   )	class_objr   is_clip_in_checkpoints      rk   is_clip_model_in_single_filer     s    *%%j))z**#J//+J77":..	
	 	 	o--1CGd1d1d
 2et5rl   c                    t           d         | v r[| t           d                  j        d         dk    r9t           d         | v r&| t           d                  j        d         dk    rd}nzd}nvt           d         | v r&| t           d                  j        d         dk    rd}nAt           d         | v rd}n.t           d	         | v rd	}nt           d
         | v rd
}nt           d         | v rd}nt           d         | v rd}nt           d         | v r%| t           d                  j        d         dk    rd}nt           d         | v r%| t           d                  j        d         dk    rd}n|t           d         | v r%| t           d                  j        d         dk    rd}nHt           d         | v r%| t           d                  j        d         dk    rd}nt           d         | v rd}nd}|S )Nr!   rR   	   r   r8   r4   r   r   r   r   r   r*   r      r7      r)   i@  r6   i  r,   r5   )r   shape)r   
model_types     rk   infer_diffusers_model_typer     s%   \*j88+L9:@CqHH%33
CWX\C]8^8deg8hlp8p8p(JJ%JJ	d	#z	1	1jAUVZA[6\6bce6fjn6n6n

	/	0J	>	>&

	i	(J	6	6

	l	+z	9	9!

	i	(J	6	6

	l	+z	9	9!

 	56*DD+,DEFLQOSWWW2

 	56*DD+,DEFLQOSWWW-

 	56*DD+,DEFLRPTWWW2

 	56*DD+,DEFLRPTWWW-

	e	$
	2	2

 
rl   c                 >    t          |           }t          |         }|S re   )r    DIFFUSERS_DEFAULT_PIPELINE_PATHS)r   r   
model_paths      rk   fetch_diffusers_configr     s    +J77J1*=Jrl   c                 F    |r|S t          |           }t          |         }|S re   )r   'DIFFUSERS_TO_LDM_DEFAULT_IMAGE_SIZE_MAP)r   
image_sizer   s      rk   set_image_sizer     s-     +J77J8DJrl   c                 n   t          |                                           }g d}|D ]}d                    |                    d          dd                    |v r+| |         j        dk    r| |         d d d d ddf         | |<   _d|v r)| |         j        dk    r| |         d d d d df         | |<   d S )N)zquery.weightz
key.weightzvalue.weight.r   r   zproj_attn.weight)listkeysr   splitndim)r   r   	attn_keyskeys       rk   conv_attn_to_linearr     s    
!!""D>>>I ; ;88CIIcNN233'((I55##a''",S/!!!QQQ1*"=
33&&##a''",S/!!!QQQ'":
3; ;rl   c                 4   |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         }fdd         D             }g }	d}
t          t          |                    D ]@}|
d         v rdnd}|	                    |           |t          |          dz
  k    r|
dz  }
Ag }t          t          |                    D ]*}|
d         v rdnd}|                    |           |
dz  }
+d         9t          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}|r4|2d         d         z  fdt          d                   D             }d}d}d}d}d}d         1t          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/<   ||d0<   |S )1R
    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ddconfigc                 &    g | ]}d          |z  S )model_channels ).0multunet_paramss     rk   
<listcomp>z9create_unet_diffusers_config_from_ldm.<locals>.<listcomp>,  s$    ggg4+&67$>gggrl   channel_multrR   attention_resolutionsCrossAttnDownBlock2DDownBlock2Dr   CrossAttnUpBlock2D	UpBlock2Dtransformer_depthch_mult	num_headsuse_linear_in_transformerFr   num_head_channelsc                     g | ]}|z  S r   r   )r   chead_dim_mults     rk   r   z9create_unet_diffusers_config_from_ldm.<locals>.<listcomp>O  s    UUUa)UUUrl   context_dimr   num_classes
sequential)r   i   	text_time   
projectionadm_in_channelsnum_res_blocks)sample_sizer   down_block_typesblock_out_channelslayers_per_blockcross_attention_dimattention_head_dimuse_linear_projectionrA   rB   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intr   )r   r   r   r  num_in_channelsdeprecation_messager   
vae_paramsr  r  
resolutioni
block_typer  r  vae_scale_factorhead_dimr  rA   rB   r  r  r   configr   r   s                           @@rk   %create_unet_diffusers_config_from_ldmr#  
  s~    D 	 	,)<===
zBBBJ 	1(;;;G$X.}=I%g.x8GQ%g.x89IJ8T"D 	 	,)<===%!-0 )(34HI(ST^_Jgggg;WeKfgggJ3)**++  /9[I`=a/a/a++gt

+++&''!+++!OJN3)**++  -7;G^;_-_-_))ep
j)))q

&'3 +&9:C@@8K+,,k"5677 	%$ ()$SI!677!;<+6++E+E{;''4H4OS^4^4^/00di   V'(89[I\=]]MUUUU4N8S3T3TUUUH",0)K=!- +m4c::/K&&]+A. 	 ##}%55l**&1#*-''#/ $33334?@Q4R1 "%55",0'(89*&!6,2#:1V(D F  #D 	 	,)<===%5!" K//)45N)O%&##
;}3Ms(S(S#%0%?!"(8F>-FMrl   c                 d   |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   r   r   r   r   control_stage_confighint_channelsr   r  r  r  r	  r
  r  rA   rB   r  r  r  )conditioning_channelsr   r  r  r  r	  r
  r  rA   rB   r  r  r  )r   r   r#  )r   r   r   kwargsr  r   diffusers_unet_configcontrolnet_configs           rk   +create_controlnet_diffusers_config_from_ldmr+    s    D 	 	,)<===
zBBBJ!'*845KLXVKA/^hiii "-_!=,];12DE34HI12DE45JK34HI!67N!O12DE45JK#89R#S1FGn1o(=>\(]   rl   c           
      >   |d}t          dd|           t          ||          }d|v rd|v r|d         }|d         }nd}d}| d         d	         d
         d	         d         ||
|t          }n0|%d| d         d	         v r| d         d	         d         }n	|t          }fdd         D             }dgt	          |          z  }dgt	          |          z  }	|d         d         ||	|d         d         |d	}
|||
                    ||d           |
S )r   NzmConfiguring AutoencoderKL with the `image_size` argumentis deprecated and will be ignored in future versions.r   r   r   r    edm_stdr   r   r   r   scale_factorc                 &    g | ]}d          |z  S )chr   )r   r   r  s     rk   r   z8create_vae_diffusers_config_from_ldm.<locals>.<listcomp>  s#    TTTd*T*T1TTTrl   r   DownEncoderBlock2DUpDecoderBlock2Dr   out_ch
z_channelsr  )	r  r   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   r6  r  r7  r8  r  r  r  r"  r  s              @rk   $create_vae_diffusers_config_from_ldmr<    s    D 	 	,)<===
zBBBJZI$;$;!*- + )(34HI(ST^_J\%=KD[6

 ~9QRZ9['['[(1(;NK		7TTTTj>STTT,-4F0G0GG()C0B,C,CCN "!-0"8,,(0%l3&'78(
 
F K$;|KPPQQQMrl   c                 |   | D ]}|                     dd                               dd                               dd                               dd                               d	d
                               dd          }|r"|                     |d         |d                   }|                    |          ||<   d S )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         rk   #update_unet_resnet_ldm_to_diffusersrN    s     @ @OOM733W]G,,W^W--W^W--W^_55W&88 	  	R)11'%.'%.QQM(2w(?(?}%%@ @rl   c                     | D ]<}|                     |d         |d                   }|                    |          ||<   =d S )NrE  rF  rG  rH  s         rk   &update_unet_attention_ldm_to_diffusersrP    sS     @ @GG(2w(?(?}%%@ @rl   c                     | D ]P}|                     |d         |d                                        dd          }|                    |          ||<   Qd S )NrE  rF  nin_shortcutrD  rG  )r   rJ  r   rK  rL  rM  s         rk   "update_vae_resnet_ldm_to_diffusersrS    se     @ @GGOOP^`opp(2w(?(?}%%@ @rl   c                    | D ]k}|                     |d         |d                                        dd                               dd                               dd                               d	d
                               dd                               dd                               dd                               dd                               dd                               dd          }|                    |          ||<   ||         j        }t          |          dk    r||         d d d d df         ||<   ?t          |          dk    r||         d d d d ddf         ||<   md S )NrE  rF  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.biasrz   r      )r}   r   r   r  )r   rJ  r   rK  rL  rM  r   s          rk   &update_vae_attentions_ldm_to_diffusersr`    si    V VOOGENGEN;;W]$788W["344WZ//WX{++WZ//WX{++WZ//WX{++W&(9::W_o66 	 )3w(?(?}% }-3u::??,:=,I!!!QQQPQ',RN=))ZZ1__,:=,I!!!QQQPQST*,UN=)-V Vrl   c                    d| v }|ri }|                                  D ]}|                    d          rz| |                             dd          }|d         ||                    dd          <   |d         ||                    dd          <   |d	         ||                    dd
          <   |                    d          r{| |                             dd          }|d         ||                    dd          <   |d         ||                    dd          <   |d	         ||                    dd          <   "|                    d          r#| |         }|||                    dd          <   Z|                    d          r#| |         }|||                    dd          <   | |         ||<   n%i }|                                  D ]}|                    d          rz| |                             dd          }|d         ||                    dd          <   |d         ||                    dd          <   |d	         ||                    dd
          <   |                    d          r{| |                             dd          }|d         ||                    dd          <   |d         ||                    dd          <   |d	         ||                    dd          <   "|                    d          r#| |         }|||                    dd          <   Z|                    d          r#| |         }|||                    dd          <   |                    d          r#| |         }|||                    dd          <   |                    d          r#| |         }|||                    dd          <   | |         ||<   |S )Nr+   in_proj_weightrz   r   zattn.in_proj_weightrU  rR   rW  r   rY  in_proj_biaszattn.in_proj_biasrV  rX  rZ  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   endswithchunkr}   )r   r(  
is_stage_cr   r   weightss         rk   4convert_stable_cascade_unet_single_file_to_diffusersrh    s	   )Z7J 02
??$$ 	2 	2C||,-- 2$S///155PWXYPZ
3;;'<mLLMPWXYPZ
3;;'<mLLMPWXYPZ
3;;'<mLLMMn-- 2$S///155LSTUJ
3;;':KHHILSTUJ
3;;':KHHILSTUJ
3;;':KHHII/00 2$S/U\
3;;'=?PQQRRo.. 2$S/QX
3;;';_MMNN",S/
3%	2( 
??$$ 	2 	2C||,-- 2$S///155PWXYPZ
3;;'<mLLMPWXYPZ
3;;'<mLLMPWXYPZ
3;;'<mLLMMn-- 2$S///155LSTUJ
3;;':KHHILSTUJ
3;;':KHHILSTUJ
3;;':KHHII/00 2$S/U\
3;;'=?PQQRRo.. 2$S/QX
3;;';_MMNN233 2$S/ah
3;;';=\]]^^011 2$S/]d
3;;'9;XYYZZ",S/
3rl   c                 
   i t          |                                           }t          }t          d |D                       dk    r|rt                              d           t                              d           |D ]v}|                    d          r_dd                    |                    d          d	d
                   z   }| 	                    |          |
                    |d          <   wn}t          d |D                       dk    rt                              d           |D ]C}|                    |          r,| 	                    |          |
                    |d          <   Di }t          d         d         }	|	                                D ]\  }
}|vr
|         ||
<   d|v rB|d         dv r8t          d         d         }|                                D ]\  }
}|         ||
<   d|v rD|d         dk    r8t          d         d         }|                                D ]\  }
}|         ||
<   d|v r|d         dv rd         |d<   t          d D                       }fdt          |          D             }t          d D                       }fdt          |          D             }t          d D                       }fdt          |          D             }t          d	|          D ]Ԋd	z
  |d         d	z   z  }d	z
  |d         d	z   z  }fd|         D             }t          ||d dd | d!| d"           d d#v r@	                    d d#          |d | d$<   	                    d d%          |d | d&<   fd'|         D             }|rt!          ||d d(d | d)| d"           |                                D ]c}t#          |d	z
  d*          }
|d+z  d*k    r#t          ||         |d,| d-|
 d".           At!          ||         |d,| d/|
 d".           dt          |          D ]|d         d	z   z  }|d         d	z   z  }fd0|         D             }t          ||d1 dd2| d!| d"           fd3|         D             }|rt!          ||d1 d(d2| d)| d"           d1 d4v r&d1 d4         |d2| d5<   d1 d6         |d2| d7<   d1 d8v r&d1 d8         |d2| d5<   d1 d9         |d2| d7<   |S ):zN
    Takes a state dict and a config, and returns a converted checkpoint.
    c              3   @   K   | ]}|                     d           V  dS 	model_emaN
startswithr   ks     rk   	<genexpr>z.convert_ldm_unet_checkpoint.<locals>.<genexpr>W  s.      
3
31<<$$
3
3
3
3
3
3rl   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.rx   r   rR   Nc              3   @   K   | ]}|                     d           V  dS rk  rm  ro  s     rk   rq  z.convert_ldm_unet_checkpoint.<locals>.<genexpr>b  s.      77Qq||K((777777rl   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.rJ   r@   rA   )timestepr  rB   r   r  zlabel_emb.weightzclass_embedding.weightc                 v    h | ]6}d |v d                     |                    d          dd                   7S input_blocksr   Nr   r   r   r   layers     rk   	<setcomp>z.convert_ldm_unet_checkpoint.<locals>.<setcomp>  sE    sssu[imr[r[rCHHU[[%5%5bqb%9::[r[r[rrl   c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S input_blocks.r   r   r   layer_ids     rk   r   z:convert_ldm_unet_checkpoint.<locals>.<dictcomp>.<listcomp>  -    WWW35OX5O5OSV5V5V35V5V5Vrl   r   r   r  unet_state_dicts    @rk   
<dictcomp>z/convert_ldm_unet_checkpoint.<locals>.<dictcomp>  sA        	WWWW/WWW  rl   c                 v    h | ]6}d |v d                     |                    d          dd                   7S middle_blockr   Nr   rx  ry  s     rk   r{  z.convert_ldm_unet_checkpoint.<locals>.<setcomp>  sE    ttt\jns\s\sSXXekk#&6&6rr&:;;\s\s\srl   c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S middle_block.r   r  s     rk   r   z:convert_ldm_unet_checkpoint.<locals>.<dictcomp>.<listcomp>  r  rl   r   r  s    @rk   r  z/convert_ldm_unet_checkpoint.<locals>.<dictcomp>  sA        	WWWW/WWW  rl   c                 v    h | ]6}d |v d                     |                    d          dd                   7S )output_blocksr   Nr   rx  ry  s     rk   r{  z.convert_ldm_unet_checkpoint.<locals>.<setcomp>  sE    uuu\kot\t\tSXXekk#&6&6rr&:;;\t\t\trl   c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S )output_blocks.r   r  s     rk   r   z:convert_ldm_unet_checkpoint.<locals>.<dictcomp>.<listcomp>  s-    XXX35Ph5P5PTW5W5W35W5W5Wrl   r   r  s    @rk   r  z/convert_ldm_unet_checkpoint.<locals>.<dictcomp>  sA        	XXXX/XXX  rl   r  c                 4    g | ]}d  d|v 
d  d|v|S r  .0.0.opr   r   r   r  s     rk   r   z/convert_ldm_unet_checkpoint.<locals>.<listcomp>  N     
 
 
.Ca.C.C.Cs.J.JOg_`OgOgOgorOrOrCOrOrOrrl   r  r  down_blocks.	.resnets.rE  rF  .0.op.weight.downsamplers.0.conv.weight
.0.op.bias.downsamplers.0.conv.biasc                 $    g | ]}d  d|v 
|S r  .1r   r  s     rk   r   z/convert_ldm_unet_checkpoint.<locals>.<listcomp>  0    UUUc8M8M8M8MQT8T8Tc8T8T8Trl   r  .attentions.r   r   r  mid_block.resnets.rK  mid_block.attentions.c                 4    g | ]}d  d|v 
d  d|v|S )r  r  r  r   r  s     rk   r   z/convert_ldm_unet_checkpoint.<locals>.<listcomp>  sN     
 
 
/E/E/E/E/L/LQjbcQjQjQjruQuQuCQuQuQurl   r  
up_blocks.c                 4    g | ]}d  d|v 
d  d|v|S )r  r  z.1.convr   r  s     rk   r   z/convert_ldm_unet_checkpoint.<locals>.<listcomp>  sN     
 
 
/E/E/E/E/L/LQlbcQlQlQltwQwQwCQwQwQwrl   z.1.conv.weight.upsamplers.0.conv.weightz.1.conv.bias.upsamplers.0.conv.biasz.2.conv.weightz.2.conv.bias)r   r   LDM_UNET_KEYsumr   r   rn  r   r   r   r}   DIFFUSERS_TO_LDM_MAPPINGitemsr  r  rN  rP  max)r   r"  extract_emar(  r   unet_keyr   flat_ema_keyrJ  ldm_unet_keysrM  rL  class_embed_keysaddition_embed_keysnum_input_blocksrw  num_middle_blocksmiddle_blocksnum_output_blocksr  block_idlayer_in_block_idresnets
attentionsr  r  s                           @@rk   convert_ldm_unet_checkpointr  M  s^   
 O
!!""DH 
3
3d
3
3
333c99k9EFFFn	
 	
 	
  	Z 	ZC~~566 Z+bggciinnQRR6H.I.II=G^^L=Y=YHb 9 9:	Z
 77$77777#==NNm    	Q 	QC~~h'' Q=G^^C=P=PHb 9 9:N,V4X>M"/"5"5"7"7 A Aw/))(7(@}%%f$$62D+EIc+c+c3F;<NO&6&<&<&>&> 	E 	E"M7,;G,DN=))''f5J.K{.Z.Z6v>?TU&9&?&?&A&A 	E 	E"M7,;G,DN=)) V##%&29K9^9^7FGY7ZN34 ssssstt   .//  L tttttuu   /00  M uuuuuvv   /00  M 1&''  Ev&89A=>Uv.@'AA'EF
 
 
 
'?
 
 
 	,)A)))2g2g2gTe2g2ghh		
 	
 	
 +1***o==SbSfSf////T TNO(OOOP RaQdQd----R RNM(MMMN VUUU\!_UUU
 	2----6nX6n6n[l6n6noo	   !!##  C!GQ7a<</c" 5 5 5>bS`>b>bcc	     3c" 5 5 5>eVc>e>eff	     $%% & & 23a78(:!;a!?@
 
 
 
(+
 
 
 	,*Q***3f3f3fSd3f3fgg		
 	
 	

 
 
 
(+
 
 

  	2....7mH7m7mZk7m7mnn	   .A---@@O^2222PNKKKKL N]0000NNIIIIJ .A---@@O^2222PNKKKKL N]0000NNIIIIJ rl   c                    d| v r| npi t          |                                           }t          }|D ]C}|                    |          r,|                     |          |                    |d          <   Di }t          d         d         }|                                D ]\  }}	|	vr
|	         ||<   t          d D                       }
fdt          |
          D             }t          d|
          D ]Ԋdz
  |d         dz   z  }dz
  |d         dz   z  }fd	|         D             }t          ||d
 dd| d| d           d
 dv r@                    d
 d          |d| d<                       d
 d          |d| d<   fd|         D             }|rt          ||d
 dd| d| d           t          |
          D ]B                    d d          |d d<                       d d          |d d<   Ct          d D                       }fdt          |          D             }|                                D ]c}t          |dz
  d          }|dz  dk    r#t          ||         |d | d!| d"           At          ||         |d | d#| d"           d                    d$          |d%<                       d&          |d'<   d( D             }t          |          }t          d|dz             D ]L}|dz
  }d|z  }                    d)| d          |d*| d<                       d)| d          |d*| d<   M|S )+Nr9   rx   r   r@   c                 v    h | ]6}d |v d                     |                    d          dd                   7S rv  rx  ry  s     rk   r{  z0convert_controlnet_checkpoint.<locals>.<setcomp>  D    fffEn`eNeNe%++c""2A2&	'	'NeNeNerl   c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S r~  r   r  s     rk   r   z<convert_controlnet_checkpoint.<locals>.<dictcomp>.<listcomp>  -    ]]]3;U8;U;UY\;\;\3;\;\;\rl   r   r   r  controlnet_state_dicts    @rk   r  z1convert_controlnet_checkpoint.<locals>.<dictcomp>  sB        	]]]]"7]]]  rl   rR   r  c                 4    g | ]}d  d|v 
d  d|v|S r  r   r  s     rk   r   z1convert_controlnet_checkpoint.<locals>.<listcomp>  r  rl   r  r  r  r  r  r  r  r  r  c                 $    g | ]}d  d|v 
|S r  r   r  s     rk   r   z1convert_controlnet_checkpoint.<locals>.<listcomp>-  r  rl   r  r  zzero_convs.z	.0.weightzcontrolnet_down_blocks.z.weightz.0.biasz.biasc                 v    h | ]6}d |v d                     |                    d          dd                   7S r  rx  ry  s     rk   r{  z0convert_controlnet_checkpoint.<locals>.<setcomp>=  r  rl   c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S r  r   r  s     rk   r   z<convert_controlnet_checkpoint.<locals>.<dictcomp>.<listcomp>@  r  rl   r   r  s    @rk   r  z1convert_controlnet_checkpoint.<locals>.<dictcomp>?  sB        	]]]]"7]]]  rl   r   r   r  r  r  r  zmiddle_block_out.0.weightzcontrolnet_mid_block.weightzmiddle_block_out.0.biaszcontrolnet_mid_block.biasc                     h | ]>}d |v d|v
d|vd                     |                    d          dd                   ?S )input_hint_blockzinput_hint_block.0zinput_hint_block.14r   Nr   rx  ry  s     rk   r{  z0convert_controlnet_checkpoint.<locals>.<setcomp>[  se       &&,@,M,MTiqvTvTv 	S!!"1"%&&TvTvTvrl   zinput_hint_block.z!controlnet_cond_embedding.blocks.)r   r   LDM_CONTROLNET_KEYrn  r   r}   r  r  r  r  rN  rP  r  )r   r"  r(  r   controlnet_keyr   rJ  ldm_controlnet_keysrM  rL  r  rw  r  r  r  r  r  r  cond_embedding_blocksnum_cond_embedding_blocksidxdiffusers_idxcond_block_idr  r  s                          @@rk   convert_controlnet_checkpointr    s    
** * !#JOO%%&&+ 	] 	]C~~n-- ]ISX[I\I\%ckk."&E&EFN2<@J"5";";"="= G Gw///(=g(F}%% ff5Jfff    .//  L 1&''  Ev&89A=>Uv.@'AA'EF
 
 
 
'?
 
 
 	,!)A)))2g2g2gTe2g2ghh		
 	
 	
 +1***.CCCShSlSl////T TNO(OOOP RgQjQj----R RNM(MMMN VUUU\!_UUU
 	2%----6nX6n6n[l6n6noo	   #$$ q q?T?X?XYsghYsYsYs?t?t;;;;<=R=V=VWoefWoWoWo=p=p9999:: ff5Jfff    /00  M !!##  C!GQ7a<</c"% 5 5 5>bS`>b>bcc	     3c"% 5 5 5>eVc>e>eff	     5J4M4MNi4j4jN012G2K2KLe2f2fN./ *  
 !$$9 : :Q1A566 	
 	
aCUjUnUn6666V
 V
Q=QQQR TiSlSl4444T
 T
O=OOOPP rl   c           
      J   i t          |                                           }t          d |D                       rt          nd}|D ]C}|                    |          r,|                     |          |                    |d          <   Di }t          d         }|                                D ]\  }}|vr
|         ||<   t          |d                   }	fdt          |	          D             }
t          |	          D ]|fd|
         D             }t          ||d dd	 d
d           d dv r@                    d d          |d d<                       d d          |d d<   }d D             }d}t          d|dz             D ]/fd|D             }t          ||d ddz
   d           0d D             }t          ||ddd           t          |d                   }fdt          |          D             }t          |          D ]j|dz
  z
  fd|         D             }t          ||d dd  d
d           d! d"v r&d! d"         |d# d$<   d! d%         |d# d&<   kd' D             }d}t          d|dz             D ]/fd(|D             }t          ||d ddz
   d           0d) D             }t          ||ddd           t          |           |S )*Nc              3   J   K   | ]}|                     t                    V  d S re   )rn  LDM_VAE_KEYro  s     rk   rq  z-convert_ldm_vae_checkpoint.<locals>.<genexpr>u  s.       I Iqk!:!: I I I I I Irl   rx   rK   r  c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S )down.r   r  s     rk   r   z9convert_ldm_vae_checkpoint.<locals>.<dictcomp>.<listcomp>  s,    NNN34FH4F4F#4M4M34M4M4Mrl   r   r   r  vae_state_dicts    @rk   r  z.convert_ldm_vae_checkpoint.<locals>.<dictcomp>  s>       S[NNNN.NNN  rl   c                 2    g | ]}d  |v 	d  d|v|S )r  z.downsampler   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  sA    mmm3KAKK34F4FKaSTKaKaKailKlKl3KlKlKlrl   r  z.blockr  z.resnetsr  r  zencoder.down.z.downsample.conv.weightzencoder.down_blocks.r  z.downsample.conv.biasr  c                     g | ]}d |v |	S )zencoder.mid.blockr   r   r   s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  #    OOO34G34N4N34N4N4Nrl   r   rR   c                 "    g | ]}d  |v 	|S )zencoder.mid.block_r   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  ,    QQQ31Ia1I1IS1P1P31P1P1Prl   z
mid.block_r  c                     g | ]}d |v |	S )zencoder.mid.attnr   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  #    QQQc7IS7P7Pc7P7P7Prl   z
mid.attn_1zmid_block.attentions.0r  c                 0    i | ]fd D             S )c                 "    g | ]}d  |v 	|S )up.r   r  s     rk   r   z9convert_ldm_vae_checkpoint.<locals>.<dictcomp>.<listcomp>  s,    LLL34D(4D4D4K4K34K4K4Krl   r   r  s    @rk   r  z.convert_ldm_vae_checkpoint.<locals>.<dictcomp>  s>       QYLLLL.LLL  rl   c                 2    g | ]}d  |v 	d  d|v|S )r  z	.upsampler   )r   r   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  sK     
 
 
2B2B2Bc2I2INgT\NgNgNgorNrNrCNrNrNrrl   r  r  zdecoder.up.z.upsample.conv.weightzdecoder.up_blocks.r  z.upsample.conv.biasr  c                     g | ]}d |v |	S )zdecoder.mid.blockr   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  r  rl   c                 "    g | ]}d  |v 	|S )zdecoder.mid.block_r   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  r  rl   c                     g | ]}d |v |	S )zdecoder.mid.attnr   r  s     rk   r   z.convert_ldm_vae_checkpoint.<locals>.<listcomp>  r  rl   )r   r   r   r  rn  r   r}   r  r  r  r  rS  r`  r   )r   r"  r   vae_keyr   rJ  vae_diffusers_ldm_maprM  rL  num_down_blocksdown_blocksr  mid_resnetsnum_mid_res_blocksmid_attentionsnum_up_blocks	up_blocksr  r  r  s                    @@@rk   convert_ldm_vae_checkpointr  p  sB    N
!!""D  I ID I I IIIQkkrG K K>>'"" 	K7A~~c7J7JN3;;w334N4U;"7"="="?"? @ @w.(((6w(?}%% &!3455O   _det_u_u  K ?##  mmmm+a.mmm*-A---6PQ6P6P6PQQ		
 	
 	
 	
 61555GGTbTfTf::::U UNP!PPPQ SaRdRd8888S SNN!NNNO PO.OOOK1(1,-- 
 
QQQQ+QQQ*,,,5Q!a%5Q5QRR		
 	
 	
 	
 	
 RQ^QQQN*]u@v@v   
 /011M   ]bcp]q]q  I =!!   1$q(
 
 
 
$X.
 
 
 	+2(222;S;S;S;STT		
 	
 	
 	
 9888NJJP^=h===QNLLLLM O];h;;;ONJJJJK PO.OOOK1(1,-- 
 
QQQQ+QQQ*,,,5Q!a%5Q5QRR		
 	
 	
 	
 	
 RQ^QQQN*]u@v@v    '''rl   c                     t          |                                           }i }t          }|D ]J}|D ]E}|                    |          r.|                    |d          }|                     |          ||<   FK|S )Nrx   )r   r   LDM_CLIP_PREFIX_TO_REMOVErn  r}   r   r   r   text_model_dictremove_prefixesr   r   rM  s          rk   convert_ldm_clip_checkpointr    s    
!!""DO/O E E% 	E 	EF~~f%% E #FB 7 71;1D1D.	E
 rl   cond_stage_model.model.c                    i }|dz   }||v r!t          ||         j        d                   }n)t          | j        d          r| j        j        }nt
          }| j        j                            d          |d<   t          |
                                          }t          }t          d         d         }|                                D ]W\  }	}
||
z   }
|
|vr|
|v r|
                    d          r#||
         j                                        ||	<   L||
         ||	<   X|D ]e}||v r|                    |dz             s!|                    |dz   d	          }	t          d         d
         }|                                D ]C\  }}|	                    ||                              dd	                              dd	          }	D|                    d          r|                    |          }|d |d d f                                                                         ||	dz   <   |||dz  d d f                                                                         ||	dz   <   ||dz  d d d f                                                                         ||	dz   <   |                    d          r|                    |          }|d |                                                                         ||	dz   <   |||dz                                                                           ||	dz   <   ||dz  d                                                                          ||	dz   <   M|                    |          ||	<   gt          | d          rt          | j        j                  s|                    dd            |S )NrD   r   projection_dimposition_idsz"text_model.embeddings.position_idsrL   r@   ztransformer.rx   rI   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
embeddings)r  r   hasattrr"  r  !LDM_OPEN_CLIP_TEXT_PROJECTION_DIM
text_modelr  
get_bufferr   r    SD_2_TEXT_ENCODER_KEYS_TO_IGNOREr  r  rd  T
contiguousrn  r}   r   clonedetachr  pop)r  r   r   r  text_proj_keytext_proj_dimr   keys_to_ignoreopenclip_diffusers_ldm_maprM  rL  r    transformer_diffusers_to_ldm_mapnew_keyold_keyweight_values                   rk   convert_open_clip_checkpointr    s%   
 O..M
""J}5;A>??	"$4	5	5 :")89<F<Q<\<g<ghv<w<wO89
!!""D5N!9*!Eh!O"<"B"B"D"D 	A 	Aw7"*$$n$$-.. 	A-7-@-B-M-M-O-OOM**-7-@OM** A A.  ~~f~566 	F^$;R@@+CJ+OP]+^( @ F F H H 	 	GW%%gw77??@QSUVV^^_nprss M <<)** 	A%>>#..L@L^m^]^]^]^M^@_@e@e@g@g@n@n@p@pOM,<<=]]Q->>ABHHJJQQSS M,<<= AM]]^M^M`M`bcbcbcMc@d@j@j@l@l@s@s@u@uOM,<<==\\/** 	A%>>#..L>J>M>>Z>`>`>b>b>i>i>k>kOMN:;]]Q->>?EEGGNNPP MN:; ?K=[\K\K^K^>_>e>e>g>g>n>n>p>pOMN:;;-7^^C-@-@OM**J-- H'*:O:\2]2] H@$GGGrl   rx   c                    |rd|i}nt          |          }|rdt                              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            n# 1 swxY w Y   |
j        j        j        j        j        d	         }t          |          rt!          |          }nt	          |          r2|t"          d
                  j        d	         |k    rt!          |          }nt          |          rd}t%          |
||          }nt'          |          r7|t"          d                  j        d	         |k    rd}t%          |
||          }nWt)          |          rd}t%          |
||          }n3t+          |          rd}t%          |
||          }nt-          d          t                      r~t/          |
||          }|
j        |
j        D ]fd|D             }t3          |          dk    r9t                              d| j         dd                    |          g            n|
                    |           ||
                    |           |
                                 |
S )Nr-   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-patch14rx   stabilityai/stable-diffusion-2text_encoder(laion/CLIP-ViT-bigG-14-laion2B-39B-b160kr/   r   r   r#   r  )r   r&   zconditioner.embedders.1.model.ra   z!text_encoders.clip_g.transformer.zDThe provided checkpoint does not seem to contain a valid CLIP model.dtypec                 >    g | ]}t          j        |          |S re   r~   searchr   rp  pats     rk   r   z8create_diffusers_clip_model_from_ldm.<locals>.<listcomp>}  +    "["["[3PQARARAZ1AZAZAZrl   r   ESome weights of the model checkpoint were not used when initializing : 
 , r   )r   r   r   r   r   r   config_classfrom_pretrainedr   r   r   r  r  position_embeddingweightr   r  r   r  r   r   r   r{   r   "_keys_to_ignore_on_load_unexpectedr  rm   r   r   toeval)clsr   r/   r"  torch_dtyper   is_legacy_loadingclip_configmodel_configctxr   position_embedding_dimdiffusers_format_checkpointr   unexpected_keysr#  s                  @rk   $create_diffusers_clip_model_from_ldmr8  *  s     416:'
33
  M	
 	
 	
 $$ 	(::(F(F 	9K6AF23II
++ 	:K6AF23&II EK6AF23I33#3uufu	dtuuuuL 7 9 9
J

{C	 " "L!!" " " " " " " " " " " " " " " #-8KRXY[\Z   a&A*&M&M## 	:&&a+K89?CG]]]&A*&M&M##	J	'	' a*&B5*]c&d&d&d## 	 
++a+,<=>DRHLbbb1&B5*]c&d&d&d##	(	4	4 	a1&B5*]c&d&d&d##	
	+	+ a4&B5*]c&d&d&d## _```   ;3E;V^ijjj3?? \ \"["["["[o"["["[!##NN JX[Xd  J  Jlplulu  wF  mG  mG  lH  J  J  
 	9:::	JJLLLLs   ;CCCc                    |                     dd           }|                     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|pd}||d<   |	dv rd}nk|	dk    rd}nb|rC|d         d	                              d          }|d         d	                              d          }nd}d}||d<   ||d<   d|d<   d|d<   d|d<   |d k    r|                     ddd!d"ddd d#d$          S ||                     |          S |d%k    rd"|d&<   t          j        |          }n|d'k    rt          j        |          }n|d(k    rt          j        |          }n|dk    rt          j        |          }n|d)k    rt          j        |          }nn|d*k    rt          j        |          }nS|d+k    rt          j        |          }n8|dk    rd,d-dd.d"ddd/d0d1d2d3d4d5dd6}t          d9i |}nt          d7| d8          |S ):Nscheduler_typerY   ziPlease pass an instance of a Scheduler object directly to the `scheduler` argument in `from_single_file`.r   zPlease configure an instance of a Scheduler with the appropriate `prediction_type` and pass the object directly to the `scheduler` argument in `from_single_file`.r   global_stepr   r   	timestepsrO   rX   r   iY rP   v_prediction)r   r   euler
playgroundedm_dpm_solver_multisteplinear_start
linear_endg{Gz?g(\µ?rU   rV   rM   rT   Fclip_sampler[   low_res_schedulerg-C6?Tfixed_small)rV   rT   rU   rC  rX   rY   trained_betasvariance_typepndmr\   lmsheunzeuler-ancestraldpmddimzdpmsolver++gףp=
?zerog      @rQ   r_   g      T@gMb`?r   midpoint)algorithm_typedynamic_thresholding_ratioeuler_at_finalfinal_sigmas_typelower_order_finalrX   rY   rhorZ   
sigma_data	sigma_max	sigma_minsolver_ordersolver_typethresholdingzScheduler of type z doesn't exist!r   )r   r   SCHEDULER_DEFAULT_CONFIGr   getattrfrom_configr   r   r   r   r   r	   r   r
   r{   )r/  r   component_namer   r(  r:  rY   r  scheduler_configr   r;  rX   rU   rV   	schedulers                  rk   _legacy_load_schedulerra    s    ZZ 0$77Njj!2D99O!w 	 	"G-@AAA"^ 	 	#W.ABBB/+zBBBJ/<
/J/J*]++PTK #%og&>x&H+W[\\".A*+T"+6&+@+@iinO *6Y*9&'... 	|	#	#3 	(1(;??OOJ&w/9==lKKHH JH)3&'/$,;)*/'/4+, ,,, !0$#'+#,!%!.	 	
 
 	
 /000	6	!	!-1)*!-.>??			5	 	 (45EFF			6	!	!)56FGG			7	"	"*67GHH			,	,	,3?@PQQ			5	 	 /;<LMM			6	!	!!-.>??			5	5	5+*/#!'!%#'( #%!
 
" 3FF5EFF		 MnMMMNNNrl   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 )	Nr-   r  rx   r  	tokenizerr  r  r   )r   r   r   r   r)  )r/  r   r"  r   r2  r/   rc  s          rk   _legacy_load_clip_tokenizerrd    s     416:'
33Z   $6z$B$B 52=./			J	'	' 62=./		 A2=./	##eefe	TdeeeeIrl   c                 v    ddl m} t          j        d| |          }|                    d| |          }||dS )Nr   )StableDiffusionSafetyCheckerz'CompVis/stable-diffusion-safety-checker)r   r0  )safety_checkerfeature_extractor))pipelines.stable_diffusion.safety_checkerrf  r   r)  )r   r0  rf  rh  rg  s        rk   _legacy_load_safety_checkerrj  +  so     YXXXXX*:1DTbm   2AA1DTbm B  N -CTUUUrl   c                 j    |                      dd          \  }}t          j        ||gd          }|S )Nr   r   dim)re  torchcat)r+  rm  shiftscale
new_weights        rk   swap_scale_shiftrs  =  s9    <<q<))LE5E5>q111Jrl   c                    i }t          |                                           }|D ]2}d|v r,|                     |          | |                    dd          <   3t          t	          d | D                                 d         dz   }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          |          D ]}t          j        |                     d| d           d!d"#          \  }}	}
t          j        |                     d| d$          d!d"#          \  }}}t          j        |                     d| d%          d!d"#          \  }}}t          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<   |                     d| d4          |d'| d5<   |                     d| d6          |d'| d7<   ||dz
  k    s@|                     d| d8          |d'| d9<   |                     d| d:          |d'| d;<   |                     d| d<          |d'| d=<   |                     d| d>          |d'| d?<   ||dz
  k    sA|                     d| d@          |d'| dA<   |                     d| dB          |d'| dC<   n^t          |                     d| d@          |#          |d'| dA<   t          |                     d| dB          |#          |d'| dC<   |                     d| dD          |d'| dE<   |                     d| dF          |d'| dG<   |                     d| dH          |d'| dI<   |                     d| dJ          |d'| dK<   ||dz
  k    s|                     d| dL          |d'| dM<   |                     d| dN          |d'| dO<   |                     d| dP          |d'| dQ<   |                     d| dR          |d'| dS<   |                     dT          |dU<   |                     dV          |dW<   t          |                     dX          |#          |dY<   t          |                     dZ          |#          |d[<   |S )\Nr`   rx   c              3   p   K   | ]1}d |v t          |                    dd          d                   V  2dS )joint_blocksr   r   rR   N)r  r   ro  s     rk   rq  zBconvert_sd3_transformer_checkpoint_to_diffusers.<locals>.<genexpr>J  sF      ]]a[\I\I\#aggc1ooa011I\I\I\I\]]rl   r   rR   r   	pos_embedzpos_embed.pos_embedzx_embedder.proj.weightzpos_embed.proj.weightzx_embedder.proj.biaszpos_embed.proj.biaszt_embedder.mlp.0.weightz1time_text_embed.timestep_embedder.linear_1.weightzt_embedder.mlp.0.biasz/time_text_embed.timestep_embedder.linear_1.biaszt_embedder.mlp.2.weightz1time_text_embed.timestep_embedder.linear_2.weightzt_embedder.mlp.2.biasz/time_text_embed.timestep_embedder.linear_2.biaszcontext_embedder.weightzcontext_embedder.biaszy_embedder.mlp.0.weightz-time_text_embed.text_embedder.linear_1.weightzy_embedder.mlp.0.biasz+time_text_embed.text_embedder.linear_1.biaszy_embedder.mlp.2.weightz-time_text_embed.text_embedder.linear_2.weightzy_embedder.mlp.2.biasz+time_text_embed.text_embedder.linear_2.biaszjoint_blocks.z.x_block.attn.qkv.weightrz   r   rl  z.context_block.attn.qkv.weightz.x_block.attn.qkv.biasz.context_block.attn.qkv.biasztransformer_blocks.z.attn.to_q.weightz.attn.to_q.biasz.attn.to_k.weightz.attn.to_k.biasz.attn.to_v.weightz.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.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.adaLN_modulation.1.weightz.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.biaszfinal_layer.linear.weightr[  zfinal_layer.linear.biasr]  z%final_layer.adaLN_modulation.1.weightznorm_out.linear.weightz#final_layer.adaLN_modulation.1.biasznorm_out.linear.bias)
r   r   r  r}   setr  rn  re  ro  rs  )r   r(  converted_state_dictr   rp  
num_layerscaption_projection_dimr  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_biass                       rk   /convert_sd3_transformer_checkpoint_to_diffusersr  C  s	   
!!""D T T#q((BL..QRBSBSJqyy!92>>?c]]:]]]]]^^_abeffJ! 3=..2M2M./4>NNC[4\4\012<..AW2X2X./ Q[P^P^!Q QLM OYnn]tNuNuJKPZP^P^!Q QLM OYnn]tNuNuJK 7AnnE^6_6_234>NNCZ4[4[01 MWNN[tLuLuHIJT..YpJqJqFGLVNN[tLuLuHIJT..YpJqJqFG : ] ]',{NNF1FFFGGPQ(
 (
 (
$(H +0+NNL1LLLMMqVW+
 +
 +
'	9i 7<kNND1DDDEEqa7
 7
 7
3}m :?NNJ1JJJKKQTU:
 :
 :
6 LQ9V^U_K`K`G1GGGHINTaSbIcIcE1EEEFKP9V^U_K`K`G1GGGHINTaSbIcIcE1EEEFKP9V^U_K`K`G1GGGHINTaSbIcIcE1EEEFQVQZ\e[fQgQgM1MMMNOTyZhYiOjOjK1KKKLQVQZ\e[fQgQgM1MMMNOTyZhYiOjOjK1KKKLQVQZ\e[fQgQgM1MMMNOTyZhYiOjOjK1KKKL PZ~~8A888P
 P
K1KKKL NX^^6A666N
 N
I1IIIJ Z!^##U_UcUcBBBBV V !Qq!Q!Q!QR T^SaSa@@@@T T !Oq!O!O!OP
 OYnnAAAAAO
 O
J1JJJK MWNN?A???M
 M
H1HHHI Z!^##ZdZhZhKKKK[ [ !Vq!V!V!VW YcXfXfIIIIY Y !Tq!T!T!TUU [kZqZZZ[[*[ [ [ !Vq!V!V!VW YiXqXXXYY*Y Y Y !Tq!T!T!TU PZ~~6A666P
 P
K1KKKL NX^^4A444N
 N
I1IIIJ KU..6A666K
 K
F1FFFG IS4A444I
 I
D1DDDE Z!^##[e[i[i@@@@\ \ !Wq!W!W!WX ZdYgYg>>>>Z Z !Uq!U!U!UV WaVdVd@@@@W W !Rq!R!R!RS U_TbTb>>>>U U !Pq!P!P!PQ
 /9nn=X.Y.Y*+,6NN;T,U,U)5E>??E[6 6 612 4D<==CY4 4 4/0  rl   c                     d| v rdS dS )Nz-text_encoders.t5xxl.transformer.shared.weightTFr   r   s    rk   is_t5_in_single_filer    s    6*DDt5rl   c                     t          |                                           }i }dg}|D ]J}|D ]E}|                    |          r.|                    |d          }|                     |          ||<   FK|S )Nz(text_encoders.t5xxl.transformer.encoder.rx   )r   r   rn  r}   r   r  s          rk   &convert_sd3_t5_checkpoint_to_diffusersr    s    
!!""DOABO E E% 	E 	EF~~f%% E #FB 7 71;1D1D.	E
 rl   c                 Z   |rd|i}nt          |          } | j        j        d	i |||d}t                      rt          nt
          } |            5   | |          }d d d            n# 1 swxY w Y   t          |          }	t                      rt          ||	|          }
|j        |j        D ]fd|
D             }
t          |
          dk    r;t                              d| j         dd                    |
          g            d S d S |                    |	           d S )
Nr-   r  r  c                 >    g | ]}t          j        |          |S re   r   r"  s     rk   r   z=create_diffusers_t5_model_from_checkpoint.<locals>.<listcomp>  r$  rl   r   r%  r&  r'  r   )r   r(  r)  r   r   r   r  r   r,  r  r   r   rm   r   r   )r/  r   r/   r"  r0  r   r3  r4  r   r6  r7  r#  s              @rk   )create_diffusers_t5_model_from_checkpointr    s     416:'
3333#3uufu	dtuuuuL 7 9 9
J

{C	 " "L!!" " " " " " " " " " " " " " " #I"T"T   ;3E;V^ijjj3?? \ \"["["["[o"["["[!##NN JX[Xd  J  Jlplulu  wF  mG  mG  lH  J  J     $# 	9:::::s   A--A14A1)FFNNNNN)Fre   )NNN)NN)r  )rx   NNNF)NF)rx   NNN)`__doc__r   r~   
contextlibr   ior   urllib.parser   r   rn  r   models.modeling_utilsr   
schedulersr   r	   r
   r   r   r   r   r   utilsr   r   r   r   r   r   utils.hub_utilsr   transformersr   
accelerater   r   
get_loggerrm   r   r   r   r   r  r  r[  r  r:  r9  r  r  r  OPEN_CLIP_PREFIXr  r|   	Exceptionrc   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#  r+  r<  rN  rP  rS  r`  rh  r  r  r  r  r  r8  ra  rd  rj  rs  r  r  r  r  r   rl   rk   <module>r     sE	   > = 				 				 " " " " " "       ! ! ! ! ! !    3 3 3 3 3 3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                . - - - - -  0////// B------AAAAAA		H	%	%
YV Y M	
 5 z A Z f b @ J M g D  6!" 
W# * 01[\24ab24fg79hi/1[\24Z[57bc24XY*,N
O*,L
M@\ktuu)E#$ $
 *L 
 *L!$ $
 	()Z1$ $  > 

+ + '" /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$ $ $  $ %" !   #!(  # '%    
 4 $( !___ ' ' ' ' 'y ' ' '  ! ! !(   
! ! ! !H   ,          0 0 0    &: : :z     	; 	; 	; Z^@ @ @ @F   @0 0 0 0f@ @ @ @@ @ @@ @ @V V V45 5 5pd d d dNy y yxa a aH  $ %D D D DT b b b bR 	   D   4V V V$  M  M  M `    $  ;  ;  ;  ;  ;  ;rl   