§
    �M§j7%  ã                   óJ  — d Z ddl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 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZmZmZmZmZmZ dd„Z G d„ de¦  «        Z G d„ dej         ¦  «        Z! G d„ dej         ¦  «        Z" G d„ dej         ¦  «        Z#dS )z<Separate YuE2 AR and acoustic transformers, managed by MMGP.é    )ÚreplaceN)Únn)Úpay_attention)ÚQwen3ForCausalLM)Ú	Attention)ÚRMSNorm)Ú
SiluAndMul)Úprobe_vllm_runtime)Úget_contextÚset_contexté   )r   ÚAudioPositionEmbeddingÚMLPr   ÚRotaryEmbeddingÚTimestepEmbedderFc                 óÚ   — | j         d         |j         d         z  }|dk    r.|                     |d¬¦  «        |                     |d¬¦  «        }}t          | ||g||dk    rdnd¬¦  «        S )Néþÿÿÿr   )ÚdimÚvllmÚflashÚsdpa)ÚcausalÚforce_attention)ÚshapeÚrepeat_interleaver   )ÚqÚkÚvÚenginer   Úgroupss         úCC:\Users\johnn\OneDrive\Documents\AI\models\TTS\yue2\transformer.pyÚattendr"      s|   € ØŒW�RŒ[˜AœG BœKÑ'€FØ�‚{€{Ø×"Ò" 6¨rÐ"Ñ2Ô2°A×4GÒ4GÈÐTVÐ4GÑ4WÔ4Wˆ1ˆÝ˜!˜Q ˜¨6ÈfÐX^ÒN^ÐN^À7À7ÐdjÐkÑkÔkÐkó    c                   óŠ   ‡ — e Zd ZdgZˆ fd„Zd„ Z ej        ¦   «         d„ ¦   «         Z ej        ¦   «         d„ ¦   «         Z	ˆ xZ
S )ÚYuE2ARÚ	conditionc                 óv   •— t          ¦   «                              |¦  «         || _        d| _        d„ | _        d S )NÚlegacyc                  ó   — dS ©NF© r+   r#   r!   ú<lambda>z!YuE2AR.__init__.<locals>.<lambda>"   ó   €  € r#   )ÚsuperÚ__init__Úconfigr   Úabort_fn©Úselfr0   Ú	__class__s     €r!   r/   zYuE2AR.__init__   s6   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØˆŒØ%˜ˆŒˆˆr#   c                 ó°  — |dk    r#t          ¦   «         d         st          d¦  «        ‚||c| _        | _        |dk    | j        _        |                      ¦   «         D ]x}t          |t          ¦  «        r |dk    rd x|_	        |_
        |dk    |_        Œ7t          |t          ¦  «        r|dk    |_        ŒXt          |t          ¦  «        r|dk    |_        Œyd S )Nr   Ú	supportedz3YuE2 vllm mode requires Triton and FlashAttention 2)r
   ÚRuntimeErrorr   r1   r0   Ú_prompt_enhancer_safe_legacyÚmodulesÚ
isinstanceÚPagedAttentionÚflash_attn_varlen_funcÚflash_attn_with_kvcacheÚuse_triton_kv_cacheÚEngineRMSNormÚuse_triton_rmsnormr	   Ú
use_triton)r3   r   r1   Úmodules       r!   Úconfigure_enginezYuE2AR.configure_engine$   sì   € Ø�VÒÐÕ$6Ñ$8Ô$8¸Ô$EÐÝÐTÑUÔUÐUØ%+¨XÐ"ˆŒ�T”]Ø39¸VÒ3CˆŒÔ0Ø—l’l‘n”nð 	5ð 	5ˆFÝ˜&¥.Ñ1Ô1ð 5Ø˜VÒ#Ð#ØUYÐY�FÔ1°FÔ4RØ-3°vÒ-=�Ô*Ð*Ý˜F¥MÑ2Ô2ð 5Ø,2°fÒ,<�Ô)Ð)Ý˜F¥JÑ/Ô/ð 5Ø$*¨fÒ$4�Ô!øð	5ð 	5r#   c           	      ó¬  — | j                              |¦  «        }d }t          ¦   «         }g }|j        rE|j                             ¦   «         }|j                             ¦   «         }t          |¦  «        dz
  }	n|j        d         }	t          |	dz   ¦  «        }|	dk    rût          |	¦  «        D ]ë}
