| | 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:
|
| | 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:
|
| | 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
|
| |
|