§
    ‚Štjl  ã                   ó  — d Z ddlmZ ddl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 dd	lmZ dd
lmZ ddlmZmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2  e!j3        e4¦  «        Z5e G d„ de¦  «        ¦   «         Z6 G d„ dej7        ¦  «        Z8 G d„ de,¦  «        Z9 G d„ de(¦  «        Z: G d„ d e)¦  «        Z; G d!„ d"e'¦  «        Z< G d#„ d$ej7        ¦  «        Z= G d%„ d&e¦  «        Z> G d'„ d(e6¦  «        Z? G d)„ d*e¦  «        Z@ G d+„ d,e6¦  «        ZA ed-¬.¦  «         G d/„ d0e6¦  «        ¦   «         ZB ed1¬.¦  «         G d2„ d3e6e2¦  «        ¦   «         ZCg d4¢ZDdS )5zPyTorch Dia model.é    )ÚCallableN)Únné   )Úinitialization)ÚDynamicCacheÚEncoderDecoderCache)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚis_torchdynamo_compilingÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚLlamaAttentionÚLlamaRMSNormÚLlamaRotaryEmbeddingÚeager_attention_forward)ÚPhi3MLPé   )Ú	DiaConfigÚDiaDecoderConfigÚDiaEncoderConfig)ÚDiaGenerationMixinc                   óN   ‡ — e Zd ZU eed<   dZdZdZdZdZ	dZ
dZddgZˆ fd„Zˆ xZS )ÚDiaPreTrainedModelÚconfigÚmodelTÚ	input_idsÚDiaEncoderLayerÚDiaDecoderLayerc                 ó  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rSt	          j        | j        j        t          j        ¬¦  «        | j        j	        z  }t          j        |j        |¦  «         d S d S )N©Údtype)ÚsuperÚ_init_weightsÚ
isinstanceÚDiaMultiChannelEmbeddingÚtorchÚaranger(   Únum_channelsÚlongÚ
vocab_sizeÚinitÚcopy_Úoffsets)ÚselfÚmoduler;   Ú	__class__s      €úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/dia/modular_dia.pyr1   z DiaPreTrainedModel._init_weights?   sy   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ6Ñ7Ô7ð 	0Ý”l 4¤;Ô#;Å5Ä:ÐNÑNÔNÐQUÔQ\ÔQgÑgˆGÝŒJ�v”~ wÑ/Ô/Ð/Ð/Ð/ð	0ð 	0ó    )Ú__name__Ú
__module__Ú__qualname__r"   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphÚmain_input_nameÚ_no_split_modulesr1   Ú__classcell__©r>   s   @r?   r'   r'   3   sz   ø€ € € € € € àÐÐÑØÐØ&*Ð#ØÐØ€NØÐØ!ÐØ!€OØ*Ð,=Ð>Ðð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r@   r'   c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )r3   a  In order to efficiently compute the audio embedding from the 9 different channels,
    we vectorize the embedding process by using a single embedding layer and an offset.
    Example:
    - num_embeds = 4
    - vocab_size = 8
    - num_channels = 3
    We would have offsets = [0, 8, 16]
    If audio_codes = [0, 1, 2, 3], [1, 3, 4, 7], [5, 6, 7, 8],
    then tokens = audio_codes + offsets
                = [0, 1, 2, 3, 9, 11, 12, 15, 21, 22, 23, 24]
    This allows us to use a single embedding layer for all channels.
    r(   c                 óZ  •— t          ¦   «                              ¦   «          t          j        |j        |j        z  |j        ¦  «        | _        |j        | _        |j        | _        t          j	        |j        t          j
        ¬¦  «        |j        z  }|                      d|d¬¦  «         d S )Nr.   r;   F)Ú