||
|
dz   …         \  }}t          ||j        ||…         |j        �|j        |
|
dz   …         nd ¬¦  «        }|j        r^|j        |
|
dz   …         |z
  |_        |j        |
|
dz   …         ||
         z
  |_        ||z
  |_        ||
dz            ||
         z
  |_        n|j        |
|
dz   …         |_        |                     t#          ||¦  «        |f¦  «         Œì	 | j         j        D ]Õ}|ržg g }}|D ]n\  }}t'          di t)          |¦  «        ¤Ž  |||         ||         |�||         nd ¦  «        \  }}|                     |¦  «         |                     |¦  «         Œot+          j        |¦  «        t+          j        |¦  «        }}n ||||¦  «        \  }}|                      ¦   «         rt1          d¦  «        ‚ŒÖ	 t'          di t)          |¦  «        ¤Ž n# t'          di t)          |¦  «        ¤Ž w xY w| j                              ||¦  «        d         S )Nr   r   é   )Úslot_mappingÚblock_tableszYuE2 AR interruptedr+   )ÚmodelÚembed_tokensr   Ú
is_prefillÚcu_seqlens_qÚtolistÚcu_seqlens_kÚlenr   Úranger   rF   rG   Úmax_seqlen_qÚmax_seqlen_kÚcontext_lensÚappendÚsliceÚlayersr   ÚvarsÚtorchÚcatr1   ÚInterruptedErrorÚnorm)r3   Ú	input_idsÚ	positionsÚxÚresidualÚcontextÚbranchesÚoffsetsÚkey_offsetsÚcountÚindexÚstartÚendÚbranchÚlayerÚoutputsÚ	residualsÚspanÚhÚrs                       r!   ÚforwardzYuE2AR.forward3   sW  € àŒJ×#Ò# IÑ.Ô.ˆØˆÝ‘-”-ˆØˆØÔð 	'ØÔ*×1Ò1Ñ3Ô3ˆGØ!Ô.×5Ò5Ñ7Ô7ˆKÝ˜‘L”L 1Ñ$ˆEˆEà”G˜A”JˆEÝ˜E A™IÑ&Ô&ˆGØ�1Š9ˆ9Ý˜u™œð 
=ð 
=�Ø$ U¨5°1©9 _Ô5‘
��sÝ  °wÔ7KÈEÐRUÈIÔ7Vð  OVô  Ocð  OoÐelÔeyÐzð  AFð  IJñ  AJð  {Jô  fKð  fKð  uyð  zñ  zô  z�ØÔ%ð PØ*1Ô*>¸uÀUÈQÁY¸Ô*OÐRWÑ*W�FÔ'Ø*1Ô*>¸uÀUÈQÁY¸Ô*OÐR]Ð^cÔRdÑ*d�FÔ'Ø*-°©+�FÔ'Ø*5°e¸a±iÔ*@À;ÈuÔCUÑ*U�FÔ'Ð'à*1Ô*>¸uÀUÈQÁY¸Ô*O�FÔ'Ø—’¥ u¨cÑ!2Ô!2°FÐ ;Ñ<Ô<Ð<Ð<ð	)ØœÔ*ð Bð B�Øð 
@à)+¨R˜Y�GØ(0ð ,ð ,™˜˜fÝ#Ð3Ð3¥d¨6¡l¤lÐ3Ð3Ð3Ø$˜u Y¨t¤_°a¸´gÐQYÐQe¸xÈ¼~¸~ÐkoÑpÔp™˜˜1ØŸš qÑ)Ô)Ð)Ø!×(Ò(¨Ñ+Ô+Ð+Ð+Ý"'¤)¨GÑ"4Ô"4µe´iÀ	Ñ6JÔ6J�x�A�Aà"' %¨	°1°hÑ"?Ô"?‘K�A�xØ—=’=‘?”?ð BÝ*Ð+@ÑAÔAÐAðBðBõ Ð(Ð(�$˜w™-œ-Ð(Ð(Ð(Ð(ø�KÐ(Ð(�$˜w™-œ-Ð(Ð(Ð(Ð(øøøØŒz�Š˜q (Ñ+Ô+¨AÔ.Ð.s   ÆC"J ÊJ2c                 ó@  — t          j        t          |¦  «        d¬¦  «        }| j                             t          j        |d¬¦  «        ¦  «        }g }| j        j        D �]¼}|                     |¦  «        }|j        }| 	                    | 
                    |¦  «                             d|j        |j        ¦  «        ¦  «        }|                     |                     |¦  «                             d|j        |j        ¦  «        ¦  «        }	|                     |¦  «                             d|j        |j        ¦  «        }
