+
    œ°³jls  ã                   ó´  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIHt ^RIHt	 ^RI
Ht ^RIHtHt ^RIHtHt ^R	IHtHt ^R
IHtHt ^RIHt ^RIHtHtHtHt ^RIH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t&H't' ^RI(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1 ^RI2H3t3 ]Ph                  ! ]54      t6 ! R R]P                  Pn                  4      t8 ! R R]04      t9 ! R R]&4      t: ! R R])4      t; ! R R]$4      t< ! R R]Pn                  4      t= ! R R ]*4      t> ! R! R"].4      t? ! R# R$]-4      t@] ! R% R&]4      4       tA ! R' R(]/]A4      tB ! R) R*]+4      tC ! R+ R,],4      tD. R-OtER# ).é    N)ÚCallable)Úcycle)Únn)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)Úcreate_causal_maskÚcreate_recurrent_attention_mask)ÚBaseModelOutputWithPastÚ SequenceClassifierOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)Úcapture_outputs)Ú
BambaMixer)ÚLlamaRotaryEmbeddingÚapply_rotary_pos_emb)	ÚZambaAttentionÚZambaAttentionDecoderLayerÚZambaForCausalLMÚZambaForSequenceClassificationÚZambaHybridLayerÚZambaMambaDecoderLayerÚ
ZambaModelÚZambaRMSNormÚeager_attention_forward©ÚZamba2Configc                   ó@   a a€ ] tR t^3t oRV 3R lltRR ltRtVtV ;t# )ÚZamba2RMSNormGatedc                óš   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W0n        W n        R # ©N)	ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilonÚ
group_size)ÚselfÚhidden_sizer0   ÚepsÚ	__class__s   &&&&€Új/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/zamba2/modular_zamba2.pyr*   ÚZamba2RMSNormGated.__init__4   s2   ø€ Ü‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #ÔØ$Žó    c                ó”  € VP                   pVP                  \        P                  4      pVeD   V\        P
                  P                  VP                  \        P                  4      4      ,          pVP                  Ev rEWPP                  ,          pVP                  ! . VOVNV P                  N5!  pVP                  ^4      P                  RRR7      pV\        P                  ! W€P                  ,           4      ,          pVP                  ! . VOW`P                  ,          N5!  pV P                  VP                  V4      ,          # )NT)Úkeepdiméÿÿÿÿ)ÚdtypeÚtor,   Úfloat32r   Ú
functionalÚsiluÚshaper0   ÚviewÚpowÚmeanÚrsqrtr/   r.   )	r1   Úhidden_statesÚgateÚinput_dtypeÚprefix_dimsÚlast_dimÚgroup_countÚhidden_states_groupÚvariances	   &&&      r5   ÚforwardÚZamba2RMSNormGated.forward:   sÿ   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØÒØ)¬B¯M©M×,>Ñ,>¸t¿w¹wÄuÇ}Á}Ó?UÓ,VÕVˆMØ!.×!4Ñ!4ÑˆØ§/¡/Õ1ˆØ+×0Ò0Ð\°+Ð\¸{Ð\ÈDÏOÉOÓ\ÐØ&×*Ñ*¨1Ó-×2Ñ2°2¸tÐ2ÓDˆØ1´E·K²KÀ×K`ÑK`Õ@`Ó4aÕaÐØ+×0Ò0Ð]°+Ð]¸{Ï_É_Õ?\Ó]ˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r7   )r0   r/   r.   )g�íµ ÷Æ°>r(   ©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r*   rM   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r4   Ú__classdict__s   @@r5   r&   r&   3   s   ù‡ € ÷%÷;ô ;r7   r&   c                   ó   € ] tR t^HtRtR# )ÚZamba2RMSNorm© N©rP   rQ   rR   rS   rT   r[   r7   r5   rZ   rZ   H   ó   † Ûr7   rZ   c                   ó   € ] tR t^LtRtR# )ÚZamba2RotaryEmbeddingr[   Nr\   r[   r7   r5   r_   r_   L   r]   r7   r_   c                   ó\   a a€ ] tR t^Pt oRtRV3R lV 3R llltRV3R lR lltRtVtV ;t	# )ÚZamba2Attentiona*  
Multi-headed attention from 'Attention Is All You Need' paper.

