+
    UV-j^  ã                   ób   € ^ RI t ^ RIHt ^ RIHt ^ RIHt  ! R R]P                  4      t	R t
R# )é    N)ÚUnionc                   óH   a a€ ] tR t^t oRV3R lV 3R llltR tRtVtV ;t# )Ú	LoRaLayerc                óp   <€ V ^8„  d   QhRS[ S[P                  S[P                  3,          RS[RS[RS[/# )é   ÚlinearÚrankÚalphaÚdropout)r   ÚnnÚLinearÚQuantizedLinearÚintÚfloat)ÚformatÚ__classdict__s   "€Úe/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/trainer/lora.pyÚ__annotate__ÚLoRaLayer.__annotate__	   sG   ø€ ÷ "ñ "á‘b—i‘i¡×!3Ñ!3Ð3Õ4ð"ñ ð"ñ ð	"ñ
 ñ"ó    c                óê  <€ \         SV `  4        Wn        \        P                  ! VR 7      V n        VP                  P                  w  rV\        V\        P                  4      '       d   V^ VP                  ,          ,          p^\        P                  ! V4      ,          p\        P                  P                  V) VWb3R7      V n        \        P"                  ! W%34      V n        W2,          V n        R# ))Úp)ÚlowÚhighÚshapeN)ÚsuperÚ__init__Úoriginal_layerr   ÚDropoutr   Úweightr   Ú
isinstancer   ÚbitsÚmathÚsqrtÚmxÚrandomÚuniformÚAÚzerosÚBÚscale)	Úselfr   r	   r
   r   Úoutput_dimsÚ
input_dimsÚstd_devÚ	__class__s	   &&&&&   €r   r   ÚLoRaLayer.__init__	   s·   ø€ ô 	‰ÑÔà$Ôä—z’z GÔ,ˆŒà"(§-¡-×"5Ñ"5ÑˆÜ�fœb×0Ñ0×1Ò1Ø˜" §¡Õ+Õ+ˆJà”d—i’i “oÕ%ˆä—‘×"Ñ"Ø�ØØÐ$ð #ó 
ˆŒô
 —’˜4Ð-Ó.ˆŒØ•\ˆŽ
r   c                óî   € V P                  V4      pV P                  V4      V P                  ,          V P                  ,          pW P                  V,          P                  VP                  4      ,           # )N)r   r   r(   r*   r+   ÚastypeÚdtype)r,   ÚxÚyÚlora_updates   &&  r   Ú__call__ÚLoRaLayer.__call__$   sR   € Ø×Ñ Ó"ˆØ—|‘| A“¨¯©Õ/°4·6±6Õ9ˆØ—J‘J Õ,×4Ñ4°Q·W±WÓ=Õ=Ð=r   )r(   r*   r   r   r+   )gš™™™™™¹?g        )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r8   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r0   r   s   @@r   r   r      s   ù‡ € ÷"õ "÷6>ò >r   r   c                 óØ  € \        V P                  4       EFO  w  r\        V\        4      '       g   K  VP                  VP
                  VP                  ,          ,          pVP                  P                  V,           pVP                  P                  R JpVP                  P                  p\        P                  ! VP                  ^4      VP                  ^ 4      VR7      pWGn        V'       d   Wgn	        \        VP                  \        P                  4      '       d6   \        P                  P                  VVP                  VP                   4      pWpP                  V&   EKR  	  R # )N)Úbias)Ú	enumerateÚlayersr!   r   r+   r(   r*   r   r    rB   r   r   Úsizer   Úfrom_linearÚ
group_sizer"   )ÚmodelÚiÚlayerr7   Úupdated_weightÚuse_biasÚupdated_biasÚnew_linear_layers   &       r   Úreplace_lora_with_linearrO   *   s  € Ü˜eŸl™l×+‰ˆÜ�eœY×'Ô'àŸ+™+¨¯©°5·7±7Õ):Õ;ˆKØ"×1Ñ1×8Ñ8¸;ÕFˆNØ×+Ñ+×0Ñ0¸Ð<ˆHà ×/Ñ/×4Ñ4ˆLô  "ŸyšyØ×#Ñ# AÓ&¨×(;Ñ(;¸AÓ(>ÀXô Ðð '5Ô#çØ(4Ô%ä˜%×.Ñ.´×0BÑ0B×CÒCÜ#%×#5Ñ#5×#AÑ#AØ$Ø$×/Ñ/Ø$×)Ñ)ó$Ð ð /�L‰L˜ŒOó7 ,r   )r#   Útypingr   Úmlx.coreÚcorer%   Úmlx.nnr   ÚModuler   rO   © r   r   Ú<module>rV      s'   ðÛ Ý å Ý ô>�—	‘	ô >ôD/r   