+
    œ°³jù¶  ã                   óÔ  € R t ^ RIt^ RIHt ^ RIt^ RIHu Ht ^ RIHt ^ RI	H
t
HtHt ^RIHt ^RIHt ^RIHtHt ^RIHt ^R	IHtHt ^R
IHt ^RIHtHt ^RIH t  ^RI!H"t"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/H0t0 ^RI1H2t2H3t3H4t4 ^RI5H6t6 ^RI7H8t8 ].Pr                  ! ]:4      t; ! R R]Px                  4      t=R R lt>R@R R llt? ! R R]Px                  4      t@R tA]! RR4      RAR  R! ll4       tB]! R"R4      RAR# R$ ll4       tC]! R%R&4      RBR' R( ll4       tD]! R)R&4      RCR* R+ ll4       tE]! ]E]D]C]B.4       ! R, R-]Px                  4      4       tF ! R. R/]Px                  4      tG ! R0 R1]Px                  4      tH ! R2 R3] 4      tI ! R4 R5] 4      tJ], ! R6 R7]'4      4       tK], ! R8 R9]K4      4       tL ! R: R;]K]4      tM],! R<R=7       ! R> R?]K4      4       tN. RDOtOR# )EzPyTorch Zamba model.N)ÚCallable)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Ú&use_kernel_func_from_hub_with_fallbackÚuse_kernelized_func)Úforce_accelerate_hooks)Úcreate_causal_maskÚcreate_recurrent_attention_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPastÚ SequenceClassifierOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)Úis_mambapy_availableÚis_torch_greater_or_equalÚ
is_tracing)Úcapture_outputs©ÚZambaConfigc                   óZ   a a€ ] tR t^7t oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )ÚZambaRMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )é   ÚepsÚreturnN)Úfloat)ÚformatÚ__classdict__s   "€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/zamba/modeling_zamba.pyÚ__annotate__ÚZambaRMSNorm.__annotate__8   s   ø€ ÷ $ñ $©ð $¸$ñ $ó    c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z+
ZambaRMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer'   Ú	__class__s   &&&€r,   r2   ÚZambaRMSNorm.__init__8   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r&   Úhidden_statesr(   )r4   ÚTensor)r*   r+   s   "€r,   r-   r.   @   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r/   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r&   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor4   Úfloat32ÚpowÚmeanÚrsqrtr7   r6   )r8   r=   Úinput_dtypeÚvariances   &&  r,   ÚforwardÚZambaRMSNorm.forward@   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r/   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)Útupler6   Úshaper7   )r8   s   &r,   Ú
extra_reprÚZambaRMSNorm.extra_reprG   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr/   )r7   r6   )g�íµ ÷Æ°>)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r2   rJ   rO   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r:   r+   s   @@r,   r$   r$   7   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr/   r$   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r&   r=   Ún_repr(   )r4   r>   Úint)r*   s   "r,   r-   r-   L   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur/   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)ºNNNr]   Nr]   r]   )rN   ÚexpandÚreshape)r=   rZ   ÚbatchÚnum_key_value_headsÚslenÚhead_dims   &&    r,   Ú	repeat_kvrd   L   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr/   c                óÞ   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        /# )	r&   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropout)r   ÚModuler4   r>   r)   )r*   s   "r,   r-   r-   X   sg   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ñ%r/   c                 ó"  € \        W P                  4      p\        W0P                  4      p	\        P                  ! WP	                  ^^4      4      V,          p
Ve	   W¤,           p
\
        P                  P                  V
R\        P                  R7      P                  VP                  4      p
\
        P                  P                  W¦V P                  R7      p