Adapted from transformers.models.mistral.modeling_mistral.MistralAttention:
The input dimension here is attention_hidden_size = 2 * hidden_size, and head_dim = attention_hidden_size // num_heads.
The extra factor of 2 comes from the input being the concatenation of original_hidden_states with the output of the previous (mamba) layer
(see fig. 2 in https://huggingface.co/papers/2405.16712).
Additionally, replaced
attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim) with
attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim/2)
Finally, this attention layer contributes to tied transformer blocks aimed to increasing compute without increasing model size. Because this
layer is tied, un-tied adapters (formally the same as LoRA but used in the base model) modules are added to the q, k, v projectors to increase
expressivity with a small memory overhead (see Fig. 2 of https://huggingface.co/papers/2411.15242).
c          	      ó\   <€ V ^8„  d   QhRS[ RS[R,          RS[R,          RS[R,          /# )é   ÚconfigÚ	layer_idxNÚnum_fwd_mem_blocksÚblock_id©r$   Úint)ÚformatrX   s   "€r5   Ú__annotate__ÚZamba2Attention.__annotate__`   sE   ø€ ÷ '\ñ '\áð'\ñ ˜•:ð'\ñ   $�Jð	'\ñ
 ˜•*ñ'\r7   c           
     ó$  <€ \         SV `  W4       W0n        VP                  V n        W@n        VP                  '       Edœ   \        P                  ! . 4      V n	        \        P                  ! . 4      V n
        \        P                  ! . 4      V n        \        V P                  4       EF0  pWQP                  ,          V8X  Ed…   \        P                  ! \        P                  ! V P                   V P"                  P$                  R R7      \        P                  ! V P"                  P$                  V P                   R R7      4      p\        P                  ! \        P                  ! V P                   V P"                  P$                  R R7      \        P                  ! V P"                  P$                  V P                   R R7      4      p\        P                  ! \        P                  ! V P                   V P"                  P$                  R R7      \        P                  ! V P"                  P$                  V P                   R R7      4      pM?\        P&                  ! 4       p\        P&                  ! 4       p\        P&                  ! 4       pV P                  P)                  V4       V P                  P)                  V4       V P                  P)                  V4       EK3  	  \+        V P                  4       U	U
u/ uF  w  ršW©bK	  	  up
p	V n        R# u up
p	i )F©ÚbiasN)r)   r*   rf   Úhybrid_layer_idsÚlayer_block_maprg   Úuse_shared_attention_adapterr   Ú
ModuleListÚlinear_q_adapter_listÚlinear_k_adapter_listÚlinear_v_adapter_listÚrangeÚnum_mem_blocksÚ
SequentialÚLinearÚattention_hidden_sizerd   Úadapter_rankÚIdentityÚappendÚ	enumerateÚ	layer_dic)r1   rd   re   rf   rg   ÚiÚlinear_q_adapterÚlinear_k_adapterÚlinear_v_adapterÚindexÚvaluer4   s   &&&&&      €r5   r*   ÚZamba2Attention.__init__`   s  ø€ ô 	‰Ñ˜Ô+Ø"4ÔØ%×6Ñ6ˆÔØ Œà×.×.Ñ.Ü)+¯ª°rÓ):ˆDÔ&Ü)+¯ª°rÓ):ˆDÔ&Ü)+¯ª°rÓ):ˆDÔ&ä˜4×2Ñ2×3�Ø×,Ñ,Õ,°Õ8Ü')§}¢}ÜŸ	š	 $×"<Ñ"<¸d¿k¹k×>VÑ>VÐ]bÔcÜŸ	š	 $§+¡+×":Ñ":¸D×<VÑ<VÐ]bÔcó(Ð$ô (*§}¢}ÜŸ	š	 $×"<Ñ"<¸d¿k¹k×>VÑ>VÐ]bÔcÜŸ	š	 $§+¡+×":Ñ":¸D×<VÑ<VÐ]bÔcó(Ð$ô (*§}¢}ÜŸ	š	 $×"<Ñ"<¸d¿k¹k×>VÑ>VÐ]bÔcÜŸ	š	 $§+¡+×":Ñ":¸D×<VÑ<VÐ]bÔcó(Ñ$ô
 (*§{¢{£}Ð$Ü')§{¢{£}Ð$Ü')§{¢{£}Ð$Ø×*Ñ*×1Ñ1Ð2BÔCØ×*Ñ*×1Ñ1Ð2BÔCØ×*Ñ*×1Ñ1Ð2B×Cñ) 4ô, <EÀT×EYÑEYÔ;ZÔ[Ñ;Z©<¨5˜%š,Ñ;ZÒ[ˆŽùÓ[s   Ë4Lc                óf  <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[R,          RS[S[ P                  S[ P                  3,          R,          RS[S[,          RS[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# )	rc   rE   re   Úattention_maskNÚpast_key_valuesÚposition_embeddingsÚkwargsÚreturn)r,   ÚTensorri   r   Útupler   r   )rj   rX   s   "€r5   rk   rl   ‰   s¦   ø€ ÷ 1)ñ 1)á—|‘|ð1)ñ ð1)ñ Ÿ™ tÕ+ð	1)ñ
  �ð1)ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð1)ñ Ñ+Õ,ð1)ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ1)r7   c                ó\  € VP                   R R p. VORNV P                  N5pV P                  V4      p	V P                  V4      p
V P	                  V4      pV P
                  P                  '       dq   V P                  V,          pW�P                  V,          ! V4      ,           p	W P                  V,          ! V4      ,           p
W°P                  V,          ! V4      ,           pV	P                  V4      P                  ^^4      p	V
P                  V4      P                  ^^4      p
VP                  V4      P                  ^^4      pV P
                  P                  '       d   Vw  rÞ\        WšWÞ4      w  ršVe   VP                  W«V4      w  r«\         P"                  ! V P
                  P$                  \&        4      pT! V V	V
VV3RV P(                  '       g   RMV P*                  RV P,                  /VB w  ppVP.                  ! . VORN5!  P1                  4       pV P3                  V4      pVV3# )NÚdropoutg        Úscalingr:   )r@   Úhead_dimÚq_projÚk_projÚv_projrd   rr   r€   rt   ru   rv   rA   Ú	transposeÚuse_mem_roper   Úupdater   Úget_interfaceÚ_attn_implementationr"   ÚtrainingÚattention_dropoutr’   ÚreshapeÚ
contiguousÚo_proj)r1   rE   re   r‰   rŠ   r‹   rŒ   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚadapter_layer_idxÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss   &&&&&&,           r5   rM   ÚZamba2Attention.forward‰   s  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆØ�;‰;×3×3Ð3Ø $§¡¨yÕ 9ÐØ'×*DÑ*DÐEVÖ*WÐXeÓ*fÕfˆLØ#×&@Ñ&@ÐARÖ&SÐTaÓ&bÕbˆJØ'×*DÑ*DÐEVÖ*WÐXeÓ*fÕfˆLà#×(Ñ(¨Ó6×@Ñ@ÀÀAÓFˆØ—_‘_ \Ó2×<Ñ<¸QÀÓBˆ
Ø#×(Ñ(¨Ó6×@Ñ@ÀÀAÓFˆà�;‰;×#×#Ð#Ø*‰HˆCÜ';¸LÐVYÓ'_Ñ$ˆLàÒ&Ø'6×'=Ñ'=¸jÐXaÓ'bÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆ�\ð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r7   )rg   rq   r€   ru   rt   rv   rf   ©NNN)
rP   rQ   rR   rS   Ú__doc__r*   rM   rT   rU   rV   rW   s   @@r5   ra   ra   P   s&   ù‡ € ñ÷'\õ '\÷R1)÷ 1)ò 1)r7   ra   c                   óF   a a€ ] tR t^½t oRtRV3R lV 3R llltRtVtV ;t# )ÚZamba2MambaMixeruo  
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)
c                ó:   <€ V ^8„  d   QhRS[ RS[R,          RS[/# )rc   rd   re   NÚinitialize_mixer_weights)r$   ri   Úbool)rj   rX   s   "€r5   rk   ÚZamba2MambaMixer.__annotate__Å   s'   ø€ ÷ "ñ "™|ð "¹¸d½
ð "Ñeiñ "r7   c           	     óÐ  <€ Wn         \        SV `	  WV4       VP                  V n        R V n        \
        P                  ! 4       V n        VP                  V n	        VP                  V n        V P                   P                  V n        VP                  V n        VP                  \!        R4      3V n        \
        P$                  ! V P&                  V P&                  RVP(                  V P&                  VP(                  ^,
          R7      V n        V P,                  V P&                  ,           V P                  ,           p\
        P.                  ! V P0                  VVP2                  R7      V n        \7        V P,                  V P,                  V P                  ,          RR7      V n        \
        P.                  ! V P,                  V P0                  VP2                  R7      V n        V =V =R# )r?   ÚinfT)Úin_channelsÚout_channelsro   Úkernel_sizeÚgroupsÚpaddingrn   gñhãˆµøä>)r0   r3   N) rd   r)   r*   Úuse_conv_biasÚ
activationr   ÚSiLUÚactÚmamba_ngroupsÚn_groupsÚmamba_headdimr“   Ún_mamba_headsÚ	num_headsÚ
chunk_sizeÚtime_step_minÚfloatÚtime_step_limitÚConv1dÚconv_dimÚmamba_d_convÚconv1dÚintermediate_sizerz   r2   Úadd_bias_linearÚin_projr&   ÚnormÚout_projÚlayer_norm_epsilonÚuse_bias)r1   rd   re   r²   Úprojection_sizer4   s   &&&& €r5   r*   ÚZamba2MambaMixer.__init__Å   sk  ø€ ØŒÜ‰Ñ˜Ð,DÔEØ#×1Ñ1ˆÔØ ˆŒÜ—7’7“9ˆŒØ×,Ñ,ˆŒØ×,Ñ,ˆŒØŸ™×2Ñ2ˆŒØ ×+Ñ+ˆŒà &× 4Ñ 4´e¸E³lÐCˆÔä—i’iØŸ™ØŸ™ØØ×+Ñ+Ø—=‘=Ø×'Ñ'¨!Õ+ô
ˆŒð ×0Ñ0°4·=±=Õ@À4Ç>Á>ÕQˆÜ—y’yØ×ÑØØ×'Ñ'ô
ˆŒô
 'Ø×"Ñ"¨t×/EÑ/EÈÏÉÕ/VÐ\`ô
ˆŒ	ô Ÿ	š	 $×"8Ñ"8¸$×:JÑ:JÐQW×QgÑQgÔhˆŒØÐ#ØŠMr7   )r¿   r½   rÅ   rd   rÌ   r“   rÏ   rÁ   rÐ   rÄ   rÑ   rÈ   r¼   )NT)	rP   rQ   rR   rS   r®   r*   rT   rU   rV   rW   s   @@r5   r°   r°   ½   s   ù‡ € ñ÷"÷ "õ "r7   r°   c                   óL   a a€ ] tR t^êt oRV3R lV 3R llltRR ltRtVtV ;t# )Ú	Zamba2MLPc                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )rc   rd   rg   Nrh   )rj   rX   s   "€r5   rk   ÚZamba2MLP.__annotate__ë   s&   ø€ ÷ Wñ W™|ð WÑPSÐVZÕPZñ Wr7   c           
     óP  <€ \         S	V `  4        Wn        VP                  V n        VP                  V n        W n        W0n        \        P                  ! V P                  ^V P                  ,          VP                  R7      V n
        \        P                  ! V P                  V P                  VP                  R7      V n        \        VP                  ,          V n        \        P                  ! . 4      V n        \#        V P
                  4       FÝ  pWAP$                  ,          V8X  d”   \        P&                  ! \        P                  ! V P                  P                  V P                  P(                  RR7      \        P                  ! V P                  P(                  ^V P                  ,          RR7      4      pM\        P*                  ! 4       pV P                   P-                  V4       Kß  	  VP.                  p\1        V4       UUu/ uF  w  rxW‡bK	  	  uppV n        R# u uppi )a9  
This MLP layer contributes to tied transformer blocks aimed to increasing compute without increasing model size. Because this layer
is tied, un-tied adapter modules (formally same as LoRA, but used in the base model) are added to the up and gate projectors to increase expressivity with a small memory overhead.
rn   FN)r)   r*   rd   r2   rÍ   rf   rg   r   rz   rÎ   Úgate_up_projÚ	down_projr   Ú
hidden_actÚact_fnrs   Úgate_up_proj_adapter_listrw   rx   ry   r|   r}   r~   rp   r   r€   )
r1   rd   rf   rg   r�   Úgate_up_proj_adapterrq   r…   r†   r4   s
   &&&&     €r5   r*   ÚZamba2MLP.__init__ë   s‡  ø€ ô
 	‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔØ"4ÔØ ŒäŸIšI d×&6Ñ&6¸¸D×<RÑ<RÕ8RÐY_×YoÑYoÔpˆÔÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RhÑRhÔiˆŒÜ˜V×.Ñ.Õ/ˆŒä)+¯ª°rÓ):ˆÔ&Ü�t×.Ñ.Ö/ˆAØ×(Ñ(Õ(¨HÔ4Ü')§}¢}Ü—I’I˜dŸk™k×5Ñ5°t·{±{×7OÑ7OÐV[Ô\Ü—I’I˜dŸk™k×6Ñ6¸¸D×<RÑ<RÕ8RÐY^Ô_ó(Ñ$ô
 (*§{¢{£}Ð$Ø×*Ñ*×1Ñ1Ð2FÖGñ 0ð !×1Ñ1ˆÜ;DÀ_Ô;UÔVÑ;U©<¨5˜%š,Ñ;UÒVˆŽùÓVs   È
H"c                ó,  € V P                  V4      pV P                  V,          pW0P                  V,          ! V4      ,           p\        P                  ! V^RR7      pV P                  V^ ,          4      V^,          ,          pV P                  V4      pV# )rc   ©Údimr:   )rÛ   r€   rß   r,   ÚchunkrÞ   rÜ   )r1   Úhidden_statere   Úgate_up_stateÚoutputs   &&&  r5   rM   ÚZamba2MLP.forward	  s{   € Ø×)Ñ)¨,Ó7ˆØ—N‘N 9Õ-ˆ	Ø%×(FÑ(FÀyÖ(QÐR^Ó(_Õ_ˆäŸš M°1¸"Ô=ˆØ—{‘{ =°Õ#3Ó4°}ÀQÕ7GÕGˆØ—‘ Ó-ˆØˆr7   )
rÞ   rg   rd   rÜ   rÛ   rß   r2   rÍ   r€   rf   ©NNr(   rO   rW   s   @@r5   r×   r×   ê   s   ù‡ € ÷Wõ W÷<ô r7   r×   c                   óX   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltRtVtV ;t# )	ÚZamba2AttentionDecoderLayeri  c                óH   <€ V ^8„  d   QhRS[ RS[R,          RS[R,          /# )rc   rd   rg   Nre   rh   )rj   rX   s   "€r5   rk   Ú(Zamba2AttentionDecoderLayer.__annotate__  s2   ø€ ÷ \ñ \™|ð \±s¸Tµzð \ÑUXÐ[_ÕU_ñ \r7   c                ó¦   <€ W n         \        VP                  4      p\        SV `  W4       \        VRWBR7      V n        \        WVR7      V n        R# )é   )re   rf   rg   )rf   rg   Nr:   )	rg   Úlenrp   r)   r*   ra   Ú	self_attnr×   Úfeed_forward)r1   rd   rg   re   Únum_gsr4   s   &&&& €r5   r*   Ú$Zamba2AttentionDecoderLayer.__init__  sF   ø€ Ø ŒÜ�V×,Ñ,Ó-ˆÜ‰Ñ˜Ô+Ü(¨¸2ÐRXÔlˆŒÜ% fÐRZÔ[ˆÖr7   c                óø   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[ P                  R,          RS[R,          RS[ P                  R,          RS[S[,          R	S[S[ P                  ,          /# )
rc   rE   Úoriginal_hidden_statesre   r‰   NrŠ   r‹   rŒ   r�   )	r,   rŽ   ri   r   Ú
LongTensorr   r   r�   ÚFloatTensor)rj   rX   s   "€r5   rk   rî     sŒ   ø€ ÷ )ñ )á—|‘|ð)ñ !&§¡ð)ñ ð	)ñ
 Ÿ™ tÕ+ð)ñ  �ð)ñ #×-Ñ-°Õ4ð)ñ Ñ+Õ,ð)ñ 
‰u× Ñ Õ	!ñ)r7   c                óÚ   € \         P                  ! W.RR7      pV P                  V4      pV P                  ! RRVRVRVRVRV/VB w  rV P	                  V4      pV P                  W4      pV# )	aš  
Args:
    hidden_states (`torch.FloatTensor`): output of previous Mamba layer of shape `(batch, seq_len, embed_dim)`
    original_hidden_states (`torch.FloatTensor`): word embedding output of shape `(batch, seq_len, embed_dim)`.
        This is concatenated with `hidden_states` (which is the output of the previous (mamba) layer). The
        concatenated tensor is then used as input of the pre-attention RMSNorm
        (see fig. 2 in https://huggingface.co/papers/2405.16712).
    attention_mask (`torch.FloatTensor`, *optional*): attention mask of size
        `(batch, sequence_length)` where padding elements are indicated by 0.
    past_key_values (`Cache`, *optional*): cached past key and value projection states
    use_cache (`bool`, *optional*):
        If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
        (see `past_key_values`).
    position_embeddings (`tuple[torch.FloatTensor, torch.FloatTensor]`, *optional*):
        Tuple containing the cosine and sine positional embeddings of shape `(batch_size, seq_len, head_dim)`,
        with `head_dim` being the embedding dimension of each attention head.
rã   rE   re   r‰   rŠ   r‹   r:   r[   )r,   ÚconcatenateÚinput_layernormrò   Úpre_ff_layernormró   )	r1   rE   r÷   re   r‰   rŠ   r‹   rŒ   Ú_s	   &&&&&&&, r5   rM   Ú#Zamba2AttentionDecoderLayer.forward  s›   € ô6 ×)Ò)¨=Ð*QÐWYÔZˆØ×,Ñ,¨]Ó;ˆØŸ>š>ñ 
Ø'ð
àð
ð *ð
ð ,ð	
ð
 !4ð
ð ñ
Ñˆð ×-Ñ-¨mÓ<ˆØ×)Ñ)¨-ÓCˆàÐr7   )rg   ró   rò   rê   r­   rO   rW   s   @@r5   rì   rì     s    ù‡ € ÷\õ \÷)÷ )ò )r7   rì   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚZamba2MambaDecoderLayeriH  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )rc   rd   re   rh   )rj   rX   s   "€r5   rk   Ú$Zamba2MambaDecoderLayer.__annotate__I  s   ø€ ÷ Zñ Z™|ð Z¹ñ Zr7   c                ó”   <€ \         SV `  W4       \        WR 7      V n        \	        VP
                  VP                  R7      V n        R# ))rd   re   ©r3   N)r)   r*   r°   ÚmambarZ   r2   Úrms_norm_epsrü   )r1   rd   re   r4   s   &&&€r5   r*   Ú Zamba2MambaDecoderLayer.__init__I  s7   ø€ Ü‰Ñ˜Ô+Ü%¨VÔIˆŒ
