+
    TV-j¹(  ã                   óò   € ^ RI t ^ RIHtHtHt ^ RI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RR R lltR# )é    N)ÚListÚOptionalÚUnionc                   óX   a a€ ] tR t^
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# )ÚSuScaledRoPEc                ó–   <€ V ^8„  d   QhRS[ RS[RS[ RS[ RS[S[S[,          S[3,          RS[S[S[,          S[3,          RS[RS[/# )	é   ÚdimsÚbaseÚmax_position_embeddingsÚ original_max_position_embeddingsÚshort_factorÚlong_factorÚshort_mscaleÚlong_mscale)ÚintÚfloatr   r   )ÚformatÚ__classdict__s   "€Úi/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/models/rope_utils.pyÚ__annotate__ÚSuScaledRoPE.__annotate__   s�   ø€ ÷ /Wñ /Wáð/Wñ ð/Wñ "%ð	/Wñ
 +.ð/Wñ ™D¡�K©Ð.Õ/ð/Wñ ™4¡�;©Ð-Õ.ð/Wñ ð/Wñ ñ/Wó    c	                ó|  <a€ \         SV `  4        SV n        Wn        V\        P
                  ! ^ V^\        P                  R7      V,          ,          p	\        P                  ! V\        P                  R7      V	,          V n        V3R lp
VS,          pT;'       g    VR8:  d
   RV n	        R# V
! V4      V n	        R# )au  
Su Scaled Rotary Embedding layer.

Args:
    dims (int): The feature dimensions to be rotated.
    base (int, optional): Base for the exponential scaling.
    max_position_embeddings (int, optional): The maximum sequence
      length that this model was trained with. This is used to determine
      the size of the original RoPE embeddings when using long scaling.
      Default: ``131072``.
    original_max_position_embeddings (int, optional): The maximum
      sequence length that this model was trained with. This is used to
      determine the size of the original RoPE embeddings when using long
      scaling. Default: ``4096``.
    short_factor (float or list[float], optional): List of scaling
      factors for sequences of length lesser than
      ``original_max_position_embeddings``. Default: ``1.0``.
    long_factor (float or list[float], optional): List of scaling
      factors for sequences of length greater than
      ``original_max_position_embeddings``.  Default: ``1.0``.
    short_mscale (float, optional): Scale the input prior to embedding.
    long_mscale (float, optional): Scale the input prior to embedding.
©Údtypec                 óœ   <€ \         P                  ! ^\         P                  ! V 4      \         P                  ! S4      ,          ,           4      # )é   )ÚmathÚsqrtÚlog)Úfactorr   s   &€r   Údefault_scaleÚ,SuScaledRoPE.__init__.<locals>.default_scale4   s4   ø€ Ü—9’9Ø”D—H’H˜VÓ$¤t§x¢xÐ0PÓ'QÕQÕQóð r   ç      ð?N)
ÚsuperÚ__init__r   ÚdimÚmxÚarangeÚfloat32ÚarrayÚ_freqsÚ_scale)Úselfr
   r   r   r   r   r   r   r   Úfreqsr#   r"   Ú	__class__s   &&&&f&&&&   €r   r'   ÚSuScaledRoPE.__init__   s�   ù€ ôD 	‰ÑÔØ0PˆÔ-ØŒàœŸš 1 d¨A´R·Z±ZÔ@À4ÕGÕHˆÜ—h’h˜{´"·*±*Ô=ÀÕEˆŒõ	ð
 )Ð+KÕKˆØ!×VÐV¨V°s¬] cˆŽÁÈfÓ@UˆŽr   c                óJ   <€ V ^8„  d   QhRS[ S[S[P                  3,          /# ©r	   Úoffset)r   r   r)   r,   )r   r   s   "€r   r   r   <   s!   ø€ ÷ 
ñ 
¡%©©R¯X©X¨Õ"6ñ 
r   c           
     óú   € VR ,          pV P                   VR RV P                  13,          ,          VR RV P                  13&   \        P                  P	                  VV P                  RRRVV P
                  R7      # ).NFr%   ©Útraditionalr   Úscaler5   r0   )r.   r(   r)   ÚfastÚroper-   ©r/   Úxr5   s   &&&r   Ú__call__ÚSuScaledRoPE.__call__<   sr   € Øˆc�FˆØ!Ÿ[™[¨1¨S°*°D·H±H°*¨_Õ+=Õ=ˆˆ#ˆz�—‘ˆzˆ/ÑÜ�w‰w�|‰|ØØ�H‰HØØØØØ—+‘+ð ó 
ð 	
r   )r-   r.   r(   r   )ç     ˆÃ@i   é   r%   r%   NN©r   ©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r'   r>   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r1   r   s   @@r   r   r   
   s!   ù‡ € ÷/Wõ /W÷b
÷ 
ò 
r   r   c                   ó^   a a€ ] tR t^Jt oRV3R lV 3R llltR tRV3R lR lltRtVtV ;t	# )	Ú
Llama3RoPEc          
      ó8   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[/# )r	   r
   r   r8   r   Úscaling_config)r   Úboolr   Údict)r   r   s   "€r   r   ÚLlama3RoPE.__annotate__K   sD   ø€ ÷ !Dñ !Dáð!Dñ "%ð!Dñ ð	!Dñ
 ð!Dñ ñ!Dr   c                óv  <€ \         SV `  4        Wn        W n        W0n        VR ,          pVP                  RR4      pVP                  RR4      pVP                  RR4      p	W—,          p
W˜,          pV\        P                  ! ^ V^4      V,          ,          p^\        P                  ,          V,          p\        P                  ! WÚ8„  WÆ,          V4      pWÛ8„  WÚ8  ,          pW�,          V,
          W‡,
          ,          pV^V,
          V,          V,           ,          p\        P                  ! VVV4      V n
        R# )r"   Úlow_freq_factorr%   Úhigh_freq_factorg      @r   i    N)r&   r'   r
   r   r8   Úgetr)   r*   ÚpiÚwherer-   )r/   r
   r   r8   r   rO   r"   rT   rU   Úold_context_lenÚlow_freq_wavelenÚhigh_freq_wavelenr0   ÚwavelensÚis_medium_freqÚsmooth_factorsÚsmooth_freqsr1   s   &&&&&&           €r   r'   ÚLlama3RoPE.__init__K   s  ø€ ô 	‰ÑÔØŒ	Ø'>Ô$Ø&Ôà Õ)ˆØ(×,Ñ,Ð->ÀÓDˆØ)×-Ñ-Ð.@À#ÓFÐØ(×,Ñ,Ø.Øó
