Ë
    ÛÓ^j‚r  ã                   óš  — d dl mZ d dlZd dlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ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m Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3  e!jh                  e5«      Z6 G d„ de+«      Z7 G d„ de*«      Z8 G d„ dejr                  «      Z: G d„ d e.«      Z; G d!„ d"e0«      Z< G d#„ d$ejr                  «      Z= G d%„ d&e«      Z> G d'„ d(e«      Z?e>e?d)œZ@ G d*„ d+e«      ZAe  G d,„ d-eA«      «       ZB G d.„ d/e1«      ZC G d0„ d1eeA«      ZDg d2¢ZEy)3é    )ÚCallableN)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)Úlazy_load_kernel)Úforce_accelerate_hooks)Úcreate_causal_maskÚcreate_recurrent_attention_mask)Ú GenericForSequenceClassificationÚGradientCheckpointingLayer)ÚMoeCausalLMOutputWithPastÚMoeModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úmerge_with_config_defaults)Úresolve_internal_import)ÚOutputRecorderÚcapture_outputsé   )ÚLlamaAttentionÚLlamaRMSNormÚeager_attention_forward)Ú
MistralMLP)ÚMixtralExpertsÚMixtralForCausalLMé   )ÚJambaConfigc                   ó   — e Zd Zy)ÚJambaRMSNormN©Ú__name__Ú
__module__Ú__qualname__© ó    úr/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/jamba/modular_jamba.pyr&   r&   /   ó   „ Ør,   r&   c                   ó¼   ‡ — e Zd Zdedefˆ fd„Z	 	 d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 )ÚJambaAttentionÚconfigÚ	layer_idxc                 ó  •— t         ‰| �  ||«       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¬«      | _        y ©NF©Úbias)ÚsuperÚ__init__r   ÚLinearÚhidden_sizeÚnum_attention_headsÚhead_dimÚq_projÚnum_key_value_headsÚk_projÚv_projÚo_proj)Úselfr1   r2   Ú	__class__s      €r-   r8   zJambaAttention.__init__4   sÃ   ø€ Ü‰Ñ˜ Ô+Ü—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^ÐejÔkˆŒÜ—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^ÐejÔkˆŒÜ—i‘i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Ñ4^ÐejÔkˆŒÜ—i‘i × :Ñ :¸T¿]¹]Ñ JÈF×L^ÑL^ÐejÔkˆ�r,   NÚhidden_statesÚattention_maskÚpast_key_valuesÚkwargsÚreturnc                 óÞ  — |j                   d d }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }	|� |j                  ||	| j                  «      \  }}	t        j                  | j                  j                  t        «      }
 |
| |||	|f| j                  sdn| j                  | j                   dœ|¤Ž\  }} |j"                  g |¢d‘­Ž j%                  «       }| j'                  |«      }||fS )Néÿÿÿÿr#   r   ç        )ÚdropoutÚscaling)Úshaper<   r=   ÚviewÚ	transposer?   r@   Úupdater2   r   Úget_interfacer1   Ú_attn_implementationr   ÚtrainingÚattention_dropoutrM   ÚreshapeÚ
contiguousrA   )rB   rD   rE   rF   rG   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfaceÚattn_outputÚattn_weightss                r-   ÚforwardzJambaAttention.forward;   sq  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆàÐ&Ø'6×'=Ñ'=¸jÈ,ÐX\×XfÑXfÓ'gÑ$ˆJ˜ä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}š}‘C°$×2HÑ2HØ—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r,   ©NN)r(   r)   r*   r$   Úintr8   ÚtorchÚTensorr   r   r   Útupler`   Ú__classcell__©rC   s   @r-   r0   r0   3   s„   ø„ ðl˜{ð l°sõ lð /3Ø(,ñ	")à—|‘|ð")ð Ÿ™ tÑ+ð")ð  ™ð	")ð
 Ð+Ñ,ð")ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷")r,   r0   c                   óô   ‡ — e Zd ZdZdefˆ fd„Z	 	 ddej                  dedz  dej                  dz  fd„Z
ddedz  dej                  dz  fd	„Z ed
«      	 	 ddedz  dej                  dz  fd„«       Zˆ xZS )ÚJambaMambaMixeruƒ  
    Compute âˆ†, A, B, C, and D the state space parameters and compute the `contextualized_states`.
    A, D are input independent (see Mamba paper [1] Section 3.5.2 "Interpretation of A" for why A isn't selective)
    âˆ†, B, C are input-dependent (this is a key difference between Mamba and the linear time invariant S4,
    and is why Mamba is called **selective** state spaces)
    r1   c           	      óÔ  •— t         ‰| �  «        || _        || _        |j                  | _        |j
                  | _        |j                  | _        |j                  |j                  z  | _
        |j                  | _        |j                  | _        |j                  | _        t#        j$                  | j                  | j                  | j                  | j                  | j                  | j                  dz
  ¬«      | _        |j(                  | _        t,        |j(                     | _        t#        j0                  | j                  | j                  dz  | j                   ¬«      | _        t#        j0                  | j                  | j                  | j                  dz  z   d¬«      | _        t#        j0                  | j                  | j                  d¬«      | _        t9        j:                  d| j                  dz   «      d d d …f   }|j=                  | j                  d«      j?                  «       }t#        j@                  t9        jB                  |«      «      | _"        t#        j@                  t9        jF                  | j                  «      «      | _$        t#        j0                  | j                  | j                  | j                   ¬«      | _%        tM        | j                  |jN                  ¬«      | _(        tM        | j                  |jN                  ¬«      | _)        tM        | j                  |jN                  ¬«      | _*        tW        d	«      }tY        |d
d «      a-tY        |dd «      a.tW        d«      }t_        |d¬«      a0tY        |dd «      a1tY        |dd «      a2tg        t`        tb        t\        tZ        td        f«      a4th        stj        jm                  d«       |jn                  |   | _8        y )Nr#   )Úin_channelsÚout_channelsr6   Úkernel_sizeÚgroupsÚpaddingr   r5   FTrJ   ©Úepszcausal-conv1dÚcausal_conv1d_updateÚcausal_conv1d_fnz	mamba-ssmz8ops.triton.selective_state_update.selective_state_update)Úchained_pathÚselective_scan_fnÚmamba_inner_fna  The fast path is not available because on of `(selective_state_update, selective_scan_fn, causal_conv1d_fn, causal_conv1d_update, mamba_inner_fn)` is None. To install follow https://github.com/state-spaces/mamba/#installation and https://github.com/Dao-AILab/causal-conv1d.)9r7   r8   r1   r2   r:   Úmamba_d_stateÚssm_state_sizeÚmamba_d_convÚconv_kernel_sizeÚmamba_expandÚintermediate_sizeÚmamba_dt_rankÚtime_step_rankÚmamba_conv_biasÚuse_conv_biasÚmamba_proj_biasÚuse_biasr   ÚConv1dÚconv1dÚ
hidden_actÚ
activationr   Úactr9   Úin_projÚx_projÚdt_projrc   ÚarangeÚexpandrW   Ú	ParameterÚlogÚA_logÚonesÚDÚout_projr&   Úrms_norm_epsÚdt_layernormÚb_layernormÚc_layernormr
   Úgetattrrr   rs   r   Úselective_state_updateru   rv   ÚallÚis_fast_path_availableÚloggerÚwarning_onceÚlayer_typesÚ
