§
    �M§j¤#  ã                   ó’  — d Z ddlZddlmZmZ ddlZddlmZ ddlmc mZ	 ddl
mZ ddlmZ  G d„ de¦  «        Z G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        Zdej        dej        dej        fd„Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )z8YuE2 building blocks adapted from upstream (Apache-2.0).é    N)ÚOptionalÚTuple)Únn)ÚPretrainedConfig)Úpay_attentionc            !       óÄ   ‡ — e Zd ZdZ eh d£¦  «        Zˆ fd„Z eg d¢¦  «        Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%dededededededede	de	dede
ded ed!ed"e	d#ef ˆ fd$„Zˆ xZS )&Ú
YuE2ConfigÚyue2>   ÚdtypeÚauto_mapÚ	use_cacheÚ
is_decoderÚ
model_typeÚreturn_dictÚtorch_dtypeÚtorchscriptÚbos_token_idÚeos_token_idÚpad_token_idÚarchitecturesÚoutput_attentionsÚis_encoder_decoderÚadd_cross_attentionÚattn_implementationÚtie_word_embeddingsÚoutput_hidden_statesÚtransformers_versionÚdecoder_start_token_idc                 ó‚   •‡ — ˆ fd„t          ¦   «                              ¦   «                              ¦   «         D ¦   «         S )Nc                 ó@   •— i | ]\  }}|‰j         v s	|‰j        v ¯||“ŒS © )Ú
_hf_fieldsÚ_inference_fields©Ú.0ÚkeyÚvalueÚselfs      €ú?C:\Users\johnn\OneDrive\Documents\AI\models\TTS\yue2\modules.pyú
<dictcomp>z&YuE2Config.to_dict.<locals>.<dictcomp>   sE   ø€ ð Lð Lð L™z˜s EØ˜$œ/Ð)Ð)¨S°DÔ4JÐ-JÐ-Jð �UØ-JÐ-JÐ-Jó    )ÚsuperÚto_dictÚitems)r(   Ú	__class__s   `€r)   r-   zYuE2Config.to_dict   sP   øø€ ðLð Lð Lð L­U©W¬W¯_ª_Ñ->Ô->×-DÒ-DÑ-FÔ-Fð Lñ Lô Lð 	Lr+   )Úhidden_sizeÚnum_hidden_layersÚnum_attention_headsÚnum_key_value_headsÚhead_dimÚintermediate_sizeÚ
vocab_sizeÚrms_norm_epsÚ
rope_thetaÚmax_position_embeddingsr   Úlatent_typeÚ
latent_dimÚmax_latent_framesÚtimestep_shiftÚffn_chunk_sizeé   é   é   é   é€   é   é€Ñ ç�íµ ÷Æ°>ç    €„.Aé `  FÚvaeé@   ç      ð?é   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   c                 ó|  •‡ — |dk    rt          d¦  «        ‚ˆ fd„|                     ¦   «         D ¦   «         } t          ¦   «         j        dd|i|¤Ž |‰ _        |‰ _        |‰ _        |‰ _        |‰ _        |‰ _	        |‰ _
        |‰ _        |	‰ _        |