persistent)r0   Ú__init__r   Ú	Embeddingr8   r6   Úhidden_sizeÚembedr4   r5   r7   Úregister_buffer)r<   r(   r;   r>   s      €r?   rR   z!DiaMultiChannelEmbedding.__init__T   s’   ø€ Ý‰Œ×ÒÑÔÐÝ”\ &Ô"3°fÔ6IÑ"IÈ6ÔK]Ñ^Ô^ˆŒ
Ø!Ô-ˆÔØ"Ô/ˆÔÝ”,˜vÔ2½%¼*ÐEÑEÔEÈÔHYÑYˆØ×Ò˜Y¨¸EÐÑBÔBÐBÐBÐBr@   Úaudio_codesÚreturnc                 óX  — || j                              |j        ¦  «        z                        d|j        d         |j        d         z  ¦  «        }|                      |¦  «                             |j        d         |j        d         d| j        ¦  «        }|                     d¬¦  «        S )Néÿÿÿÿr!   r   r   )Údim)r;   ÚtoÚdeviceÚviewÚshaperU   rT   Úsum)r<   rW   ÚtokensÚembedss       r?   Úforwardz DiaMultiChannelEmbedding.forward\   s•   € Ø ¤§¢°Ô0BÑ CÔ CÑC×IÒIØ�Ô! !Ô$ {Ô'8¸Ô';Ñ;ñ
ô 
ˆð —’˜FÑ#Ô#×(Ò(¨¬°a¬¸+Ô:KÈAÔ:NÐPRÐTXÔTdÑeÔeˆØ�zŠz˜aˆzÑ Ô Ð r@   )
rA   rB   rC   Ú__doc__r#   rR   r4   ÚTensorrc   rM   rN   s   @r?   r3   r3   F   s|   ø€ € € € € ðð ðCÐ/ð Cð Cð Cð Cð Cð Cð! 5¤<ð !°E´Lð !ð !ð !ð !ð !ð !ð !ð !r@   r3   c                   ó   — e Zd ZdS )ÚDiaMLPN©rA   rB   rC   © r@   r?   rg   rg   d   ó   € € € € € Ø€Dr@   rg   c                   ó   — e Zd ZdS )Ú
DiaRMSNormNrh   ri   r@   r?   rl   rl   h   rj   r@   rl   c                   ó   — e Zd ZdS )ÚDiaRotaryEmbeddingNrh   ri   r@   r?   rn   rn   l   rj   r@   rn   c                   ó.   — e Zd ZdZddeez  dedefd„ZdS )	ÚDiaSelfAttentionú=Multi-headed attention from 'Attention Is All You Need' paperFr(   Ú	layer_idxÚ	is_causalc                 óÒ  — t           j                             | ¦  «         || _        || _        |j        | _        | j        j        | _        | j        j        p| j        | _        | j        | j        z  | _	        t          |d|j        | j        z  ¦  «        | _        d| _        d| _        || _        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¬¦  «        | _        d S )NÚhead_dimr!   ç        F©Úbias)r   ÚModulerR   r(   rr   rT   Únum_attention_headsÚ	num_headsÚnum_key_value_headsÚnum_key_value_groupsÚgetattrru   ÚscalingÚattention_dropoutrs   ÚLinearÚq_projÚk_projÚv_projÚo_proj)r<   r(   rr   rs   s       r?   rR   zDiaSelfAttention.__init__s   s0  € Ý
Œ	×Ò˜4Ñ Ô Ð ØˆŒØ"ˆŒØ!Ô-ˆÔØœÔ8ˆŒØ#'¤;Ô#BÐ#TÀdÄnˆÔ Ø$(¤N°dÔ6NÑ$NˆÔ!Ý ¨
°FÔ4FÈ$Ì.Ñ4XÑYÔYˆŒØˆŒØ!$ˆÔØ"ˆŒå”i Ô 0°$´.À4Ä=Ñ2PÐW\Ð]Ñ]Ô]ˆŒÝ”i Ô 0°$Ô2JÈTÌ]Ñ2ZÐafÐgÑgÔgˆŒÝ”i Ô 0°$Ô2JÈTÌ]Ñ2ZÐafÐgÑgÔgˆŒÝ”i ¤°´Ñ >ÀÔ@PÐW\Ð]Ñ]Ô]ˆŒˆˆr@   N)F)	rA   rB   rC   rd   r$   r#   ÚintÚboolrR   ri   r@   r?   rp   rp   p   sZ   € € € € € ØGÐGð^ð ^Ð/Ð2BÑBð ^Èsð ^Ð_cð ^ð ^ð ^ð ^ð ^ð ^r@   rp   c                   ó²   ‡ — e Zd ZdZdedefˆ fd„Z	 	 ddej        dej        dej        dz  d	e	dz  d
e
e         deej        ej        dz  f         fd„Zˆ xZS )ÚDiaCrossAttentionrq   r(   rr   c                 ó²  •— t          ¦   «                              ¦   «          || _        || _        |j        | _        |j        | _        | j        j        | _        | j        j        | _	        | j        | j	        z  | _
        |j        | _        d| _        d| _        d| _        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¬¦  «        | _        d S )Nr!   rv   Frw   )r0   rR   r(   rr   rT   Úcross_hidden_sizeÚcross_num_attention_headsr{   Úcross_num_key_value_headsr|   r}   Úcross_head_dimru   r   r€   rs   r   r�   r‚   rƒ   r„   r…   ©r<   r(   rr   r>   s      €r?   rR   zDiaCrossAttention.__init__‰   s&  ø€ Ý‰Œ×ÒÑÔÐØˆŒØ"ˆŒØ!Ô-ˆÔØ!'Ô!9ˆÔØœÔ>ˆŒØ#'¤;Ô#HˆÔ Ø$(¤N°dÔ6NÑ$NˆÔ!ØÔ-ˆŒØˆŒØ!$ˆÔØˆŒå”i Ô 0°$´.À4Ä=Ñ2PÐW\Ð]Ñ]Ô]ˆŒÝ”i Ô 6¸Ô8PÐSWÔS`Ñ8`ÐglÐmÑmÔmˆŒÝ”i Ô 6¸Ô8PÐSWÔS`Ñ8`ÐglÐmÑmÔmˆŒÝ”i ¤°´Ñ >ÀÔ@PÐW\Ð]Ñ]Ô]ˆŒˆˆr@   NÚhidden_statesÚcross_attention_statesÚattention_maskÚpast_key_valuesÚkwargsrX   c                 ó  — |j         d d…         }g |¢d‘| j        ‘R }g |j         d d…         ¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }	|�|j                             | j        ¦  «        nd}
|�;|
r9|j        j	        | j                 j
        }|j        j	        | j                 j        }n­|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|�3|j                             ||| j        ¦  «        \  }}d|j        | j        <   t          j        | j        j        t&          ¦  «        } || |	|||fd| j        i|¤Ž\  }}|                     g |¢d‘R ¦  «                             ¦   «         }|                      |¦  «        }||fS )NrZ   r!   r   FTr   )r_   ru   r‚   r^   Ú	transposeÚ