layer_type)rB   r1   r2   ÚAÚcausal_conv1dÚ	mamba_ssmrC   s         €r-   r8   zJambaMambaMixer.__init__h   s  ø€ Ü‰ÑÔØˆŒØ"ˆŒØ!×-Ñ-ˆÔØ$×2Ñ2ˆÔØ &× 3Ñ 3ˆÔØ!'×!4Ñ!4°v×7IÑ7IÑ!IˆÔØ$×2Ñ2ˆÔØ#×3Ñ3ˆÔØ×.Ñ.ˆŒÜ—i‘iØ×.Ñ.Ø×/Ñ/Ø×#Ñ#Ø×-Ñ-Ø×)Ñ)Ø×)Ñ)¨AÑ-ô
ˆŒð !×+Ñ+ˆŒÜ˜&×+Ñ+Ñ,ˆŒô —y‘y ×!1Ñ!1°4×3IÑ3IÈAÑ3MÐTX×TaÑTaÔbˆŒä—i‘i × 6Ñ 6¸×8KÑ8KÈd×NaÑNaÐdeÑNeÑ8eÐlqÔrˆŒä—y‘y ×!4Ñ!4°d×6LÑ6LÐSWÔXˆŒô �L‰L˜˜D×/Ñ/°!Ñ3Ó4°Tº1°WÑ=ˆØ�H‰H�T×+Ñ+¨RÓ0×;Ñ;Ó=ˆä—\‘\¤%§)¡)¨A£,Ó/ˆŒ
Ü—‘œeŸj™j¨×)?Ñ)?Ó@ÓAˆŒÜŸ	™	 $×"8Ñ"8¸$×:JÑ:JÐQU×Q^ÑQ^Ô_ˆŒä(¨×)<Ñ)<À&×BUÑBUÔVˆÔÜ'¨×(;Ñ(;À×ATÑATÔUˆÔÜ'¨×(;Ñ(;À×ATÑATÔUˆÔô )¨Ó9ˆÜ& }Ð6LÈdÓSÐÜ" =Ð2DÀdÓKÐô % [Ó1ˆ	Ü!8ØÐ$^ô"
Ðô $ IÐ/BÀDÓIÐÜ  Ð,<¸dÓCˆô "%Ü#Ô%6Ô8HÔJ^Ô`nÐoó"
Ðõ &Ü×ÑðRôð
 !×,Ñ,¨YÑ7ˆ�r,   NrD   Úcache_paramsrE   c                 ó¢	  — |j                   \  }}}|d uxr" |j                  | j                  «      xr |dk(  }| j                  |«      j	                  dd«      }|j                  dd¬«      \  }}	|�||j                  d«      z  }| j                  j                  j                  | j                  j                  j                  d«      | j                  j                  j                  d«      «      }
|rrt        |j                  d«      |j                  | j                     j                  d   |
| j                  j                  | j                   «      }|j                  d«      }n‡|�Xt"        j$                  j'                  || j(                  |j                   d   z
  df«      }|j+                  || j                  «       t-        ||