|                     |||	¦  «        \  }}	|                     |	|
f¦  «         t)          |d         |	d         |
d         | j        d¬¦  «        }||                     |                     d¦  «        d         ¦  «        z   }||                     |                     |¦  «        ¦  «        z   }|                      ¦   «         rt7          d	¦  «        ‚�Œ¾|S )
z=Cache each layer's AR keys/values for acoustic flow matching.Úcuda©ÚdeviceéÿÿÿÿNT)r   rE   r   z&YuE2 acoustic conditioning interrupted)rW   ÚarangerN   rH   rI   ÚtensorrU   Úinput_layernormÚ	self_attnÚq_normÚq_projÚviewÚ	num_headsÚhead_dimÚk_normÚk_projÚnum_kv_headsÚv_projÚ
rotary_embrS   r"   r   Úo_projÚflattenÚmlpÚpost_attention_layernormr1   rY   )r3   Ú	token_idsr\   r]   Úcacherh   rl   Úattnr   r   r   s              r!   r&   zYuE2AR.condition_   sÈ  € õ ”L¥ Y¡¤¸Ð?Ñ?Ô?ˆ	ØŒJ×#Ò#¥E¤L°À6Ð$JÑ$JÔ$JÑKÔKˆØˆØ”ZÔ&ð 	Qñ 	QˆEØ×%Ò% aÑ(Ô(ˆAØ”?ˆDØ—’˜DŸKšK¨™NœN×/Ò/°°D´NÀDÄMÑRÔRÑSÔSˆAØ—’˜DŸKšK¨™NœN×/Ò/°°DÔ4EÀtÄ}ÑUÔUÑVÔVˆAØ—’˜A‘”×#Ò# B¨Ô(9¸4¼=ÑIÔIˆAØ—?’? 9¨a°Ñ3Ô3‰DˆAˆqØ�LŠL˜!˜Q˜Ñ Ô Ð Ý�q˜”w  $¤¨¨4¬°$´+ÀdÐKÑKÔKˆAØ�D—K’K §	¢	¨!¡¤¨Q¤Ñ0Ô0Ñ0ˆAØ�E—I’I˜e×<Ò<¸QÑ?Ô?Ñ@Ô@Ñ@ˆAØ�}Š}‰Œð QÝ&Ð'OÑPÔPÐPñQàˆr#   )Ú__name__Ú
__module__Ú__qualname__Ú_offload_hooksr/   rC   rW   Úinference_modern   r&   Ú__classcell__©r4   s   @r!   r%   r%      s�   ø€ € € € € Ø!�]€Nð&ð &ð &ð &ð &ð5ð 5ð 5ð €UÔÑÔð)/ð )/ñ Ôð)/ðV €UÔÑÔðð ñ Ôðð ð ð ð r#   r%   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚAcousticLayerc                 ó,  •— t          ¦   «                              ¦   «          t          |j        |j        ¦  «        | _        t          |¦  «        | _        t          |j        |j        ¦  «        | _        t          |¦  «        | _
        |j        | _        d S )N)r.   r/   r   Úhidden_sizeÚrms_norm_epsÚnar_input_layernormr   Únar_self_attnÚnar_pre_mlp_layernormr   Únar_mlpÚffn_chunk_sizer2   s     €r!   r/   zAcousticLayer.__init__v   sw   ø€ Ý‰Œ×ÒÑÔÐÝ#*¨6Ô+=¸vÔ?RÑ#SÔ#SˆÔ Ý& vÑ.Ô.ˆÔÝ%,¨VÔ-?ÀÔATÑ%UÔ%UˆÔ"Ý˜6‘{”{ˆŒØ$Ô3ˆÔÐÐr#   c           	      ó&  — |                      ¦   «         }|                     |                      |                      |g¦  «        g||||¦  «        ¦  «         t	          | j        t          d|j        d         |j        d         z  | j        j	        j
        z  ¦  «        ¦  «        }t          d|j        d         |¦  «        D ]P}|d d …|||z   …f         }	|	                     |                      |                      |	g¦  «        g¦  «        ¦  «         ŒQ|S )Nr   rE   r   )ÚpopÚadd_r–   r•   Úminr™   Úmaxr   r˜   Ú	gate_projÚout_featuresrO   r—   )
