+
    UV-j0Z  ã                   óT  € ^ RI t ^ RIHt ^ RIHtHt ^ RI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 R]
P(                  4      t ! R	 R
]
P(                  4      t ! R R]
P(                  4      t ! R R]
P(                  4      t]! ]P2                  RR7      R 4       t ! R R]
P(                  4      t ! R R]
P(                  4      t ! R R]
P(                  4      t ! R R]
P(                  4      t]! ]P2                  RR7      R 4       t ! R R]
P(                  4      t R# )é    N)Úpartial)ÚAnyÚOptional)ÚLanguageModelOutputÚcreate_attention_maskÚscaled_dot_product_attention)ÚKVCacheÚRotatingKVCache©Ú
TextConfigc                   óZ   a a€ ] tR t^t oRV3R lV 3R llltR tV3R lR ltRtVtV ;t	# )ÚGemma3nRMSNormc                ó2   <€ V ^8„  d   QhRS[ RS[RS[RS[/# )é   ÚdimÚepsÚscale_shiftÚ
with_scale)ÚintÚfloatÚbool)ÚformatÚ__classdict__s   "€Úp/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/gemma3n/language.pyÚ__annotate__ÚGemma3nRMSNorm.__annotate__   s3   ø€ ÷ ñ áðñ ðñ ð	ñ
 ñó    c                ó´   <€ \         SV `  4        W n        W0n        W@n        V P                  '       d   \
        P                  ! V4      V n        R # R V n        R # ©N)ÚsuperÚ__init__r   r   r   ÚmxÚonesÚweight)Úselfr   r   r   r   Ú	__class__s   &&&&&€r   r!   ÚGemma3nRMSNorm.__init__   s?   ø€ ô 	‰ÑÔØŒØ&ÔØ$Œà�?�?ˆ?äŸ'š' #›,ˆDŽKàˆDŽKr   c                óœ   € V\         P                  ! VP                  4       P                  RRR7      V P                  ,           4      ,          # ©é   T©ÚaxisÚkeepdimséÿÿÿÿ)r"   ÚrsqrtÚsquareÚmeanr   ©r%   Úxs   &&r   Ú_normÚGemma3nRMSNorm._norm$   s2   € à”2—8’8˜AŸH™H›JŸO™O°¸d˜OÓCÀdÇhÁhÕNÓOÕOÐOr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r3   Úreturn©r"   Úarray)r   r   s   "€r   r   r   (   s#   ø€ ÷ &ñ &™"Ÿ(™(ð &¡r§x¡xñ &r   c                óþ   € V P                  VP                  \        P                  4      4      pV P                  '       d$   W P
                  V P                  ,           ,          pVP                  VP                  4      # r   )r4   Úastyper"   Úfloat32r   r$   r   Údtype)r%   r3   Úoutputs   && r   Ú__call__ÚGemma3nRMSNorm.__call__(   sP   € à—‘˜AŸH™H¤R§Z¡ZÓ0Ó1ˆà�?�?ˆ?ØŸ{™{¨T×-=Ñ-=Õ=Õ>ˆFà�}‰}˜QŸW™WÓ%Ð%r   )r   r   r$   r   )g�íµ ÷Æ°>ç        T)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   r4   r@   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r&   r   s   @@r   r   r      s$   ù‡ € ÷õ ò$P÷&÷ &ð &r   r   c                   óH   a a€ ] tR t^2t oRV3R lV 3R llltR tRtVtV ;t# )Ú
RMSNoScalec                ó    <€ V ^8„  d   QhRS[ /# )r   r   )r   )r   r   s   "€r   r   ÚRMSNoScale.__annotate__3   s   ø€ ÷ ñ ™Eñ r   c                ó0   <€ \         SV `  4        Wn        R # r   )r    r!   r   )r%   r   r&   s   &&€r   r!   ÚRMSNoScale.__init__3   s   ø€ Ü‰ÑÔØŽr   c                óX   € \         P                  P                  VR V P                  4      # r   )r"   ÚfastÚrms_normr   r2   s   &&r   r@   ÚRMSNoScale.__call__7   s   € Ü�w‰w×Ñ  4¨¯©Ó2Ð2r   ©r   )gñhãˆµøä>©	rC   rD   rE   rF   r!   r@   rG   rH   rI   rJ   s   @@r   rL   rL   2   s   ù‡ € ÷õ ÷3ò 3r   rL   c                   óT   a a€ ] tR t^;t oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚGemma3nLaurelBlockz Learned Augmented Residual Layerc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r   r   s   "€r   r   ÚGemma3nLaurelBlock.__annotate__>   s   ø€ ÷ 
ñ 
™zñ 
r   c                óÒ  <€ \         SV `  4        Wn        \        P                  ! V P                  P
                  V P                  P                  R R7      V n        \        P                  ! V P                  P                  V P                  P
                  R R7      V n        \        P                  ! V P                  P
                  V P                  P                  R7      V n        R# ©F©Úbias©Údimsr   N)r    r!   r[   ÚnnÚLinearÚhidden_sizeÚlaurel_rankÚlinear_leftÚlinear_rightÚRMSNormÚrms_norm_epsÚpost_laurel_norm©r%   r[   r&   s   &&€r   r!   ÚGemma3nLaurelBlock.__init__>   sš   ø€ Ü‰ÑÔØŒäŸ9š9Ø�K‰K×#Ñ# T§[¡[×%<Ñ%<À5ô
ˆÔô ŸIšIØ�K‰K×#Ñ# T§[¡[×%<Ñ%<À5ô
ˆÔô !#§
¢
Ø—‘×(Ñ(Ø—‘×(Ñ(ô!
ˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r7   r9   )r   r   s   "€r   r   r\   M   s#   ø€ ÷ #ñ #™"Ÿ(™(ð #¡r§x¡xñ #r   c                óx   € V P                  V4      pV P                  V4      pV P                  V4      pW,           # r   )rg   rh   rk   )r%   r3   Úlaurel_xÚnormed_laurel_xs   &&  r   r@   ÚGemma3nLaurelBlock.__call__M   s;   € Ø×#Ñ# AÓ&ˆØ×$Ñ$ XÓ.ˆØ×/Ñ/°Ó9ˆØÕ"Ð"r   )r[   rg   rh   rk   )
rC   rD   rE   rF   Ú__doc__r!   r@   rG   rH   rI   rJ   s   @@r   rX   rX   ;   s!   ù‡ € Ù*÷
ó 
÷#÷ #ð #r   rX   c                   óT   a a€ ] tR t^Tt 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# )ÚGemma3nAttentionc                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# ©r   r[   Ú	layer_idxÚis_kv_shared_layer©r   r   r   )r   r   s   "€r   r   ÚGemma3nAttention.__annotate__U   s"   ø€ ÷ 
ñ 
™zð 
±cð 
Étñ 
r   c                óÊ  <€ \         SV `  4        VP                  V,          R 8H  V n        VP                  pVP
                  ;V n        pVP                  ;V n        pWV,          V n	        VP                  ;V n
        pW n        RV n        \        P                  ! WEV,          RR7      V n        \        P                  ! WFV,          RR7      V n        \        P                  ! WFV,          RR7      V n        \        P                  ! WW,          VRR7      V n        \        P&                  ! VP                  VP(                  R7      V n        \        P&                  ! VP                  VP(                  R7      V n        \/        VP(                  R7      V n        W0n        \        P4                  ! TRV P                  '       d   VP6                  MVP8                  R7      V n        R# )Úsliding_attentionç      ð?Fr_   ra   rU   )ÚtraditionalÚbaseN)r    r!   Úlayer_typesÚ
is_slidingre   Únum_attention_headsÚn_headsÚnum_key_value_headsÚ
n_kv_headsÚrepeatsÚhead_dimrx   Úscalerc   rd   Úq_projÚk_projÚv_projÚo_projri   rj   Úq_normÚk_normrL   Úv_normry   ÚRoPEÚrope_local_base_freqÚ
rope_thetaÚrope)	r%   r[   rx   ry   r   r„   r†   rˆ   r&   s	   &&&&    €r   r!   ÚGemma3nAttention.__init__U   sV  ø€ Ü‰ÑÔØ ×,Ñ,¨YÕ7Ð;NÑNˆŒà× Ñ ˆØ!'×!;Ñ!;Ð;ˆŒ�wØ'-×'AÑ'AÐAˆŒ˜*ØÕ,ˆŒØ#)§?¡?Ð2ˆŒ˜Ø"ŒàˆŒ
ä—i’i ¨xÕ%7¸eÔDˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜ—i’i Õ 2°C¸eÔDˆŒä—j’j f§o¡o¸6×;NÑ;NÔOˆŒÜ—j’j f§o¡o¸6×;NÑ;NÔOˆŒÜ  V×%8Ñ%8Ô9ˆŒà"4Ôä—G’GØØà/3¯¯¨�×+Ò+ÀF×DUÑDUô	
ˆŽ	r   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# )r   r3   ÚmaskÚcacher8   ©r"   r:   r   r   )r   r   s   "€r   r   r{   u   sH   ø€ ÷ 1#ñ 1#á�8‰8ð1#ñ ‘r—x‘xÕ ð1#ñ ™�}ð	1#ñ
 
�‰ñ1#r   c           	     óü  € VP                   w  rEpV P                  V4      pVP                  WERV P                  4      pV P	                  V4      p^ pV P
                  '       d0   Ve,   VP                  p	V	^ ,          V	^,          rºVP                  pEMVeC   VP                  p\        V\        P                  4      '       d   \        P                  ! V4      pV P                  V4      P                  WERV P                  4      p
V P                  V
4      p
V
P                  ^ ^^^4      p
V P                  W¨R7      p
V P                  V4      P                  WERV P                  4      pV P!                  V4      pVP                  ^ ^^^4      pVe   VP#                  W«4      w  r«VP                  ^ ^^^4      pV P                  WxR7      p\        V\        P                  4      '       dH   VP                   R,          V
P                   R,          8w  d   VRRV
P                   R,          13,          p\%        WzW³V P&                  VR7      pVP                  ^ ^^^4      P                  WER4      pV P)                  V4      # )r*   N)ÚoffsetºNNN)r˜   r‰   r—   r.   éþÿÿÿ)ÚshaperŠ   Úreshaperˆ   rŽ   ry   Ústater›   Ú
isinstancer"   r:   r‹   r�   Ú	transposer”   rŒ   r�   Úupdate_and_fetchr   r‰   r�   )r%   r3   r—   r˜   ÚBÚLÚ_Úqueriesr›   r    ÚkeysÚvaluesr?   s   &&&&         r   r@   ÚGemma3nAttention.__call__u   s  € ð —'‘'‰ˆˆaà—+‘+˜a“.ˆØ—/‘/ !¨¨D¯M©MÓ:ˆØ—+‘+˜gÓ&ˆàˆØ×"×"Ð" uÒ'8Ø—K‘KˆEØ  �8 U¨1¥X�&Ø—\‘\ŠFð Ò ØŸ™�Ü˜f¤b§h¡h×/Ò/ÜŸXšX fÓ-�Fà—;‘;˜q“>×)Ñ)¨!°°D·M±MÓBˆDØ—;‘;˜tÓ$ˆDØ—>‘> ! Q¨¨1Ó-ˆDØ—9‘9˜T�9Ó1ˆDà—[‘[ “^×+Ñ+¨A°"°d·m±mÓDˆFØ—[‘[ Ó(ˆFØ×%Ñ% a¨¨A¨qÓ1ˆFàÒ Ø$×5Ñ5°dÓC‘�à×#Ñ# A q¨!¨QÓ/ˆØ—)‘)˜G�)Ó3ˆä�dœBŸH™H×%Ò%¨$¯*©*°R­.¸D¿J¹JÀr½NÔ*JØ˜Ð+˜TŸZ™Z¨�^Ð+Ð+Õ,ˆDä-Ø˜6°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆà�{‰{˜6Ó"Ð"r   )rˆ   ry   r‚   r�   r‹   rx   r„   r†   r�   rŽ   rŠ   r‡   r”   r‰   r�   rŒ   )NNrV   rJ   s   @@r   ru   ru   T   s   ù‡ € ÷
ó 
÷@1#÷ 1#ò 1#r   ru   T)Ú	shapelessc                 ó  € \         P                  ! V RRR7      p\         P                  ! V RRR7      pW#VP                  VP                  4      ,          ,           p\
        P                  ! \         P                  ! ^ W,
          4      4      # r)   )r"   r1   Ústdr<   r>   rc   Úgelu_approxÚmaximum)ÚinputsÚstd_multiplierÚinputs_meanÚ
inputs_stdÚcutoff_xs   &&   r   Ú	gelu_topkrµ   ©   sa   € ä—'’'˜& r°DÔ9€KÜ—’˜ R°$Ô7€JØ¨.×*?Ñ*?À
×@PÑ@PÓ*QÕQÕQ€HÜ�>Š>œ"Ÿ*š* Q¨Õ(9Ó:Ó;Ð;r   c                   óT   a a€ ] tR t^±t oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚMLPc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r[   rx   )r   r   )r   r   s   "€r   r   ÚMLP.__annotate__²   s   ø€ ÷ ñ ™zð ±cñ r   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                  e   VP                  V,          V n        MRV n        V P                  ^ 8”  dQ   \        P                  ! R4      \        P                  ! ^V P                  ,          ^,
          4      ,          V n        R# R# )r   Fr_   NrB   ç       @)r    r!   r[   re   Úintermediate_sizerc   rd   Ú	gate_projÚup_projÚ	down_projÚactivation_sparsity_patternÚactivation_sparsityÚmathÚsqrtr"   ÚerfinvÚ_std_multiplier)r%   r[   rx   r&   s   &&&€r   r!   ÚMLP.__init__²   s  ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸšØ×Ñ˜d×4Ñ4°QÕ7¸eô
ˆŒô —y’yØ×Ñ˜d×4Ñ4°QÕ7¸eô
ˆŒô ŸšØ×"Ñ" 1Õ% t×'7Ñ'7¸eô
ˆŒð ×-Ñ-Ò9Ø'-×'IÑ'IÈ)Õ'TˆDÕ$à'*ˆDÔ$Ø×#Ñ# aÔ'Ü#'§9¢9¨S£>´B·I²IØ�D×,Ñ,Õ,¨qÕ0ó5õ $ˆDÖ ñ (r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r3   r9   )r   r   s   "€r   r   r¹   É   s   ø€ ÷ ñ ™"Ÿ(™(ñ r   c                óò   € V P                  V4      pV P                  R 8”  d   \        W P                  4      pM\        P
                  ! V4      pV P                  V4      pV P                  W4,          4      pV# )rB   )r½   rÁ   rµ   rÅ   rc   r®   r¾   r¿   )r%   r3   r½   Úactivationsr¾   r¿   s   &&    r   r@   ÚMLP.__call__É   s`   € Ø—N‘N 1Ó%ˆ	Ø×#Ñ# cÔ)Ü# I×/CÑ/CÓD‰KäŸ.š.¨Ó3ˆKØ—,‘,˜q“/ˆØ—N‘N ;Õ#8Ó9ˆ	ØÐr   )rÅ   rÁ   r[   r¿   r½   re   r¼   r¾   )r   rV   rJ   s   @@r   r·   r·   ±   s   ù‡ € ÷õ ÷.÷ ð r   r·   c                   óx   a a€ ] tR t^Ôt oRtV3R lV 3R lltV3R lR ltV3R lR ltV3R lR	 ltR
t	Vt
V ;t# )ÚGemma3nAltUpzAlternating Updates (AltUp)c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )r   r   s   "€r   r   ÚGemma3nAltUp.__annotate__×   s   ø€ ÷ 
ñ 
™zñ 
r   c                óÌ  <€ \         SV `  4        Wn        \        P                  ! V P                  P
                  34      V n        \        P                  ! V P                  P                  V P                  P                  R R7      V n
        \        P                  ! V P                  P                  V P                  P                  ^,          R R7      V n        \        P                  ! V P                  P
                  V P                  P                  R R7      V n        \        P                  ! V P                  P
                  V P                  P                  R7      V n        R# r^   )r    r!   r[   r"   Úzerosre   Úcorrect_output_scalerc   rd   Úaltup_num_inputsÚcorrection_coefsÚprediction_coefsÚmodality_routerri   rj   Úrouter_normrl   s   &&€r   r!   ÚGemma3nAltUp.__init__×   sì   ø€ Ü‰ÑÔØŒä$&§H¢H¨d¯k©k×.EÑ.EÐ-GÓ$HˆÔ!Ü "§	¢	Ø�K‰K×(Ñ(¨$¯+©+×*FÑ*FÈUô!
ˆÔô !#§	¢	Ø�K‰K×(Ñ(¨$¯+©+×*FÑ*FÈÕ*IÐPUô!
ˆÔô  "ŸyšyØ�K‰K×#Ñ# T§[¡[×%AÑ%AÈô 
ˆÔô Ÿ:š:Ø—‘×(Ñ(Ø—‘×(Ñ(ô
ˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r7   r9   )r   r   s   "€r   r   rÎ   ê   s#   ø€ ÷ ñ ©2¯8©8ð ¹¿¹ñ r   c                óð   € V P                  V4      V P                  P                  R,          ,          pV P                  V4      P	                  \
        P                  4      p\
        P                  ! V4      # )r~   g      ð¿)rÖ   r[   re   rÕ   r<   r"   r=   Útanh)r%   r3   Úrouter_inputsÚrouteds   &&  r   Úcompute_router_modalitiesÚ&Gemma3nAltUp.compute_router_modalitiesê   sS   € Ø×(Ñ(¨Ó+¨t¯{©{×/FÑ/FÈÕ/LÕMˆØ×%Ñ% mÓ4×;Ñ;¼B¿J¹JÓGˆÜ�wŠw�v‹Ðr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r7   r9   )r   r   s   "€r   r   rÎ   ï   s#   ø€ ÷ +ñ +™Ÿ™ð +¡b§h¡hñ +r   c                ó®  € V P                  WP                  P                  ,          4      pV P                  P                  P                  \        P                  4      V P                  n        V P                  P                  ee   \        P                  ! V P                  P                  V P                  P                  ) V P                  P                  4      V P                  n        V P                  V4      P                  ! . VP                  R R OV P                  P                  NV P                  P                  N5!  P                  ^ ^^^4      pVP                  \        P                  4      pVP                  ^^^^ 4      p\        P                  ! WS4      pVP                  ^^ ^^4      pWd,          pVP                  VP                  4      # )Nr.   )rÝ   r[   Úaltup_active_idxrÔ   r$   r<   r"   r=   Úaltup_coef_clipÚcliprŸ   rž   rÒ   r¢   Úmatmulr>   )r%   r3   Ú
modalitiesÚ	all_coefsÚx_upÚ
x_permutedÚpredictionss   &&     r   ÚpredictÚGemma3nAltUp.predictï   sw  € Ø×3Ñ3°A·k±k×6RÑ6RÕ4SÓTˆ
à'+×'<Ñ'<×'CÑ'C×'JÑ'JÌ2Ï:É:Ó'Vˆ×ÑÔ$à�;‰;×&Ñ&Ò2Ü+-¯7ª7Ø×%Ñ%×,Ñ,Ø—‘×,Ñ,Ð,Ø—‘×+Ñ+ó,ˆD×!Ñ!Ô(ð ×!Ñ! *Ó-ß‰Wðð à×!Ñ! # 2Ð&ðð —‘×,Ñ,ðð —‘×,Ñ,ó	÷ ‰Y�q˜!˜Q Ó"ð 	ð �x‰xœŸ
™
Ó#ˆØ—^‘^ A q¨!¨QÓ/ˆ
Ü—i’i 
Ó6ˆØ!×+Ñ+¨A¨q°!°QÓ7ˆØÕˆØ×!Ñ! !§'¡'Ó*Ð*r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   ré   Ú	activatedr9   )r   r   s   "€r   r   rÎ     s#   ø€ ÷ 1ñ 1¡2§8¡8ð 1¹¿¹ñ 1r   c                ó²  € V P                  V4      pV P                  P                  P                  \        P
                  4      V P                  n        V P                  P                  ee   \        P                  ! V P                  P                  V P                  P                  ) V P                  P                  4      V P                  n        V P                  V4      R,           pWP                  P                  ,          pW%,
          pVP                  ^^ ^4      R,          pVR ,          V,          pWq,          pVP                  VP                  4      # )Nr~   ).N)rÝ   rÓ   r$   r<   r"   r=   r[   râ   rã   rá   r¢   r>   )r%   ré   rí   rå   ræ   Úactive_xÚ
innovationÚ	correcteds   &&&     r   ÚcorrectÚGemma3nAltUp.correct  s  € Ø×3Ñ3°IÓ>ˆ
à'+×'<Ñ'<×'CÑ'C×'JÑ'JÌ2Ï:É:Ó'Vˆ×ÑÔ$à�;‰;×&Ñ&Ò2Ü+-¯7ª7Ø×%Ñ%×,Ñ,Ø—‘×,Ñ,Ð,Ø—‘×+Ñ+ó,ˆD×!Ñ!Ô(ð ×)Ñ)¨*Ó5¸Õ;ˆ	àŸ{™{×;Ñ;Õ<ˆØÕ)ˆ
à×'Ñ'¨¨1¨aÓ0°Õ;ˆ	Ø˜tÕ$ yÕ0ˆ	ØÕ ˆ	à×Ñ 	§¡Ó0Ð0r   )r[   rÑ   rÓ   rÕ   rÔ   rÖ   )rC   rD   rE   rF   rs   r!   rÝ   rê   rò   rG   rH   rI   rJ   s   @@r   rÌ   rÌ   Ô   s5   ù‡ € Ù%÷
ó 
÷&ð ÷
+ð +÷:1÷ 1ð 1r   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# )ÚGemma3nDecoderLayeri$  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# rw   rz   )r   r   s   "€r   r   Ú Gemma3nDecoderLayer.__annotate__%  s"   ø€ ÷ (
ñ (
™zð (
±cð (
Étñ (
r   c                ó  <€ \         SV `  4        Wn        VP                  V n        W n        \        WV4      V n        \        WR 7      V n        \        P                  ! V P                  VP                  R7      V n        \        P                  ! V P                  VP                  R7      V n        \        P                  ! V P                  VP                  R7      V n        \        P                  ! V P                  VP                  R7      V n        V P                  P                   V n        VP"                  V n        VP$                  V n        \'        V4      V n        \+        V4      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7      V n        R# ))rx   rU   Fr_   N)r    r!   r[   re   rx   ru   Ú	self_attnr·   Úmlprc   ri   rj   Úinput_layernormÚpost_attention_layernormÚpre_feedforward_layernormÚpost_feedforward_layernormr‚   Úsliding_windowÚhidden_size_per_layer_inputrÌ   ÚaltuprX   Úlaurelrd   Úper_layer_input_gateÚper_layer_projectionÚpost_per_layer_input_norm)r%   r[   rx   ry   r&   s   &&&&€r   r!   ÚGemma3nDecoderLayer.__init__%  s‰  ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ"ŒÜ)¨&Ð=OÓPˆŒÜ�vÔ3ˆŒÜ!ŸzšzØ×ÑØ×#Ñ#ô 
ˆÔô
 )+¯
