Ë
    ÛÓ^jT  ã                   óê   — d dl mZ d dlmZmZ d dl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 ddlmZ ddlmZ  ej@                  e!«      Z" G d„ de«      Z#y)é    )ÚCallable)ÚAnyÚOptionalNé   )Ú(DiaClassifierFreeGuidanceLogitsProcessorÚ"DiaEOSChannelFilterLogitsProcessorÚ!DiaEOSDelayPatternLogitsProcessorÚLogitsProcessorListÚTemperatureLogitsWarper)ÚStoppingCriteriaList)ÚBaseStreamer)ÚGenerateOutputÚGenerationConfigÚGenerationMixinÚGenerationMode)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)ÚPreTrainedModel)Úloggingc                   ó<  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 d%dededz  dej                  dz  deeej                  ge
e   f   dz  dedz  dedz  deeef   dz  d	ej                  dz  d
ej                  dz  defˆ fd„Zdedz  dedeeef   fˆ fd„Z	 	 	 d&dej                  dz  dej                  dz  deeej                  f   dz  deej                  edz  eeej                  f   f   fˆ fd„Z	 d'dededeeej                  f   dej                  dej&                  dz  deej                  eeej                  f   f   fd„Z	 	 	 d(dedz  fˆ fd„Zedej                  dedej                  dz  dej                  fd„«       Z	 	 	 	 	 	 	 	 	 	 	 d)dej                  dz  dedz  dedz  dedz  deeej                  ge
e   f   dz  dedz  ded   d ed!   d	ej                  dz  d
ej                  dz  d"edz  fd#„Z ej8                  «       	 	 	 	 	 	 	 	 	 	 	 d)dej                  dz  dedz  dedz  dedz  deeej                  ge
e   f   dz  dedz  ded   d ed!   d	ej                  dz  d
ej                  dz  d"edz  deej                  z  fd$„«       Zˆ xZS )*ÚDiaGenerationMixinNÚgeneration_configÚinput_ids_seq_lengthÚencoder_input_idsÚprefix_allowed_tokens_fnÚlogits_processorÚdeviceÚmodel_kwargsÚnegative_prompt_idsÚnegative_prompt_attention_maskÚreturnc
                 ó¸  •— |j                   }
|j                  }d |_         d |_        t        «       }|�|dk7  r|j                  t	        |«      «       |j                  t        t        | j                  j                  «      | j                  j                  j                  ¬«      «       t        ‰| �1  |||d |||||	¬«	      }|
�.|
dk7  r)t        |
|j                  ¬«      }|j                  d|«       |j                  t!        | j                  j                  | j                  j                  j                  |j"                  |¬«      «       |
|_         ||_        |S )Nç      ð?)Únum_channelsÚeos_token_id©	r   r   r   r   r   r   r   r   r    é   )Úguidance_scaleÚguidance_top_kr   )Údelay_patternr%   Úmax_generation_lenr   )r(   Útemperaturer
   Úappendr   r   ÚlenÚconfigr*   Údecoder_configr%   ÚsuperÚ_get_logits_processorr   Útop_kÚinsertr	   Ú
max_length)Úselfr   r   r   r   r   r   r   r   r    Úoriginal_guidance_scaleÚoriginal_temperatureÚcustom_processorsÚmerged_processorsÚcfg_processorÚ	__class__s                  €úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/dia/generation_dia.pyr2   z(DiaGenerationMixin._get_logits_processor,   s_  ø€ ð #4×"BÑ"BÐØ0×<Ñ<ÐØ+/ÐÔ(Ø(,ÐÔ%ô 0Ó1ÐàÐ+Ð0DÈÒ0KØ×$Ñ$Ô%<Ð=QÓ%RÔSà× Ñ Ü.Ü  §¡×!:Ñ!:Ó;Ø!Ÿ[™[×7Ñ7×DÑDôô	
ô "™GÑ9Ø/Ø!5Ø/Ø%)Ø.ØØ%Ø 3Ø+Ið :ó 

Ðð #Ð.Ð3JÈaÒ3OÜDØ6Ø0×6Ñ6ôˆMð ×$Ñ$ Q¨Ô6à× Ñ Ü-Ø"Ÿk™k×7Ñ7Ø!Ÿ[™[×7Ñ7×DÑDØ#4×#?Ñ#?Øô	ô	
ð ,CÐÔ(Ø(<ÐÔ%à Ð ó    Úkwargsc                 óh  •— t        ‰| �  |fi |¤Ž\  }}|j                  �9|j                  dk  r*t        j	                  d|j                  › d�«       d|_        |xj
                  t        | j                  j                  «      z  c_        |j                  d uxr |j                  dk7  | _
        ||fS )Nr#   zAtemperature < 1.0 is not supported for Dia; clamping to 1.0 (got ú)r'   )r1   Ú_prepare_generation_configr,   ÚloggerÚwarning_oncer5   Úmaxr/   r*   r(   Ú	_uses_cfg)r6   r   r?   r   r<   s       €r=   rB   z-DiaGenerationMixin._prepare_generation_configo   s½   ø€ ô +0©'Ñ*LÐM^Ñ*iÐbhÑ*iÑ'Ð˜<à×(Ñ(Ð4Ð9J×9VÑ9VÐY\Ò9\Ü×ÑØSÐTe×TqÑTqÐSrÐrsÐtôð -0ÐÔ)ð 	×$Ò$¬¨D¯K©K×,EÑ,EÓ(FÑFÕ$ð +×9Ñ9ÀÐEÒoÐJ[×JjÑJjÐnoÑJoˆŒà  ,Ð.Ð.r>   ÚinputsÚbos_token_idc                 ó  •— t         ‰| �  |||¬«      \  }}}| j                  rXt        j                  |«      }t        j
                  ||gd¬«      }|j                  dd «      �|d   j                  dd«      |d<   |||fS )N)rG   rH   r   r   ©ÚdimÚattention_maské   r'   )r1   Ú_prepare_model_inputsrF   ÚtorchÚ