is_updatedÚgetrr   Úcross_attention_cacheÚlayersÚkeysÚvaluesrƒ   r„   Úupdater   Úget_interfacer(   Ú_attn_implementationr   r   ÚreshapeÚ
contiguousr…   )r<   r�   r‘   r’   r“   r”   Úinput_shapeÚhidden_shapeÚcross_shapeÚquery_statesr—   Ú
key_statesÚvalue_statesÚattention_interfaceÚattn_outputÚattn_weightss                   r?   rc   zDiaCrossAttention.forwardœ   s.  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆØMÐ.Ô4°S°b°SÔ9ÐM¸2ÐM¸t¼}ÐMÐMˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆàGVÐGb�_Ô/×3Ò3°D´NÑCÔCÐCÐhmˆ
ØÐ&¨:Ð&à(Ô>ÔEÀdÄnÔUÔZˆJØ*Ô@ÔGÈÌÔWÔ^ˆLˆLàŸšÐ%;Ñ<Ô<×AÒAÀ+ÑNÔN×XÒXÐYZÐ\]Ñ^Ô^ˆJØŸ;š;Ð'=Ñ>Ô>×CÒCÀKÑPÔP×ZÒZÐ[\Ð^_Ñ`Ô`ˆLàÐ*à+:Ô+P×+WÒ+WØØ Ø”Nñ,ô ,Ñ(�
˜Lð >B�Ô*¨4¬>Ñ:å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð%
ð %
ð ”Lð%
ð ð%
ð %
Ñ!ˆ�\ð "×)Ò)Ð*<¨KÐ*<¸Ð*<Ð*<Ñ=Ô=×HÒHÑJÔJˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r@   ©NN)rA   rB   rC   rd   r#   r†   rR   r4   re   r   r   r   Útuplerc   rM   rN   s   @r?   r‰   r‰   †   sÞ   ø€ € € € € ØGÐGð^Ð/ð ^¸Cð ^ð ^ð ^ð ^ð ^ð ^ð. /3Ø6:ð1)ð 1)à”|ð1)ð !&¤ð1)ð œ tÑ+ð	1)ð
 -¨tÑ3ð1)ð Ð-Ô.ð1)ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð1)ð 1)ð 1)ð 1)ð 1)ð 1)ð 1)ð 1)r@   r‰   c                   óÄ   ‡ — e Zd Zdedefˆ fd„Z	 	 ddej        deej        ej        f         dz  dej        dz  de	e
         d	eej        ej        dz  f         f
d
„Zˆ xZS )r+   r(   rr   c                 ó  •— t          ¦   «                              ¦   «          t          |j        |j        ¬¦  «        | _        t          ||d¬¦  «        | _        t          |j        |j        ¬¦  «        | _        t          |¦  «        | _
        d S )N©ÚepsF©rs   )r0   rR   rl   rT   Únorm_epsÚpre_sa_normrp   Úself_attentionÚpost_sa_normrg   Úmlpr�   s      €r?   rR   zDiaEncoderLayer.__init__Ñ   su   ø€ Ý‰Œ×ÒÑÔÐÝ% fÔ&8¸f¼oÐNÑNÔNˆÔÝ.¨v°yÈEÐRÑRÔRˆÔÝ& vÔ'9¸v¼ÐOÑOÔOˆÔÝ˜&‘>”>ˆŒˆˆr@   Nr�   Úposition_embeddingsr’   r”   rX   c                 óÈ   — |}|                       |¦  «        } | j        |f||dœ|¤Ž\  }}||z   }|}|                      |¦  «        }|                      |¦  «        }	||	z   }|S )N)r·   r’   )r³   r´   rµ   r¶   )