\        P                  ! W©4      pVP	                  ^^4      P                  4       pWº3# )r&   )ÚdimrB   )ÚpÚtrainingrA   )rd   Únum_key_value_groupsr4   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrD   rC   rB   rl   rq   Ú
contiguous)rf   rg   rh   ri   rj   rk   rl   ÚkwargsÚ
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r,   Úeager_attention_forwardr}   X   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r/   c                   óX   a a€ ] tR t^qt oRt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	# )ÚZambaAttentiona  
Multi-headed attention from 'Attention Is All You Need' paper. Modified to use sliding window attention: Longformer
and "Generating Long Sequences with Sparse Transformers".

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)
c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r&   ÚconfigÚ	layer_idx©r"   r[   )r*   r+   s   "€r,   r-   ÚZambaAttention.__annotate__   s   ø€ ÷ lñ l™{ð l±sñ lr/   c                ól  <€ \         SV `  4        Wn        W n        VP                  V n        VP
                  V n        VP                  VP                  ,          V n	        VP                  V n
        V P                  ^,          R,          V n        RV n        VP                  V n        \        P                  ! VP                  VP                  V P                  ,          RR7      V n        \        P                  ! VP                  VP                  V P                  ,          RR7      V n        \        P                  ! VP                  VP                  V P                  ,          RR7      V n        \        P                  ! VP                  V P                  ,          VP&                  RR7      V n        R# )r&   TF©ÚbiasNç      à¿)r1   r2   r‚   rƒ   Úattention_hidden_sizeÚattention_head_dimrc   Únum_attention_headsra   rr   Úmax_position_embeddingsrk   Ú	is_causalÚattention_dropoutr   ÚLinearÚq_projÚk_projÚv_projr9   Úo_proj©r8   r‚   rƒ   r:   s   &&&€r,   r2   ÚZambaAttention.__init__   s5  ø€ Ü‰ÑÔØŒØ"Œà%+×%AÑ%AˆÔ"Ø×1Ñ1ˆŒØ$*×$>Ñ$>À&×B\ÑB\Õ$\ˆÔ!Ø'-×'EÑ'EˆÔ$ØŸ™¨Õ)¨dÕ2ˆŒØˆŒØ!'×!9Ñ!9ˆÔä—i’i × <Ñ <¸f×>XÑ>XÐ[_×[hÑ[hÕ>hÐotÔuˆŒÜ—i’i × <Ñ <¸f×>XÑ>XÐ[_×[hÑ[hÕ>hÐotÔuˆŒÜ—i’i × <Ñ <¸f×>XÑ>XÐ[_×[hÑ[hÕ>hÐotÔuˆŒÜ—i’i × :Ñ :¸T¿]¹]Õ JÈF×L^ÑL^ÐejÔkˆŽr/   c                ó  <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# )r&   r=   rƒ   rj   NÚpast_key_valuesrx   r(   )r4   r>   r[   r	   r   r   rM   )r*   r+   s   "€r,   r-   r…   ‘   s…   ø€ ÷ #)ñ #)á—|‘|ð#)ñ ð#)ñ Ÿ™ tÕ+ð	#)ñ
  �ð#)ñ Ñ+Õ,ð#)ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ#)r/   c                óØ  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
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  rÍVP                   ! . VORN5!  P#                  4       pV P%                  V4      pWÍ3# )Nrl   ç        rk   rA   )rN   rc   r‘   Úviewrt   r’   r“   Úupdater   Úget_interfacer‚   Ú_attn_implementationr}   rq   r�   rk   r_   rw   r”   )r8   r=   rƒ   rj   r˜   rx   Úinput_shapeÚhidden_shapeÚquery_statesry   rz   Úattention_interfacer|   r{   s   &&&&&,        r,   rJ   ÚZambaAttention.forward‘   sj  € ð $×)Ñ)¨#¨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ÐXaÓ'bÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r/   )r�   rŠ   r‚   rc   rŽ   r’   rƒ   r�   rr   r”   r‘   rk   r“   ©N)
rQ   rR   rS   rT   Ú__doc__r2   rJ   rU   rV   rW   rX   s   @@r,   r   r   q   s%   ù‡ € ñ÷ló l÷$#)÷ #)ò #)r/   r   c                ób   € Ve+   V P                   pWR,          ,          P                  V4      p V # )ze
Tunes out the hidden states for padding tokens, see https://github.com/state-spaces/mamba/issues/66
)r]   r]   N)rB   rC   )r=   rj   rB   s   && r,   Úapply_mask_to_padding_statesr§   ·   s3   € ð
 Ò!Ø×#Ñ#ˆØ&¸
Õ)CÕC×GÑGÈÓNˆàÐr/   Úcausal_conv1d_updateÚcausal_conv1dc                óÀ   € V ^8„  d   QhR\         P                  R\         P                  R\        P                  R\        P                  R,          R\        R,          /# )r&   r=   Ú
conv_stater6   rˆ   NÚ
activation©r4   r>   r   r3   Ústr)r*   s   "r,   r-   r-   Ä   sS   € ÷ 'ñ 'Ü—<‘<ð'ä—‘ð'ô �L‰Lð'ô �,‰,˜Õ
ð	'ô
 �d•
ñ'r/   c                 óº  € V P                   w  rVpVP                   R,          p\        P                  ! W.RR7      P                  VP                  4      p	VP                  V	RRV) R13,          4       \        P                  ! W’P                  ^4      V^ VR7      p
V
RRV) R13,          p
Ve   \        V,          ! V
4      p
V
P                  V P                  4      # )é   ©ro   r]   N)ÚpaddingÚgroupsrA   )
rN   r4   ÚcatrC   rB   Úcopy_ÚFÚconv1dÚ	unsqueezer   )r=   r«   r6   rˆ   r¬   Ú_r9   Úseq_lenÚ	state_lenÚhidden_states_newÚouts   &&&&&      r,   r¨   r¨   Ã   sÅ   € ð ,×1Ñ1Ñ€A�GØ× Ñ  Õ$€IäŸ	š	 :Ð"=À2ÔF×IÑIÈ&Ï,É,ÓWÐØ×ÑÐ& q¨!¨i¨Z©[Ð'8Õ9Ô:Ü
�(Š(Ð$×&6Ñ&6°qÓ&9¸4ÈÐS^Ô
_€CØ
ˆa��W�H‘IˆoÕ
€CØÒÜ�ZÖ  Ó%ˆØ�6‰6�-×%Ñ%Ó&Ð&r/   Úcausal_conv1d_fnc          	      ó    € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R,          R\        R,          /# )r&   r=   r6   rˆ   Nr¬   r­   )r*   s   "r,   r-   r-   Ø   sE   € ÷ 'ñ 'Ü—<‘<ð'ä�L‰Lð'ô �,‰,˜Õ
ð'ô �d•
ñ	'r/   c                 óV  € V P                   w  rVpVP                   R,          ^,
          p\        P                  ! V P                  VP                  4      VP                  ^4      VVVR7      RRRV13,          p	Ve   \        V,          ! V	4      p	V	P                  V P                  4      # )r°   )r6   rˆ   r²   r³   r]   NrA   )rN   r¶   r·   rC   rB   r¸   r   )
r=   r6   rˆ   r¬   rx   r¹   r9   rº   r²   r½   s
   &&&&,     r,   r¾   r¾   ×   sž   € ð ,×1Ñ1Ñ€A�GØ�l‰l˜2Õ Õ"€Gä
�(Š(Ø×Ñ˜Ÿ™Ó&Ø×Ñ Ó"ØØØôð ˆˆHˆWˆH€nõ€Cð ÒÜ�ZÖ  Ó%ˆØ�6‰6�-×%Ñ%Ó&Ð&r/   Úselective_state_updateÚ	mamba_ssmc                ón  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R,          R	\         P                  R,          R
\        R\         P                  R,          /
# )r&   Ústater=   ÚdtÚAÚBÚCÚDNÚdt_biasÚdt_softplusÚz©r4   r>   Úbool)r*   s   "r,   r-   r-   ò   sŸ   € ÷ *ñ *Ü�<‰<ð*ä—<‘<ð*ô 	�‰ð*ô ‡|�|ð	*ô
 ‡|�|ð*ô ‡|�|ð*ô ‡|�|�dÕð*ô �\‰\˜DÕ ð*ô ð*ô ‡|�|�dÕñ*r/   c
                 óª  € VP                   pVe"   W'P                  VP                   4      ,           pV'       d   \        P                  ! V4      p\        P
                  ! VP                  4       R,          VP                  4       ,          4      P                  V P                  R7      pVP                  4       R,          VP                  4       R,          ,          pWÑP                  4       R,          ,          pV P                  4       V,          V,           pV P                  VP                  V P                   4      4       \        P                  ! VP                  VP                   4      VP                  R4      4      P                  R4      pVe   VW,          ,           pV	e   V\        P                  ! V	4      ,          pVP                  V4      # )N©Údevice©.N)r]   Nr]   rA   )rB   rC   r¶   Úsoftplusr4   Úexpr)   rÑ   rµ   rs   r¸   ÚsqueezeÚsilu)rÄ   r=   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rx   rH   ÚdAÚdBÚdBxÚ	ssm_stater½   s   &&&&&&&&&&,      r,   Úmamba_selective_state_updaterÛ   î   sE  € ð"  ×%Ñ%€KàÒØ—*‘*˜RŸX™XÓ&Õ&ˆßÜ�ZŠZ˜‹^ˆô 
�Š�2—8‘8“:˜iÕ(¨1¯7©7«9Õ4Ó	5×	8Ñ	8ÀÇÁÐ	8Ó	M€Bð 
�‰‹�IÕ	 §¡£¨:Õ!6Õ	6€Bà
×"Ñ"Ó$ YÕ/Õ
/€Cð —‘“ Õ" SÕ(€IØ	‡K�K�	—‘˜UŸ[™[Ó)Ô*ô �,Š,�y—|‘| A§G¡GÓ,¨a¯k©k¸"«oÓ
>×
FÑ
FÀrÓ
J€Cð 	‚}Ø�MÕ%Õ%ˆà‚}Ø”A—F’F˜1“I�oˆà�6‰6�+ÓÐr/   Úselective_scan_fnc                ór  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R,          R\         P                  R,          R	\         P                  R,          R
\        R\        R\        R\        /# )r&   r=   rÅ   rÆ   rÇ   rÈ   rÉ   NrÌ   Ú
delta_biasÚdelta_softplusÚreturn_last_stateÚuse_mambapyÚuse_associative_scanrÍ   )r*   s   "r,   r-   r-   #  s½   € ÷ cñ cÜ—<‘<ðcä�‰ðcô ‡|�|ðcô ‡|�|ð	cô
 ‡|�|ðcô ‡|�|�dÕðcô ‡|�|�dÕðcô —‘˜tÕ#ðcô ðcô ðcô ðcô ñcr/   c                 ó  € \        R 4      '       d   ^ RIHp MRp\        4       '       d   ^ RIHp MRpV P                  w  pppV P                  pVe)   WP                  VP                  4      R,          ,           pV'       d   \        P                  ! V4      pVP                  ^^4      pVP                  ^^4      p\        P                  ! VR,          VR,          ,          4      pVR,          VR,          P                  4       ,          pVV R,          P                  4       ,          pV
'       dp   Vel   V! VP                  ^^4      VP                  ^^4      4      pVVP                  R4      ,          P!                  ^4      P                  ^^4      pVR,          pEM�V'       d¹   Veµ   \#        V 4      '       d¤   R pVP$                  P&                  R9   d   RMRpV! VVV3^VR7      w  pp\        P(                  ! VP                  ^^4      P                  V4      VP                  R4      4      pVP!                  R4      P                  ^^4      pVR,          pMÝ\        P*                  ! VVVP                  R,          VV P$                  R	7      p. p\-        V4       F~  pVRRV3,          V,          VRRV3,          ,           p\        P(                  ! VP                  V4      VRVR3,          P                  R4      4      pVP/                  VR,          4       K€  	  \        P0                  ! VRR
7      pVe   VWR,          ,          ,           pVe   V\        P2                  ! V4      ,          pV	'       d   VV3# V# )z2.9.0)Úassociative_scanN)Úpscanr]   c                 ó@   € V w  r#Vw  rEW$,          WC,          V,           3# r¤   © )ÚleftÚrightÚa_leftÚb_leftÚa_rightÚb_rights   &&    r,   Ú
combine_fnÚ(mamba_selective_scan.<locals>.combine_fnV  s'   € Ø!‰NˆFØ$ÑˆGØÕ# WÕ%5¸Õ%?Ð?Ð?r/   Ú	pointwiseÚgeneric)ro   Úcombine_mode)rB   rÑ   r±   rÒ   )Nr]   Nr]   )r]   r]   r]   N)r]   Nr]   r]   rA   )r]   rA   )ÚcudaÚxpu)r]   r]   rA   )r]   r]   é    )Nr]   N)r   Ú(torch._higher_order_ops.associative_scanrä   r   Úmambapy.pscanrå   rN   rB   rC   r¶   rÓ   rt   r4   rÔ   r)   r¸   rÕ   r   rÑ   Útypers   ÚzerosÚrangeÚappendÚstackrÖ   )r=   rÅ   rÆ   rÇ   rÈ   rÉ   rÌ   rÞ   rß   rà   rá   râ   rx   rä   rå   Ú
batch_sizeÚintermediate_sizerº   rH   Ú
discrete_AÚ
discrete_BÚdeltaB_uÚ
all_statesÚscan_outputrÚ   rî   rò   r¹   Úscan_outputsÚindexs   &&&&&&&&&&&&,                 r,   Úmamba_selective_scanr    sþ  € ô( ! ×)Ò)ÞMàÐä×ÒÞ'àˆà-:×-@Ñ-@Ñ*€JÐ! 7Ø×%Ñ%€KàÒØ—-‘- §¡Ó)¨)Õ4Õ4ˆßÜ�ZŠZ˜‹^ˆð 	
�‰�A�qÓ€AØ	�‰�A�qÓ€Aô —’˜1Ð-Õ.°°MÕ1BÕBÓC€JØ�MÕ" Q }Õ%5×%;Ñ%;Ó%=Õ=€JØ˜M¨-Õ8×>Ñ>Ó@Õ@€Hç�uÒ(Ù˜:×/Ñ/°°1Ó5°x×7IÑ7IÈ!ÈQÓ7OÓPˆ
à! A§K¡K°£OÕ3×<Ñ<¸QÓ?×IÑIÈ!ÈQÓOˆØ˜uÕ%Š	ç	Ð"2Ò">Ä:Èm×C\ÒC\ò	@ð
 '1×&7Ñ&7×&<Ñ&<ÀÔ&O‘{ÐU^ˆÙ(ØØ˜Ð"ØØ%ô	
‰ˆˆ:ô —l’l :×#7Ñ#7¸¸1Ó#=×#@Ñ#@ÀÓ#MÈqÏ{É{Ð[]ËÓ_ˆØ!×)Ñ)¨"Ó-×7Ñ7¸¸1Ó=ˆØ˜xÕ(‰	ô —K’KØØØ�G‰G�B�KØØ ×'Ñ'ô
ˆ	ð ˆÜ˜7–^ˆEà" 1 a¨ ;Õ/°)Õ;¸hÀqÈ!ÈUÀ{Õ>SÕSˆIô  Ÿ,š, y§|¡|°KÓ'@À!ÀAÀuÈaÀKÅ.×BZÑBZÐ[]ÓB^Ó_ˆKØ×Ñ ¨GÕ 4Ö5ñ $ô —k’k ,°BÔ7ˆà‚}Ø! M°mÕ4DÕ$DÕDˆà‚}Ø!¤A§F¢F¨1£IÕ-ˆçØ˜IÐ%Ð%àÐr/   c                   ón   a a€ ] tR tRt oRtV3R lV 3R llt]! R4      R	V3R lR ll4       tRtVt	V ;t
# )
ÚZambaMambaMixeri‰  u!  
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)

This module differs from `transformers.models.mamba.modeling_mamba.MambaMixer` in two ways:
- Added multi-head: the output of `self.in_proj` is split into `self.n_mamba_heads` heads, and each head
undergoes an independent forward pass, identical to the original `MambaMixer`, up until the pre-activations of
`self.out_proj`. The pre-activations, coming from different mamba heads, are then concatenated and fed into `self.out_proj`.
c                ó    <€ V ^8„  d   QhRS[ /# ©r&   r‚   r!   )r*   r+   s   "€r,   r-   ÚZambaMambaMixer.__annotate__—  s   ø€ ÷ 68ñ 68™{ñ 68r/   c           	     óf  <€ \         SV `  4        Wn        W n        VP                  V n        VP
                  V n        VP                  V n        VP                  VP                  ,          V n
        VP                  V n        VP                  V n        V P                  V P                  ,          V n        VP                  V n        VP"                  V n        \&        P(                  ! V P                  V P                  V P                   V P                  V P                  V P                  ^,
          R7      V n        VP,                  V n        \0        VP,                  ,          V n        VP4                  V n        \&        P8                  ! V P                  V P                  ^,          V P$                  R7      V n        \&        P<                  ! \>        P@                  ! V P                  V P                  V P                  ^,          ,           V P                  4      4      V n!        \&        P<                  ! \>        P@                  ! V P                  V P                  V P                  4      R,
          ^,          V P                  R,          ,          4      V n"        \&        P<                  ! \>        P@                  ! V P                  V P                  4      4      V n#        \>        PH                  ! ^V P                  ^,           \>        PJ                  R7      R,          pVPM                  V P                  R4      PO                  4       p\&        P<                  ! \>        PP                  ! V4      PS                  V P                  V P                  R4      4      V n*        \&        P<                  ! \>        PV                  ! V P                  V P                  4      4      V n,        \&        P8                  ! V P                  V P                  V P$                  R7      V n-        VP\                  V,          V n/        R# )r°   )Úin_channelsÚout_channelsrˆ   Úkernel_sizer³   r²   r‡   g      à?©rB   N©Nr]   rA   )0r1   r2   r‚   rƒ   r9   Úmamba_d_stateÚssm_state_sizeÚmamba_d_convÚconv_kernel_sizeÚmamba_expandrþ   Úmamba_dt_rankÚtime_step_rankÚn_mamba_headsÚmamba_head_dimÚmamba_conv_biasÚuse_conv_biasÚmamba_proj_biasÚuse_biasr   ÚConv1dr·   Úhidden_mamba_actr¬   r   ÚactÚuse_mamba_kernelsÚuse_fast_kernelsr�   Úin_projr3   r4   rù   Úx_proj_weightÚdt_proj_weightÚdt_proj_biasÚarangerD   r^   rw   Úlogr_   ÚA_logr5   rÉ   Úout_projÚlayer_typesÚ
layer_type)r8   r‚   rƒ   rÆ   r:   s   &&& €r,   r2   ÚZambaMambaMixer.__init__—  sø  ø€ Ü‰ÑÔØŒØ"ŒØ!×-Ñ-ˆÔØ$×2Ñ2ˆÔØ &× 3Ñ 3ˆÔØ!'×!4Ñ!4°v×7IÑ7IÕ!IˆÔØ$×2Ñ2ˆÔØ#×1Ñ1ˆÔØ"×4Ñ4¸×8JÑ8JÕJˆÔØ#×3Ñ3ˆÔØ×.Ñ.ˆŒÜ—i’iØ×.Ñ.Ø×/Ñ/Ø×#Ñ#Ø×-Ñ-Ø×)Ñ)Ø×)Ñ)¨AÕ-ô
ˆŒð !×1Ñ1ˆŒÜ˜&×1Ñ1Õ2ˆŒà &× 8Ñ 8ˆÔô —y’y ×!1Ñ!1°4×3IÑ3IÈAÕ3MÐTX×TaÑTaÔbˆŒô  Ÿ\š\Ü�KŠKØ×"Ñ"Ø×#Ñ# d×&9Ñ&9¸AÕ&=Õ=Ø×#Ñ#óó
ˆÔô !ŸlšlÜ�[Š[˜×+Ñ+¨T×-@Ñ-@À$×BUÑBUÓVÐY\Õ\Øõà×!Ñ! 3Õ&õ'ó
ˆÔô
 ŸLšL¬¯ª°T×5GÑ5GÈ×I\ÑI\Ó)]Ó^ˆÔô �LŠL˜˜D×/Ñ/°!Õ3¼5¿=¹=ÔIÈ'ÕRˆØ�H‰H�T×+Ñ+¨RÓ0×;Ñ;Ó=ˆÜ—\’\¤%§)¢)¨A£,×"6Ñ"6°t×7IÑ7IÈ4×K^ÑK^Ð`bÓ"cÓdˆŒ
