Ë
    ÄÓ^jp	  ã                   óL   — d dl Z d dlmZ d dlmZ ddlmZ dgZ G d„ de«      Zy)é    N)ÚCallable)ÚBaseSparsifieré   )ÚBaseSchedulerÚLambdaSLc                   ót   ‡ — e Zd ZdZ	 	 d
dedeegef   eeegef      z  dede	ddf
ˆ fd„Z
dee   fd	„Zˆ xZS )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                 óp  •— || _         t        |t        «      s/t        |t        «      s|gt	        |j
                  «      z  | _        n^t	        |«      t	        |j
                  «      k7  r-t        dt	        |j
                  «      › dt	        |«      › �«      ‚t        |«      | _        t        ‰| �%  |||«       y )Nz	Expected z lr_lambdas, but got )
r	   Ú
isinstanceÚlistÚtupleÚlenÚgroupsÚ
sl_lambdasÚ
ValueErrorÚsuperÚ__init__)Úselfr	   r
   r   r   Ú	__class__s        €úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/ao/pruning/scheduler/lambda_scheduler.pyr   zLambdaSL.__init__#   s�   ø€ ð %ˆŒä˜)¤TÔ*´:¸iÌÔ3OØ(˜k¬C°
×0AÑ0AÓ,BÑBˆD�Oä�9‹~¤ Z×%6Ñ%6Ó!7Ò7Ü Ø¤ J×$5Ñ$5Ó 6Ð7Ð7LÌSÐQZË^ÐL\Ð]óð ô # 9›oˆDŒOÜ‰Ñ˜ Z°Õ9ó    c                 óà   — | j                   st        j                  dd¬«       t        | j                  | j
                  «      D ��cg c]  \  }}| || j                  «      z  ‘Œ c}}S c c}}w )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_slzLambdaSL.get_sl6   sb   € Ø×.Ò.Ü�M‰Mð.àõô #& d§o¡o°t·|±|Ó"D÷
á��wð ‘e˜DŸO™OÓ,Ó,ó
ð 	
ùó 
s   ÁA*)éÿÿÿÿF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚintÚfloatr   Úboolr   r%   Ú__classcell__)r   s   @r   r   r      su   ø„ ñð4 Øñ:à"ð:ð ˜S˜E 5˜LÑ)¨D°¸3¸%À¸,Ñ1GÑ,HÑHð:ð ð	:ð
 ð:ð 
õ:ð&

˜˜U™÷ 

r   )	r    Úcollections.abcr   Ú+torch.ao.pruning.sparsifier.base_sparsifierr   Úbase_schedulerr   Ú__all__r   © r   r   ú<module>r4      s&   ðÛ Ý $å Få )ð ˆ,€ô4
ˆ}õ 4
r   