r3   Úx_listr‡   ÚcosÚsinr   r]   Ú
chunk_sizere   Úparts
             r!   rn   zAcousticLayer.forward~   s   € Ø�JŠJ‰LŒLˆà	�Šˆt×!Ò! 4×#;Ò#;¸Q¸CÑ#@Ô#@Ð"AÀ5È#ÈsÐTZÑ[Ô[Ñ\Ô\Ð\å˜Ô,­c°!°Q´W¸Q´ZÀ!Ä'È!Ä*Ñ5LÐPTÔP\ÔPfÔPsÑ5sÑ.tÔ.tÑuÔuˆ
Ý˜1˜aœg aœj¨*Ñ5Ô5ð 	Jð 	JˆEØ�Q�Q�Q˜˜e jÑ0Ð0Ð0Ô1ˆDØ�IŠI�d—l’l D×$>Ò$>À¸vÑ$FÔ$FÐ#GÑHÔHÑIÔIÐIÐIØˆr#   )r‰   rŠ   r‹   r/   rn   rŽ   r�   s   @r!   r‘   r‘   u   sG   ø€ € € € € ð4ð 4ð 4ð 4ð 4ð	ð 	ð 	ð 	ð 	ð 	ð 	r#   r‘   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAcousticBackbonec                 óö   •‡— t          ¦   «                              ¦   «          t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j	        ¦  «        | _
        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r+   )r‘   )Ú.0Ú_r0   s     €r!   ú
