coreai_opt.pruning.config.PolynomialDecaySchedule¶
- class coreai_opt.pruning.config.PolynomialDecaySchedule[source]¶
Bases:
SparsityScheduleBasePolynomial schedule from
initial_sparsitytotarget_sparsity.Inspired by PyTorch’s
torch.optim.lr_scheduler.PolynomialLRand the paper “To prune or not to prune”.Behavior by step:
step < begin_step→initial_sparsitybegin_step <= step < begin_step + total_iters→ scheduled valuestep >= begin_step + total_iters→target_sparsity
Formula at update index \(i \in [0, n\_updates - 1]\):
\[ \begin{align}\begin{aligned}t = i / \max(n\_updates - 1, 1)\\sparsity = target + (initial - target) \cdot (1 - t)^{power}\end{aligned}\end{align} \]- begin_step¶
Step at which the schedule starts. Default: 0.
- Type:
int
- total_iters¶
Length of the schedule in steps. Must be positive.
- Type:
int
- power¶
Polynomial exponent.
1.0is linear; higher values keep sparsity low for longer before climbing. Default: 3.0.- Type:
float
- initial_sparsity¶
Sparsity before and at the start of the schedule, in
[0, 1]. Default: 0.0.- Type:
float
- update_frequency¶
Steps between sparsity updates within the schedule. Must be >= 1. Default: 1 (update every step).
- Type:
int
- compute_sparsity(step_count, target_sparsity, prev_sparsity=None)[source]¶
Return the sparsity that should be applied at step_count.
- Parameters:
step_count (int) – The current step count of the pruner (monotonically increasing).
target_sparsity (float) – The final sparsity we want to reach at the end of the pruning schedule.
prev_sparsity (float | None) – Sparsity from the previous invocation. Schedules that don’t need this can ignore it; schedules that do (e.g.
PolynomialDecaySchedulewith anupdate_frequencygap) raiseValueErrorwhen omitted.
- Returns:
The sparsity level to apply at the current step.
- Return type:
float