| j                  j                  | j                   ¬«      }|�||j                  d«      z  }| j/                  |j	                  dd«      «      }t1        j2                  || j4                  | j6                  | j6                  gd¬«      \  }}}| j9                  |«      }| j;                  |«      }| j=                  |«      }| j>                  j                  j@                  }t1        jB                  «       5  t1        jD                  | j>                  j                  j@                  «      | j>                  j                  _         d d d «       | j?                  |«      j	                  dd«      }t1        jB                  «       5  || j>                  j                  _         d d d «       t1        jF                  | jH                  jK                  «       «       }|�|jK                  «       nd }|rjtM        |j                  | j                     jN                  d   |d   |d   ||d d …df   |d d …df   | jP                  |	d   |d¬	«
      j                  d«      }nptS        ||||j	                  dd«      |j	                  dd«      | jP                  jK                  «       |	|dd¬
«
      \  }}|�|�|jU                  || j                  «       | jW                  |j	                  dd«      «      }|S # 1 sw Y   �Œ¤xY w# 1 sw Y   �ŒXxY w)Nr#   r   ©Údimr   rJ   )r†   ).r   T)Údt_softplus)Údelta_softplusÚreturn_last_state),rN   Úhas_previous_stater2   rˆ   rP   ÚchunkÚ	unsqueezer„   ÚweightrO   Úsizerr   ÚsqueezeÚlayersÚconv_statesr6   r†   r   Ú
functionalÚpadrz   Úupdate_conv_staters   r‰   rc   Úsplitr~   rx   r”   r•   r–   rŠ   ÚdataÚno_gradÚ
zeros_likeÚexpr�   Úfloatr˜   Úrecurrent_statesr‘   ru   Úupdate_recurrent_stater’   )rB   rD   r¢   rE   Ú
batch_sizeÚseq_lenÚ_Úuse_precomputed_statesÚprojected_statesÚgateÚconv_weightsr°   Ússm_parametersÚ	time_stepÚBÚCÚtime_proj_biasÚdiscrete_time_steprŸ   Úscan_outputsÚ	ssm_stateÚcontextualized_statess                         r-   Úcuda_kernels_forwardz$JambaMambaMixer.cuda_kernels_forward­   sB  € ð "/×!4Ñ!4Ñˆ
�G˜Qà Ð$Òi¨×)HÑ)HÈÏÉÓ)XÒiÐ]dÐhiÑ]ið 	ð  Ÿ<™<¨Ó6×@Ñ@ÀÀAÓFÐð /×4Ñ4°Q¸AÐ4Ó>Ñˆ�tàÐ%Ø)¨N×,DÑ,DÀQÓ,GÑGˆMð —{‘{×)Ñ)×.Ñ.¨t¯{©{×/AÑ/A×/FÑ/FÀqÓ/IÈ4Ï;É;×K]ÑK]×KbÑKbÐcdÓKeÓfˆÙ!Ü0Ø×%Ñ% bÓ)Ø×#Ñ# D§N¡NÑ3×?Ñ?ÀÑBØØ—‘× Ñ Ø—‘óˆMð *×3Ñ3°BÓ7‰MàÐ'Ü Ÿm™m×/Ñ/°À×@UÑ@UÐXe×XkÑXkÐlnÑXoÑ@oÐqrÐ?sÓt�Ø×.Ñ.¨{¸D¿N¹NÔKÜ,¨]¸LÈ$Ï+É+×JZÑJZÐgk×gvÑgvÔwˆMàÐ%Ø)¨N×,DÑ,DÀQÓ,GÑGˆMð Ÿ™ ]×%<Ñ%<¸QÀÓ%BÓCˆÜŸ+™+Ø˜T×0Ñ0°$×2EÑ2EÀt×GZÑGZÐ[Ðacô
‰ˆ	�1�að ×%Ñ% iÓ0ˆ	Ø×Ñ˜QÓˆØ×Ñ˜QÓˆð Ÿ™×*Ñ*×/Ñ/ˆÜ�]‰]‹_ñ 	NÜ%*×%5Ñ%5°d·l±l×6GÑ6G×6LÑ6LÓ%MˆD�L‰L×ÑÔ"÷	Nà!Ÿ\™\¨)Ó4×>Ñ>¸qÀ!ÓDÐÜ�]‰]‹_ñ 	4Ø%3ˆD�L‰L×ÑÔ"÷	4ô �Y‰Y�t—z‘z×'Ñ'Ó)Ó*Ð*ˆà3AÐ3M˜×-Ñ-Ô/ÐSWˆÙ!Ü1Ø×#Ñ# D§N¡NÑ3×DÑDÀQÑGØ˜fÑ%Ø" 6Ñ*ØØ’!�Q�$‘Ø’!�Q�$‘Ø—‘Ø�V‘ØØ ô÷ ‰i˜‹mñ ô '8ØØ"ØØ—‘˜A˜qÓ!Ø—‘˜A˜qÓ!Ø—‘—‘“ØØØ#Ø"&ô'Ñ#ˆL˜)ð Ð$¨Ð)AØ×3Ñ3°I¸t¿~¹~ÔNð !%§¡¨l×.DÑ.DÀQÈÓ.JÓ KÐà$Ð$÷S	Nñ 	Nú÷	4ñ 	4ús   ËAR7ÍSÒ7SÓSc           	      ób
  — |j                   \  }}}|j                  }| j                  |«      j                  dd«      }|j	                  dd¬«      \  }	}