r<   r�   r·   r’   r”   ÚresidualÚnormed_statesÚself_attn_outputÚ_Úmlp_outs
             r?   rc   zDiaEncoderLayer.forwardØ   s™   € ð !ˆØ×(Ò(¨Ñ7Ô7ˆØ1˜dÔ1Øð
à 3Ø)ð
ð 
ð ð	
ð 
ÑÐ˜!ð !Ð#3Ñ3ˆà ˆØ×)Ò)¨-Ñ8Ô8ˆØ—(’(˜=Ñ)Ô)ˆØ  7Ñ*ˆàÐr@   r«   )rA   rB   rC   r$   r†   rR   r4   re   r¬   r   r   rc   rM   rN   s   @r?   r+   r+   Ð   sÔ   ø€ € € € € ð"Ð/ð "¸Cð "ð "ð "ð "ð "ð "ð IMØ.2ð	ð à”|ðð # 5¤<°´Ð#=Ô>ÀÑEðð œ tÑ+ð	ð
 Ð-Ô.ðð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ðð ð ð ð ð ð ð r@   r+   c                   ó    ‡ — e Zd ZeedœZdefˆ fd„Zee	e
	 d
dej        dej        dz  dee         defd	„¦   «         ¦   «         ¦   «         Zˆ xZS )Ú
DiaEncoder)r�   Ú
attentionsr(   c                 ó¢  •‡— t          ¦   «                              ‰¦  «         ‰| _        t          j        ‰j        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j
        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t          ‰¬¦  «        | _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS ri   )r+   ©Ú.0rr   r(   s     €r?   ú
<listcomp>z'DiaEncoder.__init__.<locals>.<listcomp>ý   ó#   ø€ ÐaÐaÐa°I�_˜V YÑ/Ô/ÐaÐaÐar@   r¯   ©r(   )r0   rR   r(   r   rS   r8   rT   Ú	embeddingÚ
ModuleListÚrangeÚnum_hidden_layersrš   rl   r²   Únormrn   Ú
rotary_embÚ	post_init©r<   r(   r>   s    `€r?   rR   zDiaEncoder.__init__÷   s´   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒåœ fÔ&7¸Ô9KÑLÔLˆŒÝ”mØaÐaÐaÐaÅÀvÔG_ÑA`ÔA`ÐaÑaÔañ
ô 
ˆŒõ ˜vÔ1°v´ÐGÑGÔGˆŒ	Ý,°FÐ;Ñ;Ô;ˆŒà�ŠÑÔÐÐÐr@   Nr*   r’   r”   rX   c                 ó`  — |                       |¦  «        }t          j        |j        d         |j        ¬¦  «        d d d …f         }t          | j        ||¬¦  «        }|                      ||¬¦  «        }| j        D ]} ||f|||dœ|¤Ž}Œ|  	                    |¦  «        }t          |¬¦  «        S )NrZ   ©r]   )r(   Úinputs_embedsr’   ©Úposition_ids)r’   rÔ   r·   )Úlast_hidden_state)rÈ   r4   r5   r_   r]   r	   r(   rÍ   rš   rÌ   r   )r<   r*   r’   r”   r�   rÔ   r·   Úencoder_layers           r?   rc   zDiaEncoder.forward  sæ   € ð Ÿš yÑ1Ô1ˆõ
 ”| I¤O°BÔ$7À	Ô@PÐQÑQÔQÐRVÐXYÐXYÐXYÐRYÔZˆå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð
 #Ÿošo¨mÈ,˜oÑWÔWÐà!œ[ð 	ð 	ˆMØ)˜MØðà-Ø)Ø$7ð	ð ð
 ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆå°Ð?Ñ?Ô?Ð?r@   ©N)rA   rB   rC   r+   rp   Ú_can_record_outputsr$   rR   r   r   r   r4   re   r   r   r   rc   rM   rN   s   @r?   r¿   r¿   ñ   sÙ   ø€ € € € € à(Ø&ðð Ðð
Ð/ð ð ð ð ð ð ð  ØØð /3ð@ð @à”<ð@ð œ tÑ+ð@ð Ð+Ô,ð	@ð
 
ð@ð @ð @ñ „^ñ „_ñ  Ôð@ð @ð @ð @ð @r@   r¿   c                   óþ   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 	 ddej        deej        ej        f         dz  dej        dz  dej        dz  d	ej        dz  d
e	dz  deej        ej        dz  ej        dz  f         fd„Z
ˆ xZS )r,   r(   rr   c                 ó   •— t          ¦   «                              ¦   «          |j        | _        t	          ||d¬¦  «        | _        t          ||¦  «        | _        t          |j        |j	        ¬¦  «        | _
        t          |j        |j	        ¬¦  «        | _        t          |j        |j	        ¬¦  «        | _        t          |¦  «        | _        d S )NTr±   r¯   )r0   rR   rT   Ú	embed_dimrp   r´   r‰   Úcross_attentionrl   r²   r³   Úpre_ca_normÚpre_mlp_normrg   r¶   r�   s      €r?   rR   zDiaDecoderLayer.__init__*  s«   ø€ Ý‰Œ×ÒÑÔÐØÔ+ˆŒÝ.¨v°yÈDÐQÑQÔQˆÔÝ0°¸ÑCÔCˆÔÝ% fÔ&8¸f¼oÐNÑNÔNˆÔÝ% fÔ&8¸f¼oÐNÑNÔNˆÔÝ& vÔ'9¸v¼ÐOÑOÔOˆÔÝ˜&‘>”>ˆŒˆˆr@   Nr�   r·   r’   Úencoder_hidden_statesÚencoder_attention_maskr“   rX   c                 óf  — |}t          |t          ¦  «        r|j        }|}	|                      |¦  «        }
 | j        |