ˆð
 +Õ<ÐØ+Õ>ÐàœŸš 1 d¨AÓ.°Õ5Õ6ˆØ”r—u‘u•9˜uÕ$ˆä—’˜Ñ4°eµnÀeÓLˆØ"Ñ6¸8Ñ;VÕWˆØ)Õ4°ÕFØÕ.õ
ˆð   ^Õ!3°vÕ =ÀÕ NÕOˆÜ—h’h˜~¨|¸UÓCˆŽr   c                óR   € V P                    R V P                   RV P                   2# )z, traditional=z, max_position_embeddings=)r
   r8   r   )r/   s   &r   Ú
extra_reprÚLlama3RoPE.extra_reprn   s4   € à�y‰yˆk˜¨×(8Ñ(8Ð'9ð :'Ø'+×'CÑ'CÐ&DðFð	
r   c                ó    <€ V ^8„  d   QhRS[ /# r4   )r   )r   r   s   "€r   r   rR   t   s   ø€ ÷ 	
ñ 	
¡#ñ 	
r   c           
     óŠ   € \         P                  P                  VV P                  V P                  R RVV P
                  R7      # ©Nr%   r7   ©r)   r:   r;   r
   r8   r-   r<   s   &&&r   r>   ÚLlama3RoPE.__call__t   ó?   € Ü�w‰w�|‰|ØØ�I‰IØ×(Ñ(ØØØØ—+‘+ð ó 
ð 	
r   )r-   r
   r   r8   )é   Fé'  NrB   )
rD   rE   rF   rG   r'   rb   r>   rH   rI   rJ   rK   s   @@r   rM   rM   J   s&   ù‡ € ÷!Dõ !DòF
÷	
÷ 	
ò 	
r   rM   c                   ó@   a a€ ] tR t^€t oRV 3R lltRR ltRtVtV ;t# )ÚYarnRoPEc                óÐ  <aaaaaa€ \         SV `  4        VVV3R  loVVVV3R lpRR lpR pV! WY4      V! WZ4      ,          V n        S\        P                  ! ^ S^\        P
                  R7      S,          ,          pW^,          pV! 4       w  ppRV! VVS^,          4      ,
          pWþ,          VV,          V^V,
          ,          ,           ,          V n        SV n        W n        R# )c                 óÈ   <€ S\         P                  ! SV ^,          \         P                  ,          ,          4      ,          ^\         P                  ! S4      ,          ,          # )r	   )r   r!   rW   )Únum_rotationsr   r
   r   s   &€€€r   Úyarn_find_correction_dimÚ3YarnRoPE.__init__.<locals>.yarn_find_correction_dim�   sI   ø€ àÜ—(’(Ø4¸ÈÕ8IÌDÏGÉGÕ8SÕTóõð ”T—X’X˜d“^Õ#õ%ð %r   c                  ó²   <€ \         P                  ! S! S4      4      p \         P                  ! S! S4      4      p\        V ^ 4      \	        VS^,
          4      3# rB   )r   ÚfloorÚceilÚmaxÚmin)ÚlowÚhighÚ	beta_fastÚ	beta_slowr
   rq   s     €€€€r   Úyarn_find_correction_rangeÚ5YarnRoPE.__init__.<locals>.yarn_find_correction_range˜   sG   ø€ Ü—*’*Ñ5°iÓ@ÓAˆCÜ—9’9Ñ5°iÓ@ÓAˆDÜ�s˜A“;¤ D¨$°­(Ó 3Ð3Ð3r   c                 ój   € V ^8:  d   R# RV,          \         P                  ! V 4      ,          R,           # )r   r%   gš™™™™™¹?)r   r!   )r9   Úmscales   &&r   Úyarn_get_mscaleÚ*YarnRoPE.__init__.<locals>.yarn_get_mscale�   s(   € Ø˜ŒzÙØ˜•<¤$§(¢(¨5£/Õ1°CÕ7Ð7r   c                 óÄ   € W8X  d
   VR ,          p\         P                  ! V\         P                  R7      V ,
          W,
          ,          p\         P                  ! V^ ^4      # )gü©ñÒMbP?r   )r)   r*   r+   Úclip)Úmin_valÚmax_valr(   Úlinear_funcs   &&& r   Úyarn_linear_ramp_maskÚ0YarnRoPE.__init__.<locals>.yarn_linear_ramp_mask¢   sK   € ØÔ!Ø˜5Õ �äŸ9š9 S´·
±
Ô;¸gÕEØÕ!õˆKô —7’7˜;¨¨1Ó-Ð-r   r   r%   N)r   r   )	r&   r'   r   r)   r*   r+   r-   r
   r8   )r/   r
   r8   r   r   Úscaling_factorr   rz   r{   r   Úmscale_all_dimr|   r€   r‡   Ú
freq_extraÚ
freq_interrx   ry   Ú	freq_maskrq   r1   s   &f&&f&fff&&        @€r   r'   ÚYarnRoPE.__init__�   sË   þ€ ô 	‰ÑÔ÷	%÷	4ð 	4ô
	8ò
	.ñ & nÓ=ÁØóA
õ 
ˆŒð œbŸiši¨¨4°¼"¿*¹*ÔEÈÕLÕMˆ
Ø#Õ0ˆ
Ù.Ó0‰	ˆˆTØÑ/°°T¸4À1½9ÓEÕEˆ	Ø!Õ.Ø˜Õ" Z°1°yµ=Õ%AÕAõ
ˆŒð ˆŒ	Ø&Ör   c           
     ó0  € V P                   R 8w  dC   VR,          pV P                   VRRV P                  13,          ,          VRRV P                  13&   \        P                  P	                  VV P                  V P
                  RR VV P                  R7      # )r%   .Nr7   )r   r
   r)   r:   r;   r8   r-   r<   s   &&&r   r>   ÚYarnRoPE.__call__¸   s†   € Ø�;‰;˜#ÔØ�#•ˆAØ"&§+¡+°°#°{¸¿¹°{Ð2BÕ0CÕ"CˆAˆc�;�T—Y‘Y�;ÐÑÜ�w‰w�|‰|ØØ�I‰IØ×(Ñ(ØØØØ—+‘+ð ó 
ð 	
r   )r-   r
   r   r8   )	Frj   rk   r%   rA   é    r   r   r   rB   rC   rK   s   @@r   rm   rm   €   s   ù‡ € ÷5'÷n