Ü—’œeŸjšj¨×);Ñ);¸T×=PÑ=PÓQÓRˆŒÜŸ	š	 $×"8Ñ"8¸$×:JÑ:JÐQU×Q^ÑQ^Ô_ˆŒà ×,Ñ,¨YÕ7ˆŽr/   r·   c                óp   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[ P                  R,          /# )r&   r=   Úcache_paramsNrj   )r4   r>   r	   Ú
LongTensor)r*   r+   s   "€r,   r-   r  Ð  sA   ø€ ÷ I%ñ I%á—|‘|ðI%ñ ˜d•lðI%ñ ×(Ñ(¨4Õ/ñ	I%r/   c                óF  € VP                   w  rVpVP                  pVR J;'       d    VP                  V P                  4      p	\	        W4      pV P                  V4      P                  ^^4      p
V
P                  VR^V4      P                  ^^R7      w  r¼VP                  ^4      P                  4       pVP                  WPP                  V P                  V4      P                  ^ ^4      pV	'       d]   VP                  V P                  ,          P                  ^ ,          pVP                  V P                  ,          P                   ^ ,          pV	'       d‡   V^8X  d€   VP                  V P                  ,          P"                  '       gS   \%        VXV P&                  P(                  P                  ^4      V P&                  P*                  V P,                  R7      pMŸVe)   VP/                  VV P                  V P0                  R7      p\3        VV P&                  P(                  P                  ^4      V P&                  P*                  V P,                  VP5                  R4      R7      pVe   VRRV) R 13,          p\	        VP                  ^^4      V4      pVP                  ^^4      pVP                  VV P                  V P                  V4      P                  ^ ^4      pV P6                  R,          V,          P                  RR4      p\8        P:                  ! VV P<                  V P>                  V P>                  .RR7      w  pppV P@                  R,          VP                  RR4      ,          pV PB                  e   V PB                  PE                  4       MR p\8        PF                  ! V PH                  PE                  4       4      ) pV	'       dÕ   V^8X  dÎ   . p\K        V P                  4       F˜  p\M        XRV3,          VVR^ 3,          VVR^ 3,          VV,          VVR^ 3,          VVR^ 3,          V PN                  V,          VVR^ 3,          Ve
   VV,          MR RR	7
      PQ                  R4      pVPS                  V4       Kš  	  \8        PT                  ! V^R7      pEMGVR Jp. p. p\K        V P                  4       FÒ  p\W        VV,          VV,          VV,          VV,          P                  ^^4      VV,          P                  ^^4      V PN                  V,          PE                  4       VV,          Ve
   VV,          MR RVR
