
    ȅip	                     L    S SK r S SKJr  S SKJr  SSKJr  S/r " S S\5      rg)    N)Callable)BaseSparsifier   )BaseSchedulerLambdaSLc                      ^  \ rS rSrSr  SS\S\\/\4   \	\\/\4      -  S\S\
SS4
U 4S	 jjjrS\	\   4S
 jrSrU =r$ )r      a  Sets the sparsity level of each parameter group to the final sl
times a given function. When last_epoch=-1, sets initial sl as zero.
Args:
    sparsifier (BaseSparsifier): Wrapped sparsifier.
    sl_lambda (function or list): A function which computes a multiplicative
        factor given an integer parameter epoch, or a list of such
        functions, one for each group in sparsifier.param_groups.
    last_epoch (int): The index of last epoch. Default: -1.
    verbose (bool): If ``True``, prints a message to stdout for
        each update. Default: ``False``.
Example:
    >>> # Assuming sparsifier has two groups.
    >>> lambda1 = lambda epoch: epoch // 30
    >>> lambda2 = lambda epoch: 0.95**epoch
    >>> # xdoctest: +SKIP
    >>> scheduler = LambdaSL(sparsifier, sl_lambda=[lambda1, lambda2])
    >>> for epoch in range(100):
    >>>     train(...)
    >>>     validate(...)
    >>>     scheduler.step()

sparsifier	sl_lambda
last_epochverbosereturnNc                   > Xl         [        U[        5      (       d4  [        U[        5      (       d  U/[	        UR
                  5      -  U l        O_[	        U5      [	        UR
                  5      :w  a-  [        S[	        UR
                  5       S[	        U5       35      e[        U5      U l        [        TU ]%  XU5        g )Nz	Expected z lr_lambdas, but got )
r
   
isinstancelisttuplelengroups
sl_lambdas
ValueErrorsuper__init__)selfr
   r   r   r   	__class__s        e/home/james-whalen/.local/lib/python3.13/site-packages/torch/ao/pruning/scheduler/lambda_scheduler.pyr   LambdaSL.__init__#   s     %)T**:i3O3O(kC
0A0A,BBDO9~Z%6%6!77 J$5$5 677LSQZ^L\]  #9oDO9    c                     U R                   (       d  [        R                  " SSS9  [        U R                  U R
                  5       VVs/ s H  u  pX!" U R                  5      -  PM     snn$ s  snnf )NzUTo get the last sparsity level computed by the scheduler, please use `get_last_sl()`.   )
stacklevel)_get_sl_called_within_stepwarningswarnzipr   base_slr   )r   lmbdar%   s      r   get_slLambdaSL.get_sl6   se    ..MM. #&doot||"D
"D eDOO,,"D
 	
 
s   
 A.)r   r
   )F)__name__
__module____qualname____firstlineno____doc__r   r   intfloatr   boolr   r'   __static_attributes____classcell__)r   s   @r   r   r      s    4 :": SE5L)D3%,1G,HH: 	:
 : 
: :&

U 

 

r   )	r"   collections.abcr   +torch.ao.pruning.sparsifier.base_sparsifierr   base_schedulerr   __all__r    r   r   <module>r9      s&     $ F ) ,4
} 4
r   