|�|	|j                  d«      z  }	|�P|j                  | j                  «      r5|j                  | j                     j                  d   j                  «       }n9t        j                  || j                  | j                  f|	j                  |¬«      }|��m|j                  | j                  «      rÀ|dk(  r»|j!                  |	| j                  «      d| j"                   d …f   }t        j$                  || j&                  j(                  d d …dd d …f   z  d¬«      }	| j*                  r|	| j&                  j,                  z  }	| j/                  |	«      j1                  |«      j                  d«      }	n¹t2        j4                  j7                  |	| j"                  |	j                   d   z
  df«      }|j!                  || j                  «      d| j"                   d …f   }| j/                  | j'                  |	«      dd |…f   «      }	n'| j/                  | j'                  |	«      dd |…f   «      }	|�|	|j                  d«      z  }	| j9                  |	j                  dd«      «      }t        j:                  || j<                  | j                  | j                  gd¬«      \  }}}| j?                  |«      }| jA                  |«      }| jC                  |«      }| jE                  |«      }t2        j4                  jG                  |«      j                  dd«      }t        jH                  | jJ                  jM                  «       «       }t        jH                  |d d d …d d d …f   |d d …d d …d d …d f   z  «      }|d d …d d …d d …d f   |d d …d d d …d d …f   jM                  «       z  }||	d d …d d …d d …d f   jM                  «       z  }g }tO        |«      D ]}  }|d d …d d …|d d …f   |z  |d d …d d …|d d …f   z   }t        jP                  |j1                  |«      |d d …|d d …f   j                  d«      «      }|jS                  |d d …d d …df   «       Œ t        jT                  |d¬«      }||	| jV                  d d d …d f   z  z   }|| j/                  |