zeros_likeÚcatÚgetÚrepeat)r6   rG   rH   r   Ú
input_nameÚunconditioned_inputsr<   s         €r=   rN   z(DiaGenerationMixin._prepare_model_inputs‚   s›   ø€ ô ,1©7Ñ+HØØ%Ø%ð ,Ió ,
Ñ(ˆ�
˜Lð �>Š>Ü#(×#3Ñ#3°FÓ#;Ð Ü—Y‘Y Ð(<Ð=À1ÔEˆFà×ÑÐ 0°$Ó7ÐCØ1=Ð>NÑ1O×1VÑ1VÐWXÐZ[Ó1\�Ð-Ñ.à�z <Ð/Ð/r>   Ú
batch_sizeÚmodel_input_nameÚdecoder_start_token_idc                 óL  — dx}}|�d|v r|j                  d«      }|�d|v r|j                  d«      }|�|€´t        j                  d|du› d|du› d�«       | j                  j                  j
                  }| j                  r|dz  n|}	|€*t        j                  |	d|f|t        j                  |¬	«      }t        j                  |	|j                  d   ft        j                  |¬
«      }|j                  «       }
|j                  d   |dd…dd…df   | j                  j                  j                  k(  j                  d¬«      j                  «       z
  }|
dd…d|…f   j                  dd«      j                  «       }|dd…d|…f   j                  «       }||d<   |
|d<   ||fS )zGPrepares `decoder_input_ids` for generation with encoder-decoder modelsNÚdecoder_input_idsÚdecoder_attention_maskz[In order to generate with Dia, we need the processed audio input: Got `decoder_input_ids`: z" and got `decoder_attention_mask`=z]. This can be achieved via the [`DiaProcessor`] but now defaulting to non-delayed generation.rM   r'   )Údtyper   )Úsizer\   r   r   éÿÿÿÿrJ   Údecoder_delay_mask)ÚpoprC   rD   r/   r0   r$   rF   rO   ÚfullÚlongÚonesÚshapeÚpad_token_idÚsumrE   Ú	transpose)r6   rV   rW   r   rX   r   rZ   r[   r$   Úreal_batch_sizeÚ
delay_maskÚvalid_input_sizes               r=   Ú)_prepare_decoder_input_ids_for_generationz<DiaGenerationMixin._prepare_decoder_input_ids_for_generation˜   só  € ð 6:Ð9ÐÐ2ØÐ#Ð(;¸|Ñ(KØ ,× 0Ñ 0Ð1DÓ EÐØÐ#Ð(@ÀLÑ(PØ%1×%5Ñ%5Ð6NÓ%OÐ"ð Ð$Ð(>Ð(FÜ×ÑðØ%¨TÐ1Ð2Ð2TÐUkÐswÐUwÐTxð yoðpôð  Ÿ;™;×5Ñ5×BÑBˆLØ15·²˜j¨AšoÀZˆOà Ð(Ü$)§J¡JØ$ a¨Ð6Ð8NÔV[×V`ÑV`Ðioô%Ð!ô &+§Z¡ZØ%Ð'8×'>Ñ'>¸qÑ'AÐBÌ%Ï*É*Ð]cô&Ð"ð
 '×+Ñ+Ó-ˆ