R
R7      pV'       d*   Vw  ppVPS                  V4       VPS                  V4       KÁ  VPS                  V4       KÔ  	  \8        PT                  ! V^R7      pV'       d5   \8        PX                  ! V^R7      pVP[                  VV P                  4       V P]                  VP                  ^^4      P_                  V4      4      pV# )Nr±   )r¬   )r  Úseq_idx)r¬   r3  r]   .T)rÌ   rÊ   rË   F)rÉ   rÌ   rÞ   rß   rà   rá   râ   rA   )r]   Néþÿÿÿ)0rN   rB   Úhas_previous_staterƒ   r§   r$  rt   r›   ÚchunkrÕ   rw   r_   r  r  ÚlayersÚconv_statesÚrecurrent_statesÚrecord_pastr¨   r·   r6   rˆ   r¬   Úupdate_conv_stater  r¾   Úgetr%  r4   Úsplitr  r  r&  r'  r)   rÔ   r*  rú   rÛ   rÉ   r¸   rû   r´   r  rü   Úupdate_recurrent_stater+  rC   )r8   r=   r0  rj   rx   rý   rº   r¹   rB   Úuse_precomputed_statesÚprojected_statesÚhidden_states_B_CÚgater«   Úrecurrent_stateÚssm_parametersÚ	time_steprÇ   rÈ   Útime_proj_biasrÆ   r  Úhead_idxr  Úoutput_final_stateÚfinal_statesÚscan_resultÚhead_outputÚfinal_stateÚcontextualized_statess   &&&&,                         r,   rJ   ÚZambaMambaMixer.forwardÏ  ss  € ð "/×!4Ñ!4Ñˆ
˜QØ×#Ñ#ˆØ!-°TÐ!9×!mÐ!m¸l×>]Ñ>]Ð^b×^lÑ^lÓ>mÐô 5°]ÓSˆØŸ<™<¨Ó6×@Ñ@ÀÀAÓFÐð #3×"7Ñ"7¸
ÀBÈÈ7Ó"S×"YÑ"YÐZ[ÐabÐ"YÓ"cÑÐØ-×5Ñ5°aÓ8×CÑCÓEÐØ�|‰|˜J×(:Ñ(:¸D×<OÑ<OÐQXÓY×cÑcÐdeÐghÓiˆç!Ø%×,Ñ,¨T¯^©^Õ<×HÑHÈÕKˆJØ*×1Ñ1°$·.±.ÕA×RÑRÐSTÕUˆO÷ " g°¤l¸<×;NÑ;NÈtÏ~É~Õ;^×;j×;jÐ;jÜ 4Ø!ØØ—‘×"Ñ"×*Ñ*¨1Ó-Ø—‘× Ñ ØŸ?™?ô!Ñð Ò'Ø$0×$BÑ$BØ%Ø—N‘NØ%)×%:Ñ%:ð %Có %Ð!ô !1Ø!Ø—‘×"Ñ"×*Ñ*¨1Ó-Ø—‘× Ñ ØŸ?™?ØŸ
™
 9Ó-ô!Ðð Ò'Ø$5°a¸¸W¸H¹I°oÕ$FÐ!ô 9Ø×'Ñ'¨¨1Ó-Øó
