
    sg.                        d Z ddlZddlZddlZddlmZ ddlZddlZddlm	Z	m
Z
 ddlmZ  ej                           ej                  e      ZdZg dg dd	Zd
 Zd Z ej*                         dd       Zedk(  ri ej.                         Zej3                  dded       ej3                  dded       ej7                         Z eej:                  ej<                         yy)zConvert Jukebox checkpoints    N)Path)JukeboxConfigJukeboxModel)loggingz2https://openaipublic.azureedge.net/jukebox/models/)5b/vqvae.pth.tar5b/prior_level_0.pth.tar5b/prior_level_1.pth.tarz1b_lyrics/prior_level_2.pth.tar)r   r   r	   z5b_lyrics/prior_level_2.pth.tar)zjukebox-1b-lyricsjukebox-5b-lyricsc                 z   | j                  d      r0t        | j                  d            dkD  r| j                  dd      } n| j                  d      r0t        | j                  d            dkD  r| j                  dd      } n| j                  d      r0t        | j                  d            dkD  r| j                  dd      } n@| j                  d	      r/t        | j                  d            dkD  r| j                  d	d
      } d| v r| j                  dd      } d| v r| j                  dd      } d| v rd| vrd| vrd| vr| j                  dd      } | j                  d      r| j                  dd      S d| v r| j                  dd      S d| v r| j                  dd      } d| v r| j                  dd      S d| v r| j                  dd      S d | v r| j                  d d!      S d"| v r| j                  d"d#      S d$| v r| j                  d$d%      S d&| v r| j                  d'd(      S d)| v r| j                  d)d      S | S )*Nz.model.1.bias.
   z.conv1d_1.biasz.model.1.weightz.conv1d_1.weightz.model.3.biasz.conv1d_2.biasz.model.3.weightz.conv1d_2.weightzconditioner_blocks.0.zconditioner_blocks.0conditioner_blocksprime_priorencoderz.emb.totalabsoluterelativekz.kz	.codebookzy_emb.zmetadata_embedding.z
x_emb.emb.z0.x_emb.embembed_tokensprime_state_lnzencoder.final_layer_normz.lnz.layer_norm_ln_layer_normprime_state_projzencoder.proj_inprime_x_outzencoder.lm_headzprior.x_outx_outfc_proj_outx_emb)endswithlensplitreplace)keys    i/var/www/html/venv/lib/python3.12/site-packages/transformers/models/deprecated/jukebox/convert_jukebox.pyreplace_keyr$   2   s-   
||O$SYYs^)<r)Akk/+;<	'	(S3-@2-Ekk+-?@	o	&3syy~+>+Ckk/+;<	'	(S3-@2-Ekk+-?@#%kk02FGkk-3#~',31F:]`K`kk'3'
||C{{4--3{{8%:;;skk-83{{+-GHH|{{5-00|{{5-00S {{-/@AA{{=*;<<{{7M22#~{{7N33J    c                 
   i }dd l }|j                  d      }|j                  d      }|j                  d      }|j                  d      }	|j                  d      }
|j                  d      }|j                  d      }|j                  d	      }|j                  d
      }| j                         D ]  \  }}|j                  |      rl|j	                  |      }|j                         }t        |d         dz  t        |d         z   }d|d    d|d    d| d|d    }|j                  ||      }n|j                  |      r|j	                  |      }|j                         }t        |d         dz  t        |d         z   }ddd|d      }d|d    d|d    d| d}d|d    d| d|d    }||z   }|j                  ||      }n!|j                  |      rI|j	                  |      }|j                         }d|d    d|d    d|d    }|j                  ||      }n|	j                  |      ro|	j	                  |      }|j                         }t        |d         dz  t        |d         z   dz
  }d|d    d|d    d| d|d    }|	j                  ||      }nG|
j                  |      r|
j	                  |      }|j                         }t        |d         dz  t        |d         z   dz
  }ddd|d      }d|d    d|d    d| d}d|d    d| d|d    }||z   }|
j                  ||      }n|j                  |      rI|j	                  |      }|j                         }d|d    d|d    d|d    }|j                  ||      }nQ|j                  |      rb|j	                  |      }|j                         }t        |d         dz  t        |d         z   dz
  }d| d|d    }|j                  ||      }n|j                  |      r~|j	                  |      }|j                         }t        |d         dz  t        |d         z   dz
  }ddd|d      }d| d}d|d    d| d|d    }||z   }|j                  ||      }nO|j                  |      r<|j	                  |      }|j                         }d|d    }|j                  ||      }n|}t        |      }| d| |vs|t        d| d| d        nX|j                  || d|    j                  k7  r7|| d|    }t        | d!| d"|j                   d#|j                   d$       |}|||<   |||<    |S )%Nr   z@encoders.(\d*).level_blocks.(\d*).model.(\d*).(\d).(bias|weight)zXencoders.(\d*).level_blocks.(\d*).model.(\d*).(\d).model.(\d*).model.(\d*).(bias|weight)z;encoders.(\d*).level_blocks.(\d*).model.(\d*).(bias|weight)z@decoders.(\d*).level_blocks.(\d*).model.(\d*).(\d).(bias|weight)zXdecoders.(\d*).level_blocks.(\d*).model.(\d*).(\d).model.(\d*).model.(\d*).(bias|weight)z;decoders.(\d*).level_blocks.(\d*).model.(\d*).(bias|weight)z<conditioner_blocks.(\d*).cond.model.(\d*).(\d).(bias|weight)zTconditioner_blocks.(\d*).cond.model.(\d*).(\d).model.(\d*).model.(\d*).(bias|weight)z7conditioner_blocks.(\d*).cond.model.(\d*).(bias|weight)      z	encoders.z.level_blocks.   z.downsample_block.r   )13zresnet_block.z.conv1d_z