|||fi |¤Ž\  }}|	|z   }|}	|                      |¦  «        }
 | j        |
|f||dœ|¤Ž\  }}|	|z   }|}	|                      |¦  «        }
|                      |
¦  «        }|	|z   }|S )N)r’   r“   )	r2   r   Úself_attention_cacher³   r´   rÝ   rÜ   rÞ   r¶   )r<   r�   r·   r’   rß   rà   r“   r”   Úself_attn_cacher¹   rº   r»   r¼   Úcross_statesr½   s                  r?   rc   zDiaDecoderLayer.forward4  s  € ð *ˆÝ�oÕ':Ñ;Ô;ð 	CØ-ÔBˆOà ˆØ×(Ò(¨Ñ7Ô7ˆØ1˜dÔ1ØØØð ð
ð 
ð ð
ð 
ÑÐ˜!ð !Ð#3Ñ3ˆà ˆØ×(Ò(¨Ñ7Ô7ˆØ.˜$Ô.ØØ!ð
ð 2Ø+ð	
ð 
ð
 ð
ð 
‰ˆ�að ! <Ñ/ˆà ˆØ×)Ò)¨-Ñ8Ô8ˆØ—(’(˜=Ñ)Ô)ˆØ  7Ñ*ˆàÐr@   ©NNNNN)rA   rB   rC   r#   r†   rR   r4   re   r¬   r   rc   rM   rN   s   @r?   r,   r,   )  s  ø€ € € € € ð"Ð/ð "¸Cð "ð "ð "ð "ð "ð "ð IMØ.2Ø59Ø6:Ø6:ð+ð +à”|ð+ð # 5¤<°´Ð#=Ô>ÀÑEð+ð œ tÑ+ð	+ð
  %œ|¨dÑ2ð+ð !&¤¨tÑ 3ð+ð -¨tÑ3ð+ð 
ˆuŒ|˜Uœ\¨DÑ0°%´,ÀÑ2EÐEÔ	Fð+ð +ð +ð +ð +ð +ð +ð +r@   r,   c                   óú   ‡ — e Zd ZdZeeedœZdefˆ fd„Z	e
ee	 	 	 	 	 ddej        dej        dz  dej        dz  d	ej        dz  d
ej        dz  dedz  dee         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )Ú
DiaDecoderz-Transformer Decoder Stack using DenseGeneral.)r�   rÀ   Úcross_attentionsr(   c                 ó¤  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        t	          ‰¦  «        | _        t          j        ˆfd„t          ‰j	        ¦  «        D ¦   «         ¦  «        | _
        t          ‰j        ‰j        ¬¦  «        | _        t          ‰¬¦  «        | _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS ri   )r,   rÃ   s     €r?   rÅ   z'DiaDecoder.__init__.<locals>.<listcomp>q  rÆ   r@   r¯   rÇ   )r0   rR   r6   r8   r3   Ú
embeddingsr   rÉ   rÊ   rË   rš   rl   rT   r²   rÌ   rn   rÍ   rÎ   rÏ   s    `€r?   rR   zDiaDecoder.__init__k  s¸   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø"Ô/ˆÔØ Ô+ˆŒÝ2°6Ñ:Ô:ˆŒÝ”mØaÐaÐaÐaÅÀvÔG_ÑA`ÔA`ÐaÑaÔañ
ô 
ˆŒõ ˜vÔ1°v´ÐGÑGÔGˆŒ	Ý,°FÐ;Ñ;Ô;ˆŒà�ŠÑÔÐÐÐr@   Nr*   rÔ   r’   rß   rà   r“   r”   rX   c                 ót  — |                      ¦   «         dd…         \  }}	|�|                     ¦   «         nd}
|€3t          j        |	|j        ¬¦  «        |
z   }|                     d¦  «        }|                      |¦  «        }|€/t          ¦   «         s!|
|	z   }t          j        |||j        ¬¦  «        }t          | j
        |||¬¦  «        }t          | j
        |||¬¦  «        }|                      ||¬¦  «        }| j        D ]} |||||f|||dœ|¤Ž}Œ|                      |¦  «        }t          ||¬	¦  «        S )
a  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length, num_codebooks)`):
            The original `decoder_input_ids` in 3D shape to facilitate more efficient computations.

            [What are input IDs?](../glossary#input-ids)
        NrZ   r   rÑ   )r(   rÒ   r’   r“   )r(   rÒ   r’   rß   rÓ   )rà   r“   rÔ   )rÕ   r“   )ÚsizeÚget_seq_lengthr4   r5   r]   Ú	unsqueezerë   r   Úonesr
   r(   r	   rÍ   rš   rÌ   r   )r<   r*   rÔ   r’   rß   rà   r“   r”   Ú
