
    Z jT                         S SK Jr  S SKJrJr  S SKrS SKJr  SSK	J
r
JrJrJrJr  SSKJr  SSKJr  SSKJrJrJrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  \R@                  " \!5      r" " S S\5      r#g)    )Callable)AnyOptionalN   )(DiaClassifierFreeGuidanceLogitsProcessor"DiaEOSChannelFilterLogitsProcessor!DiaEOSDelayPatternLogitsProcessorLogitsProcessorListTemperatureLogitsWarper)StoppingCriteriaList)BaseStreamer)GenerateOutputGenerationConfigGenerationMixinGenerationMode)is_deepspeed_zero3_enabled)is_fsdp_managed_module)PreTrainedModel)loggingc                   h  ^  \ rS rSrSr        S'S\S\S-  S\R                  S-  S\	\\R                  /\\   4   S-  S\S-  S\S-  S	\\\4   S-  S
\R                  S-  S\R                  S-  S\4U 4S jjjrS\S-  S\S\\\4   4U 4S jjr   S(S\R                  S-  S\R                  S-  S	\\\R                  4   S-  S\\R                  \S-  \\\R                  4   4   4U 4S jjjr S)S\S\S	\\\R                  4   S\R                  S\R(                  S-  S\\R                  \\\R                  4   4   4S jjr   S*S\S-  4U 4S jjjr\S\R                  S\S\R                  S-  S\R                  4S j5       r           S+S\R                  S-  S\S-  S\S-  S\S-  S\	\\R                  /\\   4   S-  S\S-  S\S    S!\S"   S
\R                  S-  S\R                  S-  S#\S-  4S$ jjr\R:                  " 5                  S+S\R                  S-  S\S-  S\S-  S\S-  S\	\\R                  /\\   4   S-  S\S-  S\S    S!\S"   S
\R                  S-  S\R                  S-  S#\S-  S\\R                  -  4S% jj5       rS&r U =r!$ ),DiaGenerationMixin(   N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
                   > UR                   n
UR                  nS Ul         S Ul        [        5       nUb   US:w  a  UR                  [	        U5      5        UR                  [        [        U R                  R                  5      U R                  R                  R                  S95        [        TU ]1  UUUS UUUUU	S9	nU
b,  U
S:w  a&  [        U
UR                  S9nUR                  SU5        UR                  [!        U R                  R                  U R                  R                  R                  UR"                  US95        Xl         Xl        U$ )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                  w/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/dia/generation_dia.pyr3   (DiaGenerationMixin._get_logits_processor,   sY    #4"B"B0<<+/((,% 01+0D0K$$%<=Q%RS  . !:!:;![[77DD	
 "G9/!5/%).% 3+I : 

 #.3Ja3OD6066M $$Q6  -"kk77![[77DD#4#?#?		
 ,C((<%      kwargsc                 t  > [         TU ]  " U40 UD6u  pUR                  b:  UR                  S:  a*  [        R	                  SUR                   S35        SUl        U=R
                  [        U R                  R                  5      -  sl        UR                  S L=(       a    UR                  S:g  U l
        X4$ )Nr$   zAtemperature < 1.0 is not supported for Dia; clamping to 1.0 (got )r(   )r2   _prepare_generation_configr-   loggerwarning_oncer6   maxr0   r+   r)   	_uses_cfg)r7   r   rA   r   r=   s       r>   rD   -DiaGenerationMixin._prepare_generation_configo   s     +0'*LM^*ibh*i'((49J9V9VY\9\STeTqTqSrrst -0) 	$$DKK,E,E(FF$ +99EoJ[JjJjnoJo ..r@   inputsbos_token_idc                    > [         TU ]  UUUS9u  pnU R                  (       aW  [        R                  " U5      n[        R
                  " X/SS9nUR                  SS 5      b  US   R                  SS5      US'   XU4$ )N)rJ   rK   r   r   dimattention_mask   r(   )r2   _prepare_model_inputsrH   torch
zeros_likecatgetrepeat)r7   rJ   rK   r   
input_nameunconditioned_inputsr=   s         r>   rQ   (DiaGenerationMixin._prepare_model_inputs   s     ,17+H%% ,I ,
(L >>#(#3#3F#; YY=1EF 0$7C1=>N1O1V1VWXZ[1\-.<//r@   
batch_sizemodel_input_namedecoder_start_token_idc                 P   S=pgUb  SU;   a  UR                  S5      nUb  SU;   a  UR                  S5      nUb  Uc  [        R                  SUSL SUSL S35        U R                  R                  R
                  nU R                  (       a  US-  OUn	Uc(  [        R                  " U	SU4U[        R                  US	9n[        R                  " XR                  S   4[        R                  US
9nUR                  5       n
UR                  S   USS2SS2S4   U R                  R                  R                  :H  R                  SS9R                  5       -
  nU
SS2SU24   R                  SS5      R                  5       nUSS2SU24   R                  5       nXsS'   XS'   Xc4$ )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.rP   r(   )dtyper   )sizer`   r   r   rM   decoder_delay_mask)poprE   rF   r0   r1   r%   rH   rR   fulllongonesshapepad_token_idsumrG   	transpose)r7   rZ   r[   r   r\   r   r^   r_   r%   real_batch_size
delay_maskvalid_input_sizes               r>   )_prepare_decoder_input_ids_for_generation<DiaGenerationMixin._prepare_decoder_input_ids_for_generation   s    6:9#(;|(K , 0 01D E#(@L(P%1%5%56N%O" $(>(F%T122TUkswUwTx yop  ;;55BBL15jAoZO ($)JJ$a68NV[V`V`io%! &+ZZ%'>'>q'AB%**]c&"
 '++-
##A& Aq)T[[-G-G-T-TTYY^`Yaeegh 	 'q*;+;*;';<FFq!LQQS!7;L<L;L8L!M!R!R!T 2H-.-7)* ..r@   is_first_iterationc                   > U R                   (       a  US   R                  S   S-  OUS   R                  S   nUR                  X`R                  R                  R
                  S5      R                  SS5      n[        T
U ]   " U4SU0UD6nU R                  XR                  R                  R                  U5      US'   UR                  SS5      (       a#  U(       d  US   S S 2SS S 24   S S 2S S S 24   US'   US   R                  5       US'   U R                   (       aS  S	 HM  nUR                  US 5      c  M  [        S/S/Xx   R                  S-
  -  -   5      n	Xx   R                  " U	6 Xx'   MO     U$ )
Nr   rP   rb   r(   encoder_outputsr^   	use_cacheF)r^   r_   decoder_position_ids)rH   rh   reshaper0   r1   r%   rk   r2   prepare_inputs_for_generationapply_delay_maskri   rU   
contiguoustuplendimrV   )r7   	input_idsrs   rc   rq   rA   rZ   model_inputskeyrepeat_patternr=   s             r>   rw   0DiaGenerationMixin.prepare_inputs_for_generation   s    :>_Q'--a0A5_]^M_MeMefgMh
%%j++2L2L2Y2Y[]^hhijlmn	 w<YrXgrkqr -1,A,A{{11>>@R-
()
 K//8J0<=P0QRSUWYZRZ0[\]_cef\f0gL,- -99L,M,X,X,Z() >>^##C.:%*A3!8I8N8NQR8R1S+S%TN(4(9(@(@.(QL%	 _ r@   r|   pad_idrm   c                     Uc  U $ [        U R                  S   UR                  S   5      nUS S 2S U2S S 24   nU S S 2S U2S S 24   n[        R                  " XA:H  XT5      U S S 2S U2S S 24'   U $ )Nr(   )minrh   rR   where)r|   r   rm   mask_len
valid_maskvalid_inputs         r>   rx   #DiaGenerationMixin.apply_delay_mask   s    yq):+;+;A+>?9H9a0
9H9a0 &+[[1E{%_	!YhY/"r@   stopping_criteriasynced_gpusassistant_modelr   streamerr   custom_generatec                 D   U R                  UUUUU5      nU R                  " U40 UD6u  p.UR                  U5      nU[        R                  [        R
                  4;  a  [        S5      eU R                  UR                  5       5        U R                  XU5        Uc;  [        5       =(       d    [        U 5      =(       a    [        R                  " 5       S:  nUb  UO	[        5       nUb  UO	[        5       nUR!                  SS 5      S LnU R#                  XR$                  U5      u  nnnUR&                  S   nUR(                  nU R+                  UUUS9  SU;  a  U R-                  UUUU5      nU R/                  UUUUR0                  UR(                  S9u  nnUR2                  (       a!  U R5                  UUR!                  S5      5      nUb  UR7                  UR9                  5       5        UR&                  S	   nUR!                  S
5      S L =(       a    UR:                  S LnUR!                  S5      S L =(       a    UR<                  S LnU R?                  UUUUUUS9nU RA                  5       (       a  SU;  a  SUS'   U RC                  UUU5        UR:                  S-
  nUR&                  S   U:w  a3  US:X  a-  U RD                  RF                  (       d  UUR&                  S   -  nU RI                  X.UUU5        U RK                  UUUUUUR(                  UU	U
S9	nU RM                  UUUR!                  S5      S9nURN                  US'   URQ                  S	UR&                  S	   5      nURR                  S:  a  [        S5      eU RT                  " U4UUUS.UDUD6$ )NzGot incompatible mode for generation, should be one of greedy or sampling. Ensure that beam search is de-activated by setting `num_beams=1`.r(   rO   r   )r   rs   )rZ   r[   r   r\   r   	tokenizerrb   r6   
min_length)r   has_default_max_lengthhas_default_min_lengthr[   inputs_tensorinput_ids_lengthlogits_to_keepinputs_embedsr'   )r   r   r   rt   z2`num_return_sequences>1` is incompatible with Dia.)r   r   r   )+_extract_generation_mode_kwargsrD   get_generation_moder   SAMPLEGREEDY_SEARCH
ValueError_validate_model_kwargscopy_validate_generation_moder   r   distget_world_sizer
   r   rU   rQ   rK   rh   r   _prepare_special_tokens._prepare_encoder_decoder_kwargs_for_generationro   _decoder_start_token_tensortoken_healingheal_tokensputcpur6   r   _prepare_generated_length_supports_logits_to_keep_validate_generated_lengthr0   is_encoder_decoder_prepare_cache_for_generationr3   _get_stopping_criteriart   rv   num_return_sequences_sample)r7   rJ   r   r   r   r   r   r   r   r    r!   r   rA   generation_mode_kwargsr   generation_modekwargs_has_attention_maskr   r[   rZ   r   r|   r   r   r   max_cache_lengthprepared_logits_processorprepared_stopping_criterias                               r>   _main_generate_loop&DiaGenerationMixin._main_generate_loop   s   " "&!E!E"
 +/*I*IJ[*f_e*f'+??P>#8#8.:V:V"WWT 
 	##L$5$5$78&&Kab 57W;QRV;Wv]a]p]p]ruv]vK/?/K+QdQf1B1N-ThTj %1$4$45Et$LTX$X!8<8R8R22L9
5' #((+
%%$$%68QZ`$a L0NN|-=?PL
 #'"P"P!-%#4#P#P '' #Q #
	< **((4J4N4N{4[\ILL) %??2.!'L!9T!A!nFWFbFbjnFn!'L!9T!A!nFWFbFbjnFn ::/#9#9-'- ; 
 ((**/?|/S-.L)*''(9;KMcd -77!;"&66 O3KK22 3 3A 66**_jJZ	

 %)$>$>/!1+%=- ''% 3+I %? 
%
! &*%@%@//,00= &A &
" %6$?$?[! %%b)//"*=>	 11A5QRR ||
68/	

 %
 
 	
r@   c                 $   UR                  S5      nUb  UR                  5       nU R                  " SUUUUUUUUU	U
US.UD6n[        U[        R
                  5      (       + nU(       a  UR                  nOUnU R                  R                  R                  nUR                  S   U-  nUR                  UUS5      R                  SS5      nU R                  UU R                  R                  R                  U5      nU(       a	  UUl        U$ UnU$ )Nr^   )rJ   r   r   r   r   r   r   r   r    r!   r   r   rb   r(   rP    )rU   cloner   
isinstancerR   Tensor	sequencesr0   r1   r%   rh   rv   rk   rx   ri   )r7   rJ   r   r   r   r   r   r   r   r    r!   r   rA   rm   outputreturn_dict_in_generateoutput_sequencesr%   bszs                      r>   generateDiaGenerationMixin.generate  s)   " ZZ 34
!#))+J)) 
/-/%=#+ 3+I+
 
 '1&F"F"%//% {{11>>$$Q'<7+33CrJTTUVXYZ  001A4;;C]C]CjCjlvw"/F  &Fr@   )rH   )NNNNNNNN)NNN)N)NNF)NNNNNNNNNNN)"__name__
__module____qualname____firstlineno__rH   r   intrR   
LongTensorr   r   listr
   strdictr   r3   rz   rD   rQ   r   ro   boolrw   staticmethodrx   r   r   r   no_gradr   r   __static_attributes____classcell__)r=   s   @r>   r   r   (   s   I
 ,059TX7;!.237>BA!+A! "DjA! !++d2	A!
 #+C+>S	+I"JT"QA! .4A! d
A! 38nt+A! #\\D0A! ).t(;A! 
A! A!F/!1D!8/DG/	%	&/* '+,07;	0t#0 llT)0 3,-4	0
 
u||S4Zc5<<.?)@@	A0 08 '+1/1/ 1/ 3,-	1/
 !&1/ t#1/ 
uc5<<&7!88	91/l */$
 !4K$ $L ELL # 5<<Z^K^ chcoco   '+597;9=TX#'7;-137>B&*U
t#U
 ,d2U
 .4	U

 0$6U
 #+C+>S	+I"JT"QU
 D[U
 ""34U
 >*U
 #\\D0U
 ).t(;U
 tU
n ]]_ '+597;9=TX#'7;-137>B&*7t#7 ,d27 .4	7
 0$67 #+C+>S	+I"JT"Q7 D[7 ""347 >*7 #\\D07 ).t(;7 t7 
%**	*7 7r@   r   )$collections.abcr   typingr   r   rR   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   rE   r   r   r@   r>   <module>r      sX    %       A 0 a a @ 7 -  
		H	%f fr@   