à×#Ñ# AÑ&Ø ¢¢A q Ñ)¨T¯[©[×-GÑ-G×-TÑ-TÑT×YÑYÐ^`ÐYÓa×eÑeÓgñhð 	ð '¢qÐ*;Ð+;Ð*;Ð';Ñ<×FÑFÀqÈ!ÓL×QÑQÓSÐØ!7ºÐ;LÐ<LÐ;LÐ8LÑ!M×!RÑ!RÓ!TÐð 2HˆÐ-Ñ.Ø-7ˆÐ)Ñ*à  ,Ð.Ð.r>   Úis_first_iterationc                 óÄ  •— | j                   r|d   j                  d   dz  n|d   j                  d   }|j                  || j                  j                  j
                  d«      j                  dd«      }t        ‰
| �   |fd|i|¤Ž}| j                  || j                  j                  j                  |«      |d<   |j                  dd«      r|s|d   d d …dd d …f   d d …d d d …f   |d<   |d   j                  «       |d<   | j                   rRd	D ]M  }|j                  |d «      €Œt        dgdg||   j                  dz
  z  z   «      }	 ||   j                  |	Ž ||<   ŒO |S )
Nr   rM   r^   r'   Úencoder_outputsrZ   Ú	use_cacheF)rZ   r[   Údecoder_position_ids)rF   rd   Úreshaper/   r0   r$   rg   r1   Úprepare_inputs_for_generationÚapply_delay_maskre   rR   Ú
contiguousÚtupleÚndimrS   )r6   Ú	input_idsrn   r_   rl   r?   rV   Úmodel_inputsÚkeyÚrepeat_patternr<   s             €r=   rr   z0DiaGenerationMixin.prepare_inputs_for_generationË   s”  ø€ ð :>¿º�_ QÑ'×-Ñ-¨aÑ0°AÒ5È_Ð]^ÑM_×MeÑMeÐfgÑMhˆ
Ø×%Ñ% j°$·+±+×2LÑ2L×2YÑ2YÐ[]Ó^×hÑhÐijÐlmÓnˆ	ô ‘wÑ<¸YÑrÐXgÐrÐkqÑrˆð -1×,AÑ,AØ�t—{‘{×1Ñ1×>Ñ>Ð@Ró-
ˆÐ(Ñ)ð
 ×Ñ˜K¨Ô/Ñ8JØ0<Ð=PÑ0QÒRSÐUWÒYZÐRZÑ0[Ò\]Ð_cÒefÐ\fÑ0gˆLÐ,Ñ-ð -9Ð9LÑ,M×,XÑ,XÓ,ZˆÐ(Ñ)ð �>Š>Ø^ò R�Ø×#Ñ# C¨Ó.Ñ:ä%*¨A¨3°!°¸ÀSÑ8I×8NÑ8NÐQRÑ8RÑ1SÑ+SÓ%T�NØ(@¨°SÑ(9×(@Ñ(@À.Ð(Q�L Ò%ð	Rð Ðr>   rw   Úpad_idri   c                 óÞ   — |€| S t        | j                  d   |j                  d   «      }|d d …d |…d d …f   }| d d …d |…d d …f   }t        j                  ||k(  ||«      | d d …d |…d d …f<   | S )Nr'   )Úminrd   rO   Úwhere)rw   r{   ri   Úmask_lenÚ
valid_maskÚvalid_inputs         r=   rs   z#DiaGenerationMixin.apply_delay_maskñ   s…   € àÐØÐä�y—‘ qÑ)¨:×+;Ñ+;¸AÑ+>Ó?ˆØ¢ 9 H 9ªa Ñ0ˆ
Ø¢ 9 H 9ªa Ñ0ˆô &+§[¡[°¸vÑ1EÀ{ÐT^Ó%_ˆ	’!�Y�h�Y¢�/Ñ"àÐr>   Ústopping_criteriaÚsynced_gpusÚassistant_modelr   Ústreamerr   Úcustom_generatec                 ó  — | j                  |||||«      } | j                  |fi |¤Ž\  }}|j                  |«      }|t        j                  t        j
                  fvrt        d«      ‚| j                  |j                  «       «       | j                  |||«       |€0t        «       xs t        | «      xr t        j                  «       dkD  }|�|n	t        «       }|�|n	t        «       }|j!                  dd «      d u}| j#                  ||j$                  |«      \  }}}|j&                  d   }|j(                  }| j+                  |||¬«       d|vr| j-                  ||||«      }| j/                  ||||j0                  |j(                  ¬«      \  }}|j2                  r!| j5                  ||j!                  d«      «      }|�|j7                  |j9                  «       «       |j&                  d	   }|j!                  d
«      d u xr |j:                  d u}|j!                  d«      d u xr |j<                  d u}| j?                  ||||||¬«      }| jA                  «       r	d|vrd|d<   | jC                  |||«       |j:                  dz
  }|j&                  d   |k7  r-|dk(  r(| jD                  jF                  s||j&                  d   z  }| jI                  |||||«       | jK                  ||||||j(                  ||	|
¬«	      }| jM                  |||j!                  d«      ¬«      }|jN                  |d<   |jQ                  d	|j&                  d	   «      }|jR                  dkD  rt        d«      ‚ | jT                  |f|||dœ|¤|¤ŽS )NzŒGot incompatible mode for generation, should be one of greedy or sampling. Ensure that beam search is de-activated by setting `num_beams=1`.r'   rL   r   )r   rn   )rV   rW   r   rX   r   Ú	tokenizerr^   r5   Ú
min_length)r   Úhas_default_max_lengthÚhas_default_min_lengthrW   Úinputs_tensorÚinput_ids_lengthÚlogits_to_keepÚinputs_embedsr&   )r   r‚   rˆ   ro   z2`num_return_sequences>1` is incompatible with Dia.)r   r‚   r   )+Ú_extract_generation_mode_kwargsrB   Úget_generation_moder   ÚSAMPLEÚGREEDY_SEARCHÚ
ValueErrorÚ_validate_model_kwargsÚcopyÚ_validate_generation_moder   r   ÚdistÚget_world_sizer
   r   rR   rN   rH   rd   r   Ú_prepare_special_tokensÚ._prepare_encoder_decoder_kwargs_for_generationrk   Ú_decoder_start_token_tensorÚtoken_healingÚheal_tokensÚputÚcpur5   r‰   Ú_prepare_generated_lengthÚ_supports_logits_to_keepÚ_validate_generated_lengthr/   Úis_encoder_decoderÚ_prepare_cache_for_generationr2   Ú_get_stopping_criteriaro   rq   Únum_return_sequencesÚ_sample)r6   rG   r   r   r‚   r   rƒ   r„   r…   r   r    r†   r?   Úgeneration_mode_kwargsr   Úgeneration_modeÚkwargs_has_attention_maskrŒ   rW   rV   r   rw   r�   rŠ   r‹   Úmax_cache_lengthÚprepared_logits_processorÚprepared_stopping_criterias                               r=   Ú_main_generate_loopz&DiaGenerationMixin._main_generate_loopÿ   s+  € ð" "&×!EÑ!EØØØØØó"