Ü,¨V×-?Ñ-?ÀV×EXÑEXÔYˆÖr7   )rü   r  )rP   rQ   rR   rS   r*   rT   rU   rV   rW   s   @@r5   r  r  H  s   ù‡ € ÷Z÷ Zó Zr7   r  c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚZamba2HybridLayeriO  c                ó@   <€ V ^8„  d   QhRS[ RS[P                  RS[/# )rc   Úshared_transformerÚlinearr  )rì   r   rz   r  )rj   rX   s   "€r5   rk   ÚZamba2HybridLayer.__annotate__P  s)   ø€ ÷ 5ñ 5Ù"=ð5ÙGIÇyÁyð5ÙYpñ5r7   c                ó8   <€ \         SV `  WV4       V =Wn        R # r(   )r)   r*   Úshared_transfr  )r1   r  r  r  r4   s   &&&&€r5   r*   ÚZamba2HybridLayer.__init__P  s!   ø€ ô 	‰ÑÐ+°UÔ;ØÐØ"4Ör7   c                óÊ  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          R	S[ P
                  R,          R
S[ P
                  R,          RS[S[,          RS[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# )rc   rE   r÷   Nre   r‰   Úcausal_maskrŠ   Ú	use_cacher‹   Úposition_idsrŒ   r�   )
r,   rŽ   ri   r   r³   rø   r   r   r�   rù   )rj   rX   s   "€r5   rk   r  W  sì   ø€ ÷ 4ñ 4á—|‘|ð4ñ !&§¡¨tÕ 3ð4ñ ˜•:ð	4ñ
 Ÿ™ tÕ+ð4ñ —\‘\ DÕ(ð4ñ  �ð4ñ ˜$•;ð4ñ #×-Ñ-°Õ4ð4ñ ×&Ñ&¨Õ-ð4ñ Ñ+Õ,ð4ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ4r7   c
                ó    € V P                   ! V3RVRVRVRVRVRV	/V
B pV P                  V4      pV P                  ! V3RVRVRVRVRV/V
B pV# )	aø  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
    original_hidden_states (`torch.FloatTensor`): word embedding output that will be concatenated with
    hidden activations to form the input of the shared transformer layer.
    layer_idx (`int`): layer number.
    attention_mask (`torch.FloatTensor`, *optional*): attention mask of size
        `(batch, sequence_length)` where padding elements are indicated by 0.
    past_key_values (`Cache`, *optional*): cached past key and value projection states
    use_cache (`bool`, *optional*):
        If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
        (see `past_key_values`).
    position_embeddings (`tuple[torch.FloatTensor, torch.FloatTensor]`, *optional*):
        Tuple containing the cosine and sine positional embeddings of shape `(batch_size, seq_len, head_dim)`,
        with `head_dim` being the embedding dimension of each attention head.
r÷   re   r‰   rŠ   r‹   r  Útransformer_hidden_statesr  )r  r  Úmamba_decoder)r1   rE   r÷   re   r‰   r  rŠ   r  r‹   r  rŒ   r  s   &&&&&&&&&&, r5   rM   ÚZamba2HybridLayer.forwardW  sÃ   € ð< %)×$;Ò$;Øñ	%
à#9ð	%
ð  ð	%
ð 'ð		%
ð
 ,ð	%
ð !4ð	%
ð &ð	%
ð ñ	%
Ð!ð %)§K¡KÐ0IÓ$JÐ!à×*Ò*Øñ
à&?ð
ð *ð
ð ,ð	
ð
  ð
ð !4ð
ð ñ
ˆð Ðr7   )r  )NNNNNFNNrO   rW   s   @@r5   r
  r
  O  s   ù‡ € ÷5ó 5÷4÷ 4ò 4r7   r
  c                   ó˜   a a€ ] tR tRt oRtRtRR.tR.tRtRt	Rt
