| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import math
- def get_cosine_schedule_with_warmup_lr_lambda(
- current_step: int,
- *,
- num_warmup_steps: int | float,
- num_training_steps: int,
- num_cycles: float = 0.5,
- final_lr_ratio: float = 0.0,
- ):
- if 0 < num_warmup_steps < 1: # float mode
- num_warmup_steps = int(num_warmup_steps * num_training_steps)
- if current_step < num_warmup_steps:
- return float(current_step) / float(max(1, num_warmup_steps))
- progress = float(current_step - num_warmup_steps) / float(
- max(1, num_training_steps - num_warmup_steps)
- )
- return max(
- final_lr_ratio,
- 0.5 * (1.0 + math.cos(math.pi * float(num_cycles) * 2.0 * progress)),
- )
- def get_constant_schedule_with_warmup_lr_lambda(
- current_step: int,
- *,
- num_warmup_steps: int | float,
- num_training_steps: int | None = None,
- ):
- if 0 < num_warmup_steps < 1: # float mode
- num_warmup_steps = int(num_warmup_steps * num_training_steps)
- if current_step < num_warmup_steps:
- return float(current_step) / float(max(1, num_warmup_steps))
- return 1.0
|