Ðð .×7Ñ7¸¸1Ó=ÐØ-×5Ñ5ØØ×ÑØ×ÑØó	
÷
 ‰)�A�q‹/ð 	ð ×,Ñ,¨WÕ5Ð8IÕI×TÑTÐUWÐY[Ó\ˆÜŸ+š+ØØ× Ñ  $×"5Ñ"5°t×7JÑ7JÐKØô
‰ˆ	�1�að ×'Ñ'¨Õ0°9×3FÑ3FÀrÈ2Ó3NÕNˆ	Ø6:×6GÑ6GÒ6S˜×*Ñ*×0Ñ0Ô2ÐY]ˆÜ�YŠY�t—z‘z×'Ñ'Ó)Ó*Ð*ˆ÷ " g°¤lØˆLä! $×"4Ñ"4Ö5�Ü:Ø# A x KÕ0Ø% h°°QÐ&6Õ7Ø˜h¨¨QÐ.Õ/Ø�h•KØ�h  1�nÕ%Ø�h  1�nÕ%Ø—F‘F˜8Õ$Ø˜8 S¨!Ð+Õ,Ø8FÒ8R˜N¨8Ö4ÐX\Ø $ô÷ ‘)˜B“-ð ð ×#Ñ# KÖ0ñ 6ô  Ÿ)š) L°aÔ8ŠKð ".°TÐ!9ÐØˆLØˆLä! $×"4Ñ"4Ö5�Ü2Ø% hÕ/Ø˜hÕ'Ø�h•KØ�h•K×)Ñ)¨!¨QÓ/Ø�h•K×)Ñ)¨!¨QÓ/Ø—f‘f˜XÕ&×,Ñ,Ó.Ø˜8•nØ;IÒ;U˜~¨hÖ7Ð[_Ø#'Ø&8à %Ø).ô�÷  &Ø/:Ñ,�K Ø ×'Ñ'¨Ô4Ø ×'Ñ'¨Ö4à ×'Ñ'¨Ö4ñ- 6ô0  Ÿ)š) L°aÔ8ˆKç!Ü#Ÿkšk¨,¸AÔ>�Ø×3Ñ3°KÀÇÁÔPð !%§¡¨k×.CÑ.CÀAÀqÓ.I×.LÑ.LÈUÓ.SÓ TÐØ$Ð$r/   )r*  rÉ   r!  r¬   r‚   r·   r  r'  r&  r9   r$  rþ   rƒ   r-  r  r  r+  r  r  r  r  r#  r%  ©NN)rQ   rR   rS   rT   r¥   r2   r   rJ   rU   rV   rW   rX   s   @@r,   r  r  ‰  s<   ù‡ € ñ
÷68ó 68ñp ˜HÓ%÷I%ñ I%ó &÷I%ð I%r/   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚZambaMLPi]  c                óØ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n	        \        VP                  ,          V n        R# ©Fr‡   N)r1   r2   r‚   r9   rþ   r   r�   Ú	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn©r8   r‚   r:   s   &&€r,   r2   ÚZambaMLP.__init__^  s¤   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRWÔXˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPUÔVˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆŒÜ˜V×.Ñ.Õ/ˆŽr/   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# r¤   )rV  rX  rT  rU  )r8   ÚxrV  s   && r,   rJ   ÚZambaMLP.forwardh  s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr/   )rX  r‚   rV  rT  r9   rþ   rU  ©	rQ   rR   rS   rT   r2   rJ   rU   rV   rW   rX   s   @@r,   rQ  rQ  ]  s   ù‡ € õ0÷ò r/   rQ  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# )	ÚZambaAttentionDecoderLayerim  c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )r&   r‚   rƒ   Nr„   )r*   r+   s   "€r,   r-   Ú'ZambaAttentionDecoderLayer.__annotate__n  s#   ø€ ÷ Zñ Z™{ð Z±s¸Tµzñ Zr/   c                óü   <€ \         SV `  4        \        W4      V n        \	        V4      V n        \        VP                  VP                  R 7      V n	        \        VP                  VP                  R 7      V n        R# )©r'   N)r1   r2   r   Ú	self_attnrQ  Úfeed_forwardr$   rŠ   Úrms_norm_epsÚinput_layernormr9   Úpre_ff_layernormr•   s   &&&€r,   r2   Ú#ZambaAttentionDecoderLayer.__init__n  s]   ø€ Ü‰ÑÔÜ'¨Ó:ˆŒä$ VÓ,ˆÔÜ+¨F×,HÑ,HÈf×NaÑNaÔbˆÔÜ ,¨V×-?Ñ-?ÀV×EXÑEXÔ YˆÖr/   c                ó6  <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[ P                  R,          RS[R,          RS[R,          RS[S[,          R	S[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /# )
r&   r=   Úoriginal_hidden_statesrƒ   rj   Nr˜   Ú	use_cacherx   r(   ©	r4   r>   r[   r	   rÎ   r   r   rM   ÚFloatTensor)r*   r+   s   "€r,   r-   rb  v  s¦   ø€ ÷ 'ñ 'á—|‘|ð'ñ !&§¡ð'ñ ð	'ñ
 Ÿ™ tÕ+ð'ñ  �ð'ñ ˜$•;ð'ñ Ñ+Õ,ð'ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ'r/   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                  V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).
    layer_idx (`int`): layer_idx in the forward pass. Used to distinguish Zamba's tied transformer layers.
    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`).
r±   r=   rƒ   rj   r˜   rm  rA   rç   )r4   Úconcatenaterh  re  ri  rf  )	r8   r=   rl  rƒ   rj   r˜   rm  rx   r¹   s	   &&&&&&&, r,   rJ   Ú"ZambaAttentionDecoderLayer.forwardv  s›   € ô2 ×)Ò)¨=Ð*QÐWYÔZˆØ×,Ñ,¨]Ó;ˆØŸ>š>ñ 
Ø'ð
àð
ð *ð
ð ,ð	
ð
  ð
ð ñ
Ñˆð ×-Ñ-¨mÓ<ˆØ×)Ñ)¨-Ó8ˆàÐr/   )rf  rh  ri  re  r¤   )NNFr^  rX   s   @@r,   r`  r`  m  s    ù‡ € ÷Zõ Z÷'÷ 'ò 'r/   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# )ÚZambaMambaDecoderLayeri   c                ó&   <€ V ^8„  d   QhRS[ RS[/# r�   r„   )r*   r+   s   "€r,   r-   Ú#ZambaMambaDecoderLayer.__annotate__¡  s   ø€ ÷ #ñ #™{ð #±sñ #r/   c                óž   <€ \         SV `  4        \        WR 7      V n        \	        VP
                  VP                  R7      V n        W n        R# ))r‚   rƒ   rd  N)	r1   r2   r  Úmambar$   r9   rg  rh  rƒ   r•   s   &&&€r,   r2   ÚZambaMambaDecoderLayer.__init__¡  s:   ø€ Ü‰ÑÔÜ$¨FÔHˆŒ
Ü+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔØ"Žr/   c                óh  <€ 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[ P                  /# )r&   r=   rl  Nrƒ   rj   Úcausal_maskr˜   rm  Úposition_idsÚtransformer_hidden_statesrx   r(   )r4   r>   r[   r	   rÎ   r1  r   r   )r*   r+   s   "€r,   r-   rv  §  sÂ   ø€ ÷ *ñ *á—|‘|ð*ñ !&§¡¨tÕ 3ð*ñ ˜•:ð	*ñ
 Ÿ™ tÕ+ð*ñ —\‘\ DÕ(ð*ñ  �ð*ñ ˜$•;ð*ñ ×&Ñ&¨Õ-ð*ñ $)§<¡<°$Õ#6ð*ñ Ñ+Õ,ð*ñ 
�‰ñ*r/   c
           	     óˆ   € TpV	e	   W,           MTpV P                  V4      pV P                  ! RRVRVRV/V
B pW±,           pV# )a  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
    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`).
r=   r0  rj   rç   )rh  rx  )r8   r=   rl  rƒ   rj   r{  r˜   rm  r|  r}  rx   Úresiduals   &&&&&&&&&&, r,   rJ   ÚZambaMambaDecoderLayer.forward§  ss   € ð0 !ˆð
 :SÒ9^ˆMÖ5Ðdqð 	ð ×,Ñ,¨]Ó;ˆàŸ
š
ñ 
Ø'ð
à(ð
ð *ð
ð ñ	
ˆð !Õ0ˆàÐr/   )rh  rƒ   rx  )NNNNNFNNr^  rX   s   @@r,   rt  rt     s   ù‡ € ÷#ó #÷*÷ *ò *r/   rt  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# )ÚZambaHybridLayeriÔ  c                ó@   <€ V ^8„  d   QhRS[ RS[P                  RS[/# )r&   Úshared_transfÚlinearrx  )r`  r   r�   rt  )r*   r+   s   "€r,   r-   ÚZambaHybridLayer.__annotate__Õ  s(   ø€ ÷ #ñ #Ñ&@ð #É"Ï)É)ð #Ñ\rñ #r/   c                óH   <€ \         SV `  4        Wn        W n        W0n        R # r¤   )r1   r2   r„  r…  Úmamba_decoder)r8   r„  r…  rx  r:   s   &&&&€r,   r2   ÚZambaHybridLayer.__init__Õ  s   ø€ Ü‰ÑÔØ*ÔØŒØ"Ör/   c                óz  <€ 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[S[,          R
S[S[ P                  S[S[ P                  S[ P                  3,          R,          3,          /	# )r&   r=   rl  Nrƒ   rj   r{  r˜   rm  rx   r(   rn  )r*   r+   s   "€r,   r-   r†  Û  sÂ   ø€ ÷ -ñ -á—|‘|ð-ñ !&§¡¨tÕ 3ð-ñ ˜•:ð	-ñ
 Ÿ™ tÕ+ð-ñ —\‘\ DÕ(ð-ñ  �ð-ñ ˜$•;ð-ñ Ñ+Õ,ð-ñ 
‰u× Ñ ¡%©×(9Ñ(9¹5×;LÑ;LÐ(LÕ"MÐPTÕ"TÐTÕ	Uñ-r/   c                ó˜   € V P                   ! V3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/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`).
rl  rƒ   rj   r˜   rm  r}  )r„  r…  rˆ  )
r8   r=   rl  rƒ   rj   r{  r˜   rm  rx   r}  s
   &&&&&&&&, r,   rJ   ÚZambaHybridLayer.forwardÛ  s¯   € ð2 %)×$6Ò$6Øñ%
à#9ð%
ð  ð%
ð 'ð	%
ð
 ,ð%
ð  ð%
ð ñ%
Ð!ð %)§K¡KÐ0IÓ$JÐ!à×*Ò*Øñ
à&?ð
ð *ð
ð ,ð	
ð
  ð
ð ñ
ˆð Ðr/   )r…  rˆ  r„  )NNNNNFr^  rX   s   @@r,   r‚  r‚  Ô  s   ù‡ € ÷#ó #÷-÷ -ò -r/   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]R]/t]P                  ! 4       V 3R	 l4       tV3R
 ltRtVtV ;t# )ÚZambaPreTrainedModeli  ÚmodelTr‚  rt  r˜   r=   Ú
attentionsc                ó0  <€ V P                   P                  p\        SV `  V4       \	        V\
        4      '       EdÙ   \        P                  ! VP                  R VR7       V P                   P                  R,          p\        P                  ! VP                  V) V4       V P                   P                  V P                   P                  ,          V P                   P                  ,          p\        P                   ! \        P"                  ! V P                   P                  V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&                  ! \        P0                  ! V) 4      ) 4      ,           p\        P2                  ! VP4                  V4       \        P6                  ! ^VP8                  ^,           \        P:                  R7      R,          pVP=                  VP>                  R4      PA                  4       p\        P2                  ! VPB                  \        P&                  ! V4      PE                  VP                  VPF                  R4      4       \        PH                  ! VPJ                  4       R# R# )rš   )rF   Ústd)Úminr  Nr‰   r  rA   )&r‚   Úinitializer_ranger1   Ú_init_weightsÚ
isinstancer  ÚinitÚnormal_r%  r  Úuniform_r&  r  r9   r  r4   rÔ   ÚrandÚmathr)  Útime_step_maxÚtime_step_minÚclampÚtime_step_floorÚexpm1rµ   r'  r(  r  rD   r^   rþ   rw   r*  r_   r  Úones_rÉ   )	r8   rf   r’  Údt_init_stdr  rÅ   Úinv_dtrÆ   r:   s	   &&      €r,   r•  Ú"ZambaPreTrainedModel._init_weights  s÷  ø€ à�k‰k×+Ñ+ˆÜ‰Ñ˜fÔ%Ü�fœo×.Ó.Ü�LŠL˜×-Ñ-°C¸SÕAØŸ+™+×3Ñ3°TÕ9ˆKÜ�MŠM˜&×/Ñ/°+°¸{ÔKà!Ÿ[™[×5Ñ5¸¿¹×8OÑ8OÕOÐSW×S^ÑS^×SlÑSlÕlˆNÜ—’Ü—
’
˜4Ÿ;™;×4Ñ4°nÓEÜ—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×*Ñ*¨FÔ3ä—’˜Q × 5Ñ 5¸Õ 9ÄÇÁÔOÐPWÕXˆAØ—‘˜×1Ñ1°2Ó6×AÑAÓCˆAÜ�JŠJ�v—|‘|¤U§Y¢Y¨q£\×%9Ñ%9¸&×:NÑ:NÐPV×PeÑPeÐgiÓ%jÔkÜ�JŠJ�v—x‘xÖ ñ% /r/   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r
  r!   )r*   r+   s   "€r,   r-   Ú!ZambaPreTrainedModel.__annotate__  s   ø‡ ‚ áÑò r/   rç   )rQ   rR   rS   rT   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_is_statefulrt  r   Ú_can_record_outputsr4   Úno_gradr•  Ú__annotate_func__rU   rV   rW   rX   s   @@r,   rŽ  rŽ    sl   ù‡ € ð  ÐØ&*Ð#Ø+Ð-EÐFÐØ#4Ð"5ÐØÐØ€NØ€LàÐ/Ø�nðÐð
 ‡]‚]ƒ_ô!ó ð!÷! … r/   rŽ  c                   óv   a a€ ] tR tRt oRtV3R lV 3R llt]]]RV3R lR ll4       4       4       t	Rt
VtV ;t# )	Ú
ZambaModeli3  z‹
Transformer decoder consisting of *config.num_hidden_layers* layers. Each layer is a [`ZambaDecoderLayer`]

Args:
    config: ZambaConfig
c                ó    <€ V ^8„  d   QhRS[ /# r
  r!   )r*   r+   s   "€r,   r-   ÚZambaModel.__annotate__<  s   ø€ ÷ ñ ™{ñ r/   c                óX  <€ \         SV `  V4       VP                  V n        VP                  V n        \
        P                  ! VP                  VP                  V P                  4      V n        VP                  V n	        . pR V n
        \        V P                  4       F±  w  r4\        WR7      pVR8X  d‰   \
        P                  ! V P                  P                  V P                  P                  RR7      pVP                  \!        \#        V4      We4      4       V P                  f   RV R2RV R2/V n
        Kž  K   VP                  V4       K³  	  \
        P$                  ! V4      V n        \)        VP                  VP*                  R	7      V n        RV n        V P1                  4        R # )