«      z  }|�|jY                  || j                  «       | j[                  |j                  dd«      «      }|S )Nr#   r   r¤   r   )ÚdeviceÚdtype.rJ   ).rN   rÏ   rˆ   rP   rª   r«   r©   r2   r¯   rº   Úclonerc   Úzerosr|   rx   rÎ   r³   rz   Úsumr„   r¬   r€   r6   r‡   Útor   r±   r²   r‰   r´   r~   r”   r•   r–   rŠ   Úsoftplusr¸   r�   r¹   ÚrangeÚmatmulÚappendÚstackr‘   r»   r’   )rB   Úinput_statesr¢   rE   r¼   r½   r¾   rÏ   rÀ   rD   rÁ   rÊ   Ú
conv_staterÃ   rÄ   rÅ   rÆ   rÈ   rŸ   Ú
discrete_AÚ
discrete_BÚdeltaB_urÉ   ÚiÚscan_outputrË   s                             r-   Úslow_forwardzJambaMambaMixer.slow_forward  s¿  € Ø!-×!3Ñ!3Ñˆ
�G˜QØ×"Ñ"ˆàŸ<™<¨Ó5×?Ñ?ÀÀ1ÓEÐØ.×4Ñ4°Q¸AÐ4Ó>Ñˆ�tàÐ%Ø)¨N×,DÑ,DÀQÓ,GÑGˆMàÐ#¨×(GÑ(GÈÏÉÔ(Wà$×+Ñ+¨D¯N©NÑ;×LÑLÈQÑO×UÑUÓW‰IäŸ™Ø˜T×3Ñ3°T×5HÑ5HÐIØ$×+Ñ+°5ôˆIð Ñ#Ø×.Ñ.¨t¯~©~Ô>À7ÈaÂ<Ø)×;Ñ;¸MÈ4Ï>É>ÓZÐ[^Ðae×avÑavÐ`vÑ`wÐ[wÑx�
Ü %§	¡	¨*°t·{±{×7IÑ7IÊ!ÈQÒPQÈ'Ñ7RÑ*RÐXZÔ [�Ø×%Ò%Ø! T§[¡[×%5Ñ%5Ñ5�MØ $§¡¨Ó 7× :Ñ :¸5Ó A× KÑ KÈBÓ O‘äŸ]™]×.Ñ.Ø!Ø×*Ñ*¨]×-@Ñ-@ÀÑ-DÑDÀaÐHó�
ð *×;Ñ;¸JÈÏÉÓWÐX[Ð^b×^sÑ^sÐ]sÑ]tÐXtÑu�
Ø $§¡¨¯©°]Ó)CÀCÈÈ'ÈÀMÑ)RÓ S‘à ŸH™H T§[¡[°Ó%?ÀÀXÀgÀXÀÑ%NÓOˆMàÐ%Ø)¨N×,DÑ,DÀQÓ,GÑGˆMð Ÿ™ ]×%<Ñ%<¸QÀÓ%BÓCˆÜŸ+™+Ø˜T×0Ñ0°$×2EÑ2EÀt×GZÑGZÐ[Ðacô
‰ˆ	�1�að ×%Ñ% iÓ0ˆ	Ø×Ñ˜QÓˆØ×Ñ˜QÓˆà!Ÿ\™\¨)Ó4ÐÜŸ]™]×3Ñ3Ð4FÓG×QÑQÐRSÐUVÓWÐô �Y‰Y�t—z‘z×'Ñ'Ó)Ó*Ð*ˆÜ—Y‘Y˜q ¢q¨$²Ð!1Ñ2Ð5GÊÊ1ÊaÐQUÈÑ5VÑVÓWˆ
Ø'ªª1ªa°¨Ñ6¸º1¸dÂAÂq¸=Ñ9I×9OÑ9OÓ9QÑQˆ
Ø ªa²²A°t¨mÑ <× BÑ BÓ DÑDˆàˆÜ�w“ò 	6ˆAØ"¢1¢a¨ªA :Ñ.°Ñ:¸XÂaÊÈAÊqÀjÑ=QÑQˆIÜŸ,™, y§|¡|°EÓ':¸AºaÀÂA¸g¹J×<PÑ<PÐQSÓ<TÓUˆKØ×Ñ ªAªq°!¨GÑ 4Õ5ð	6ô —k‘k ,°BÔ7ˆØ! ]°T·V±V¸DÂ!ÀT¸MÑ5JÑ%JÑKˆØ" T§X¡X¨d£^Ñ3ˆàÐ#Ø×/Ñ/°	¸4¿>¹>ÔJð !%§¡¨k×.CÑ.CÀAÀqÓ.IÓ JÐØ$Ð$r,   r„   c                 óV  — | j                   j                  rXt        r,d| j                  j                  j
                  j                  vr&t        j                  d«       d| j                   _        | j                   j                  r| j                  |||«      S | j                  |||«      S )NÚcudazÔFast Mamba kernels are not available. Make sure that they are installed and that the mamba module is on a CUDA device. Turning off the fast path `config.use_mamba_kernels=False` and falling back to the slow path.F)r1   Úuse_mamba_kernelsrš   r‰   r¬   rÎ   Útyper›   rœ   rÌ   rà   )rB   rD   r¢   rE   s       r-   r`   zJambaMambaMixer.forward`  sŠ   € ð �;‰;×(Ò(Ý&¨&¸¿¹×8JÑ8J×8QÑ8Q×8VÑ8VÑ*Vä×ÑðVôð
 -2ˆD�K‰KÔ)à�;‰;×(Ò(Ø×,Ñ,¨]¸LÈ.ÓYÐYØ× Ñ  °¸nÓMÐMr,   ra   )r(   r)   r*   Ú__doc__r$   r8   rc   rd   r   Ú
LongTensorrÌ   rà   r   r`   rf   rg   s   @r-   ri   ri   `   sÈ   ø„ ñðC8˜{õ C8ðP &*Ø26ñ	c%à—|‘|ðc%ð ˜d‘lðc%ð ×(Ñ(¨4Ñ/ó	c%ñLJ%°u¸t±|ð J%Ð\a×\lÑ\lÐosÑ\só J%ñZ ˜HÓ%ð &*Ø26ñ	Nð ˜d‘lðNð ×(Ñ(¨4Ñ/ò	Nó &ôNr,   ri   c                   ó   — e Zd Zy)ÚJambaMLPNr'   r+   r,   r-   rè   rè   v  r.   r,   rè   c                   ó   — e Zd Zy)ÚJambaExpertsNr'   r+   r,   r-   rê   rê   z  r.   r,   rê   c                   óf   ‡ — e Zd ZdZdefˆ fd„Zd„ Zdej                  dej                  fd„Z	ˆ xZ
S )ÚJambaSparseMoeBlockaÈ  
    This implementation is
    strictly equivalent to standard MoE with full capacity (no
    dropped tokens). It's faster since it formulates MoE operations
    in terms of block-sparse operations to accommodate imbalanced
    assignments of tokens to experts, whereas standard MoE either
    (1) drop tokens at the cost of reduced performance or (2) set
    capacity factor to number of experts and thus waste computation
    and memory on padding.
    r1   c                 ó,  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        |j                  | _        t        j                  | j                  | j                  d¬«      | _        t        |«      | _        y r4   )r7   r8   r:   Ú
hidden_dimr|   Úffn_dimÚnum_expertsÚnum_experts_per_tokÚtop_kr   r9   Úrouterrê   Úexperts©rB   r1   rC   s     €r-   r8   zJambaSparseMoeBlock.__init__Š  sm   ø€ Ü‰ÑÔØ ×,Ñ,ˆŒØ×/Ñ/ˆŒØ!×-Ñ-ˆÔØ×/Ñ/ˆŒ
ä—i‘i §¡°×1AÑ1AÈÔNˆŒÜ# FÓ+ˆ�r,   c                 óú   — t         j                  j                  j                  |dt         j                  ¬«      }t        j
                  || j                  d¬«      \  }}||j                  |j                  «      fS )NrJ   )r¥   rÏ   r¤   )	rc   r   r±   Úsoftmaxr¹   Útopkrò   rÓ   rÏ   )rB   rD   Úrouter_logitsÚrouting_weightsÚtop_k_weightsÚtop_k_indexs         r-   Úroute_tokens_to_expertsz+JambaSparseMoeBlock.route_tokens_to_experts”  sb   € ÜŸ(™(×-Ñ-×5Ñ5°mÈÔSX×S^ÑS^Ð5Ó_ˆÜ%*§Z¡Z°ÀÇÁÐQSÔ%TÑ"ˆ�{Ø˜M×,Ñ,¨]×-@Ñ-@ÓAÐAÐAr,   rD   rH   c                 óâ   — |j                   \  }}}|j                  d|«      }| j                  |«      }| j                  ||«      \  }}| j	                  |||«      }|j                  |||«      }|S )NrJ   )rN   rO   ró   rý   rô   rV   )rB   rD   r¼   Úsequence_lengthrî   rù   rü   rû   s           r-   r`   zJambaSparseMoeBlock.forward™  sx   € Ø2?×2EÑ2EÑ/ˆ
�O ZØ%×*Ñ*¨2¨zÓ:ˆØŸ™ MÓ2ˆØ%)×%AÑ%AÀ-ÐQ^Ó%_Ñ"ˆ�]ØŸ™ ]°KÀÓOˆØ%×-Ñ-¨j¸/È:ÓVˆØÐr,   )r(   r)   r*   rå   r$   r8   rý   rc   rd   r`   rf   rg   s   @r-   rì   rì   ~  s5   ø„ ñ	ð,˜{õ ,òBð
 U§\¡\ð °e·l±l÷ r,   rì   c                   óÄ   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 ddej                  dej                  dz  dej                  dz  de	dz  d	e
dz  d
ee   dej                  fd„Zˆ xZS )ÚJambaAttentionDecoderLayerr1   r2   c                 óR  •— t         ‰| �  «        |j                  r|j                  |   nd}t        ||«      | _        |dkD  rt
        nt        } ||«      | _        t        |j                  |j                  ¬«      | _        t        |j                  |j                  ¬«      | _        y )Nr#   rp   )r7   r8   Úlayers_num_expertsr0   Ú	self_attnrì   rè   Úfeed_forwardr&   r:   r“   Úinput_layernormÚpre_ff_layernorm©rB   r1   r2   rð   Úffn_layer_classrC   s        €r-   r8   z#JambaAttentionDecoderLayer.__init__¤  sˆ   ø€ Ü‰ÑÔØ>D×>WÒ>W�f×/Ñ/°	Ò:Ð]^ˆÜ'¨°	Ó:ˆŒà1<¸q²Õ-ÄhˆÙ+¨FÓ3ˆÔÜ+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔÜ ,¨V×-?Ñ-?ÀV×EXÑEXÔ YˆÕr,   NrD   rE   Úposition_idsrF   Ú	use_cacherG   rH   c           	      ó¾   — |}| j                  |«      } | j                  d|||||dœ|¤Ž\  }}||z   }|}| j                  |«      }| j                  |«      }||z   }|S )N)rD   rE   r
  rF   r  r+   )r  r  r  r  )	rB   rD   rE   r
  rF   r  rG   Úresidualr¾   s	            r-   r`   z"JambaAttentionDecoderLayer.forward®  s�   € ð !ˆØ×,Ñ,¨]Ó;ˆØ)˜4Ÿ>™>ð 
Ø'Ø)Ø%Ø+Øñ
ð ñ
Ñˆ�qð ! =Ñ0ˆØ ˆØ×-Ñ-¨mÓ<ˆØ×)Ñ)¨-Ó8ˆØ  =Ñ0ˆØÐr,   )NNNF)r(   r)   r*   r$   rb   r8   rc   rd   ræ   r   Úboolr   r   ÚFloatTensorr`   rf   rg   s   @r-   r  r  £  sœ   ø„ ðZ˜{ð Z°sõ Zð /3Ø04Ø(,Ø!&ñà—|‘|ðð Ÿ™ tÑ+ðð ×&Ñ&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð Ð+Ñ,ðð 
×	Ñ	÷r,   r  c                   ó¸   ‡ — e Zd Zdedefˆ fd„Z	 	 	 ddej                  dej                  dz  dej                  dz  de	dz  d	e
e   d
ej                  fd„Zˆ xZS )ÚJambaMambaDecoderLayerr1   r2   c                 óT  •— t         ‰| �  «        |j                  r|j                  |   nd}t        ||¬«      | _        |dkD  rt
        nt        } ||«      | _        t        |j                  |j                  ¬«      | _        t        |j                  |j                  ¬«      | _        y )Nr#   )r1   r2   rp   )r7   r8   r  ri   Úmambarì   rè   r  r&   r:   r“   r  r  r  s        €r-   r8   zJambaMambaDecoderLayer.__init__Ê  sˆ   ø€ Ü‰ÑÔØ>D×>WÒ>W�f×/Ñ/°	Ò:Ð]^ˆÜ$¨F¸iÔHˆŒ