ª
Ø×ÑØ×#Ñ#ô)
ˆÔ%ô *,¯ªØ×ÑØ×#Ñ#ô*
ˆÔ&ô +-¯*ª*Ø×ÑØ×#Ñ#ô+
ˆÔ'ð Ÿ.™.×3Ñ3ˆŒØ$×3Ñ3ˆÔà+1×+MÑ+MˆÔ(ä! &Ó)ˆŒ
Ü(¨Ó0ˆŒÜ$&§I¢IØ×Ñ˜d×>Ñ>ÀUô%
ˆÔ!ô %'§I¢IØ×,Ñ,¨d×.>Ñ.>ÀUô%
ˆÔ!ô *,¯ªØ×ÑØ×#Ñ#ô*
ˆÖ&r   c          	      óž   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[S[ P                  ,          /# )r   r3   r—   r˜   Úper_layer_inputr™   )r   r   s   "€r   r   r÷   O  sM   ø€ ÷ -%ñ -%á�8‰8ð-%ñ ‘r—x‘xÕ ð-%ñ ™�}ð	-%ñ
 "¡"§(¡(Õ+ñ-%r   c                ól  € V P                   P                  V4      pWPP                  P                  ,          pV P	                  V4      pV P                  V4      pV P                  VVV4      p	V P                  V	4      p	Wi,           p
W¨,           R,          pV P                  V4      pV P                  V4      pV P                  V4      pW¾,           pV P                   P                  W_4      pVV P                  P                  ,          pV P                  P                  '       d   VV P                   P                  ,          pV P                  V4      p\        P                   ! V4      p\"        P$                  ! VV4      pV P'                  V4      pV P)                  V4      pVR,          V,           VR&   V# )r»   ºr*   NNçÍ;fž æ?)r  rê   r[   rá   rû   r  rù   rü   rý   rú   rþ   rò   Úaltup_correct_scalerÑ   r  rc   r®   r"   Úmultiplyr  r  )r%   r3   r—   r˜   r  ré   Úactive_predictionÚactive_prediction_normedÚlaurel_outputÚattnÚ
attn_gatedÚattn_laurelÚ	attn_normÚattn_ffwÚattn_ffw_normÚattn_ffw_laurel_gatedÚcorrected_predictionsÚfirst_predictions   &&&&&             r   r@   ÚGemma3nDecoderLayer.__call__O  s„  € ð —j‘j×(Ñ(¨Ó+ˆØ'¯©×(DÑ(DÕEÐà#'×#7Ñ#7Ð8IÓ#JÐ ØŸ™Ð$<Ó=ˆà�~‰~Ø$ØØó
ˆð ×,Ñ,¨TÓ2ˆà&Õ-ˆ
Ø!Õ1°iÕ@ˆà×2Ñ2°;Ó?ˆ	Ø—8‘8˜IÓ&ˆØ×7Ñ7¸ÓAˆØ +Õ ;Ðà $§
¡
× 2Ñ 2°;Ó VÐà0°·±×1MÑ1MÕNÐØ�;‰;×*×*Ð*Ø/°$·*±*×2QÑ2QÕQÐà×4Ñ4Ð5EÓFÐÜŸ>š>Ð*:Ó;ÐäŸ;š;Ð'7¸ÓIÐà×4Ñ4Ð5EÓFÐØ×9Ñ9Ð:JÓKÐà$9¸"Õ$=Ð@PÕ$PÐ˜bÑ!à$Ð$r   )r  r[   re   r   rû   r‚   r  rx   rú   r  r  rü   rþ   r  rý   rù   rÿ   )NNNrV   rJ   s   @@r   rõ   rõ   $  s   ù‡ € ÷(
ó (
÷T-%÷ -%ò -%r   rõ   c                   óx   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V3R lR ltV3R lR	 ltR
tVt	V ;t
# )ÚGemma3Modeli  c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )r   r   s   "€r   r   ÚGemma3Model.__annotate__€  s   ø€ ÷ JSñ JS™zñ JSr   c           	     ó‚  <€ \         S	V `  4        Wn        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        VP                  VP                  ,
          V n	        \        P                  ! VP
                  VP                  4      V n        \        VP                  4       Uu. uF  p\        VVW P                  8¬  R 7      NK  	  upV n        \        P                  ! VP                  VP                  VP                  ,          4      V n        \        P"                  ! VP                  VP                  VP                  ,          RR7      V n        \        P&                  ! VP                  VP(                  R7      V n        \        ^V P                  P,                  4       Uu. uF0  p\        P"                  ! VP                  VP                  RR7      NK2  	  upV n        \        ^V P                  P,                  4       Uu. uF0  p\        P"                  ! VP                  VP                  RR7      NK2  	  upV n        \        P&                  ! VP                  VP(                  R7      V n        V P                  P4                  P7                  R4      V n        V P                  P4                  P7                  R4      V n        V P                  P4                  RV P                   p\=        V4      ^,
          VRRR	1,          P7                  R4      ,
          p\=        V4      ^,
          VRRR	1,          P7                  R4      ,
          p. V n        \A        V P                  P4                  4       F†  w  rxWpP                  8  d   V P>                  PC                  V4       K2  VR8X  d   V P>                  PC                  V4       KV  VR8X  d   V P>                  PC                  V4       Kz  \E        RV 24      h	  R# u upi u upi u upi )
)r[   rx   ry   Fr_   ra   rU   r}   Úfull_attentionNúUnknown layer type: r.   )#r    r!   r[   re   r   Ú
vocab_sizeÚvocab_size_per_layer_inputÚnum_hidden_layersÚnum_kv_shared_layersÚfirst_kv_shared_layer_idxrc   Ú	EmbeddingÚembed_tokensÚrangerõ   ÚlayersÚembed_tokens_per_layerrd   Úper_layer_model_projectionri   rj   Úper_layer_projection_normrÒ   Úaltup_projectionsÚaltup_unembed_projectionsÚnormr�   ÚindexÚfirst_sliding_idxÚfirst_full_idxÚlenÚlayer_idx_to_cache_idxÚ	enumerateÚappendÚNotImplementedError)
r%   r[   rx   r¦   Úconcrete_layersÚshared_full_idxÚshared_sliding_idxÚiÚ
layer_typer&   s
   &&       €r   r!   ÚGemma3Model.__init__€  sy  ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ+1×+MÑ+MˆÔ(Ø ×+Ñ+ˆŒØ*0×*KÑ*KˆÔ'Ø!'×!9Ñ!9ˆÔà×$Ñ$ v×'BÑ'BÕBð 	Ô&ô ŸLšL¨×):Ñ):¸F×<NÑ<NÓOˆÔô # 6×#;Ñ#;Ô<ó
ñ =�	ô  ØØ#Ø#,×0NÑ0NÑ#N÷ñ
 =ñ
ˆŒô ')§l¢lØ×-Ñ-Ø×$Ñ$ v×'IÑ'IÕIó'
ˆÔ#ô
 +-¯)ª)Ø×ÑØ×$Ñ$ v×'IÑ'IÕIØô+
ˆÔ'ô *,¯ªØ×3Ñ3Ø×#Ñ#ô*
ˆÔ&ô ˜1˜dŸk™k×:Ñ:Ô;ó"
á;�ô �IŠI�f×(Ñ(¨&×*<Ñ*<À5×IÙ;ñ"
ˆÔô ˜1˜dŸk™k×:Ñ:Ô;ó*
á;�ô �IŠI�f×(Ñ(¨&×*<Ñ*<À5×IÙ;ñ*
ˆÔ&ô
 —J’JØ×ÑØ×#Ñ#ô
ˆŒ	ð
 "&§¡×!8Ñ!8×!>Ñ!>Ð?RÓ!SˆÔØ"Ÿk™k×5Ñ5×;Ñ;Ð<LÓMˆÔàŸ+™+×1Ñ1Ð2R°D×4RÑ4RÐSˆä�Ó  1Õ$ ±t¸°tÕ'<×'BÑ'BÐCSÓ'TÕTð 	ô �Ó  1Õ$ ±t¸°tÕ'<×'BÑ'BÐCVÓ'WÕWð 	ð ')ˆÔ#Ü& t§{¡{×'>Ñ'>Ö?‰MˆAØ×1Ñ1Ô1Ø×+Ñ+×2Ñ2°1Ö5àÐ!1Ô1Ø×/Ñ/×6Ñ6°ÖGØÐ#6Ô6Ø×/Ñ/×6Ñ6Ð7IÖJä-Ð0DÀZÀLÐ.QÓRÐRó @ùòi
ùò2"
ùò
*
s   Ã#P2Ç6P7È66P<c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©r   r°   Úinputs_embedsr—   r9   )r   r   s   "€r   r   r  Ì  s:   ø€ ÷ gñ gá—‘ðgñ —x‘xðgñ �h‰hñ	gr   c                óÜ	  € VP                  R R4      pVP                  RR4      pVf+   V P                  V4      V P                  R,          ,          pMTpVf   Ve   V P                  V4      pEM[VEeW   Ve   TMVP                  ^,          p	W˜P                  ^,          8w  d   VP                  ^,          p	\        R T;'       g    .  4       R4      p
V
e   \        V
P                  4      pMš\        R T;'       g    .  4       ^ 4      p\        V\        P                  4      '       dS   VP                  ^8”  d(   \        VP                  4       P                  4       4      M\        VP                  4       4      pM\        V4      p\        VP                  ^,          V	,
          ^ 4      p\        W½4      pVRWîV	,           13,          pV P                  W†4      pVf   R.\!        V P"                  4      ,          pVfO   \%        VW@P&                  ,          4      p\%        VW@P(                  ,          V P*                  P,                  R7      pTp\        P.                  ! V^,          RRR	7      R,          pV.pTP1                  V P2                   Uu. uF  pV! V4      NK  	  up4       \        P4                  ! V^ R
7      p\        P.                  ! VR,          ^,          RRR	7      R,          pVR,          V\        P6                  ! V\        P8                  ! VP:                  4      P                  4      ,          ,          VR&   \=        V P"                  4       Fl  w  ppVRRVR3,          pV P*                  P>                  V,          R8H  pTpVf   V'       d   XpMVf   XpV! VVW@P@                  V,          ,          V4      pKn  	  \        P.                  ! V^ ,          ^,          RRR	7      R,          p\=        V PB                  4       F&  w  ppV! VV^,           ,          4      VV^,           &   K(  	  \        P.                  ! VR,          ^,          RRR	7      R,          pVR,          V\        P6                  ! V\        P8                  ! VP:                  4      P                  4      ,          ,          VR&   \        P.                  ! V^ R
7      pV PE                  V4      # u upi )Úper_layer_inputsNÚn_to_processç      à?c              3   óX   "  € T F   qf   K  \        VR4      '       g   K  Vx € K"  	  R # 5i)NÚ_idx)Úhasattr©Ú.0Úcs   & r   Ú	<genexpr>Ú'Gemma3Model.__call__.<locals>.<genexpr>ä  s   é € ÐR™[�q”¼wÀqÈ&×?Q—’›[ùs   ‚*Œ* 
*c              3   ón   "  € T F+  pVf   K	  \        VR4      '       g   K  VP                  x € K-  	  R # 5i)Nr›   )rH  r›   rI  s   & r   rL  rM  ë  s/   é € ð á"-˜AØô !ä-4°Q¸×-Aô !˜ŸžÛ"-ùs   ‚5�5¡5rœ   )Úwindow_sizeTr+   )r,   r
  r   r.   )#Úpopr(  re   Úget_per_layer_inputsrž   Únextr   rG  r¡   r"   r:   ÚsizeÚmaxÚitemÚminÚproject_per_layer_inputsr4  r*  r   r3  r2  r[   rÿ   r1   Úextendr.  Ústackr¯   Úfinfor>   r6  r�   r5  r/  r0  )r%   r°   rA  r—   r˜   ÚkwargsrC  rD  ÚhÚ
target_lenÚc0Úcache_offsetÚ
raw_offsetÚ	max_startÚstartÚ	full_maskÚsliding_window_maskÚh0Útarget_magnitudeÚh_listÚprojÚmagsr<  Úlayerr  Ú	is_globalÚ
local_masks   &&&&&,                     r   r@   ÚGemma3Model.__call__Ì  s  € ð "Ÿ:™:Ð&8¸$Ó?ÐØ—z‘z .°$Ó7ˆàÒ Ø×!Ñ! &Ó)¨T×-=Ñ-=¸sÕ-BÕC‰AàˆAàÒ#¨Ò(:Ø#×8Ñ8¸Ó@ÒØÓ)Ø)5Ò)A™ÀqÇwÁwÈqÅzˆJØŸW™W Q�ZÔ'ØŸW™W Q�Z�
äÙR˜UŸ[˜[ b˜[ÓRØóˆBð Š~Ü" 2§7¡7›|‘ä!ñà"'§+ +¨2 +óð
 ó�
ô ˜j¬"¯(©(×3Ò3ð &Ÿ?™?¨QÔ.ô ˜JŸN™NÓ,×1Ñ1Ó3Ô4ä  §¡Ó!2Ó3ñ !ô $' z£?�LÜÐ,×2Ñ2°1Õ5¸
ÕBÀAÓFˆIÜ˜Ó0ˆEØ/°°5À:Õ;MÐ3MÐ0MÕNÐà×8Ñ8¸ÓMÐàŠ=Ø�FœS §¡Ó-Õ-ˆEàŠ<Ü-ØØ×)Ñ)Õ*óˆIô #8ØØ×,Ñ,Õ-Ø ŸK™K×6Ñ6ô#Ðð
 ˆô Ÿ7š7 2 q¥5¨r¸DÔAÀSÕHÐà�ˆØ�‰¨D×,BÒ,BÓCÑ,B D‘t˜B–xÑ,BÑCÔDÜ�HŠH�V !Ô$ˆÜ�wŠw�q˜•u •z¨°TÔ:¸cÕAˆØ�"•Ð)¬B¯JªJ°t¼R¿XºXÀbÇhÁhÓ=O×=SÑ=SÓ,TÕTÕUˆˆ"‰ä! $§+¡+Ö.‰HˆAˆuØ.¨q°!°Q¸¨zÕ:ˆOàŸ™×/Ñ/°Õ2Ð6FÑFˆIàˆJØŠ|§	Ø&‘
Ø’Ø0�
áØØØ×1Ñ1°!Õ4Õ5Øó	ŠAñ /ô& Ÿ7š7 1 Q¥4¨1¥9°2ÀÔEÈÕLÐÜ  ×!?Ñ!?Ö@‰GˆAˆtÙ˜A˜a !�e�H“~ˆAˆa�!�e‹Hñ Aä�wŠw�q˜•u •z¨°TÔ:¸cÕAˆØ�"•Ð)¬B¯JªJ°t¼R¿XºXÀbÇhÁhÓ=O×=SÑ=SÓ,TÕTÕUˆˆ"‰ä�GŠG�A˜AÔˆà�y‰y˜‹|ÐùòA Ds   ÊS)c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Ú	input_idsr8   r9   )r   r   s   "€r   r   r  5  s#   ø€ ÷ 

ñ 

©b¯h©hð 

¹2¿8¹8ñ 

r   c                ó0  € WP                   8  p\        P                  ! W!\        P                  ! V4      4      pV P	                  V4      V P
                  R ,          ,          pVP                  ! . VP                  OV P                  NV P
                  N5!  # )rE  )	r#  r"   ÚwhereÚ
zeros_liker+  r   rŸ   rž   r$  )r%   ro  Úper_layer_inputs_maskÚtokensÚresults   &&   r   rQ  Ú Gemma3Model.get_per_layer_inputs5  s‹   € Ø )×,KÑ,KÑ KÐÜ—’Ð/¼B¿MºMÈ)Ó<TÓUˆØ×,Ñ,¨VÓ4Ø×,Ñ,¨cÕ1õ
ˆð �~Š~ð 
Ø�_‰_ð
à×"Ñ"ð
ð ×,Ñ,ó
ð 	
r   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rA  rC  r8   r9   )r   r   s   "€r   r   r  A  s:   ø€ ÷ Gñ Gá—x‘xðGñ Ÿ(™(ðGñ 
�‰ñ	Gr   c                ó,  € V P                  V4      V P                  R,          ,          pVP                  ! . VP                  RR OV P                  P
                  NV P                  P                  N5!  pV P                  V4      pW2,           R,          # )rE  Ng      à¿r.   r  )r,  re   rŸ   rž   r[   r$  r   r-  )r%   rA  rC  r  s   &&& r   rW  Ú$Gemma3Model.project_per_layer_inputsA  s˜   € ð
  $×>Ñ>¸}ÓMØ×Ñ˜dÕ"õ 
