model-a-scratch / tests /test_schedule.py
karthik-2905's picture
Upload folder using huggingface_hub
ae9e4fe verified
Raw
History Blame Contribute Delete
1.1 kB
import math
from mla.schedule import lr_schedule
def test_warmup_linear():
assert abs(lr_schedule(0, 1.0, 10, 110) - 0.1) < 1e-12
assert abs(lr_schedule(4, 1.0, 10, 110) - 0.5) < 1e-12
assert abs(lr_schedule(9, 1.0, 10, 110) - 1.0) < 1e-12
def test_peak_at_warmup_boundary():
assert abs(lr_schedule(10, 1.0, 10, 110) - 1.0) < 1e-12
def test_cosine_midpoint():
assert abs(lr_schedule(60, 1.0, 10, 110, min_lr=0.0) - 0.5) < 1e-12
def test_cosine_quarter():
assert abs(lr_schedule(35, 1.0, 10, 110) - 0.5 * (1.0 + math.cos(math.pi * 0.25))) < 1e-12
def test_decays_to_min():
assert abs(lr_schedule(110, 1.0, 10, 110) - 0.0) < 1e-12
assert abs(lr_schedule(500, 1.0, 10, 110) - 0.0) < 1e-12
def test_min_lr_floor():
assert abs(lr_schedule(110, 1.0, 10, 110, min_lr=0.1) - 0.1) < 1e-12
assert abs(lr_schedule(60, 1.0, 10, 110, min_lr=0.2) - (0.2 + 0.8 * 0.5)) < 1e-12
def test_monotonic_non_increasing_after_warmup():
xs = [lr_schedule(s, 1.0, 10, 110) for s in range(10, 111)]
assert all(xs[i] >= xs[i + 1] - 1e-15 for i in range(len(xs) - 1))