+
     °³j	!  ã                   óÆ   € ^ RI t ^ RIt^RIHtHt ^RIHtHtHtH	t	 ]	! 4       '       d   ^ RI
Hu Ht ^ RIHt R t ! R R]P$                  P&                  4      tR R ltR# )	é    N)ÚAcceleratorStateÚGradientState)ÚDistributedTypeÚ
honor_typeÚis_lomo_availableÚis_torch_xla_availablec                 ó‚  a€ \        V \        \        34      '       d   \        V V3R  lV  4       4      # \        V \        4      '       d?   \        V 4      ! V P                  4        UUu/ uF  w  r#V\        VS4      bK  	  upp4      # \        V \        P                  4      '       d   V P                  S4      # V # u uppi )c              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5i©N)Úmove_to_device)Ú.0ÚtÚdevices   & €ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/optimizer.pyÚ	<genexpr>Ú!move_to_device.<locals>.<genexpr>   s   øé € Ð!KÁUÀ¤.°°F×";Ð";ÃUùs   ƒ)Ú
isinstanceÚlistÚtupler   ÚdictÚtypeÚitemsr   ÚtorchÚTensorÚto)Ústater   ÚkÚvs   &f  r   r   r      s‘   ø€ Ü�%œ$¤˜×'Ò'Ü˜%Ô!KÁUÓ!KÓLÐLÜ	�Eœ4×	 Ò	 Ü�EŒ{ÀUÇ[Á[Ä]ÔSÁ]¹T¸Q˜Aœ~¨a°Ó8Ò8Á]ÒSÓTÐTÜ	�Eœ5Ÿ<™<×	(Ò	(Ø�x‰x˜ÓÐØ€Lùó Ts   Á(B;
c                   ó  a € ] tR t^&t o RtRR lt]R 4       t]P                  R 4       t]R 4       t	]	P                  R 4       t	]R 4       t
]
P                  R	 4       t
R
 tR tR tRR ltR tR tRR ltR t]R 4       tR tR tRtV tR# )ÚAcceleratedOptimizera~  
Internal wrapper around a torch optimizer.

Conditionally will perform `step` and `zero_grad` if gradients should be synchronized when performing gradient
accumulation.

Args:
    optimizer (`torch.optim.optimizer.Optimizer`):
        The optimizer to wrap.
    device_placement (`bool`, *optional*, defaults to `True`):
        Whether or not the optimizer should handle device placement. If so, it will place the state dictionary of
        `optimizer` on the right device.
    scaler (`torch.amp.GradScaler` or `torch.cuda.amp.GradScaler`, *optional*):
        The scaler to use in the step function if training with mixed precision.
Nc                ó€  € Wn         W0n        \        4       V n        \	        4       V n        W n        R V n        V P                  eG   R V n        V P                   P                  V n
        \        W P                   P                  4      V n        V'       d«   V P                   P                  4       pV P                  P                  \        P                   8X  d,   \"        P$                  ! W@P                  P&                  4       M\)        W@P                  P&                  4      pV P                   P+                  V4       R# R# )FN)Ú	optimizerÚscalerr   Úaccelerator_stater   Úgradient_stateÚdevice_placementÚ_is_overflowÚ_accelerate_step_calledÚstepÚ_optimizer_original_step_methodÚpatch_optimizer_stepÚ_optimizer_patched_step_methodÚ
state_dictÚdistributed_typer   ÚXLAÚxmÚsend_cpu_data_to_devicer   r   Úload_state_dict)Úselfr"   r&   r#   r-   s   &&&& r   Ú__init__ÚAcceleratedOptimizer.__init__7   sâ   € Ø"ŒØŒÜ!1Ó!3ˆÔÜ+›oˆÔØ 0ÔØ!ˆÔà�;‰;Ò"Ø+0ˆDÔ(Ø37·>±>×3FÑ3FˆDÔ0Ü2FÀtÏ^É^×M`ÑM`Ó2aˆDÔ/÷ ØŸ™×2Ñ2Ó4ˆJØ×%Ñ%×6Ñ6¼/×:MÑ:MÔMÜ×*Ò*¨:×7MÑ7M×7TÑ7TÕUä+¨J×8NÑ8N×8UÑ8UÓV�
Ø�N‰N×*Ñ*¨:Ö6ñ ó    c                ó.   € V P                   P                  # r   ©r"   r   ©r3   s   &r   r   ÚAcceleratedOptimizer.stateM   s   € à�~‰~×#Ñ#Ð#r6   c                ó&   € WP                   n        R # r   r8   ©r3   r   s   &&r   r   r:   Q   s   € à$�‰Ör6   c                ó.   € V P                   P                  # r   ©r"   Úparam_groupsr9   s   &r   r?   Ú!AcceleratedOptimizer.param_groupsU   s   € à�~‰~×*Ñ*Ð*r6   c                ó&   € WP                   n        R # r   r>   )r3   r?   s   &&r   r?   r@   Y   s   € à&2�‰Ö#r6   c                ó.   € V P                   P                  # r   ©r"   Údefaultsr9   s   &r   rD   ÚAcceleratedOptimizer.defaults]   s   € à�~‰~×&Ñ&Ð&r6   c                ó&   € WP                   n        R # r   rC   )r3   rD   s   &&r   rD   rE   a   s   € à"*�‰Ör6   c                ó<   € V P                   P                  V4       R # r   )r"   Úadd_param_group)r3   Úparam_groups   &&r   rH   Ú$AcceleratedOptimizer.add_param_groupe   s   € Ø�‰×&Ñ& {Ö3r6   c                ó  € V P                   P                  \        P                  8X  d=   V P                  '       d+   \
        P                  ! WP                   P                  4       V P                  P                  V4       R # r   )