Ðð +J¨$×*IÑ*IÐJ[Ñ*fÐ_eÑ*fÑ'Ð˜<Ø+×?Ñ?ÀÓPˆà¤>×#8Ñ#8¼.×:VÑ:VÐ"WÑWÜðTóð ð
 	×#Ñ# L×$5Ñ$5Ó$7Ô8Ø×&Ñ& Ð8IÐKaÔbð ÐÜ5Ó7ÒWÔ;QÐRVÓ;WÒvÔ]a×]pÑ]pÓ]rÐuvÑ]vˆKà/?Ð/KÑ+ÔQdÓQfÐØ1BÐ1NÑ-ÔThÓTjÐð %1×$4Ñ$4Ð5EÀtÓ$LÐTXÐ$XÐ!Ø8<×8RÑ8RØÐ%×2Ñ2°Ló9
Ñ5ˆÐ'¨ð #×(Ñ(¨Ñ+ˆ
à×%Ñ%ˆØ×$Ñ$Ð%6Ð8QÐZ`Ð$Ôað  LÑ0à×NÑNØ˜|Ð-=Ð?PóˆLð
 #'×"PÑ"PØ!Ø-Ø%Ø#4×#PÑ#PØ ×'Ñ'ð #Qó #
Ñˆ	�<ð ×*Ò*Ø×(Ñ(¨Ð4J×4NÑ4NÈ{Ó4[Ó\ˆIàÐØ�L‰L˜Ÿ™›Ô)ð %Ÿ?™?¨2Ñ.ÐØ!'§¡¨LÓ!9¸TÐ!AÒ!nÐFW×FbÑFbÐjnÐFnÐØ!'§¡¨LÓ!9¸TÐ!AÒ!nÐFW×FbÑFbÐjnÐFnÐØ ×:Ñ:Ø/Ø#9Ø#9Ø-Ø'Ø-ð ;ó 
Ðð ×(Ñ(Ô*Ð/?À|Ñ/SØ-.ˆLÐ)Ñ*à×'Ñ'Ð(9Ð;KÐMcÔdð -×7Ñ7¸!Ñ;Ðà×Ñ Ñ"Ð&6Ò6Ø  OÒ3Ø—K‘K×2Ò2à × 3Ñ 3°AÑ 6Ñ6ÐØ×*Ñ*Ø˜|¨_¸jÐJZô	
ð
 %)×$>Ñ$>Ø/Ø!1Ø+Ø%=Ø-Ø ×'Ñ'Ø%Ø 3Ø+Ið %?ó 
%
Ð!ð &*×%@Ñ%@Ø/Ø/Ø,×0Ñ0°Ó=ð &Aó &
Ð"ð %6×$?Ñ$?ˆ�[Ñ!ð ×%Ñ% b¨)¯/©/¸"Ñ*=Ó>ˆ	ð ×1Ñ1°AÒ5ÜÐQÓRÐRð ˆt�|‰|Øð
à6Ø8Ø/ñ	
ð
 %ð
ð ñ
ð 	
r>   c                 ó  — |j                  d«      }|�|j                  «       } | j                  d|||||||||	|
|dœ|¤Ž}t        |t        j
                  «       }|r|j                  }n|}| j                  j                  j                  }|j                  d   |z  }|j                  ||d«      j                  dd«      }| j                  || j                  j                  j                  |«      }|r	||_        |S |}|S )NrZ   )rG   r   r   r‚   r   rƒ   r„   r…   r   r    r†   r   r^   r'   rM   © )rR   Úcloner¯   Ú
isinstancerO   ÚTensorÚ	sequencesr/   r0   r$   rd   rq   rg   rs   re   )r6   rG   r   r   r‚   r   rƒ   r„   r…   r   r    r†   r?   ri   ÚoutputÚreturn_dict_in_generateÚoutput_sequencesr$   Úbszs                      r=   ÚgeneratezDiaGenerationMixin.generate–  s+  € ð" —Z‘ZÐ 3Ó4ˆ
ØÐ!Ø#×)Ñ)Ó+ˆJà)�×)Ñ)ð 
ØØ/Ø-Ø/Ø%=Ø#Ø+ØØ 3Ø+IØ+ñ
ð ñ
ˆô '1°¼¿¹Ó&FÐ"FÐá"Ø%×/Ñ/Ñà%Ðð —{‘{×1Ñ1×>Ñ>ˆØ×$Ñ$ QÑ'¨<Ñ7ˆØ+×3Ñ3°C¸ÀrÓJ×TÑTÐUVÐXYÓZÐð  ×0Ñ0Ð1AÀ4Ç;Á;×C]ÑC]×CjÑCjÐlvÓwÐá"Ø/ˆFÔð ˆð &ˆFàˆr>   )NNNNNNNN)NNN)N)NNF)NNNNNNNNNNN) Ú__name__Ú
__module__Ú__qualname__rF   r   ÚintrO   Ú
LongTensorr   r´   Úlistr
   ÚstrÚdictr   r2   ru   rB   rN   r   rk   Úboolrr   Ústaticmethodrs   r   r   r¯   Úno_gradr   rº   Ú__classcell__)r<   s   @r=   r   r   (   s‡  ø„ à€Ið
 ,0Ø59ØTXØ7;Ø!Ø.2Ø37Ø>BñA!à+ðA!ð " D™jðA!ð !×+Ñ+¨dÑ2ð	A!ð
 #+¨C°·±Ð+>ÀÀSÁ	Ð+IÑ"JÈTÑ"QðA!ð .°Ñ4ðA!ð �d‘
ðA!ð ˜3 ˜8‘n tÑ+ðA!ð #Ÿ\™\¨DÑ0ðA!ð ).¯©°tÑ(;ðA!ð 
õA!ðF/Ø!1°DÑ!8ð/ØDGð/à	Ð Ð%Ñ	&õ/ð* '+Ø,0Ø7;ñ	0à—‘˜tÑ#ð0ð —l‘l TÑ)ð0ð ˜3 §¡Ð,Ñ-°Ñ4ð	0ð
 
ˆu�|‰|˜S 4™Z¨¨c°5·<±<Ð.?Ñ)@Ð@Ñ	Aõ0ð8 '+ñ1/àð1/ð ð1/ð ˜3 §¡Ð,Ñ-ð	1/ð
 !&§¡ð1/ð —‘˜tÑ#ð1/ð 
ˆu×Ñ  c¨5¯<©<Ð&7Ñ!8Ð8Ñ	9ó1/ðl ØØ*/ñ$ð
 ! 4™Kõ$ðL ð E§L¡Lð ¸#ð È5Ï<É<ÐZ^ÑK^ð Ðch×coÑcoò ó ðð '+Ø59Ø7;Ø9=ØTXØ#'Ø7;Ø-1Ø37Ø>BØ&*ñU
à—‘˜tÑ#ðU
ð ,¨dÑ2ðU
ð .°Ñ4ð	U
ð
 0°$Ñ6ðU
ð #+¨C°·±Ð+>ÀÀSÁ	Ð+IÑ"JÈTÑ"QðU
ð ˜D‘[ðU
ð "Ð"3Ñ4ðU
ð ˜>Ñ*ðU
ð #Ÿ\™\¨DÑ0ðU
ð ).¯©°tÑ(;ðU
ð ˜t™óU
ðn €U‡]�]ƒ_ð '+Ø59Ø7;Ø9=ØTXØ#'Ø7;Ø-1Ø37Ø>BØ&*ñ7à—‘˜tÑ#ð7ð ,¨dÑ2ð7ð .°Ñ4ð	7ð
 0°$Ñ6ð7ð #+¨C°·±Ð+>ÀÀSÁ	Ð+IÑ"JÈTÑ"Qð7ð ˜D‘[ð7ð "Ð"3Ñ4ð7ð ˜>Ñ*ð7ð #Ÿ\™\¨DÑ0ð7ð ).¯©°tÑ(;ð7ð ˜t™ð7ð 
˜%×*Ñ*Ñ	*ò7ó ô7r>   r   )$Úcollections.abcr   Útypingr   r   rO   Útorch.distributedÚdistributedr˜   Úgeneration.logits_processr   r   r	   r
   r   Úgeneration.stopping_criteriar   Úgeneration.streamersr   Úgeneration.utilsr   r   r   r   Úintegrations.deepspeedr   Úintegrations.fsdpr   Úmodeling_utilsr   Úutilsr   Ú
get_loggerr»   rC   r   r±   r>   r=   ú<module>rÔ      sZ   ðõ %ß  ã Ý  ÷õ õ AÝ 0ß aÓ aÝ @Ý 7Ý -Ý ð 
ˆ×	Ñ	˜HÓ	%€ôf˜õ fr>   