RtR]R]/t]P                   ! 4       V 3R	 l4       tV3R
 ltRtVtV ;t# )ÚZamba2PreTrainedModeliŽ  ÚmodelTr
  r  rŠ   rE   Ú
attentionsc                óØ  <€ \         SV `  V4       \        V\        4      '       EdÃ   \        P
                  ! \        P                  ! V P                  P                  4      \        P                  ! V P                  P                  4      \        P                  ! V P                  P                  4      ,
          ,          \        P                  ! V P                  P                  4      ,           4      P                  V P                  P                  R 7      pV\        P                  ! \        P                  ! V) 4      ) 4      ,           p\         P"                  ! VP$                  V4       \        P&                  ! ^VP(                  ^,           4      p\         P"                  ! VP*                  \        P                  ! V4      4       \         P,                  ! VP.                  4       R# R# ))ÚminN)r)   Ú_init_weightsÚ
isinstancer°   r,   ÚexpÚrandrd   rÃ   ÚmathÚlogÚtime_step_maxrÆ   ÚclampÚtime_step_floorÚexpm1ÚinitÚcopy_Údt_biasÚarangerÄ   ÚA_logÚones_ÚD)r1   ÚmoduleÚdtÚinv_dtÚAr4   s   &&   €r5   r   Ú#Zamba2PreTrainedModel._init_weightsž  s+  ø€ ä‰Ñ˜fÔ%Ü�fÔ.×/Ó/Ü—’Ü—
’
˜4Ÿ;™;×4Ñ4Ó5Ü—8’8˜DŸK™K×5Ñ5Ó6¼¿ºÀ$Ç+Á+×B[ÑB[Ó9\Õ\õ^ä—(’(˜4Ÿ;™;×4Ñ4Ó5õ6ó÷ ‰e˜Ÿ™×3Ñ3ˆeÓ4ð	 ð œ%Ÿ)š)¤U§[¢[°"°Ó%5Ð$5Ó6Õ6ˆFÜ�JŠJ�v—~‘~ vÔ.ä—’˜Q × 0Ñ 0°1Õ 4Ó5ˆAÜ�JŠJ�v—|‘|¤U§Y¢Y¨q£\Ô2Ü�JŠJ�v—x‘xÖ ñ 0r7   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©rc   rd   r#   )rj   rX   s   "€r5   rk   Ú"Zamba2PreTrainedModel.__annotate__Ž  s   ø‡ ‚ áÑò r7   r[   )rP   rQ   rR   rS   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_sdpaÚ_is_statefulr  ra   Ú_can_record_outputsr,   Úno_gradr   Ú__annotate_func__rT   rU   rV   rW   s   @@r5   r  r  Ž  sr   ù‡ € ð  ÐØ&*Ð#Ø,Ð.GÐHÐØ#4Ð"5ÐØÐØÐØ€NØ€LàÐ0Ø�oðÐð
 ‡]‚]ƒ_ô!ó ð!÷# … r7   r  c                   óp   a € ] tR tRt o RtV 3R lR ltR t]]]	R
V 3R lR ll4       4       4       t
R	tV tR# )ÚZamba2Modeli°  zX
Model consisting of *config.num_hidden_layers* layers.

Args:
    config: Zamba2Config
c                ó    <€ V ^8„  d   QhRS[ /# r7  r#   )rj   rX   s   "€r5   rk   ÚZamba2Model.__annotate__¸  s   ø€ ÷ ñ ™|ñ r7   c                óp  € \         P                  W4       Wn        VP                  V n        VP
                  V n        \        P                  ! VP
                  VP                  V P                  4      V n	        VP                  V n
        V P                  4       V n        VP                  V n        \        VP                  VP                  R 7      V n        VP"                  '       d8   VP$                  '       d   \&        P)                  R4       \+        V4      V n        RV n        V P1                  4        R# )r  ze`use_long_context` set to `True`: using rescaled `rope_theta` and extended `max_position_embeddings`.FN)r  r*   rd   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr2   Úembed_tokensÚlayers_block_typeÚ
get_layersÚlayersr›   rZ   r  Úfinal_layernormr˜   Úuse_long_contextÚloggerÚwarning_oncer_   Ú
rotary_embÚgradient_checkpointingÚ	post_init)r1   rd   s   &&r5   r*   ÚZamba2Model.__init__¸  sè   € Ü×&Ñ& tÔ4ØŒØ!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔØ!'×!9Ñ!9ˆÔØ—o‘oÓ'ˆŒà$*×$?Ñ$?ˆÔ!Ü,¨V×-?Ñ-?ÀV×EXÑEXÔYˆÔØ××ÐØ×&×&Ð&Ü×#Ñ#Ø{ôô 4°FÓ;ˆDŒOØ&+ˆÔ#ð 	�‰Ör7   c                ó`  € . p/ V n         ^ V n        . p^ p\        V P                  4       EFk  w  rE\	        V P
                  VR7      pVR8X  Ed6   RV R2p\        V\        4      '       d%   \        V4      V P
                  P                  8¼  dJ   \        V\        4      '       d   \        V4      p\        V4      pV P                   P                  Wx/4       MVP                  V4       W0P
                  P                  ,          p	V^,          p\        V P
                  V	R7      p