N)rƒ   ÚhybridFr‡   z
layers.(?!z\.)\d+.shared_transfzlayers.z.shared_transfrd  )r1   r2   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr9   Úembed_tokensÚlayers_block_typeÚ_tied_weights_keysÚ	enumeratert  r�   r‚   rû   r‚  r`  Ú
ModuleListr7  r$   rg  Úfinal_layernormÚgradient_checkpointingÚ	post_init)r8   r‚   r7  Úlayer_idr-  rx  r…  r:   s   &&     €r,   r2   ÚZambaModel.__init__<  s]  ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔØ!'×!9Ñ!9ˆÔØˆØ"&ˆÔÜ$-¨d×.DÑ.DÖ$EÑ ˆHÜ*¨6ÔFˆEØ˜XÔ%ÜŸš 4§;¡;×#:Ñ#:¸D¿K¹K×<SÑ<SÐZ_Ô`�Ø—‘Ô.Ô/IÈ&Ó/QÐSYÓaÔbØ×*Ñ*Ò2à% h ZÐ/CÐDÈÐPXÈzÐYgÐFhð/�DÖ+ñ 3ð
 —‘˜eÖ$ñ %Fô —m’m FÓ+ˆŒä+¨F×,>Ñ,>ÀF×DWÑDWÔXˆÔà&+ˆÔ#à�‰Ör/   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[R,          RS[S[,          R	S[S[	,          /# )