Ðð  4×;Ò;ð  
Ø× Ñ   "Ð%ð 
à�K‰K×)Ñ)ð 
ð �K‰K×3Ñ3ó 
Ðð
  $×=Ñ=Ð>RÓSÐØ$Õ7¸IÕFÐFr   )r.  r/  r[   r(  r+  r3  r&  r2  re   r   r5  r*  r0  r$  r,  r-  r"  r#  ©NNNN)rC   rD   rE   rF   r!   r@   rQ  rW  rG   rH   rI   rJ   s   @@r   r  r    s=   ù‡ € ÷JSó JS÷Xgò g÷R

ð 

÷G÷ Gð Gr   r  c                 óN   € \         P                  ! W,          4      pW ,          pV# r   )r"   rÚ   )Úsoftcapr3   Úouts   && r   Úlogit_softcapr~  R  s   € ä
�'Š'�!•+Ó
€CØ
�-€CØ€Jr   c                   ó�   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]R 4       t]R 4       t	]R	 4       t
R
 tRtVtV ;t# )ÚLanguageModeliY  c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )r   r   s   "€r   r   ÚLanguageModel.__annotate__Z  s   ø€ ÷ Fñ F™zñ Fr   c                ó”   <€ \         SV `  4        Wn        VP                  V n        \	        V4      V n        VP                  V n        R # r   )r    r!   r[   Ú