<listcomp>z-AcousticBackbone.__init__.<locals>.<listcomp>�   s!   ø€ Ð$dÐ$dÐ$d¸q¥]°6Ñ%:Ô%:Ð$dÐ$dÐ$dr#   )r.   r/   r   Ú
ModuleListrO   Únum_hidden_layersrU   r   r“   r”   rZ   r2   s    `€r!   r/   zAcousticBackbone.__init__‹   sf   øø€ Ý‰Œ×ÒÑÔÐÝ”mÐ$dÐ$dÐ$dÐ$dÅEÈ&ÔJbÑDcÔDcÐ$dÑ$dÔ$dÑeÔeˆŒÝ˜FÔ.°Ô0CÑDÔDˆŒ	ˆ	ˆ	r#   )r‰   rŠ   r‹   r/   rŽ   r�   s   @r!   r§   r§   Š   sA   ø€ € € € € ðEð Eð Eð Eð Eð Eð Eð Eð Er#   r§   c                   óZ   ‡ — e Zd ZdgZˆ fd„Zd„ Z ej        ¦   «         d„ ¦   «         Zˆ xZ	S )ÚYuE2AcousticÚ
synthesizec                 óÚ  •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j        |j        |j        ¦  «        | _
        t          |j        ¦  «        | _        t          |j        |j        ¦  «        | _        t!          |j        |j        ¦  «        | _        d| _        d„ | _        d S )Nr(   c                  ó   — dS r*   r+   r+   r#   r!   r,   z'YuE2Acoustic.__init__.<locals>.<lambda>ž   r-   r#   )r.   r/   r0   r§   rH   r   ÚLinearr“   Ú
latent_dimÚllm2vaeÚvae2llmr   Útime_embedderr   Úmax_latent_framesÚlatent_pos_embedr   r|   Ú
rope_thetaÚrotaryr   r1   r2   s     €r!   r/   zYuE2Acoustic.__init__”   s·   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ% fÑ-Ô-ˆŒ
Ý”y Ô!3°VÔ5FÑGÔGˆŒÝ”y Ô!2°FÔ4FÑGÔGˆŒÝ-¨fÔ.@ÑAÔAˆÔÝ 6°vÔ7OÐQWÔQcÑ dÔ dˆÔÝ% f¤o°vÔ7HÑIÔIˆŒØˆŒØ%˜ˆŒˆˆr#   c                 óô  — |                      ¦   «         }t          j        |                     |j        ¬¦  «        ¦  «        }| j        j        }	|	|z  d|	dz
  |z  z   z  }|                      t          j	        |d¦  «        d          ¦  «        }
~|
 
                    |                      |                     d¦  «        ¦  «        d          ¦  «         
                    |¦  «         t          | j        j        |¦  «        D ]A\  }}|
g}d }
 |||||| j        ¦  «        }
|                      ¦   «         rt%          d¦  «        ‚ŒB|
g}d }
|                      | j                             |¦  «        ¦  «        ddd…f         S )N©Údtyper   )r   r   r   r   z#YuE2 acoustic synthesis interruptedr   rs   )r›   rW   ÚsigmoidÚtor¿   r0   Útimestep_shiftr·   ÚFÚpadrœ   r¸   ÚreshapeÚziprH   rU   r   r1   rY   r¶   rZ   )r3   Ú
state_listÚraw_tr‡   r¢   r£   Úposition_embeddingÚstateÚtÚshiftr]   rh   Úlayer_cacher¡   s                 r!   rn   zYuE2Acoustic.forward    sa  € Ø—’Ñ Ô ˆÝŒM˜%Ÿ(š(¨¬˜(Ñ5Ô5Ñ6Ô6ˆØ”Ô*ˆØ�A‰I˜˜e a™i¨1™_Ñ,Ñ-ˆØ�LŠL�œ˜u lÑ3Ô3°DÔ9Ñ:Ô:ˆØØ	�Šˆt×!Ò! !§)¢)¨A¡,¤,Ñ/Ô/°Ô5Ñ6Ô6×;Ò;Ð<NÑOÔOÐOÝ"% d¤jÔ&7¸Ñ"?Ô"?ð 	Nð 	NÑˆE�;Ø�SˆFØˆAØ��f˜k¨3°°T´[ÑAÔAˆAØ�}Š}‰Œð NÝ&Ð'LÑMÔMÐMðNà�ˆØˆØ�|Š|˜DœJŸOšO¨FÑ3Ô3Ñ4Ô4°Q¸¸"¸°WÔ=Ð=r#   c                 óV  — |                      ¦   «         }|                     d| j        j        j        ¬¦  «        }t          |¦  «        dz   }t          j        |||z   |j        ¬¦  «        d          }	|  	                    |	¦  «        \  }
}|  
                    t          j        ||j        ¬¦  «        ¦  «        d          }t          j        t          j        d|z  ddt          j        ¬¦  «        d|z  z  ¦  «                             dd	¦  «                             |j        ¦  «        }	 t          |¦  «        D ]ˆ} | |g|d|z           ||
||¦  «        }|                     d|z  ¦  «         ||z
  g}~|                      | ||d|z  d
z            ||
||¦  «                             |¦  «        ¦  «          ||¦  «         Œ‰|                     ¦   «                              ¦   «         |                     ¦   «          d | j	        _        S # |                     ¦   «          d | j	        _        w xY w)Nrp   )rr   r¿   rE   rq   r   rs   r¾   iìÿÿÿé   r   )r›   rÁ   r·   Úweightr¿   rN   rW   rt   rr   r¼   rº   ÚlogitÚfloat64ÚclamprO   Údiv_Úsub_ÚfloatÚcpuÚclearÚ	_inv_freq)r3   ÚnoiseÚ
cache_listÚ	ar_lengthÚstepsÚreportr‡   rÊ   Úlengthr\   r¢   r£   ÚposÚ	raw_stepsÚstepÚfirstÚmid_lists                    r!   r±   zYuE2Acoustic.synthesize²   s  € à—’Ñ Ô ˆØ—’ ¨d¬lÔ.AÔ.G�ÑHÔHˆÝ�U‘”˜a‘ˆÝ”L ¨I¸Ñ,>ÀuÄ|ÐTÑTÔTÐUYÔZˆ	Ø—;’;˜yÑ)Ô)‰ˆˆSØ×#Ò#¥E¤L°ÀÄÐ$MÑ$MÔ$MÑNÔNÈtÔTˆÝ”K¥¤¨Q°©Y¸¸2ÅUÄ]Ð SÑ SÔ SÐWXÐ[`ÑW`Ñ aÑbÔb×hÒhÐilÐnpÑqÔq×tÒtÐuzô  vBñ  Cô  Cˆ	ð	)Ý˜e™œð ð �à˜˜e˜W i°°D±Ô&9¸5À#ÀsÈCÑPÔP�Ø—
’
˜1˜u™9Ñ%Ô%Ð%Ø! E™M˜?�ØØ—
’
˜4˜4 ¨)°A¸±H¸q±LÔ*AÀ5È#ÈsÐTWÑXÔX×]Ò]Ð^cÑdÔdÑeÔeÐeØ��t‘”��Ø—;’;‘=”=×$Ò$Ñ&Ô&à�KŠK‰MŒMˆMØ$(ˆDŒKÔ!Ð!øð �KŠK‰MŒMˆMØ$(ˆDŒKÔ!Ð(Ð(Ð(Ð(s   Ä(B=H È"H()
r‰   rŠ   r‹   rŒ   r/   rn   rW   r�   r±   rŽ   r�   s   @r!   r°   r°   ‘   su   ø€ € € € € Ø"�^€Nð
&ð 
&ð 
&ð 
&ð 
&ð>ð >ð >ð$ €UÔÑÔð)ð )ñ Ôð)ð )ð )ð )ð )r#   r°   )F)$Ú__doc__Údataclassesr   rW   r   Útorch.nn.functionalÚ
functionalrÃ   Úshared.attentionr   Ú(shared.llm_engines.nanovllm.models.qwen3r   Ú,shared.llm_engines.nanovllm.layers.attentionr   r;   Ú,shared.llm_engines.nanovllm.layers.layernormr   r?   Ú-shared.llm_engines.nanovllm.layers.activationr	   Ú(shared.llm_engines.nanovllm.vllm_supportr
   Ú)shared.llm_engines.nanovllm.utils.contextr   r   r9   r   r   r   r   r"   r%   ÚModuler‘   r§   r°   r+   r#   r!   ú<module>rñ      sé  ðØ BÐ Bà Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø EÐ EÐ EÐ EÐ EÐ EØ TÐ TÐ TÐ TÐ TÐ TØ QÐ QÐ QÐ QÐ QÐ QØ DÐ DÐ DÐ DÐ DÐ DØ GÐ GÐ GÐ GÐ GÐ GØ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nà gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gðlð lð lð lðWð Wð Wð Wð WÐñ Wô Wð Wðtð ð ð ð �B”Iñ ô ð ð*Eð Eð Eð Eð E�r”yñ Eô Eð Eð6)ð 6)ð 6)ð 6)ð 6)�2”9ñ 6)ô 6)ð 6)ð 6)ð 6)r#   