ô 
r   rm   c                   óL   a a€ ] tR t^Çt oRV3R lV 3R llltRR ltRtVtV ;t# )ÚProportionalRoPEc          
      ó8   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[/# )r	   r
   Úrotated_dimsr8   r   r"   )r   rP   r   )r   r   s   "€r   r   ÚProportionalRoPE.__annotate__È   s=   ø€ ÷ 
ñ 
áð
ñ ð
ñ ð	
ñ
 ð
ñ ñ
r   c                ór  <€ \         SV `  4        Wn        W0n        W!8”  d   \	        R 4      h\
        P                  ! ^ V^\
        P                  R7      V,          p\
        P                  ! WTV,          ,          \
        P                  ! W,
          ^,          3\
        P                  4      .4      V n        R# )z(rotated_dims should be smaller than dimsr   N)r&   r'   r
   r8   Ú
ValueErrorr)   r*   r+   ÚconcatenateÚfullÚinfr-   )r/   r
   r•   r8   r   r"   Ú	exponentsr1   s   &&&&&& €r   r'   ÚProportionalRoPE.__init__È   s†   ø€ ô 	‰ÑÔØŒ	Ø&ÔàÔÜÐGÓHÐHä—I’I˜a ¨q¼¿
¹
ÔCÀdÕJˆ	Ü—n’nà 	�/Õ*Ü—’˜$Õ-°!Õ3Ð5´r·v±vÓ>ðó
ˆŽr   c           
     óŠ   € \         P                  P                  VV P                  V P                  R RVV P
                  R7      # rf   rg   r<   s   &&&r   r>   ÚProportionalRoPE.__call__ß   ri   r   )r-   r
   r8   )Fr@   r%   rB   rC   rK   s   @@r   r“   r“   Ç   s   ù‡ € ÷
õ 
÷.	
ô 	
r   r“   c                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# )r	   rO   r   )r   rQ   r   )r   s   "r   r   r   ë   s,   € ÷ I?ñ I?ô œT•Nð	I?ô
 &¤c�]ñI?r   c                 óD  € Ve-   VP                  R4      ;'       g    VP                  RR4      pMRpVR9   d2   VR8X  d   ^VR,          ,          MRp\        P                  ! WWR7      # VR8X  d   \        V VVVVR	7      # VR9   d?   VR,          pR Uu/ uF  pWƒ9   g   K  WƒV,          bK  	  p	p\	        R RV RVRVRVRV/V	B # VR8X  d'   \        V VVVR
,          VR,          VR,          R7      # VR8X  d@   \        V \        WP                  RR4      ,          4      VVVP                  RR4      R7      # VR8X  dO   VP                  R. 4      p
\        V
4      ^8X  g   Q R\        V
4       R24       h\        P                  ! WVR7      # \        RV 24      hu upi )!NÚtypeÚ	rope_typeÚdefaultÚlinearr"   r%   )r8   r   r9   Úllama3)r
   r   r8   r   rO   r   r
   r   r8   r‰   r   Úlongroper   r   )r
   r   r   r   r   r   ÚproportionalÚpartial_rotary_factor)r
   r•   r8   r   r"   ÚmropeÚmrope_sectionz.MRoPE currently only supports 3 sections, got Ú.)r8   r   zUnsupported RoPE type )r¤   r¥   )ÚyarnÚdeepseek_yarnztelechat3-yarn)r   rz   r{   r   rŠ   © )
rV   ÚnnÚRoPErM   rm   r   r“   r   Úlenr˜   )r
   r   r8   rO   r   r£   r9   r‰   ÚkeyÚrope_kwargsr«   s   &&&&&      r   Úinitialize_roperµ   ë   s"  € ð Ò!Ø"×&Ñ& vÓ.÷ 
ð 
°.×2DÑ2DØ˜ó3
‰	ð ˆ	àÐ)Ô)Ø09¸XÔ0E��N 8Õ,Ö,È3ˆÜ�wŠw�t¸4ÔMÐMà	�hÔ	ÜØØ$;Ø#ØØ)ô
ð 	
ð 
ÐAÔ	AØ'¨Õ1ˆñó

ñ�ð Ñ$ô %ˆC Õ$Ò$ñð 	ð 

ô ñ 
Øð
à$;ð
ð $ð
ð *ð	
ð
 ð
ð ñ
ð 	
ð 
�jÔ	 ÜØØØ$;Ø-;Ø2õ.ð (¨Õ7Ø& }Õ5ô	
ð 		
ð 
�nÔ	$ÜØÜ˜T×$6Ñ$6Ð7NÐPSÓ$TÕTÓUØ#ØØ!×%Ñ% h°Ó4ô
ð 	
ð 
�gÔ	Ø&×*Ñ*¨?¸BÓ?ˆä�Ó !Ô#ð	Rà;¼CÀÓ<NÐ;OÈqÐQó	RØ#ä�wŠw�t¸4Ô@Ð@äÐ1°)°Ð=Ó>Ð>ùò[

s   ÂFÂ#F)NN)r   Útypingr   r   r   Úmlx.coreÚcorer)   Úmlx.nnr°   ÚModuler   rM   rm   r“   rµ   r¯   r   r   Ú<module>r»      sh   ðó ß (Ñ (å Ý ô=
�2—9‘9ô =
ô@3
�—‘ô 3
ôlD
ˆr�y‰yô D
ôN!
�r—y‘yô !
÷HI?ñ I?r   