Ø1<¸q²Õ-ÄhˆÙ+¨FÓ3ˆÔÜ+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔÜ ,¨V×-?Ñ-?ÀV×EXÑEXÔ YˆÕr,   NrD   rE   r
  rF   rG   rH   c                 ó°   — |}| j                  |«      }| j                  |||¬«      }||z   }|}| j                  |«      }| j                  |«      }||z   }|S )N)rD   r¢   rE   )r  r  r  r  )rB   rD   rE   r
  rF   rG   r  s          r-   r`   zJambaMambaDecoderLayer.forwardÓ  sv   € ð !ˆØ×,Ñ,¨]Ó;ˆØŸ
™
Ø'Ø(Ø)ð #ó 
ˆð
 ! =Ñ0ˆØ ˆØ×-Ñ-¨mÓ<ˆØ×)Ñ)¨-Ó8ˆØ  =Ñ0ˆØÐr,   )NNN)r(   r)   r*   r$   rb   r8   rc   rd   ræ   r   r   r   r  r`   rf   rg   s   @r-   r  r  É  s‹   ø„ ðZ˜{ð Z°sõ Zð /3Ø04Ø(,ñà—|‘|ðð Ÿ™ tÑ+ðð ×&Ñ&¨Ñ-ð	ð
  ™ðð Ð+Ñ,ðð 
×	Ñ	÷r,   r  )Ú	attentionr  c                   ó¬   ‡ — e Zd ZU eed<   dZdZddgZdgZdZ	dZ
dZdZeege eej$                  d¬«      d	œZ ej*                  «       ˆ fd
„«       Zˆ xZS )ÚJambaPreTrainedModelr1   ÚmodelTr  r  rF   ró   )Ú
layer_name)rD   Ú
attentionsrù   c                 óŒ  •— t         ‰| �  |«       t        |t        «      r§t	        j
                  d|j                  dz   «      d d d …f   }|j                  |j                  d«      j                  «       }t        j                  |j                  t	        j                  |«      «       t        j                  |j                  «       y t        |t         «      rmt        j"                  |j$                  d| j&                  j(                  ¬«       t        j"                  |j*                  d| j&                  j(                  ¬«       y y )Nr#   rJ   rK   )ÚmeanÚstd)r7   Ú_init_weightsÚ