batch_sizeÚ
seq_lengthÚpast_key_values_lengthr�   Úmask_seq_lengthr·   Úlayers                  r?   rc   zDiaDecoder.forwardx  sœ  € ð( "+§¢Ñ!1Ô!1°#°2°#Ô!6Ñˆ
�JØETÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐàÐÝ œ<¨
¸9Ô;KÐLÑLÔLÐOeÑeˆLØ'×1Ò1°!Ñ4Ô4ˆLð Ÿš¨	Ñ2Ô2ˆàÐ!Õ*BÑ*DÔ*DÐ!à4°zÑAˆOÝ"œZ¨
°OÈIÔL\Ð]Ñ]Ô]ˆNå+Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆõ ";Ø”;Ø'Ø1Ø"7ð	"
ñ "
ô "
Ðð #Ÿošo¨mÈ,˜oÑWÔWÐà”[ð 	ð 	ˆEØ!˜EØð $ØØ%ðð (>Ø /Ø)ðð ð ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆå8Ø+Ø+ð
ñ 
ô 
ð 	
r@   rå   )rA   rB   rC   rd   r,   rp   r‰   rØ   r#   rR   r   r   r   r4   re   Ú
LongTensorÚFloatTensorr   r   r   r   r¬   rc   rM   rN   s   @r?   rç   rç   b  s>  ø€ € € € € Ø7Ð7ð )Ø&Ø-ðð ÐðÐ/ð ð ð ð ð ð ð  ØØð 15Ø.2Ø:>Ø:>Ø6:ðA
ð A
à”<ðA
ð Ô&¨Ñ-ðA
ð œ tÑ+ð	A
ð
  %Ô0°4Ñ7ðA
ð !&Ô 0°4Ñ 7ðA
ð -¨tÑ3ðA
ð Ð+Ô,ðA
ð 
3°UÑ	:ðA
ð A
ð A
ñ „^ñ „_ñ  ÔðA
ð A
ð A
ð A
ð A
r@   rç   z[
    The bare Dia model outputting raw hidden-states without any specific head on top.
    )Úcustom_introc                   óð   ‡ — e Zd Zdefˆ fd„Zee	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	e	e
z  dz  d
edz  dedz  de
ez  fd„¦   «         ¦   «         Zˆ xZS )ÚDiaModelr(   c                 óä   •— t          ¦   «                              |¦  «         || _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        |  	                    ¦   «          d S r×   )
r0   rR   r(   r¿   Úencoder_configÚencoderrç   Údecoder_configÚdecoderrÎ   rÏ   s     €r?   rR   zDiaModel.__init__Å  s\   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ! &Ô"7Ñ8Ô8ˆŒÝ! &Ô"7Ñ8Ô8ˆŒØ�ŠÑÔÐÐÐr@   Nr*   r’   Údecoder_input_idsÚdecoder_position_idsÚdecoder_attention_maskÚencoder_outputsr“   Ú	use_cacherX   c	                 ó®  — |€|€t          d¦  «        ‚| j        r%| j        r|rt                               d¦  «         d}|r8|€6t          t          | j        ¬¦  «        t          | j        ¬¦  «        ¦  «        }|€ | j        d||dœ|	¤Ž}nct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        d	k    r|d	         nd¬
¦  «        }|d         j        d         d| j        j        j        }}}
|€.t          j        |
d|f| j        j        j        | j        ¬¦  «        }|j        d	k    r+|                     |
||¦  «                             dd	¦  «        } | j        d||||d         |||dœ|	¤Ž}t/          |j        |j        |j        |j        |j        |d         |j        |j        ¬¦  «        S )a\  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size * num_codebooks, target_sequence_length)
        or (batch_size, target_sequence_length, num_codebooks)`, *optional*):
            1. (batch_size * num_codebooks, target_sequence_length): corresponds to the general use case where
            the audio input codebooks are flattened into the batch dimension. This also aligns with the flat-
            tened audio logits which are used to calculate the loss.

            2. (batch_size, sequence_length, num_codebooks): corresponds to the internally used shape of
            Dia to calculate embeddings and subsequent steps more efficiently.

            If no `decoder_input_ids` are provided, it will create a tensor of `bos_token_id` with shape
            `(batch_size, 1, num_codebooks)`. Indices can be obtained using the [`DiaProcessor`]. See
            [`DiaProcessor.__call__`] for more details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)
        decoder_position_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`):
            Indices of positions of each input sequence tokens in the position embeddings.
            Used to calculate the position embeddings up to `config.decoder_config.max_position_embeddings`.

            [What are position IDs?](../glossary#position-ids)
        NzXYou should either provide text ids or the cached text encodings. Neither has been found.zZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...FrÇ   )r*   r’   r   r!   r   )rÕ   r�   rÀ   rZ   )rí   Ú