‰ _        |‰ _        |‰ _        |‰ _        |‰ _        |‰ _        d S )NrI   z.YuE2 inference supports only latent_type='vae'c                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r!   )r"   r$   s      €r)   r*   z'YuE2Config.__init__.<locals>.<dictcomp>4   s+   ø€ ÐXÐXÐX¡  eÀÈÌÐAWÐAW�#�uÐAWÐAWÐAWr+   r   r!   )Ú
ValueErrorr.   r,   Ú__init__r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   )r(   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   Úkwargsr/   s   `                 €r)   rP   zYuE2Config.__init__   sÞ   øø€ ð* ˜%ÒÐÝÐMÑNÔNÐNàXÐXÐXÐX¨v¯|ª|©~¬~ÐXÑXÔXˆØ�‰ŒÔÐKÐKÐ-@ÐKÀFÐKÐKÐKØ&ˆÔØ!2ˆÔØ#6ˆÔ Ø#6ˆÔ Ø ˆŒØ!2ˆÔØ$ˆŒØ(ˆÔØ$ˆŒØ'>ˆÔ$Ø&ˆÔØ$ˆŒØ!2ˆÔØ,ˆÔØ,ˆÔÐÐr+   )r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   FrI   rJ   rH   rK   rL   )Ú__name__Ú
__module__Ú__qualname__r   Ú	frozensetr"   r-   r#   ÚintÚfloatÚboolÚstrrP   Ú__classcell__©r/   s   @r)   r	   r	   
   s}  ø€ € € € € Ø€Jà�ð ð ð ñ ô €JðLð Lð Lð Lð Lð "˜	ð  #Jð  #Jð  #Jñ  Kô  KÐð  Ø!#Ø#%Ø#$ØØ!%Ø Ø"Ø%Ø',Ø$)à ØØ!&Ø #Ø"ð%(-ð (-àð(-ð ð(-ð !ð	(-ð
 !ð(-ð ð(-ð ð(-ð ð(-ð ð(-ð ð(-ð "%ð(-ð "ð(-ð ð(-ð ð(-ð  ð!(-ð" ð#(-ð$ ð%(-ð (-ð (-ð (-ð (-ð (-ð (-ð (-ð (-ð (-r+   r	   c                   ó@   ‡ — e Zd Zddedefˆ fd„Zdej        fd„Zˆ xZ	S )ÚRMSNormrF   ÚdimÚepsc                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        d S ©N)r,   rP   r   Ú	ParameterÚtorchÚonesÚweightr_   )r(   r^   r_   r/   s      €r)   rP   zRMSNorm.__init__H   s=   ø€ Ý‰Œ×ÒÑÔÐÝ”l¥5¤:¨c¡?¤?Ñ3Ô3ˆŒØˆŒˆˆr+   Úreturnc                 ó„   — |                      ¦   «         }t          j        ||j        d         f| j        | j        ¦  «        S )Néÿÿÿÿ)ÚpopÚFÚrms_normÚshapere   r_   )r(   Úx_listÚxs      r)   ÚforwardzRMSNorm.forwardM   s1   € Ø�JŠJ‰LŒLˆÝŒz˜!˜aœg bœk˜^¨T¬[¸$¼(ÑCÔCÐCr+   )rF   )
rR   rS   rT   rV   rW   rP   rc   ÚTensorro   rZ   r[   s   @r)   r]   r]   G   sv   ø€ € € € € ðð ˜Cð  eð ð ð ð ð ð ð
D ¤ð Dð Dð Dð Dð Dð Dð Dð Dr+   r]   c                   óh   ‡ — e Zd Zddedefˆ fd„Zdej        deej        ej        f         fd„Z	ˆ xZ
S )	ÚRotaryEmbeddingrG   r4   Úbasec                 ór   •— t          ¦   «                              ¦   «          || _        || _        d | _        d S ra   )r,   rP   r4   rs   Ú	_inv_freq)r(   r4   rs   r/   s      €r)   rP   zRotaryEmbedding.__init__S   s2   ø€ Ý‰Œ×ÒÑÔÐØ ˆŒØˆŒ	Ø15ˆŒˆˆr+   Úposition_idsrf   c           	      óv  — | j         �| j         j        |j        k    rEd| j        t          j        d| j        dt          j        |j        ¬¦  «        | j        z  z  z  | _         |                     ¦   «                              d¦  «        }|| j         z  }| 	                    ¦   «         | 
                    ¦   «         fS )NrK   r   é   )r   Údevicerh   )ru   ry   rs   rc   Úaranger4   Úfloat32rW   Ú	unsqueezeÚcosÚsin)r(   rv   ÚposÚangless       r)   ro   zRotaryEmbedding.forwardY   s¡   € ØŒ>Ð! T¤^Ô%:¸lÔ>QÒ%QÐ%QØ  D¤IÝ”˜Q ¤¨q½¼ÈlÔNaÐbÑbÔbÐeiÔerÑrñ%ñ ˆDŒNð × Ò Ñ"Ô"×,Ò,¨RÑ0Ô0ˆØ�t”~Ñ%ˆØ�zŠz‰|Œ|˜VŸZšZ™\œ\Ð)Ð)r+   )rG   )rR   rS   rT   rV   rW   rP   rc   rp   r   ro   rZ   r[   s   @r)   rr   rr   R   s‚   ø€ € € € € ð6ð 6 ð 6¨Eð 6ð 6ð 6ð 6ð 6ð 6ð* E¤Lð *°U¸5¼<ÈÌÐ;UÔ5Vð *ð *ð *ð *ð *ð *ð *ð *r+   rr   r}   r~   rf   c                 óZ  — |                       ¦   «         }|j        d         dz  }|dd |…f         |d|d …f         }}|                     |j        ¦  «        |                     |j        ¦  «        }}t	          j        |¦  «        }t	          j        |||dd |…f         ¬¦  «         t	          j        |||d|d …f         ¬¦  «         |                     |¦  «                             |d|d …f         ¦  «         |                     |¦  «         	                    |dd |…f         ¦  «         |S )Nrh   rx   .)Úout)
ri   rl   Útor   rc   Ú
empty_likeÚmulÚmul_Úsub_Úadd_)rm   r}   r~   rn   ÚhalfÚx1Úx2Úscratchs           r)   Ú_apply_rotaryr�   c   s  € Ø�
Š
‰Œ€AØŒ7�2Œ;˜!Ñ€DØˆs�E�T�EˆzŒ]˜A˜c 4 5 5˜jœMˆ€BØ�vŠv�a”g‰Œ §¢ q¤w¡¤ˆ€CÝÔ˜qÑ!Ô!€GÝ	„Iˆb�#˜7 3¨¨¨ :Ô.Ð/Ñ/Ô/Ð/Ý	„Iˆb�#˜7 3¨¨¨ :Ô.Ð/Ñ/Ô/Ð/Ø‡G‚GˆC�L„L×Ò�g˜c 4 5 5˜jÔ)Ñ*Ô*Ð*Ø‡G‚GˆC�L„L×Ò�g˜c 5 D 5˜jÔ)Ñ*Ô*Ð*Ø€Hr+   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )Ú	AttentionÚconfigc                 ó¤  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        | j        | j        z  | _        t          j	        |j
        | j        | j        z  d¬¦  «        | _        t          j	        |j
        | j        | j        z  d¬¦  «        | _        t          j	        |j
        | j        | j        z  d¬¦  «        | _        t          j	        | j        | j        z  |j
        d¬¦  «        | _        t          | j        |j        ¦  «        | _        t          | j        |j        ¦  «        | _        d S ©NF)Úbias)r,   rP   r2   Ú	num_headsr3   Únum_kv_headsr4   Únum_kv_groupsr   ÚLinearr0   Úq_projÚk_projÚv_projÚo_projr]   r7   Úq_normÚk_norm©r(   r�   r/   s     €r)   rP   zAttention.__init__q   s  ø€ Ý‰Œ×ÒÑÔÐØÔ3ˆŒØ"Ô6ˆÔØœˆŒØ!œ^¨tÔ/@Ñ@ˆÔå”i Ô 2°D´NÀTÄ]Ñ4RÐY^Ð_Ñ_Ô_ˆŒÝ”i Ô 2°DÔ4EÈÌÑ4UÐ\aÐbÑbÔbˆŒÝ”i Ô 2°DÔ4EÈÌÑ4UÐ\aÐbÑbÔbˆŒÝ”i ¤°´Ñ >ÀÔ@RÐY^Ð_Ñ_Ô_ˆŒÝ˜dœm¨VÔ-@ÑAÔAˆŒÝ˜dœm¨VÔ-@ÑAÔAˆŒˆˆr+   c           
      óN  — |                      ¦   «         }|j        \  }}}	|                      |¦  «                             ||| j        | j        ¦  «        }
|                      |¦  «                             ||| j        | j        ¦  «        }|                      |¦  «                             ||| j        | j        ¦  «        }~|
g|g}}d x}
}| 	                    |  
                    |¦  «        ¦  «         | 	                    |                      |¦  «        ¦  «         |                     d¦  «        |                     d¦  «        }}t          |||¦  «        }
t          |||¦  «        }|
||g}d x}
x}}dD ]ñ}||         }||dz
           }|                     ||j        d         |z   | j        | j        ¦  «        }|                     |d| j        | j        | j        ¦  «        }|d d …d |j        d         …f                              |d d d …d d …d d d …f         ¦  «         |d d …|j        d         d …f                              |                     d¦  «        ¦  «         |||<   ~~~Œòt#          ||dk    rdnd	d
¬¦  «        }|                      |                     d¦  «        ¦  «        S )Nrx   )é   rx   r    r   rh   éþÿÿÿÚvllmÚflashÚsdpaT)Úforce_attentionÚ	recycle_q)ri   rl   r˜   Úviewr”   r4   r™   r•   rš   Úappendrœ   r�   r|   r�   Ú	new_emptyr–   Úcopy_r   r›   Úflatten)r(   rm   Úcacher}   r~   Úenginern   ÚBÚTÚ_ÚqÚkÚvÚq_listÚk_listÚrcÚrsÚqkv_listÚindexÚsourceÚprefixÚcombinedÚgroupedÚhs                           r)   ro   zAttention.forward   s�  € Ø�JŠJ‰LŒLˆØ”'‰ˆˆ1ˆaØ�KŠK˜‰NŒN×Ò  1 d¤n°d´mÑDÔDˆØ�KŠK˜‰NŒN×Ò  1 dÔ&7¸¼ÑGÔGˆØ�KŠK˜‰NŒN×Ò  1 dÔ&7¸¼ÑGÔGˆØØ˜˜q˜c�ˆØˆˆˆAØ�Š�d—k’k &Ñ)Ô)Ñ*Ô*Ð*Ø�Š�d—k’k &Ñ)Ô)Ñ*Ô*Ð*Ø—’˜qÑ!Ô! 3§=¢=°Ñ#3Ô#3ˆBˆÝ˜& " bÑ)Ô)ˆÝ˜& " bÑ)Ô)ˆà�q˜!�9ˆØÐˆÐˆA�Øð 	*ð 	*ˆEØ˜e”_ˆFØ˜5 1™9Ô%ˆFØ×'Ò'¨¨6¬<¸¬?¸QÑ+>ÀÄÐPTÔP]Ñ^Ô^ˆHØ—m’m A r¨4Ô+<¸dÔ>PÐRVÔR_Ñ`Ô`ˆGØ�A�A�AÐ'˜œ QœÐ'Ð'Ô(×.Ò.¨v°d¸A¸A¸A¸q¸q¸qÀ$ÈÈÈÐ6IÔ/JÑKÔKÐKØ�A�A�A�v”| A”Ð'Ð'Ð'Ô(×.Ò.¨v×/?Ò/?ÀÑ/CÔ/CÑDÔDÐDØ&ˆH�U‰OØ˜ ' 'Ý˜(¸vÈÒ?OÐ?O°G°GÐU[ÐgkÐlÑlÔlˆØ�{Š{˜1Ÿ9š9 Q™<œ<Ñ(Ô(Ð(r+   )rR   rS   rT   r	   rP   ro   rZ   r[   s   @r)   r�   r�   p   sZ   ø€ € € € € ðB˜zð Bð Bð Bð Bð Bð Bð)ð )ð )ð )ð )ð )ð )r+   r�   c                   ó:   ‡ — e Zd Zdefˆ fd„Zdej        fd„Zˆ xZS )ÚMLPr�   c                 ó,  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        d S r’   )	r,   rP   r   r—   r0   r5   Ú	gate_projÚup_projÚ	down_projrž   s     €r)   rP   zMLP.__init__Ÿ   sz   ø€ Ý‰Œ×ÒÑÔÐÝœ 6Ô#5°vÔ7OÐV[Ð\Ñ\Ô\ˆŒÝ”y Ô!3°VÔ5MÐTYÐZÑZÔZˆŒÝœ 6Ô#;¸VÔ=OÐV[Ð\Ñ\Ô\ˆŒˆˆr+   rf   c                 óþ   — |                      ¦   «         }|                      |¦  «        |                      |¦  «        }}~t          j        |d¬¦  «                             |¦  «         ~|                      |¦  «        S )NT)Úinplace)ri   rÂ   rÃ   rj   Úsilur†   rÄ   )r(   rm   rn   ÚgateÚups        r)   ro   zMLP.forward¥   si   € Ø�JŠJ‰LŒLˆØ—>’> !Ñ$Ô$ d§l¢l°1¡o¤oˆbˆØÝ	Œˆt˜TÐ"Ñ"Ô"×'Ò'¨Ñ+Ô+Ð+ØØ�~Š~˜dÑ#Ô#Ð#r+   )	rR   rS   rT   r	   rP   rc   rp   ro   rZ   r[   s   @r)   rÀ   rÀ   ž   sh   ø€ € € € € ð]˜zð ]ð ]ð ]ð ]ð ]ð ]ð$ ¤ð $ð $ð $ð $ð $ð $ð $ð $r+   rÀ   c                   ó4   ‡ — e Zd ZdZddedefˆ fd„Zd„ Zˆ xZS )ÚTimestepEmbedderuA   Sinusoidal timestep â†’ MLP â†’ hidden_size (same as modules.py).é   r0   Úfrequency_embedding_sizec                 óú   •— t          ¦   «                              ¦   «          t          j        t          j        ||¦  «        t          j        ¦   «         t          j        ||¦  «        ¦  «        | _        || _        d S ra   )r,   rP   r   Ú
Sequentialr—   ÚSiLUÚmlprÍ   )r(   r0   rÍ   r/   s      €r)   rP   zTimestepEmbedder.__init__±   se   ø€ Ý‰Œ×ÒÑÔÐÝ”=ÝŒIÐ.°Ñ<Ô<ÝŒG‰IŒIÝŒI�k ;Ñ/Ô/ñ
ô 
ˆŒð
 )AˆÔ%Ð%Ð%r+   c                 óB  — | j         dz  }t          j        t          j        d¦  «         t          j        ||j        t          j        ¬¦  «        z  |z  ¦  «        }|                     ¦   «          	                    d¦  «        | 	                    d¦  «        z  }t          j
        t          j        |¦  «        t          j        |¦  «        gd¬¦  «        }|                      |                     t          |                      ¦   «         ¦  «        j        ¦  «        ¦  «        S )Nrx   i'  )ry   r   rh   r   )r^   )rÍ   rc   ÚexpÚmathÚlogrz   ry   r{   rW   r|   Úcatr}   r~   rÑ   rƒ   ÚnextÚ
parametersr   )r(   Útr‰   ÚfreqsÚargsÚembs         r)   ro   zTimestepEmbedder.forwardº   sØ   € ØÔ,°Ñ1ˆÝ”	ÝŒX�e‰_Œ_Ð�uœ|¨D¸¼ÍÌÐWÑWÔWÑWÐZ^Ñ^ñ
ô 
ˆð �wŠw‰yŒy×"Ò" 2Ñ&Ô&¨¯ª¸Ñ);Ô);Ñ;ˆÝŒi�œ 4™œ­%¬)°D©/¬/Ð:ÀÐCÑCÔCˆØ�xŠx˜Ÿš�t D§O¢OÑ$5Ô$5Ñ6Ô6Ô<Ñ=Ô=Ñ>Ô>Ð>r+   )rÌ   ©rR   rS   rT   Ú__doc__rV   rP   ro   rZ   r[   s   @r)   rË   rË   ®   sn   ø€ € € € € ØKÐKðAð A Cð AÀ3ð Að Að Að Að Að Að?ð ?ð ?ð ?ð ?ð ?ð ?r+   rË   c                   ó2   ‡ — e Zd ZdZdedefˆ fd„Zd„ Zˆ xZS )ÚAudioPositionEmbeddingz7Non-learnable 1D sinusoidal PE for audio latent frames.Ú
max_framesr0   c                 ó$  •— t          ¦   «                              ¦   «          t          j        ||¦  «        }t          j        d|t          j        ¬¦  «                             d¦  «        }t          j        t          j        d|dt          j        ¬¦  «        t          j	        d¦  «         |z  z  ¦  «        }t          j
        ||z  ¦  «        |d d …dd d…f<   t          j        ||z  ¦  «        |d d …dd d…f<   |                      d|¦  «         d S )Nr   )r   r    rx   g     ˆÃ@Úpe)r,   rP   rc   Úzerosrz   r{   r|   rÓ   rÔ   rÕ   r~   r}   Úregister_buffer)r(   rá   r0   rã   ÚpositionÚdiv_termr/   s         €r)   rP   zAudioPositionEmbedding.__init__Ç   sû   ø€ Ý‰Œ×ÒÑÔÐÝŒ[˜ [Ñ1Ô1ˆÝ”<  :µU´]ÐCÑCÔC×MÒMÈaÑPÔPˆÝ”9ÝŒL˜˜K¨µ%´-Ð@Ñ@Ô@ÅTÄXÈgÑEVÔEVÐDVÐYdÑDdÑeñ
ô 
ˆõ ”i ¨8Ñ 3Ñ4Ô4ˆˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7‰Ý”i ¨8Ñ 3Ñ4Ô4ˆˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7‰Ø×Ò˜T 2Ñ&Ô&Ð&Ð&Ð&r+   c                 ó   — | j         |         S ra   )rã   )r(   rv   s     r)   ro   zAudioPositionEmbedding.forwardÒ   s   € ØŒw�|Ô$Ð$r+   rÝ   r[   s   @r)   rà   rà   Ä   s`   ø€ € € € € ØAÐAð	' 3ð 	'°Sð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð%ð %ð %ð %ð %ð %ð %r+   rà   )rÞ   rÔ   Útypingr   r   rc   r   Útorch.nn.functionalÚ
functionalrj   Útransformersr   Úshared.attentionr   r	   ÚModuler]   rr   rp   r�   r�   rÀ   rË   rà   r!   r+   r)   ú<module>rï      sü  ðØ >Ð >Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø *Ð *Ð *Ð *Ð *Ð *ð:-ð :-ð :-ð :-ð :-Ð!ñ :-ô :-ð :-ðzDð Dð Dð Dð DˆbŒiñ Dô Dð Dð*ð *ð *ð *ð *�b”iñ *ô *ð *ð"
˜uœ|ð 
°%´,ð 
À5Ä<ð 
ð 
ð 
ð 
ð*)ð *)ð *)ð *)ð *)�”	ñ *)ô *)ð *)ð\$ð $ð $ð $ð $ˆ"Œ)ñ $ô $ð $ð ?ð ?ð ?ð ?ð ?�r”yñ ?ô ?ð ?ð,%ð %ð %ð %ð %˜RœYñ %ô %ð %ð %ð %r+   