
    RЦi}                     v    S r SSKr SSKJr  SrSSKJr   " S S	5      r " S
 S5      r	g! \ a    SrSr N'f = f)zDCUDA / AMP utils

Hacked together by / Copyright 2020 Ross Wightman
    N)ampTF   )dispatch_clip_gradc                   8    \ rS rSrSr     SS jrS rS rSrg)	
ApexScaler   r   Nc                     [         R                  " X5       nUR                  US9  S S S 5        U(       a2  Ub  [        [         R                  " U5      X4S9  UR                  5         g g ! , (       d  f       NH= fN)create_graph)mode)r   
scale_lossbackwardr   master_paramsstep)	selfloss	optimizer	clip_grad	clip_mode
parametersr   need_updatescaled_losss	            N/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/utils/cuda.py__call__ApexScaler.__call__   s^     ^^D,  l ; -$"3#4#4Y#?[NN  -,s   A))
A7c                 V    S[         R                  ;   a  [         R                  " 5       $ g )N
state_dict)r   __dict__r   r   s    r   r   ApexScaler.state_dict%   s     3<<'>>## (    c                 Z    S[         R                  ;   a  [         R                  " U5        g g )Nload_state_dict)r   r   r#   r   r   s     r   r#   ApexScaler.load_state_dict)   s!    ,
+ -r!    NnormNFT)	__name__
__module____qualname____firstlineno__state_dict_keyr   r   r#   __static_attributes__r&   r!   r   r   r      s'    N "$,r!   r   c                   B    \ rS rSrSrS	S jr     S
S jrS rS rSr	g)NativeScaler.   
amp_scalerc                      [         R                  R                  US9U l        g ! [        [
        4 a7  n[         R                  R                  R                  5       U l         S nAg S nAff = f)N)device)torchr   
GradScaler_scalerAttributeError	TypeErrorcuda)r   r4   es      r   __init__NativeScaler.__init__1   sO    	7 99//v/>DL	* 	7 ::>>446DLL	7s   "% A,-A''A,Nc                 (   U R                   R                  U5      R                  US9  U(       ac  Ub*  Uc   eU R                   R                  U5        [	        XSUS9  U R                   R                  U5        U R                   R                  5         g g r
   )r7   scaler   unscale_r   r   update)r   r   r   r   r   r   r   r   s           r   r   NativeScaler.__call__7   s|     	4 ))|)D$!---%%i0":yILLi(LL! r!   c                 6    U R                   R                  5       $ N)r7   r   r   s    r   r   NativeScaler.state_dictJ   s    ||&&((r!   c                 :    U R                   R                  U5        g rD   )r7   r#   r$   s     r   r#   NativeScaler.load_state_dictM   s    $$Z0r!   )r7   )r:   r'   )
r)   r*   r+   r,   r-   r<   r   r   r#   r.   r&   r!   r   r0   r0   .   s,    !N7 "&)1r!   r0   )
__doc__r5   apexr   has_apexImportErrorr   r   r   r0   r&   r!   r   <module>rL      sQ    H
 *, ,: 1  1I  
CHs   + 
88