
    9i                     :    S r SSKrSSKrSSKJr   " S S\5      rg)z PyTorch DataLoader for TFRecords    N)_LRSchedulerc                   J    \ rS rSrSr/ SQr  SS jrS rSS jrS r	S	 r
S
rg)AnnealingLR   zBAnneals the learning rate from start to zero along a cosine curve.)linearcosineexponentialconstantNoneNc                 4   Xl         X l        X0l        US-   U l        X@l        [        U[        5      (       a  UR                  5       OS U l        U R                  U R                  5        [        R                  R                  5       S:X  a  [        SU5        g g )N   r   zlearning rate decaying)	optimizerstart_lrwarmup_iter_step_countend_iter
isinstancestrlowerdecay_stylesteptorchdistributedget_rankprint)selfr   r   r   	num_itersr   	last_iters          f/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/plug/AnnealingLR.py__init__AnnealingLR.__init__   s     # &$q=!2<[=@3B 3B;,,.GK 			$""#%%'1,*K8 -    c                    U R                   S:  aI  U R                  U R                   ::  a/  [        U R                  5      U R                  -  U R                   -  $ U R                  U R
                  S   :X  a@  U R                  U R                  U R                  U R                   -
  -
  U R                  -  -  $ U R                  U R
                  S   :X  a^  U R                  S-  [        R                  " [        R                  U R                  U R                   -
  -  U R                  -  5      S-   -  $ U R                  U R
                  S   :X  a  U R                  $ U R                  $ )Nr   r   g       @   )
r   r   floatr   r   DECAY_STYLESr   mathcospi)r   s    r   get_lrAnnealingLR.get_lr-   s=   aD$4$48H8H$H'$*:*::T=M=MMM4#4#4Q#77}}MM%%(8(88:=A]])K L L !!T%6%6q%99}}s*HHTWW(8(84;K;K(KL#}}- .0123 3 !!T%6%6q%99}}$}}$r"   c                     Uc  U R                   S-   nXl         U R                  5       nU R                  R                   H  nX#S'   M	     g )Nr   lr)r   r*   r   param_groups)r   step_numnew_lrgroups       r   r   AnnealingLR.step@   sD    ''!+H#^^00E $K 1r"   c                 z    U R                   U R                  U R                  U R                  U R                  S.nU$ )Nr   r   r   r   r   r4   r   sds     r   
state_dictAnnealingLR.state_dictH   s9    ++++++
 	r"   c                     US   U l         US   U l        US   U l        US   U l        US   U l        U R                  U R                  5        g )Nr   r   r   r   r   )r   r   r   r   r   r   r5   s     r   load_state_dictAnnealingLR.load_state_dictR   sQ    :m,m,:m,		$""#r"   )r   r   r   r   r   r   )N)N)__name__
__module____qualname____firstlineno____doc__r&   r    r*   r   r7   r:   __static_attributes__ r"   r   r   r      s+    LJL "9$%&!$r"   r   )rA   r'   r   torch.optim.lr_schedulerr   r   rC   r"   r   <module>rE      s!    '   1B$, B$r"   