isinstanceri   rc   r‹   rx   rŒ   r|   rW   ÚinitÚcopy_r�   rŽ   Úones_r‘   rê   Únormal_Úgate_up_projr1   Úinitializer_rangeÚ	down_proj)rB   ÚmodulerŸ   rC   s      €r-   r  z"JambaPreTrainedModel._init_weightsý  sÖ   ø€ ä‰Ñ˜fÔ%Ü�fœoÔ.Ü—‘˜Q × 5Ñ 5¸Ñ 9Ó:¸4Â¸7ÑCˆAØ—‘˜×1Ñ1°2Ó6×AÑAÓCˆAÜ�J‰J�v—|‘|¤U§Y¡Y¨q£\Ô2Ü�J‰J�v—x‘xÕ Ü˜¤Ô-Ü�L‰L˜×,Ñ,°3¸D¿K¹K×<YÑ<YÕZÜ�L‰L˜×)Ñ)°¸¿¹×9VÑ9VÖWð .r,   )r(   r)   r*   r$   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_is_statefulÚ_can_compile_fullgraphr  r  r0   r   r   r9   Ú_can_record_outputsrc   r¶   r  rf   rg   s   @r-   r  r  í  s€   ø… ØÓØÐØ&*Ð#Ø5Ð7OÐPÐØ#4Ð"5ÐØÐØ€NØ€LØ!Ðà4Ð6LÐMØ$Ù'¨¯	©	¸hÔGñÐð €U‡]�]ƒ_ó	Xó ô	Xr,   r  c                   óò   ‡ — e Zd Zdefˆ fd„Zeee	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dedz  dej                  dz  d	edz  d
ee   defd„«       «       «       Zˆ xZS )Ú
JambaModelr1   c                 ó   •— t         ‰| �  |«       |j                  | _        |j                  | _        t        j                  |j                  |j                  | j                  «      | _        g }t        |j                  «      D ]1  }t        |j                  |      }|j                   |||¬«      «       Œ3 t        j                  |«      | _        t!        |j                  |j"                  ¬«      | _        d| _        | j)                  «        y )N)r2   rp   F)r7   r8   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr:   Úembed_tokensrÕ   Únum_hidden_layersÚALL_DECODER_LAYER_TYPESÚlayers_block_typer×   Ú
ModuleListr¯   r&   r“   Úfinal_layernormÚgradient_checkpointingÚ	post_init)rB   r1   Údecoder_layersrÞ   Úlayer_classrC   s        €r-   r8   zJambaModel.__init__  sÝ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸL™L¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔØˆÜ�v×/Ñ/Ó0ò 	DˆAÜ1°&×2JÑ2JÈ1Ñ2MÑNˆKØ×!Ñ!¡+¨fÀÔ"BÕCð	Dô —m‘m NÓ3ˆŒä+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔà&+ˆÔ#à�‰Õr,   NÚ	input_idsrE   r
  rF   Úinputs_embedsr  rG   rH   c           	      ót  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|r|€t        | j                  ¬«      }|€V|�|j	                  «       nd}t        j                  |j                  d   |j                  ¬«      |z   }|j                  d«      }t        |x}	t        «      s)| j                  ||||dœ}
t        d
i |
¤Žt        d
i |
¤Ždœ}	|}t        | j                  «      D ]-  \  }} ||f|	| j                  j                   |      |||dœ|¤Ž}Œ/ | j#                  |«      }t%        ||¬	«      S )Nz:You must specify exactly one of input_ids or inputs_embeds)r1   r   r#   )rÎ   )r1   rD  rE   rF   r
  )Úfull_attentionÚlinear_attention)rE   r
  rF   r  )Úlast_hidden_staterF   r+   )Ú