model_typer  ÚmodelÚfinal_logit_softcappingrl   s   &&€r   r!   ÚLanguageModel.__init__Z  s:   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒÜ  Ó(ˆŒ
Ø'-×'EÑ'EˆÖ$r   c                óˆ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# r@  )r"   r:   r   )r   r   s   "€r   r   r‚  a  s?   ø€ ÷ /ñ /á—‘ð/ñ  ¡§¡Õ)ð/ñ ‘r—x‘xÕ ñ	/r   c           	     óÞ   € V P                   ! V3R VRVRV/VB pV P                   P                  P                  V4      pV P                  e   \	        V P                  V4      p\        VR7      # )rA  r—   r˜   )Úlogits)r…  r(  Ú	as_linearr†  r~  r   )r%   r°   rA  r—   r˜   r[  r}  s   &&&&&, r   r@   ÚLanguageModel.__call__a  sz   € ð �jŠjØñ
Ø"/ð
Ø6:ð
ØBGð
ØKQñ
ˆð �j‰j×%Ñ%×/Ñ/°Ó4ˆØ×'Ñ'Ò3Ü × <Ñ <¸cÓBˆCÜ"¨#Ô.Ð.r   c                ó¢   € / pVP                  4        F8  w  r4R V9  d    RV9  d   VP                  RR 4      pWBV&   K+  RV9   d   K4  WBV&   K:  	  V# )zlanguage_model.modelzlanguage_model.lm_headÚlanguage_modelzself_attn.rotary_emb.inv_freq)ÚitemsÚreplace)r%   ÚweightsÚsanitized_weightsÚkÚvÚnew_keys   &&    r   ÚsanitizeÚLanguageModel.sanitizeq  s`   € ØÐà—M‘M–O‰DˆAØ%¨QÔ.Ð3KÐSTÔ3TØŸ)™)Ð$4Ð6LÓM�Ø-. 'Ó*Ø0°AÔ5Ùà'( !Ó$ñ $ð !Ð r   c                ó.   € V P                   P                  # r   )r…  r*  ©r%   s   &r   r*  ÚLanguageModel.layers~  s   € à�z‰z× Ñ Ð r   c                ó.   € V P                   P                  # r   )r[   rˆ   r™  s   &r   rˆ   ÚLanguageModel.head_dim‚  s   € à�{‰{×#Ñ#Ð#r   c                ó.   € V P                   P                  # r   )r[   r…   r™  s   &r   r†   ÚLanguageModel.n_kv_heads†  s   € à�{‰{×.Ñ.Ð.r   c                ó@  € . pV P                   P                  R V P                  P                    Fj  pVR8X  d   VP	                  \        4       4       K%  VR8X  d3   VP	                  \        V P                   P                  ^ R7      4       K^  \        RV 24      h	  V# )Nr   r}   )Úmax_sizeÚkeepr!  )	r[   r�   r…  r&  r7  r	   r
   rÿ   r8  )r%   Úcachesr=  s   &  r   Ú