.proj_out.z	decoders.z.upsample_block.z	.proj_in.z,conditioner_blocks.upsampler.upsample_block.z%conditioner_blocks.upsampler.proj_in.zfailed converting  to z, does not matchz-> z
 : 
shape z and z, do not match)recompileitems	fullmatchmatchgroupsintsubr$   printshape)
state_dictmodel_state_dict
key_prefixmappingnew_dictr0   re_encoder_block_conv_inre_encoder_block_resnetre_encoder_block_proj_outre_decoder_block_conv_outre_decoder_block_resnetre_decoder_block_proj_inre_prior_cond_conv_outre_prior_cond_resnetre_prior_cond_proj_inoriginal_keyvalueregex_matchr5   block_index
re_new_keyr"   
conv_indexprefixresnet_blockvals                             r#   fix_jukebox_keysrQ   `   s   H!zz*mn jjc !#

+i j "

+n o jjc  "zz*hiZZ(gh::_ JJ'ab)//1 Ye#--l;288FK '')FfQi.1,s6!9~=K$VAYK~fQi[HZ[fZgghioprishtuJ*..z<HC$..|<177EK '')FfQi.1,s6!9~=K q)&*5J >&)DVWbVccdeF*6":,hzl!FSUJ<XL,.J)--j,GC&00>399,GK '')F$VAYK~fQi[
SYZ\S]R^_J+//
LIC '00>399,GK '')FfQi.1,s6!9~=AK$VAYK~fQi[HXYdXeefgmnpgqfrsJ+//
LIC$..|<177EK '')FfQi.1,s6!9~=AK q)&*5J >&)DTU`TaabcF*6":,hzl!FSUJ<XL,.J)--j,GC%//=288FK '')F$VAYK~fQi[	RXY[R\Q]^J*..z<HC $--l;066|DK '')FfQi.1,s6!9~=AKG}TUV\]_V`UabJ(,,ZFC!++L9.44\BK '')FfQi.1,s6!9~=AK q)&*5JCK=PQRF*6":,hzl!FSUJ<XL,.J&**:|DC",,\:/55lCK '')F@MJ'++JEC C#\3% (88CK&|nD=MNO [[,
|1SE-BCIII"j\3%#89C\N#cU+cii[u{{^SabcC#sYv Or%   c                    t         |    D ]  }t        j                  j                  | d|j	                  d      d          r:t        j                  t         | d      }t        j                  | dd       t        | d|j	                  d      d    d      j                  |j                          t         | j	                  d      d      }t        j                  |       }t        |      }g }i }t        |      D ]  \  }	}
t!        j"                  | d|
j	                  d      d          d   }i }|j%                         D ]  }|j'                  d      r||   ||j)                  d	d
      <   -|j'                  d      r||   ||j)                  dd      <   Wd|
vrd|v r||   ||j)                  dd      <   x||   ||<    |	dk(  rdndd|	z
   }t+        ||j-                         ||      }|j/                  |        |j1                  d      }|j2                  j5                  |       t7        t9        |            D ]&  }	|j:                  |	   j5                  |d|	z
            ( t=        |      j?                  d       t        | dd      5 }tA        jB                  ||       ddd       tE        d|  d|        |jG                  |       |S # 1 sw Y   -xY w)zD
    Copy/paste/tweak model's weights to our Jukebox structure.
    /r*   T)allow_redirects)exist_okwbmodelz.bbbiasz.wwweightlevel_2zcond.model.z.blocks.z.model.r   vqvaezpriors.r(   r'   z/mapping.jsonNzSaving model r/   )$MODEL_MAPPINGospathisfiler    requestsgetPREFIXmakedirsopenwritecontentr   from_pretrainedr   	enumeratetorchloadkeysr   r!   rQ   r:   appendpopr]   load_state_dictranger   priorsr   mkdirjsondumpr8   save_pretrained)
model_namepytorch_dump_folder_pathfilermodel_to_convertconfigrW   weight_dictr=   i	dict_nameold_dicnew_dicr   r<   vqvae_state_dicttxtfiles                    r#   convert_openai_checkpointr      s   
 j) ]ww~~!9 :!DJJsOB<O;PQRxv.EAKK34A6F,-Qtzz#r/B.CDdKQQRSR[R[\	] %Z%5%5c%:2%>?**:6F EKG!"23 $9** 899??3;OPR;S:TUVW^_ 	(Azz$29!*		#v./D!4;AJ		#x01)+0B<CAJ		*i89$QZ
	( !"QWga!eW,=
"7E,<,<,>
GT7#!$$ #q)	KK 013{#$ <Q''AE(:;< 		!"(($(7	)*-8#	> $'		'7#$ 
M*T*B)C
DE	23$ $s   !K$$K-__main__z--model_namer
   z(Name of the model you'd like to convert.)defaulttypehelpz--pytorch_dump_folder_pathzjukebox-5b-lyrics-convertedz+Path to the output PyTorch model directory.)NN)__doc__argparsert   r_   pathlibr   rb   rk   transformersr   r   transformers.utilsr   set_verbosity_info
get_logger__name__loggerrd   r^   r$   rQ   no_gradr   ArgumentParserparseradd_argumentstr
parse_argsargsrw   rx    r%   r#   <module>r      s	   "   	    4 &    			H	% 
> +\qh / /d z$X$$&F
#7	   $-:	   Ddoot/L/LM! r%   