ValueErrorr9  r	   r1   Úget_seq_lengthrc   r‹   rN   rÎ   r«   r  Údictr   r   Ú	enumerater¯   r�   r>  r   )rB   rC  rE   r
  rF   rD  r  rG   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsrD   rÞ   Údecoder_layers                 r-   r`   zJambaModel.forward  ss  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø ×-Ñ-¨iÓ8ˆMá˜Ð0Ü*°$·+±+Ô>ˆOàÐØCRÐC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<™<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ô\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLä°Ð?Ð-ÄÔFð Ÿ+™+Ø!.Ø"0Ø#2Ø ,ñˆKô #5Ñ"C°{Ñ"CÜ$CÑ$RÀkÑ$Rñ#Ðð &ˆÜ )¨$¯+©+Ó 6ò 	ÑˆAˆ}Ù)Øðà2°4·;±;×3JÑ3JÈ1Ñ3MÑNØ)Ø /Ø#ñð ñ‰Mð	ð ×,Ñ,¨]Ó;ˆä%Ø+Ø+ô
ð 	
r,   )NNNNNN)r(   r)   r*   r$   r8   r   r   r   rc   ræ   rd   r   r  r  r   r   r   r`   rf   rg   s   @r-   r3  r3  
  sÍ   ø„ ð˜{õ ð$  ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ñ6
à×#Ñ# dÑ*ð6
ð Ÿ™ tÑ+ð6
ð ×&Ñ&¨Ñ-ð	6
ð
  ™ð6
ð ×(Ñ(¨4Ñ/ð6
ð ˜$‘;ð6
ð Ð+Ñ,ð6
ð 
 ò6
ó ó ó  ô6
r,   r3  c                   ó$  ‡ — e Zd Zdefˆ fd„Z	 	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dedz  dej                  dz  d	ej                  dz  d
e
dz  de
dz  deej                  z  dee   defˆ fd„Zˆ xZS )ÚJambaForCausalLMr1   c                 óF   •— t         ‰| �  |«       |j                  | _        y )N)r7   r8   rð   rõ   s     €r-   r8   zJambaForCausalLM.__init__[  s   ø€ Ü‰Ñ˜Ô Ø!×-Ñ-ˆÕr,   NrC  rE   r
  rF   rD  Úlabelsr  Úoutput_router_logitsÚlogits_to_keeprG   rH   c
           
      ó2   •— t        ‰| �  ||||||||	fi |
¤ŽS )aj  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, JambaForCausalLM

        >>> model = JambaForCausalLM.from_pretrained("ai21labs/Jamba-v0.1")
        >>> tokenizer = AutoTokenizer.from_pretrained("ai21labs/Jamba-v0.1")

        >>> prompt = "Hey, are you conscious? Can you talk to me?"
        >>> inputs = tokenizer(prompt, return_tensors="pt")

        >>> # Generate
        >>> generate_ids = model.generate(inputs.input_ids, max_length=30)
        >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
        "Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
        ```)r7   r`   )rB   rC  rE   r
  rF   rD  rT  r  rU  rV  rG   rC   s              €r-   r`   zJambaForCausalLM.forward_  s9   ø€ ôF ‰w‰ØØØØØØØØñ

ð ñ

ð 
	
r,   )	NNNNNNNNr   )r(   r)   r*   r$   r8   rc   ræ   rd   r   r  r  rb   r   r   r   r`   rf   rg   s   @r-   rR  rR  Z  sò   ø„ ð.˜{õ .ð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø,0Ø-.ñ-
à×#Ñ# dÑ*ð-
ð Ÿ™ tÑ+ð-
ð ×&Ñ&¨Ñ-ð	-
ð
  ™ð-
ð ×(Ñ(¨4Ñ/ð-
ð × Ñ  4Ñ'ð-
ð ˜$‘;ð-
ð # T™kð-
ð ˜eŸl™lÑ*ð-
ð Ð+Ñ,ð-
ð 
#÷-
ñ -
r,   rR  c                   ó   — e Zd Zy)ÚJambaForSequenceClassificationNr'   r+   r,   r-   rY  rY  �  r.   r,   rY  )rR  rY  r3  r  )FÚcollections.abcr   rc   r   Ú r   r   Úactivationsr   Úcache_utilsr   r	   Úintegrationsr
   Úintegrations.accelerater   Úmasking_utilsr   r   Úmodeling_layersr   r   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   Úutils.import_utilsr   Úutils.output_capturingr   r   Úllama.modeling_llamar   r   r   Úmistral.modeling_mistralr    Úmixtral.modeling_mixtralr!   r"   Úconfiguration_jambar$   Ú
get_loggerr(   r›   r&   r0   ÚModuleri   rè   rê   rì   r  r  r;  r  r3  rR  rY  Ú__all__r+   r,   r-   ú<module>rp     s6  ðõ& %ã Ý å &Ý !ß .Ý ,Ý =ß Pß [ß Qß FÝ &ß @Ñ @Ý 7Ý 9ß Eß XÑ XÝ 1ß IÝ ,ð 
ˆ×	Ñ	˜HÓ	%€ô	�<ô 	ô*)�^ô *)ôZSN�b—i‘iô SNôl	ˆzô 	ô	�>ô 	ô"˜"Ÿ)™)ô "ôJ#Ð!;ô #ôLÐ7ô ðB )CÐMcÑdÐ ôX˜?ô Xð: ôL
Ð%ó L
ó ðL
ô^2
Ð)ô 2
ôj	Ð%EÐG[ô 	ò g�r,   