r$   r.   r   r/   r&   r0   r1   r   r"   r2   )r3   r-   s   &&r   r2   Ú$AcceleratedOptimizer.load_state_dicth   sS   € Ø×!Ñ!×2Ñ2´o×6IÑ6IÔIÈd×Nc×NcÐNcÜ×&Ò& z×3IÑ3I×3PÑ3PÔQØ�‰×&Ñ& zÖ2r6   c                ó6   € V P                   P                  4       # r   )r"   r-   r9   s   &r   r-   ÚAcceleratedOptimizer.state_dictm   s   € Ø�~‰~×(Ñ(Ó*Ð*r6   c                óZ  € V P                   P                  '       d�   R \        P                  ! V P                  P
                  4      P                  9   pV'       d%   Vf   RpV P                  P                  VR7       R# Ve   \        R4      hV P                  P                  4        R# R# )Úset_to_noneNT)rP   zJ`set_to_none` for Optimizer.zero_grad` is not supported by this optimizer.)r%   Úsync_gradientsÚinspectÚ	signaturer"   Ú	zero_gradÚ
parametersÚ
ValueError)r3   rP   Ú
accept_args   && r   rT   ÚAcceleratedOptimizer.zero_gradp   sƒ   € Ø×Ñ×-×-Ð-Ø&¬'×*;Ò*;¸D¿N¹N×<TÑ<TÓ*U×*`Ñ*`Ñ`ˆJßØÒ&Ø"&�KØ—‘×(Ñ(°[Ð(ÖAàÒ*Ü$Ð%qÓrÐrØ—‘×(Ñ(Ö*ñ .r6   c                óö  € \        V P                  R4      '       dB   \        V P                  P                  4      '       d   V P                  P                  4        R# \        V P                  R4      '       d€   \        V P                  P                  R4      '       dX   \        V P                  P                  P                  4      '       d'   V P                  P                  P                  4        R# R# R# R# )zP
Sets the optimizer to "train" mode. Useful for optimizers like `schedule_free`
Útrainr"   N)Úhasattrr"   ÚcallablerZ   r9   s   &r   rZ   ÚAcceleratedOptimizer.train|   s£   € ô �4—>‘> 7×+Ò+´¸¿¹×9MÑ9M×0NÒ0NØ�N‰N× Ñ Ö"ä�D—N‘N K×0Ò0Ü˜Ÿ™×0Ñ0°'×:Ò:Ü˜Ÿ™×1Ñ1×7Ñ7×8Ò8ð �N‰N×$Ñ$×*Ñ*Ö,ñ 9ñ ;ñ 1r6   c                óö  € \        V P                  R4      '       dB   \        V P                  P                  4      '       d   V P                  P                  4        R# \        V P                  R4      '       d€   \        V P                  P                  R4      '       dX   \        V P                  P                  P                  4      '       d'   V P                  P                  P                  4        R# R# R# R# )zO
Sets the optimizer to "eval" mode. Useful for optimizers like `schedule_free`
Úevalr"   N)r[   r"   r\   r_   r9   s   &r   r_   ÚAcceleratedOptimizer.evalŠ   s£   € ô �4—>‘> 6×*Ò*¬x¸¿¹×8KÑ8K×/LÒ/LØ�N‰N×ÑÖ!ä�D—N‘N K×0Ò0Ü˜Ÿ™×0Ñ0°&×9Ò9Ü˜Ÿ™×1Ñ1×6Ñ6×7Ò7ð �N‰N×$Ñ$×)Ñ)Ö+ñ 8ñ :ñ 1r6   c                ó(  € \        4       '       d	   ^ RIHpHp V P                  P
                  '       gŽ   V P                  P                  \        P                  8X  de   \        P                  ! V P                  4      p\        P                  ! RVR\        P                  ! 4       ,          R7       RV P                  n        \        4       '       d!   \!        V P                  XX34      '       d   R# V P                  P"                  '       dÉ   V P$                  e    V P&                  V P                  n        V P$                  P)                  V P                  V4       V P$                  P+                  4        V P,                  '       g	   RV n        MRV n        V P0                  V P                  n        RV n        MV P                  P)                  V4       V P                  P                  \        P                  8X  d   RV P                  n        R# R# )r   )ÚAdaLomoÚLomoÚsumg      ð?)ÚscaleTNF)r   Ú