fill_valuer]   )r*   rÔ   r’   rß   rà   r“   r  )rÕ   r“   Údecoder_hidden_statesÚdecoder_attentionsrè   Úencoder_last_hidden_staterß   Úencoder_attentionsri   )Ú
ValueErrorÚis_gradient_checkpointingÚtrainingÚloggerÚwarning_oncer   r   r(   rý   r2   r   Úlenr_   rþ   r6   r4   ÚfullÚbos_token_idr]   Úndimr    r–   rÿ   r   rÕ   r“   r�   rÀ   rè   )r<   r*   r’   r   r  r  r  r“   r  r”   ÚbszÚseq_lenÚchannelsÚdecoder_outputss                 r?   rc   zDiaModel.forwardÌ  sd  € ðH Ð Ð!8ÝØjñô ð ð Ô)ð 	"¨d¬mð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àð 	v˜Ð0Ý1µ,ÀdÄkÐ2RÑ2RÔ2RÕT`ÐhlÔhsÐTtÑTtÔTtÑuÔuˆOàÐ"Ø*˜dœlð Ø#Ø-ðð ð ðð ˆOˆOõ ˜O­_Ñ=Ô=ð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð #2°!Ô"4Ô":¸1Ô"=¸rÀ4Ä;ÔC]ÔCj�hˆWˆØÐ$Ý %¤
Ø˜1˜hÐ'°D´KÔ4NÔ4[ÐdhÔdoð!ñ !ô !Ðð Ô! QÒ&Ð&Ø 1× 9Ò 9¸#¸xÈÑ QÔ Q× [Ò [Ð\]Ð_`Ñ aÔ aÐà&˜$œ,ð 	
Ø'Ø-Ø1Ø"1°!Ô"4Ø#1Ø+Øð	
ð 	
ð ð	
ð 	
ˆõ "Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5°aÔ&8Ø"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r@   )NNNNNNNN)rA   rB   rC   r"   rR   r   r   r4   rö   r   r¬   r   r‡   r   rc   rM   rN   s   @r?   rú   rú   ¿  s9  ø€ € € € € ð˜yð ð ð ð ð ð ð Øð .2Ø26Ø59Ø8<Ø:>Ø:>Ø6:Ø!%ð]
ð ]
àÔ# dÑ*ð]
ð Ô(¨4Ñ/ð]
ð !Ô+¨dÑ2ð	]
ð
 $Ô.°Ñ5ð]
ð !&Ô 0°4Ñ 7ð]
ð )¨5Ñ0°4Ñ7ð]
ð -¨tÑ3ð]
ð ˜$‘;ð]
ð 
Ð#Ñ	#ð]
ð ]
ð ]
ñ Ôñ „^ð]
ð ]
ð ]
ð ]
ð ]
r@   rú   zl
    The Dia model consisting of a (byte) text encoder and audio decoder with a prediction head on top.
    c                   ó  ‡ — e Zd ZdZdZdefˆ fd„Zee	 	 	 	 	 	 	 	 	 dde	j
        dz  de	j
        dz  de	j
        dz  d	e	j
        dz  d
e	j
        dz  deez  dz  dedz  dedz  de	j
        dz  deez  fd„¦   «         ¦   «         Zˆ xZS )ÚDiaForConditionalGenerationr)   )Úaudior(   c                 ó`  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        |j        j        | _        |j        j        | _        t          j	        |j        j
        | j        | j        z  d¬¦  «        | _        d| _        |                      ¦   «          d S )NFrw   ÚForMaskedLM)r0   rR   r(   rú   r)   rþ   r6   r8   r   r�   rT   Úlogits_denseÚ	loss_typerÎ   rÏ   s     €r?   rR   z$DiaForConditionalGeneration.__init__7  sž   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ˜fÑ%Ô%ˆŒ
à"Ô1Ô>ˆÔØ Ô/Ô:ˆŒÝœIØÔ!Ô-°Ô0AÀDÄOÑ0SÐ[`ð
ñ 
ô 
ˆÔð 'ˆŒð 	�ŠÑÔÐÐÐr@   Nr*   r’   r   r  r  r  r“   r  ÚlabelsrX   c
                 óþ  —  | j         d	||||||||dœ|
¤Ž}|d         }|j        d         }|                      |¦  «                             |d| j        | j        f¦  «                             dd¦  «                             ¦   «                              || j        z  d| j        ¦  «        }d}|	� | j        d	||	| j        dœ|
¤Ž}t          |||j
        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )
a   
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size * num_codebooks, target_sequence_length)
        or (batch_size, target_sequence_length, num_codebooks)`, *optional*):
            1. (batch_size * num_codebooks, target_sequence_length): corresponds to the general use case where
            the audio input codebooks are flattened into the batch dimension. This also aligns with the flat-
            tened audio logits which are used to calculate the loss.

            2. (batch_size, sequence_length, num_codebooks): corresponds to the internally used shape of
            Dia to calculate embeddings and subsequent steps more efficiently.

            If no `decoder_input_ids` are provided, it will create a tensor of `bos_token_id` with shape
            `(batch_size, 1, num_codebooks)`. Indices can be obtained using the [`DiaProcessor`]. See
            [`DiaProcessor.__call__`] for more details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)
        decoder_position_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`):
            Indices of positions of each input sequence tokens in the position embeddings.
            Used to calculate the position embeddings up to `config.decoder_config.max_position_embeddings`.

            [What are position IDs?](../glossary#position-ids)
        labels (`torch.LongTensor` of shape `(batch_size * num_codebooks,)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in
            `[0, ..., config.decoder_config.vocab_size - 1]` or -100. Tokens with indices set to `-100`
            are ignored (masked).
        )r*   r’   r   r  r  r  r“   r  r   rZ   r!   r   N)Úlogitsr  r8   )	Úlossr!  r“   r  r  rè   r	  rß   r
  ri   )r)   r_   r  r^   r6   r8   r–   r¡   Úloss_functionr   r“   r  r  rè   r	  rß   r
  )r<   r*   r’   r   r  r  r  r“   r  r  r”   ÚoutputsrÕ   rñ   Úaudio_logitsr"  s                   r?   rc   z#DiaForConditionalGeneration.forwardF  s<  € ðR �$”*ð 

ØØ)Ø/Ø!5Ø#9Ø+Ø+Øð

ð 

ð ð

ð 

ˆð $ AœJÐØ&Ô,¨QÔ/ˆ
ð ×ÒÐ/Ñ0Ô0ßŠT�:˜r 4Ô#4°d´oÐFÑGÔGßŠY�q˜!‰_Œ_ßŠZ‰\Œ\ßŠT�*˜tÔ0Ñ0°"°d´oÑFÔFð 	ð ˆØÐØ%�4Ô%Ðo¨\À&ÐUYÔUdÐoÐoÐhnÐoÐoˆDåØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r@   )	NNNNNNNNN)rA   rB   rC   rE   Úoutput_modalitiesr"   rR   r   r   r4   rö   r   r¬   r   r‡   r   rc   rM   rN   s   @r?   r  r  .  s\  ø€ € € € € ð  ÐØ"Ðð˜yð ð ð ð ð ð ð Øð .2Ø26Ø59Ø8<Ø:>Ø:>Ø6:Ø!%Ø*.ðL
ð L
àÔ# dÑ*ðL
ð Ô(¨4Ñ/ðL
ð !Ô+¨dÑ2ð	L
ð
 $Ô.°Ñ5ðL
ð !&Ô 0°4Ñ 7ðL
ð )¨5Ñ0°4Ñ7ðL
ð -¨tÑ3ðL
ð ˜$‘;ðL
ð Ô  4Ñ'ðL
ð 
�Ñ	 ðL
ð L
ð L
ñ Ôñ „^ðL
ð L
ð L
ð L
ð L
r@   r  )rú   r'   r  )Erd   Úcollections.abcr   r4   r   Ú r   r9   Úcache_utilsr   r   Úmasking_utilsr	   r
   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úllama.modeling_llamar   r   r   r   Úphi3.modeling_phi3r    Úconfiguration_diar"   r#   r$   Úgeneration_diar%   Ú
get_loggerrA   r  r'   ry   r3   rg   rl   rn   rp   r‰   r+   r¿   r,   rç   rú   r  Ú__all__ri   r@   r?   ú<module>r9     sº  ðð Ð à $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ð ð0ð 0ð 0ð 0ð 0˜ñ 0ô 0ñ „ð0ð$!ð !ð !ð !ð !˜rœyñ !ô !ð !ð<	ð 	ð 	ð 	ð 	ˆWñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð-ñ 	ô 	ð 	ð^ð ^ð ^ð ^ð ^�~ñ ^ô ^ð ^ð,G)ð G)ð G)ð G)ð G)˜œ	ñ G)ô G)ð G)ðTð ð ð ð Ð0ñ ô ð ðB5@ð 5@ð 5@ð 5@ð 5@Ð#ñ 5@ô 5@ð 5@ðp6ð 6ð 6ð 6ð 6Ð0ñ 6ô 6ð 6ðrZ
ð Z
ð Z
ð Z
ð Z
Ð#ñ Z
ô Z
ð Z
ðz €ððñ ô ð
g
ð g
ð g
ð g
ð g
Ð!ñ g
ô g
ñô ð
g
ðT €ððñ ô ð
a
ð a
ð a
ð a
ð a
Ð"4Ð6Hñ a
ô a
ñô ð
a
ðH LÐ
KÐ
K€€€r@   