Switch to unified view

a b/reproducibility/embedders/scheduler.py
1
"""
2
From OpenCLIP
3
https://github.com/mlfoundations/open_clip/blob/main/src/training/scheduler.py
4
"""
5
6
import numpy as np
7
8
9
def assign_learning_rate(optimizer, new_lr):
10
    for param_group in optimizer.param_groups:
11
        param_group["lr"] = new_lr
12
13
14
def _warmup_lr(base_lr, warmup_length, step):
15
    return base_lr * (step + 1) / warmup_length
16
17
18
def cosine_lr(optimizer, base_lr, warmup_length, steps):
19
    def _lr_adjuster(step):
20
        if step < warmup_length:
21
            lr = _warmup_lr(base_lr, warmup_length, step)
22
        else:
23
            e = step - warmup_length
24
            es = steps - warmup_length
25
            lr = 0.5 * (1 + np.cos(np.pi * e / es)) * base_lr
26
        assign_learning_rate(optimizer, lr)
27
        return lr
28
    return _lr_adjuster