lomo_optimrb   rc   r%   Úis_xla_gradients_syncedr$   r.   r   r/   r0   Ú_fetch_gradientsr"   Ú
all_reduceÚxrÚ
world_sizer   rQ   r#   r,   r)   Úupdater(   r'   r*   )r3   Úclosurerb   rc   Ú	gradientss   &&   r   r)   ÚAcceleratedOptimizer.step˜   sf  € Ü×Òß0ð ×#Ñ#×;×;Ð;Ø×&Ñ&×7Ñ7¼?×;NÑ;NÔNä×+Ò+¨D¯N©NÓ;ˆIÜ�MŠM˜% °#¼¿º»Õ2GÕHØ:>ˆD×ÑÔ7ä×Òä˜$Ÿ.™.¨4°¨/×:Ò:Ùà×Ñ×-×-Ð-Ø�{‰{Ò&Ø&*×&IÑ&I�—‘Ô#à—‘× Ñ  §¡°Ô9Ø—‘×"Ñ"Ô$à×3×3Ð3à(,�DÕ%à(-�DÔ%à&*×&JÑ&J�—‘Ô#à/4�Õ,à—‘×#Ñ# GÔ,Ø×!Ñ!×2Ñ2´o×6IÑ6IÔIØ:?ˆD×ÑÖ7ñ Jr6   c                óž   € V P                   P                   F-  pVR ,           Uu. uF  q1P                  W34      NK  	  upVR &   K/  	  R# u upi )ÚparamsN)r"   r?   Úget)r3   Úparameters_maprI   Úps   &&  r   Ú_switch_parametersÚ'AcceleratedOptimizer._switch_parameters¾   sC   € ØŸ>™>×6Ô6ˆKØGRÐS[ÖG\Ó$]ÑG\À!×%7Ñ%7¸Ö%=ÑG\Ñ$]ˆK˜Ó!ó 7ùÚ$]s   ¥A
c                ó   € V P                   # )z.Whether or not the optimizer step was skipped.)r'   r9   s   &r   Ústep_was_skippedÚ%AcceleratedOptimizer.step_was_skippedÂ   s   € ð × Ñ Ð r6   c                ó‚   € . ROpV P                   P                  4        UUu/ uF  w  r#W!9  g   K  W#bK  	  upp# u uppi )r(   )r(   r*   r,   )Ú__dict__r   )r3   Ú_ignored_keysr   r   s   &   r   Ú__getstate__Ú!AcceleratedOptimizer.__getstate__Ç   s=   € ò
ˆð
 "&§¡×!4Ñ!4Ô!6ÔQÑ!6™˜¸!Ñ:P”�’Ñ!6ÒQÐQùÓQs   ¢
;±;c                óè   € V P                   P                  V4       V P                  eI   RV n        V P                  P
                  V n        \        W P                  P
                  4      V n        R # R # )NF)	r{   rl   r#   r(   r"   r)   r*   r+   r,   r<   s   &&r   Ú__setstate__Ú!AcceleratedOptimizer.__setstate__Ï   sT   € Ø�‰×Ñ˜UÔ#Ø�;‰;Ò"Ø+0ˆDÔ(Ø37·>±>×3FÑ3FˆDÔ0Ü2FÀtÏ^É^×M`ÑM`Ó2aˆDÖ/ñ #r6   )	r(   r'   r*   r,   r$   r&   r%   r"   r#   )TNr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r4   Úpropertyr   Úsetterr?   rD   rH   r2   r-   rT   rZ   r_   r)   ru   rx   r}   r€   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r    r    &   sæ   ø‡ € ñô 7ð, ñ$ó ð$ð ‡\�\ñ%ó ð%ð ñ+ó ð+ð ×Ññ3ó ð3ð ñ'ó ð'ð ‡_�_ñ+ó ð+ò4ò3ò
+ô
+ò-ò,ô$@òL^ð ñ!ó ð!òR÷bð br6   r    c                ó$   € V ^8„  d   QhR\         /# )é   Úaccelerated_optimizer)r    )Úformats   "r   Ú__annotate__r�   ×   s   € ÷ ñ Ô0Dñ r6   c                 ó   a a€ V V3R  lpV# )c                  ó"   <€ R Sn         S! V / VB # )T)r(   )ÚargsÚkwargsrŽ   Úmethods   *,€€r   Úpatched_stepÚ*patch_optimizer_step.<locals>.patched_stepØ   s   ø€ Ø8<ÐÔ5Ù�tÐ&˜vÑ&Ð&r6   © )rŽ   r•   r–   s   ff r   r+   r+   ×   s   ù€ ö'ð Ðr6   )rR   r   r   r   r   Úutilsr   r   r   r   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelr0   Útorch_xla.runtimeÚruntimerj   r   ÚoptimÚ	Optimizerr    r+   r˜   r6   r   Ú<module>r¡      sO   ðó ã ç 2ß YÓ Yñ ×Òß)Ð)Ý"òônb˜5Ÿ;™;×0Ñ0ô nb÷br6   