\        P                   ! V P
                  P"                  V P
                  P"                  RR7      pVP                  \%        W«V4      4       EKZ  VP                  V4       EKn  	  \        P&                  ! V4      # )r   )re   Úhybridzlayers.z.shared_transformer)rg   Frn   )Ú_tied_weights_keysÚfirst_transformer_layer_idr   rN  r  rd   r!  Úlistrñ   rx   r   Únextr™   r~   rì   r   rz   r2   r
  rs   )r1   rP  Úunique_hybrid_blocksÚhybrid_layer_countÚlayer_idÚ
layer_typeÚmamba_layerÚprefix_patternÚtarget_patternrg   Ú
attn_blockÚlinear_layers   &           r5   rO  ÚZamba2Model.get_layersÏ  s^  € ØˆØ"$ˆÔØ*+ˆÔ'Ø!ÐØÐä$-¨d×.DÑ.D×$EÑ ˆHÜ1°$·+±+ÈÔRˆKØ˜XÕ%Ø#*¨8¨*Ð4GÐ!H�ô #Ð#7¼×>Ò>ÜÐ/Ó0°D·K±K×4NÑ4NÔNä!Ð"6¼×=Ò=Ü/4Ð5IÓ/JÐ,Ü%)Ð*>Ó%?�NØ×+Ñ+×2Ñ2°NÐ3SÕTð )×/Ñ/°Ô?ð
 .·±×0JÑ0JÕJ�Ø" aÕ'Ð"Ü8¸¿¹ÈxÔX�
