
    oi0                        S SK r S SKJr  S SKrS SKrS SKJrJrJrJ	r	J
r
JrJrJr  SSKJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJ r   S SK!r!S SK"r"S r# \RH                  " \#5        S r% \RH                  " \%5        S	 r& \RH                  " \&5        S
 r' \RH                  " \'5        S r( \RH                  " \(5        S r) \RH                  " \)5        S r* \RH                  " \*5        S r+ \RH                  " \+5        g)    N)AnyListOptionalTupleUnionDictSetCallable   )TEMPORARY_PATCHEStorch_compile)patch_functionprocess_output_optionsprocess_returnKWARGS_TYPEraise_error
ImageInputPreTokenizedInput	TextInputCacheStaticCacheHybridCacheUnpack_get_unique_storage_name)dedentc                  n  ^	  SS K n  U R                  R                  R
                  R                  n[        U R                  R                  R
                  S5      n[        U R                  R                  R
                  U5      (       a  g [        R                  " U5      m	[        U R                  R                  5      nT	R                  SS5      m	[        SSR                  U	4S	 jU 5       5      -   S
-   [        5       5        [!        T	5      m	T	R#                  S5      nT	T	R%                  S5      S  m	U(       aL  [&        R(                  " ST	5      nUb2  UR+                  S5      UR+                  S5      pUT	[-        U5      S  -   m	 [        T	[        5       5        [/        U R                  R                  R
                  S[        5        g ! [         a  n[        SU5      s S nA$ S nAff = f! [         a  n[        SU5      s S nA$ S nAff = f! [         a  n[        SU5      s S nA$ S nAff = f)Nr   ztransformers.quantizers.autozGtransformers.quantizers.auto.AutoHfQuantizer.merge_quantization_configsmerge_quantization_configsz^if quantization_config.__class__.__name__ != quantization_config_from_args.__class__.__name__:zif quantization_config_from_args is not None and quantization_config.__class__.__name__ != quantization_config_from_args.__class__.__name__:z*from transformers.quantizers.auto import (,c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fN ).0xsources     \/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/temporary_patches/misc.py	<genexpr>3patch_merge_quantization_configs.<locals>.<genexpr>D   s     @aEqZ`U`Es   		)z@classmethoddefz4(def[\s]{1,}[^(]{1,}\()[\s]{0,}cls[\s]{0,}\,[\s]{0,}r    )transformers.quantizers.auto	Exceptionr   
quantizersautoAutoHfQuantizerr   r   hasattrinspect	getsourcedirreplaceexecjoinglobalsr   
startswithfindrematchgrouplenr   )
transformersefunique_nameitemsis_classmethodmatchesfoundr4   r$   s
            @r%    patch_merge_quantization_configsrF   *   s   >+i##((88SS
 +<+B+B+G+G+W+WYuvK|&&++;;[II6q!F'',,-E
 ^^h 	WF
 		5@aE@a8a	adg	gipirsF^F&&~6NFKK&'(F((RTZ[$]]1-w}}Q/?7vc%jk22F"VWY <**//??A]_yzK  >91==>  idfghhi<  "2q!!"sX   G *G1 
H 
G.G)#G.)G.1
H;HHH
H4H/)H4/H4c                    ^^^  SS K n SSKJm  SSKJm              SS[        R                  S[        [        R                     S[        [        R                     S[        [        R                     S	[        [        [        [        [        R                     4      S
[        [        R                     S[        [        R                     S[        [           S[        [           S[        [           S[        [        R                     S[        [         [        R                  4   S["        S[        [$        T4   4UU4S jjjn ['        U R(                  R*                  R,                  R.                  SU5      nU(       a  g Um          SS[        R                  S[        [        R                     S[        [        R                     S[        [        R                     S	[        [        [        [        [        R                     4      S
[        [        R                     S[        [        R                     S[        [           S[        [        R                     S[        [         [        R                  4   S["        S[        [$        T4   4U4S jjjn['        U R(                  R*                  R,                  R.                  SU5        g ! [
         a  n[        SU5      s S nA$ S nAff = f)Nr   )CausalLMOutputWithPastForCausalLMLossz"CsmDepthDecoderForCausalLM.forward	input_idsbackbone_last_hidden_stateattention_maskposition_idspast_key_valuesinputs_embedslabels	use_cacheoutput_attentionsoutput_hidden_statescache_positionlogits_to_keepkwargsreturnc                    > [        U [        5       U5      nU R                  " SUUUUUUUUS.UD6nUS   n[        U[        5      (       a!  US:X  a  [        SS 5      nO[        U* S 5      nOUnU R                  US S 2US S 24   Ub  UU   OS 5      nUR                  5       nS nUb8  USSS 24   R                  5       nT" SUS U R                  R                  US.UD6n[        TUUUR                  UR                  UR                  S.5      $ )N)rK   rL   rM   rN   rO   rP   rR   rU   r   r   .)logitsrQ   
vocab_sizeshift_labels)lossrZ   rO   hidden_states
attentionsr!   )r   localsmodel
isinstanceintslicecodebooks_head
contiguousconfigr[   r   rO   r^   r_   )selfrK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   outputsr^   slice_indicesrZ   r]   r\   rH   rJ   s                       r%   forward9patch_CsmDepthDecoderForCausalLM_forward.<locals>.forward`   sQ     (fh? ** 
!)C+'-)! ,
 
  
nc**" %a %~ot <*M$$!]A-.Q_Qk}0Mqu
 ""$!#qr'?557L" dt{{7M7M\hlrD 4 ' 7 7%33"--7
  	    rk   c                    > [        5       R                  5       nUR                  SS 5        UR                  S[        5       5      nUR	                  U5        T" S0 UD6$ Nold_forwardrW   r!   r`   copypopdictupdate)rh   rK   rL   rM   rN   rO   rP   rQ   rR   rU   rV   rW   
new_kwargsrp   s                r%   rk   rl      sN      X]]_
}d+$&1&!(Z((rm   )NNNNNNNNNNNr   )
NNNNNNNNNr   )$transformers.models.csm.modeling_csmtransformers.modeling_outputsrH   transformers.loss.loss_utilsrJ   r,   r   torch
LongTensorr   FloatTensorTensorr   r   r   boolrc   r   r   r   modelscsmmodeling_csmCsmDepthDecoderForCausalLM)r>   r?   rk   successrH   rJ   rp   s       @@@r%   (patch_CsmDepthDecoderForCausalLM_forwardr   X   s   D3H@ '+BF1537KO59-1$(,0/35934?##? %-U->->$?? !.	?
 u//0? "%tE4E4E/F(F"GH?   1 12? ))*? D>? $D>? 'tn? !!1!12? c5<</0? ? 
u,,	-? ?@ 	\0044AA\\^gipqG K '+BF1537KO59-1$( 6:34)##) %-U->->$?) !.	)
 u//0) "%tE4E4E/F(F"GH)   1 12) ))*) D>) !!1!12) c5<</0) ) 
u,,	-) )* <&&**77RRT]_fg}  D?CCDs   K 
K8"K3-K83K8c            !      R  ^^  SS K n SSK Jm  SSKJn               SS[        R                  S[        [        R                     S[        [        R                     S[        [        R                     S	[        [        R                     S
[        [        [        [        [        R                     4      S[        [        R                     S[        [        R                     S[        [           S[        [           S[        [           S[        [        R                     S[        [        [        R                  4   S[         S[        ["        T4   4U4S jjjn [%        U R&                  R(                  R*                  R,                  SU5      nU(       a  g Um           SS[        R                  S[        [        R                     S[        [        R                     S[        [        R                     S	[        [        R                     S
[        [        [        [        [        R                     4      S[        [        R                     S[        [        R                     S[        [           S[        [        R                     S[        [        [        R                  4   S[         S[        ["        T4   4U4S jjjn[%        U R&                  R(                  R*                  R,                  SU5        g ! [         a  n[        SU5      s S nA$ S nAff = f)Nr   )CsmOutputWithPastrI   z#CsmForConditionalGeneration.forwardrK   input_valuesrM   input_values_cutoffsrN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   c                   > [        U [        5       U5      nUb.  UR                  S:X  a  U R                  XXH5      nUS   nUS   nS nU R                  " SUUUUUU	US.UD6nUS   n[        U[        5      (       a  [        U* S 5      OUnU R                  US S 2US S 24   5      nS nS nS nS nUGb.  US S 2S S 2S4   nU R                  " SUUU R                  R                  S.UD6nUS S 2S S 2SS 24   S:H  R                  S	S
9) nUU   SS U R                  R                  S-
  24   n[        R                  R                   R#                  USSS9nUR%                  SS9nUUS   US   S-
  S S 24   nUU   nUR'                  5       nSU;   a  US   S-  US'   UR)                  SS 5        U
US'   UUS'   U R*                  " SUUU	SUS.UD6nUR,                  nUU-   n[/        TUUUUUR0                  UR2                  UR4                  Ub  UR6                  OS Ub  UR0                  OS Ub  UR2                  OS Ub  UR4                  S.5      $ S S.5      $ )N   rP   rQ   )rK   rM   rN   rO   rP   rR   rU   r   )rZ   rQ   r[   r   dim.r   r   )valueTas_tuplenum_items_in_batch   return_dictrS   rT   )rK   rL   rR   r   rQ   )r]   backbone_lossdepth_decoder_lossrZ   rO   r^   r_   depth_decoder_logitsdepth_decoder_past_key_valuesdepth_decoder_hidden_statesdepth_decoder_attentionsr!   )r   r`   ndim"_merge_input_ids_with_input_valuesbackbone_modelrb   rc   rd   lm_headloss_functionrg   r[   allnum_codebooksrz   nn
functionalpadnonzerorr   rs   depth_decoderr]   r   rO   r^   r_   rZ   ) rh   rK   r   rM   r   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   merged_inputsbackbone_outputsbackbone_hidden_statesrj   backbone_logitsr]   r   r   depth_decoder_outputsbackbone_labels
train_maskdepth_decoder_input_ids
train_idxsbackbone_last_hidden_statesdepth_decoder_labelsdepth_decoder_kwargsr   s                                   r%   rk   :patch_CsmForConditionalGeneration_forward.<locals>.forward   s,   " (fh? Y^^q%8 CC)=M */:M"8,FI.. 
!+'-)! ,
 
 "2!!48B>SV8W8W~ot4]k,,'=aPQ>Q'RS! $$Q1WoO .. &4;;KaKaekM "!Q(+t388R8@@J&,Z&8>]@Y@Y\]@]>]9]&^#&+hh&9&9&=&=>UW]ef&=&g##++T+:J*@APZ[\P]`aPacdAd*e'#)*#5  $*;;=  $';;=QRf=gjl=l$%9: !$$]D9;L !48;O !78$($6$6 
%3-H% #-
% '
%! "7!;!; #55D/+#5& 0 @ @.<<+66EZEf%:%A%Alp$0 /D.S.S$0 -B,O,OMbMn)>)I)I2
  	 uy2
  	rm   rk   c                    > [        5       R                  5       nUR                  SS 5        UR                  S[        5       5      nUR	                  U5        T" S0 UD6$ ro   rq   )rh   rK   r   rM   r   rN   rO   rP   rQ   rR   rU   rV   rW   rv   rp   s                 r%   rk   r   @  sN    " X]]_
}d+$&1&!(Z((rm   )NNNNNNNNNNNNr   )NNNNNNNNNNr   )rw   r   ry   rJ   r,   r   rz   r{   r   r}   r   r   r   r|   r~   rc   r   r   r   r   r   r   CsmForConditionalGeneration)r>   rJ   r?   rk   r   r   rp   s        @@r%   )patch_CsmForConditionalGeneration_forwardr      s.   E3J@ '+/3157;37KO59-1$(,0/35934q##q u||,q !.	q
 'u||4q u//0q "%tE4E4E/F(F"GHq   1 12q ))*q D>q $D>q 'tnq !!1!12q c5<</0q q  
u''	(!q qd 	\0044AA]]_hjqrG K '+/3157;37KO59-1$( 6:34)##) u||,) !.	)
 'u||4) u//0) "%tE4E4E/F(F"GH)   1 12) ))*) D>) !!1!12) c5<</0) )  
u''	(!) ), <&&**77SSU^`ghc  E@!DDEs   L 
L&L!L&!L&c                      SS K n     S
S[        [        R
                     S[        [        R
                     S[        [        R
                     S[        [        R
                     S[        [        R
                     4
S jjn [        U R                  R                  R                  R                  S	U5        g ! [         a  n[        SU5      s S nA$ S nAff = f)Nr   z>CsmForConditionalGeneration._merge_input_ids_with_input_valuesrK   r   r   rQ   rX   c                 &   U R                  U5      nUGbb  [        R                  R                  R	                  US5      nX3S:     R                  5       nXfS:     n[        R                  " UR                  5       UR                  S9R                  [        U5      S5      nXvR                  S5      :  n[        R                  " 5          / n[        X#5       H  u  pXS:     n
[        U
R                  S   S-
  5       Hp  nX   nXS-      nU	SX24   nU R                   R#                  UR                  S5      5      nUR$                  R'                  SS5      nUR)                  US   5        Mr     M     [        S U 5       5      n[        R*                  " U Vs/ s HA  n[        R                  R                  R	                  USSSUUR                  S   -
  45      PMC     sn5      nU R                   R-                  U5      nSSS5        U R.                  R0                  nUU:H  nU R2                  R5                  W5      nUW   UU'   [        R6                  " SSU R.                  R8                  4UR                  [        R:                  S	9U R.                  R<                  -  nU R2                  R5                  U5      R?                  S5      nXR.                  R@                  :H  nURC                  URE                  5       S5      UU'   Ubg  UR                  S5      RC                  SSU R.                  R8                  5      nUU   UU'   UUU'   US
:H  RG                  SS9nSUUS   US   SS24'   UnXTS.$ s  snf ! , (       d  f       GN= f)a8  
Merges the input_ids and input_values to produce a single inputs_embeds tensor:
1 - Infers the codec model on the input_values to retreive codebook token.
2 - Embeds codebook tokens and places them at the correct positions in the inputs_embeds tensor.
3 - If labels are provided, expands them to match codebook dimensions and position the target codebook tokens in the inputs_embeds tensor.

Args:
    input_ids (`torch.Tensor` of shape `(batch_size, sequence_length)`):
        The input ids to embed.
    input_values (`torch.Tensor` of shape `(batch_size, channels, audio_sequence_length)`):
        The audio input values to embed.
    input_values_cutoffs (`torch.Tensor` of shape `(batch_size, max_num_audio)`):
        The cutoffs of the audio input values relative to its batch index, padded with -1 when no audio.
Nr   r   )devicer   r   .c              3   >   #    U  H  oR                   S    v   M     g7f)r   N)shape)r"   els     r%   r&   fpatch_CsmForConditionalGeneration_merge.<locals>._merge_input_ids_with_input_values.<locals>.<genexpr>  s     &O=Nrxx{=Ns   )r   dtypeiTr   r   )rP   rQ   )$embed_text_tokensrz   r   r   r   diffarangemaxr   expandr=   	unsqueezeno_gradzipranger   codec_modelencodeaudio_codes	transposeappendstackget_audio_codes_maskrg   audio_token_idr   embed_tokensonesr   longcodebook_eos_token_idsqueezeaudio_eos_token_idrepeatsumr   )rh   rK   r   r   rQ   rP   audio_lengthsinput_values_maskaudio_tokens_listbatch_input_valuesbatch_input_values_cutoffsi	start_idxend_idxaudio_batchcodec_outputscodebook_idsmax_audio_framesr   batched_audio_token_idsaudio_codes_maskr   audio_token_maskaudio_embedsaudio_eos_frame_idsaudio_eos_embedsaudio_eos_token_masklabels_expanded depth_decoder_ignore_frames_idxss                                r%   r   Spatch_CsmForConditionalGeneration_merge.<locals>._merge_input_ids_with_input_valuesa  s   * ..y9##(88#6#6#:#:;OQW#X 01JKPPRM)!*;<M %-A-E-E-GP\PcPc d k kM"B! !24K4KA4N N
 $&!FI,FmB&1KjkLk1l."#=#C#CA#F#JK$>$A	"<U"C&8i>O9O&P(,(8(8(?(?@U@UVW@X(Y'4'@'@'J'J1b'Q)00aA L Gn $'&O=N&O#O */++fwxfw`bUXX((,,R!Q;KbhhWXk;Y1Z[fwx+' $(#3#3#H#HIZ#[ ! !$ "[[77N(N:..;;<STL.:;K.LM*+ 

Aq$++";";<YEUEU]b]g]gh++334    $22??@ST\\]^_#,0N0N#N 2B2I2IJ^JbJbJdfg2hM./ !"("2"22"6"="=aDKKD]D]"^4KL\4] 018K 454:dN3K3KUY3K3Z0pt @ CEefgEhjkjl lm(!.AA? y !s    
CNAM<
%"N<N
Nr   NNNN)rw   r,   r   r   rz   r}   r   r   r   r   r   )r>   r?   r   s      r%   'patch_CsmForConditionalGeneration_merger   [  s    `3 -1/37;)-QBELL)QB u||,QB 'u||4	QB
 &QB 
%,,	QBd 	<&&**77SSUy  |^  _m  `[]^__`s   B; ;
CCCCc                    ^^^^^^	  SS K n SSK JnJnJmJmJmJm	JmJm      S
S[        R                  S[        U   S[        [        R                     S[        [        R                     S[        [        R                     4
UUUUUU	4S jjjn [        U R                  R                   R"                  R                  S	U5        g !    g = f)Nr   )GraniteMoeHybridMambaLayer HybridMambaAttentionDynamicCacheapply_mask_to_padding_states mamba_split_conv1d_scan_combinedmamba_chunk_scan_combinedselective_state_updatecausal_conv1d_fncausal_conv1d_updater^   cache_paramsrU   rM   seq_idxc                 N  > T" X5      nU R                  U5      nUR                  u  pxn	U R                  U R                  -  n
US L=(       a    UR                  =(       a    US:H  =(       aw    UR
                  U R                     R                  S   UR                  U R                     R                  S   s=:H  =(       a    U:H  Os  =(       a    US L=(       a    US   S:  nU(       Ga  UR                  S5      R                  U R                  U R                  U R                  /SS9u  pnT" UUR
                  U R                     U R                  R                  R                  S5      U R                  R                  U R                   5      n["        R                  " UU R                  X/SS9u  pn["        R$                  " U R&                  R)                  5       5      * nUS S 2S S4   S S 2S S 2S 4   R+                  SU R,                  U R                  5      R/                  ["        R0                  S9nUS S 2S S 2S 4   R+                  SSU R,                  5      nU R2                  S S 2S S4   R+                  SU R,                  5      nU R4                  S S 2S S4   R+                  SU R,                  5      nUR7                  XpR                  UR                  S   U R                  -  5      nUR7                  XpR                  UR                  S   U R                  -  5      nUR7                  XpR                  U R,                  5      nT " UR                  U R                     UUUUUUS USS9
nUR7                  XpR                  U R,                  -  5      nU R9                  X5      nU R;                  U5      S S 2S S4   nU$ ["        R$                  " U R&                  R)                  5       5      * nU R<                  S	[)        S
5      4:X  a  0 OSU R<                  0nU R>                  (       a  Uc  T" UU R                  R                  R                  S5      U R                  R                  U R2                  U4U R4                  U R@                  UU R                   U R8                  R                  U R8                  RB                  U R:                  R                  U R:                  R                  U R,                  U R                  SSS.UD6nU$ UR                  U R                  U R                  U R                  /SS9u  pnUbv  URE                  SS5      n[F        RH                  RK                  UU RL                  UR                  S   -
  S45      nUR
                  U R                     RO                  U5        U R                   S;  aH  U RQ                  U R                  URE                  SS5      5      SS U24   RE                  SS5      5      nOkT" URE                  SS5      U R                  R                  R                  S5      U R                  R                  U R                   US9RE                  SS5      nT" X5      n["        R                  " UU R                  X/SS9u  pnT" UR7                  XxSU R,                  5      UUUR7                  XxU R                  S5      UR7                  XxU R                  S5      4U R@                  U R4                  S USU R2                  SS.UD6u  nnUb2  Ub/  UR                  U R                     RO                  U5        SUl        UR7                  XxS5      nU R9                  UU5      nU R;                  U5      nU$ )Nr   r   r   r   .)r   T)zdt_biasdt_softplusg        infdt_limitF)D
chunk_sizer   
activationrmsnorm_weightrmsnorm_epsoutproj_weightoutproj_biasheaddimngroupsnorm_before_gatereturn_final_statesr   )siluswish)r#   weightbiasr  r   )r  r  r   r   r  r   r   ))in_projr   n_groupsssm_state_sizehas_previous_stateconv_states	layer_idx
ssm_statesr   splitintermediate_sizeconv_dim	num_headsconv1dr  r  r  rz   expA_logfloatr   head_dimtofloat32r   r  viewnormout_projtime_step_limittrainingr  variance_epsilonr   r   r   r   conv_kernel_sizecopy_act)!rh   r^   r   rU   rM   r   projected_states
batch_sizeseq_len_groups_time_state_sizeuse_precomputed_statesgatehidden_states_B_CdtBCAr   r  hidden_states_reshapedoutdt_limit_kwargshidden_states_B_C_transposedr  scan_output	ssm_stater   r   r   r   r   r   s!                              r%   cuda_kernels_forwardSpatch_GraniteMoeHybridMambaLayer_cuda_kernels_forward.<locals>.cuda_kernels_forward  s    5]S<<6 "/!4!4
Q!%1D1D!D $ &//&1& ((8>>qA&&t~~6<<Q? & d*& q!A% 	 "*:*B*B1*E*K*K''GR +L +'DR
 !5!((8""**1-  ! #(++!'')?X#Ma 4::++-..A!T3,1d
+222t}}dFYFYZ]]didqdq]rAAq$J&&r2t}}=Bll1dC<077DMMJGq$|$++B>Az==!''!*2MNAz==!''!*2MNA%2%7%7
NNTXTaTa%b"2''7& M *..z>>DMM;YZM IIm:M --.q$|<C~ 
y 4::++-..A$($8$8S%,<O$ObV`bfbvbvUwO }}!56$KK&&..q1KK$$LL ff####'99#3#3 $		 : :#'==#7#7!%!3!3 MM MM%*(-#$ &%n 
C /?.D.D++T]]DNNKQS /E /+  + 4E3N3NqRS3T0"$--"3"34..1M1S1STV1WWYZ[#K !,,T^^<BB;O??*;;(,$5$?$?1$EFsHWH}U__`acde)% )9+55a;#{{1199!<![[--#'?? ')  i1o & %AAR$c!&+kk%++-C\'#! *C!&&zBNFF:rBFF:rB*  $ff#(, LL $* &*&Y" (\-E ++DNN;AA)L6:L3)..zBG"iiT: mmK0
rm   r>  r   )>transformers.models.granitemoehybrid.modeling_granitemoehybridr   r   r   r   r   r   r   r   rz   r}   r   r{   	IntTensorr   r   granitemoehybridmodeling_granitemoehybrid)
r>   r   r   r>  r   r   r   r   r   r   s
       @@@@@@r%   5patch_GraniteMoeHybridMambaLayer_cuda_kernels_forwardrD    s    M		
 		
 		
  DH5915-1h||h ?@h !!1!12	h
 !.h %//*h hR 	<&&77QQll  oE  G[  \[s   C Cc            
          SS K n  [        R
                  " U R                  R                  R                  5      n[        USSS9 o3R                  5       nS S S 5        [        [        R                  " SW5      5      nU HT  nUR                  S5      nUR                  5       u  pxpUS:X  a  SOS	U 3nS
U SU	 SU
 SU S3	nUR!                  Xl5      nMV       [        USSS9 oR#                  U5        S S S 5        [$        R&                  " U R                  R                  R                  5        g ! [         a     g [         a  n[        SU5      s S nA$ S nAff = f! , (       d  f       GN= f! [         a  n[        SU5      s S nA$ S nAff = f! , (       d  f       N= f! [         a  n[        SU5      s S nA$ S nAff = f)Nr   z#mamba_ssm.ops.triton.ssd_chunk_scanrzutf-8)encodingzS ([a-zA-Z0-9\_]{1,}) (\=|\+\=) tl\.dot\(([a-zA-Z0-9\_]{1,})\, ([a-zA-Z0-9\_]{1,})\)=r*   z, acc =  z
 = tl.dot(z.to(tl.float32), z.to(tl.float32)r(   w)#mamba_ssm.ops.triton.ssd_chunk_scanImportErrorr,   r   r1   getfileopstritonssd_chunk_scanopenreadlistr:   finditerr<   groupsr4   write	importlibreload)	mamba_ssmr?   ssd_chunk_scan_filefilerD   r;   olddstadderabaccumulatornewr@   s                 r%   fix_mamba_ssm_float32rc  x  s   E2E%ooimm.B.B.Q.QR%sw?4PYPYP[?
 2;;^ G kk!n <<>A!SLb.>#jc"cm1 ||C%  	E%sw?1ggdm?--<<=A   E@!DDE @? E@!DDE, @? E@!DDEs   D3 ?E3 E!E3 F' %F6<F' 3
E?	EEEE!
E0+E3 0E3 3
F=FFF
F$ F' '
G1G<GGc                    ^^^	^
  SS K m
SS Kn SS KnSSKJmJmJm	Jn  SSKJn   " UUU	U
4S jSU5      n U R                  " UR                  5      nSU;  a%  XQR                  R                  R                  l        g g ! [         a  n[        SU5      s S nA$ S nAff = f! [         a  n[        SU5      s S nA$ S nAff = f)	Nr   )MllamaVisionConfigMllamaVisionAttentionMllamaVisionMLPMllamaVisionEncoder)GradientCheckpointingLayerz*transformers.models.mllama.modeling_mllamac                      >^  \ rS rSrS	S YS\4UUU U4S jjjr S
S\R                  S\\R                     4S jjr	Sr
U =r$ )@patch_MllamaVisionEncoderLayer.<locals>.MllamaVisionEncoderLayeri  rg   is_gatedc                   > [         TU ]  5         UR                  U l        UR                  U l        X l        UR                  U l        T" U5      U l        T" U5      U l        [        R                  " U R                  UR                  S9U l        [        R                  " U R                  UR                  S9U l        U(       a  [        R                  " [        R                   " S5      TR"                  -  S-  5      U l        [        R                  " [        R                   " S5      TR"                  -  S-  5      U l        g g )N)epsr      )super__init__hidden_sizeattention_headsnum_attention_headsrl  r  	self_attnmlpr   	LayerNormnorm_epsinput_layernormpost_attention_layernorm	Parameterrz   r   pi	gate_attngate_ffn)rh   rg   rl  rf  rg  	__class__maths      r%   rq  Ipatch_MllamaVisionEncoderLayer.<locals>.MllamaVisionEncoderLayer.__init__  s    G%11D'-'='=D$$M%+%=%=D"26:DN&v.DH#%<<0@0@foo#VD ,.LL9I9Iv,_D)!#ejjmdgg.E.I!J "UZZ]TWW-Dq-H I rm   hidden_staterM   c                 ^   UnU R                  U5      nU R                  XS9u  pU R                  (       a  U R                  R	                  5       U-  nX1-   nUnU R                  U5      nU R                  U5      nU R                  (       a  U R                  R	                  5       U-  nX1-   nU$ )N)rM   )ry  ru  rl  r}  tanhrz  rv  r~  )rh   r  rM   residualattn_weightss        r%   rk   Hpatch_MllamaVisionEncoderLayer.<locals>.MllamaVisionEncoderLayer.forward  s     $H//=L)-)d&L}}#~~224|C#2L $H88FL88L1L}}#}}113lB#2Lrm   )
r}  r~  rr  ry  r  rl  rv  rt  rz  ru  Fr    )__name__
__module____qualname____firstlineno__r~   rq  rz   r}   r   rk   __static_attributes____classcell__)r  rf  re  rg  r  s   @r%   MllamaVisionEncoderLayerrk    sN    	J#5 	J 	J 	J* 6:	 ,,	  %U\\2	  	 rm   r  gradient_checkpointingzCtransformers.models.mllama.modeling_mllama.MllamaVisionEncoderLayer)r  r1   *transformers.models.mllama.modeling_mllamare  rf  rg  rh  transformers.modeling_layersri  r,   r   r2   rk   r   mllamamodeling_mllamar  )r1   r>   rh  ri  r?   r  vision_encoder_forward_sourcerf  re  rg  r  s          @@@@r%   patch_MllamaVisionEncoderLayerr    s    L9	
 	
 	L(  ( #= ( Te(/(9(9:M:U:U(V%#+HHRj&&66O Ic  LGKKLf  e`bcddes;   A> AB! >
BBBB!
C+B<6C<Cc            
         [         R                  R                  SS5      S:X  a  g  SS Kn  SS[        R                  S[        R                  S[        [           S[        [        R                     4S	 jjn [        U R                  R                  R                  R                   S
U5        g ! [         a  n[        SU5      s S nA$ S nAff = f)NUNSLOTH_FORCE_FLOAT320r   z*transformers.models.siglip.modeling_siglipr^   rM   rS   rX   c                    UR                  [        R                  5      nUnU R                  U5      nU R	                  UR                  [        R
                  5      UUS9u  pUR                  [        R                  5      nXA-   nUnU R                  U5      nU R                  UR                  [        R
                  5      5      nUR                  [        R                  5      nXA-   nU4nU(       a  Xe4-  nU$ )a  
Args:
    hidden_states (`torch.FloatTensor`):
        Input to the layer of shape `(batch, seq_len, embed_dim)`.
    attention_mask (`torch.FloatTensor`):
        Attention mask of shape `(batch, 1, q_len, k_v_seq_len)` where padding elements are indicated by very large negative values.
    output_attentions (`bool`, *optional*, defaults to `False`):
        Whether or not to return the attentions tensors of all attention layers. See `attentions` under
        returned tensors for more detail.
)r^   rM   rS   )r!  rz   r"  layer_norm1ru  float16layer_norm2rv  )rh   r^   rM   rS   r  r  ri   s          r%   rk   )patch_SiglipEncoderLayer.<locals>.forward  s      &((7 ((7&*nn'**5==9)/ '5 '
#
 &((7 0 ((7!1!1%--!@A%((7 0 "&Grm   rk   r  )osenvironget*transformers.models.siglip.modeling_siglipr,   r   rz   r}   r   r~   tupler|   r   r   siglipmodeling_siglipSiglipEncoderLayer)r>   r?   rk   s      r%   patch_SiglipEncoderLayerr    s    	zz~~-s3s:FL9 -2	'||' ' $D>	'
 
u  	!'P 	<&&--==PPR[]deW  LGKKLs   B. .
C8C	C	C),rz   torch.nnr   r1   rW  typingr   r   r   r   r   r   r	   r
   commonr   r   utilsr   r   r   r   r   r   r   r   r   r   r   r   r   textwrapr   r:   r  rF   r   r   r   r   rD  rc  r  r  r!   rm   r%   <module>r     s  "     I I I 4     	 	){T    9 :chH    A BVin    B CY_t    @ Az\v    N O%EL    . /
@eD    7 8/f`    1 2rm   