r&   Ú	input_idsNrj   r|  r˜   Úinputs_embedsrm  rx   r(   )
r4   r1  r>   r	   ro  rÎ   r   r   rM   r   )r*   r+   s   "€r,   r-   r´  [  s™   ø€ ÷ =
ñ =
á×#Ñ# dÕ*ð=
ñ Ÿ™ tÕ+ð=
ñ ×&Ñ&¨Õ-ð	=
ñ
  �ð=
ñ ×(Ñ(¨4Õ/ð=
ñ ˜$•;ð=
ñ Ñ+Õ,ð=
ñ 
Ñ(Õ	(ñ=
r/   c           
     ó  € 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                   4       F$  w  rÞV! VV	VVR
,          VR	,          3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)r‚   rÐ   r‚   rÇ  rj   r˜   r|  Úfull_attentionÚlinear_attentionrm  )Úlast_hidden_stater˜   rç   )Ú
ValueErrorr»  r4   Úcloner
   r‚   Úget_seq_lengthr(  rN   rÑ   r¸   r–  Údictr   r   r¾  r7  rÀ  r   )r8   rÆ  rj   r|  r˜   rÇ  rm  rx   r=   rl  Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsrƒ   Úlayers   &&&&&&&,       r,   rJ   ÚZambaModel.forwardX  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ð	ð $ð	ð ñ	ŠMñ !7ð ×,Ñ,¨]Ó;ˆä&Ø+ß/8˜Oô
ð 	
à>Bô
ð 	
r/   )r½  r»  rÀ  rÁ  r7  r¼  r¸  r¹  )NNNNNN)rQ   rR   rS   rT   r¥   r2   r   r    r   rJ   rU   rV   rW   rX   s   @@r,   r²  r²  3  sB   ù‡ € ñ÷ó ð8  ØØ÷=
ñ =
ó ó ó  ÷=
ð =
r/   r²  c                   ó|   a a€ ] tR tRt oRR/tV3R lV 3R llt]]R
V3R lR ll4       4       tV 3R lt	R	t
VtV ;t# )ÚZambaForCausalLMiœ  zlm_head.weightzmodel.embed_tokens.weightc                ó    <€ V ^8„  d   QhRS[ /# r
  r!   )r*   r+   s   "€r,   r-   ÚZambaForCausalLM.__annotate__Ÿ  s   ø€ ÷ ñ ™{ñ r/   c                óì   <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# rS  )
r1   r2   r²  r�  r¹  r   r�   r9   Úlm_headrÂ  rY  s   &&€r,   r2   ÚZambaForCausalLM.__init__Ÿ  sU   ø€ Ü‰Ñ˜Ô Ü Ó'ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Ör/   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[
,          /
# )r&   rÆ  Nrj   r|  r˜   rÇ  Úlabelsrm  Úlogits_to_keeprx   r(   )r4   r1  r>   r	   ro  rÎ   r[   r   r   rM   r   )r*   r+   s   "€r,   r-   rØ  ª  sÍ   ø€ ÷ @
ñ @
á×#Ñ# dÕ*ð@
ñ Ÿ™ tÕ+ð@
ñ ×&Ñ&¨Õ-ð	@
ñ
  �ð@