make_cacheÚLanguageModel.make_cacheŠ  s�   € ØˆØŸ+™+×1Ñ1Ø2ˆd�j‰j×2Ñ2ó
ˆJð Ð-Ô-Ø—‘œg›iÖ(ØÐ2Ô2Ø—‘Ü#¨T¯[©[×-GÑ-GÈaÔPöô *Ð,@ÀÀÐ*MÓNÐNñ
ð ˆr   )r[   r†  r…  r„  rz  )rC   rD   rE   rF   r!   r@   r–  Úpropertyr*  rˆ   r†   r£  rG   rH   rI   rJ   s   @@r   r€  r€  Y  sf   ù‡ € ÷Fó F÷/ò /ò !ð ñ!ó ð!ð ñ$ó ð$ð ñ/ó ð/÷ò r   r€  )!rÂ   Ú	functoolsr   Útypingr   r   Úmlx.coreÚcorer"   Úmlx.nnrc   r€   r   r   r   r˜   r	   r
   r[   r   ÚModuler   rL   rX   ru   Úcompilerµ   r·   rÌ   rõ   r  r~  r€  © r   r   Ú<module>r®     s  ðÛ Ý ß  å Ý ÷ñ ÷
 -Ý ô&�R—Y‘Yô &ôB3�—‘ô 3ô#˜Ÿ™ô #ô2R#�r—y‘yô R#ñj 	ˆ�‰˜tÔ$ñ<ó %ð<ô ˆ"�)‰)ô  ôFM1�2—9‘9ô M1ô`X%˜"Ÿ)™)ô X%ôvPG�"—)‘)ô PGñf 	ˆ�‰˜tÔ$ñó %ðô>�B—I‘Iö >r   