
    sg                         d dl Z d dlZd dlmZmZmZ  ej                           ej                  d      Zddede	de	fdZ
defdZd	 Z	 	 	 dd
Zd Zedk(  r e        yy)    N)UnivNetConfigUnivNetModelloggingztransformers.models.univnetconfig
old_prefix
new_prefixc                    i }| d|| d<   | d|| d<   | d|| d<   t        | j                        D ]h  }| 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|| d<   | d|| d<   | d|| d<   | d|| d<   | d|| d<   | d|| d<   |S )Nz.input_conv.weight_gz.input_conv.0.weight_gz.input_conv.weight_vz.input_conv.0.weight_vz.input_conv.biasz.input_conv.0.bias.resblocks.z.conv1.weight_gz.residual_convs..1.weight_gz.conv1.weight_v.1.weight_vz.conv1.bias.1.biasz.conv2.weight_gz.3.weight_gz.conv2.weight_vz.3.weight_vz.conv2.biasz.3.biasz.kernel_conv.weight_gz.kernel_conv.weight_vz.kernel_conv.biasz.bias_conv.weight_gz.bias_conv.weight_vz.bias_conv.bias)rangekernel_predictor_num_blocks)r   r   r   mappingis        ^/var/www/html/venv/lib/python3.12/site-packages/transformers/models/univnet/convert_univnet.py get_kernel_predictor_key_mappingr      s   G8B|CW5XGzl0128B|CW5XGzl0124><?O1PGzl,-. 6556 fDN<{[\Z]]lAm:,.qc=>DN<{[\Z]]lAm:,.qc=>@J|;WXVYYd=e:,.qc9:DN<{[\Z]]lAm:,.qc=>DN<{[\Z]]lAm:,.qc=>@J|;WXVYYd=e:,.qc9:f 8BlBW4XGzl/017AlBW4XGzl/013=,>O0PGzl+,- 6@L@S2TGzl-./5?L@S2TGzl-./1;O.LGzl/*+N    c           	         i }t        t        | j                              D ]  }d| d|d| d<   d| d|d| d<   d| d|d| d<   t        | d| d	d| d	
      }|j	                  |       t        t        | 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<   |S )Nz
resblocks.z.convt_pre.weight_gz
res_stack.z.convt_pre.1.weight_gz.convt_pre.weight_vz.convt_pre.1.weight_vz.convt_pre.biasz.convt_pre.1.biasz.kernel_predictor)r   r   r
   z.conv.weight_gz.conv_blocks.r   z.conv.weight_vr   z
.conv.biasr   zconv_post.weight_gzconv_post.1.weight_gzconv_post.weight_vzconv_post.1.weight_vzconv_post.biaszconv_post.1.bias)r   lenresblock_stride_sizesr   updateresblock_dilation_sizes)r   r   r   kernel_predictor_mappingjs        r   get_key_mappingr   8   s   G
 3v3345 h;EaSH[9\*QC456;EaSH[9\*QC4567A!O5T*QC012 $DA3.?@zZ[Y\\mMn$
  	/0 s699!<=> 	hAEOPQsR]^_]``nCoGj=;?@EOPQsR]^_]``nCoGj=;?@AKA3kZ[Y\\f?gGj=7;<	hh& ';G"#&:G"#"2GNr   c                 l    i }| j                         D ]  \  }}||v r||v r||   }|||<   |||<     |S )N)items)
state_dictkeys_to_modifykeys_to_removemodel_state_dictkeyvaluenew_keys          r   rename_state_dictr&   X   s_     &&( *
U. . $S)G(-W%$)S!* r   c                    t        j                  | d      }|d   }|t        j                  |      }n
t               }t	        |      }t               }	t        |||	      }
t        |      }|j                          |j                  |
       |j                          |j                  ||       |rt        d       |j                  |       y y )Ncpu)map_locationmodel_g)safe_serializationzPushing to the hub...)torchloadr   from_pretrainedr   setr&   r   apply_weight_normload_state_dictremove_weight_normsave_pretrainedprintpush_to_hub)checkpoint_pathpytorch_dump_folder_pathconfig_pathrepo_idr+   model_state_dict_baser   r   r    r!   hf_state_dictmodels               r   convert_univnet_checkpointr=   f   s     "JJUK&y1J..{;$V,NUN%j..QM E		-(		2GYZ%&'" r   c                     t        j                         } | j                  ddd t        d       | j                  dd t        d       | j                  ddd t        d	       | j                  d
d t        d       | j                  ddd       | j	                         }t        |j                  |j                  |j                  |j                  |j                         y )Nz--checkpoint_pathTzPath to original checkpoint)requireddefaulttypehelpz--config_pathz*Path to hf config.json of model to convert)r@   rA   rB   z--pytorch_dump_folder_pathz!Path to the output PyTorch model.z--push_to_hubu4   Where to upload the converted model on the 🤗 hub.z--safe_serialization
store_truez.Whether to save the model using `safetensors`.)actionrB   )argparseArgumentParseradd_argumentstr
parse_argsr=   r6   r7   r8   r5   r+   )parserargss     r   mainrL      s    $$&F
+dDsYvw
CFrs
$tTRu   C6l   |:j   D%%r   __main__) rN   )NNF)rE   r,   transformersr   r   r   set_verbosity_info
get_loggerloggerrH   r   r   r&   r=   rL   __name__ r   r   <module>rU      s      = =    			9	:]  ^a <M @" #D2 zF r   