ñ ×(Ñ(¨4Õ/ð@
ñ × Ñ  4Õ'ð@
ñ ˜$•;ð@
ñ ™eŸl™lÕ*ð@
ñ Ñ+Õ,ð@
ñ 
Ñ'Õ	'ñ@
r/   c	                ó|  € V P                   ! R
RVRVRVRVRVRV/V	B p
V
P                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pRpVe    V P                  ! VVV P                  3/ V	B p\        VVV
P                  V
P                  V
P                  R	7      # )aè  
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, ZambaForCausalLM

>>> model = ZambaForCausalLM.from_pretrained("Zyphra/Zamba-7B-v1")
>>> tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba-7B-v1")

>>> 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."
```rÆ  rj   r|  r˜   rÇ  rm  Nr]   ©ÚlossÚlogitsr˜   r=   r�  rç   )r�  rË  r–  r[   ÚslicerÚ  Úloss_functionr¹  r   r˜   r=   r�  )r8   rÆ  rj   r|  r˜   rÇ  rÝ  rm  rÞ  rx   Úoutputsr=   Úslice_indicesrâ  rá  s   &&&&&&&&&,     r,   rJ   ÚZambaForCausalLM.forward¨  sü   € ðH ,0¯:ª:ñ ,
Øð,
à)ð,
ð &ð,
ð ,ð	,
ð
 (ð,
ð  ð,
ð ñ,
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%ØØØ—‘ñð ñ	ˆDô &ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r/   c                ó\   <€ V P                   P                  VR &   \        SV `  ! V3/ VB pV# )rÞ  )r‚   Únum_logits_to_keepr1   Úprepare_inputs_for_generation)r8   rÆ  rx   Úmodel_inputsr:   s   &&, €r,   rê  Ú.ZambaForCausalLM.prepare_inputs_for_generationì  s2   ø€ Ø#'§;¡;×#AÑ#AˆÐÑ Ü‘wÒ<¸YÑQÈ&ÑQˆØÐr/   )rÚ  r�  r¹  )NNNNNNNrõ   )rQ   rR   rS   rT   r½  r2   r   r   rJ   rê  rU   rV   rW   rX   s   @@r,   rÖ  rÖ  œ  sJ   ù‡ € Ø*Ð,GÐHÐ÷ó ð Ø÷@
ñ @
ó ó ð@
÷Dõ r/   rÖ  aÊ  
    The Zamba Model with a sequence classification head on top (linear layer).

    [`ZambaForSequenceClassification`] uses the last token in order to do the classification, as other causal models
    (e.g. GPT-2) do.

    Since it does classification on the last token, it requires to know the position of the last token. If a
    `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in each row. If
    no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the
    padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in
    each row of the batch).
    )Úcustom_introc                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚZambaForSequenceClassificationiò  c                óì   <€ \         SV `  V4       VP                  V n        \        V4      V n        \
        P                  ! VP                  V P                  R R7      V n        V P                  4        R# rS  )
r1   r2   Ú
num_labelsr²  r�  r   r�   r9   ÚscorerÂ  rY  s   &&€r,   r2   Ú'ZambaForSequenceClassification.__init__  sS   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ Ó'ˆŒ
Ü—Y’Y˜v×1Ñ1°4·?±?ÈÔOˆŒ
ð 	�‰Ör/   c                ó6  <€ 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[,          R
S[S[	,          /	# )r&   rÆ  Nrj   r|  r˜   rÇ  rÝ  rm  rx   r(   )
r4   r1  r>   r	   ro  rÎ   r   r   rM   r   )r*   r+   s   "€r,   r-   Ú+ZambaForSequenceClassification.__annotate__  s¹   ø€ ÷ R
ñ R
á×#Ñ# dÕ*ðR
ñ Ÿ™ tÕ+ðR
ñ ×&Ñ&¨Õ-ð	R
ñ
  �ðR
ñ ×(Ñ(¨4Õ/ðR
ñ × Ñ  4Õ'ðR
ñ ˜$•;ðR
ñ Ñ+Õ,ðR
ñ 
Ñ1Õ	1ñR
r/   c                ó  € V P                   ! V3RVRVRVRVRV/VB p	V	P                  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Wþ,          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eµ   VP                  VP                  4      pV P                  P"                  f–   V P$                  ^8X  d   RV P                  n        MrV P$                  ^8”  dQ   VP&                  \        P(                  8X  g    VP&                  \        P*                  8X  d   RV P                  n        MRV P                  n        V P                  P"                  R8X  dL   \-        4       pV P$                  ^8X  d'   V! VP/                  4       VP/                  4       4      pM�V! VV4      pM†V P                  P"                  R8X  d>   \1        4       pV! VP3                  RV P$                  4      VP3                  R4      4      pM.V P                  P"                  R8X  d   \5        4       pV! VV4      p\7        VVV	P8                  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).
rj   r|  r˜   rÇ  rm  Nz=Cannot handle batch sizes > 1 if no padding token is defined.)rÑ   rB   zŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`rÐ   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrà  rA   )r�  rË  rò  rN   r‚   r·  rÌ  rC   rÑ   r4   Úint32r(  ÚargmaxÚloggerÚwarning_oncer:   rQ   Úproblem_typerñ  rB   Úlongr[   r   rÕ   r   r›   r   r   r˜   r=   r�  )r8   rÆ  rj   r|  r˜   rÇ  rÝ  rm  rx   Útransformer_outputsr=   râ  rý   Úlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesÚpooled_logitsrá  Úloss_fcts   &&&&&&&&,          r,   rJ   Ú&ZambaForSequenceClassification.forward
  sí  € ð& 8<·z²zØñ8
à)ð8
ð &ð8
ð ,ð	8
ð
 (ð8
ð  ð8
ð ñ8
Ðð ,×=Ñ=ˆØ—‘˜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ˆàˆØÓØ—Y‘Y˜vŸ}™}Ó-ˆFØ�{‰{×'Ñ'Ò/Ø—?‘? aÔ'Ø/;�D—K‘KÕ,Ø—_‘_ qÔ(¨f¯l©l¼e¿j¹jÔ.HÈFÏLÉLÔ\a×\eÑ\eÔLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ô7Ü"›9�Ø—?‘? aÔ'Ù# M×$9Ñ$9Ó$;¸V¿^¹^Ó=MÓN‘Dá# M°6Ó:‘DØ—‘×)Ñ)Ð-JÔJÜ+Ó-�Ù × 2Ñ 2°2°t·±Ó GÈÏÉÐUWËÓY‘Ø—‘×)Ñ)Ð-IÔIÜ,Ó.�Ù ¨vÓ6�ä/ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r/   )r�  rñ  rò  )NNNNNNN)rQ   rR   rS   rT   r2   r   r   rJ   rU   rV   rW   rX   s   @@r,   rï  rï  ò  s4   ù‡ € õð Ø÷R
ñ R
ó ó ÷R
ð R
r/   rï  )rš   rO  )NNFN)NNNFFFF)rÖ  rï  r²  rŽ  )Pr¥   r›  Úcollections.abcr   r4   Útorch.nn.functionalr   ru   r¶   Útorch.nnr   r   r   Ú r   r—  Úactivationsr   Úcache_utilsr	   r
   Ú
generationr   Úintegrationsr   r   Úintegrations.accelerater   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.import_utilsr   r   r   Úutils.output_capturingr    Úconfiguration_zambar"   Ú
get_loggerrQ   rü  rm   r$   rd   r}   r   r§   r¨   r¾   rÛ   r  r  rQ  r`  rt  r‚  rŽ  r²  rÖ  rï  Ú__all__rç   r/   r,   Ú<module>r     s  ðñ& ã Ý $ã ß Ð Ý ß AÑ Aå &Ý !ß .Ý )ß WÝ =ß PÝ 9ß qÑ qß FÝ &ß RÓ RÝ 7÷ñ õ
 6Ý ,ð 
×	Ò	˜HÓ	%€ôJ�2—9‘9ô Jõ*	U÷%ô2C)�R—Y‘Yô C)òL	ñ (Ð(>ÀÓPö'ó Qð'ñ& (Ð(:¸OÓLö'ó Mð'ñ, (ØØóö*ó	ð*ñZ (ØØóöcó	ðcñL Ð*Ð,HÐJZÐ\pÐqÓrôO%�b—i‘ió O%ó sðO%ôfˆr�y‰yô ô 0 §¡ô 0ôf1Ð7ô 1ôh4Ð1ô 4ðn ô$!˜?ó $!ó ð$!ðN ôd
Ð%ó d
ó ðd
ôPSÐ+¨_ô Sñl ðôô^
Ð%9ó ^
óð^
òB g‚r/   