Ü!Ÿyšy¨¯©×)@Ñ)@À$Ç+Á+×BYÑBYÐ`eÔf�Ø—‘Ô/°
È+ÓV×Wà—‘˜k×*ñ; %Fô< �}Š}˜VÓ$Ð$r7   Nc                ó  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          RS[S[,          R	S[S[	,          /# )
rc   Ú	input_idsNr‰   r  rŠ   Úinputs_embedsr  rŒ   r�   )
r,   rø   rŽ   r   rù   r³   r   r   r�   r   )rj   rX   s   "€r5   rk   rG  ù  s£   ø€ ÷ E
ñ E
á×#Ñ# dÕ*ðE
ñ Ÿ™ tÕ+ðE
ñ ×&Ñ&¨Õ-ð	E
ñ
  �ðE
ñ ×(Ñ(¨4Õ/ðE
ñ ˜$•;ðE
ñ Ñ+Õ,ðE
ñ 
Ñ(Õ	(ñE
r7   c                óp  € VR J VR J,          '       d   \        R4      hVf   V P                  V4      pTp\        P                  ! V4      p	V'       d   Vf   \	        V P
                  R7      pVfb   Ve   VP                  4       M^ p
\        P                  ! VP                  ^,          VP                  R7      V
,           pVP                  ^ 4      p\        T;p\        4      '       g/   RV P
                  RVRVRVRV/pR	\        R/ VB R
\        R/ VB /pV P
                  P                  '       d   V P!                  WƒR7      pMR p\#        V P$                  4       F(  w  rïV! VV	VVR
,          VR	,          3RVRVRVRV/VB pK*  	  V P'                  V4      p\)        TV'       d   VR7      # R R7      # )NzaYou cannot specify both input_ids and inputs_embeds at the same time, and must specify either one)rd   ©Údevicerd   rk  r‰   rŠ   r  Úfull_attentionÚlinear_attention)r  r  r‹   )Úlast_hidden_staterŠ   r[   )Ú
ValueErrorrM  r,   Úcloner	   rd   Úget_seq_lengthr-  r@   rn  Ú	unsqueezer!  Údictr
   r   r˜   rU  r   rP  rQ  r   )r1   rj  r‰   r  rŠ   rk  r  rŒ   rE   r÷   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsr‹   re   Úlayers   &&&&&&&,        r5   rM   ÚZamba2Model.forwardö  sè  € ð ˜Ð -°tÐ";×<Ô<ÜØsóð ð Ò Ø ×-Ñ-¨iÓ8ˆMà%ˆä!&§¢¨]Ó!;Ð÷ ˜Ò0Ü*°$·+±+Ô>ˆOàÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×1Ñ1°!Ó4ˆLä°Ð?Ð-Ä×FÒFà˜$Ÿ+™+Ø Ø  .Ø! ?Ø ðˆKð !Ô"4Ñ"C°{Ñ"CØ"Ô$CÑ$RÀkÑ$Rð#Ðð �;‰;×#×#Ð#Ø"&§/¡/°- /Ó"[Ñà"&Ðä )¨$¯+©+Ö 6ÑˆIÙ!ØØ&ØØ#Ð$6Õ7Ø#Ð$4Õ5ñð !0ðð $ðð %8ðð *ðð ñŠMñ !7ð ×,Ñ,¨]Ó;ˆä&Ø+ß/8˜Oô
ð 	
à>Bô
ð 	
r7   )r›   r[  rd   rM  rQ  r\  rV  rP  rN  rJ  rU  rK  )NNNNNN)rP   rQ   rR   rS   r®   r*   rO  r   r   r   rM   rT   rU   )rX   s   @r5   rE  rE  °  sF   ø‡ € ñ÷ð ò.%%ðN  ØØ÷E
ñ E
ó ó ó  öE
r7   rE  c                   ó   € ] tR tRtRtR# )ÚZamba2ForCausalLMiA  r[   Nr\   r[   r7   r5   r}  r}  A  r]   r7   r}  c                   óh   a a€ ] tR tRt oV3R lV 3R llt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚZamba2ForSequenceClassificationiE  c                ó    <€ V ^8„  d   QhRS[ /# r7  r#   )rj   rX   s   "€r5   rk   Ú,Zamba2ForSequenceClassification.__annotate__F  s   ø€ ÷ ñ ™|ñ r7   c                óf   <€ \         SV `  V4       \        V4      V n        V P	                  4        R # r(   )r)   r*   rE  r  rW  )r1   rd   r4   s   &&€r5   r*   Ú(Zamba2ForSequenceClassification.__init__F  s&   ø€ Ü‰Ñ˜Ô Ü  Ó(ˆŒ
Ø�‰Ör7   c                ó`  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[ P                  ,          R
S[S[,          RS[	S[
,          /
# )rc   rj  Nr‰   r  rŠ   rk  Úlabelsr  Úlogits_to_keeprŒ   r�   )r,   rø   rŽ   r   rù   r³   ri   r   r   r�   r   )rj   rX   s   "€r5   rk   r�  M  sÍ   ø€ ÷ @
ñ @
á×#Ñ# dÕ*ð@
ñ Ÿ™ tÕ+ð@
ñ ×&Ñ&¨Õ-ð	@
ñ
  �ð@
ñ ×(Ñ(¨4Õ/ð@
ñ × Ñ  4Õ'ð@
ñ ˜$•;ð@
ñ ™eŸl™lÕ*ð@
ñ Ñ+Õ,ð@
ñ 
Ñ1Õ	1ñ@
r7   c	                óî  € V P                   ! V3RVRVRVRVRV/V	B p
V
^ ,          pV P                  V4      pVe   VP                  ^ ,          pMVP                  ^ ,          pV P                  P                  f   V^8w  d   \        R4      hV P                  P                  f   RpMÍVeœ   WP                  P                  8g  P                  VP                  \        P                  4      p\        P                  ! VP                  R,          VP                  \        P                  R7      pVV,          P                  R4      pM.Rp\        P                  V P                  P                   R	24       V\        P                  ! WÜP                  R
7      V3,          pRpVe%   V P                   ! RRVRVRVRV P                  /V	B p\#        VVV
P$                  V
P&                  V
P(                  R7      # )ae  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
r‰   r  rŠ   rk  r  Nz=Cannot handle batch sizes > 1 if no padding token is defined.)rn  r;   zŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`rm  Úlogitsr…  Úpooled_logitsrd   )Úlossrˆ  rŠ   rE   r  r:   r[   )r  Úscorer@   rd   rI  rr  r<   rn  r,   Úint32r-  ÚargmaxrS  rT  r4   rP   Úloss_functionr   rŠ   rE   r  )r1   rj  r‰   r  rŠ   rk  r…  r  r†  rŒ   Útransformer_outputsrE   rˆ  Ú
batch_sizeÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesr‰  rŠ  s   &&&&&&&&&,         r5   rM   Ú'Zamba2ForSequenceClassification.forwardK  sú  € ð( 8<·z²zØñ8
à)ð8
ð &ð8
ð ,ð	8
ð
 (ð8
ð  ð8
ð ñ8
Ðð ,¨AÕ.ˆØ—‘˜MÓ*ˆàÒ Ø"Ÿ™¨Õ+‰Jà&×,Ñ,¨QÕ/ˆJà�;‰;×#Ñ#Ò+°
¸a´ÜÐ\Ó]Ð]Ø�;‰;×#Ñ#Ò+Ø!#ÑØÒ"Ø%¯©×)AÑ)AÑA×EÑEÀfÇmÁmÔUZ×U`ÑU`ÓaˆLÜ!ŸLšL¨¯©¸Õ)<ÀVÇ]Á]ÔZ_×ZeÑZeÔfˆMØ"/°,Õ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|š|¨J¿}¹}ÔMÐOaÐaÕbˆàˆØÒØ×%Ò%ñ Ø$ðØ-3ðØCPðØY]×YdÑYdðØhnñˆDô 0ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r7   )r  )NNNNNNNr   )rP   rQ   rR   rS   r*   r   r   rM   rT   rU   rV   rW   s   @@r5   r  r  E  s9   ù‡ € ÷ó ð
 Ø÷@
ñ @
ó ó ÷@
ð @
r7   r  )r}  r  rE  r  )Fr$  Úcollections.abcr   Ú	itertoolsr   r,   r   Ú r   r*  Úactivationsr   Úcache_utilsr   r	   Úmasking_utilsr
   r   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úbamba.modeling_bambar   Úllama.modeling_llamar   r   Úzamba.modeling_zambar   r   r   r   r   r   r    r!   r"   Úconfiguration_zamba2r$   Ú
get_loggerrP   rS  ÚModuler&   rZ   r_   ra   r°   r×   rì   r  r
  r  rE  r}  r  Ú__all__r[   r7   r5   Ú<module>r¨     s:  ðó Ý $Ý ã Ý å &Ý !ß .ß Pß Yß FÝ &ß RÓ RÝ 7Ý 5Ý -ß M÷
÷ 
õ 
õ /ð 
×	Ò	˜HÓ	%€ô;˜Ÿ™Ÿ™ô ;ô*	�Lô 	ô	Ð0ô 	ôj)�nô j)ôZ*�zô *ôZ'�—	‘	ô 'ôT1Ð"<ô 1ôhZÐ4ô Zô<Ð(ô <ð~ ô!˜Oó !ó ð!ôBN
�*Ð3ô N
ôb	Ð(ô 	ôH
Ð&Dô H
òV‚r7   