Module neuralops.tests.test_training_optimizations

Tests for Phase 7 training optimizations.

Functions

def test_curriculum_scheduler()
Expand source code
def test_curriculum_scheduler():
    scheduler = CurriculumScheduler(min_seq_len=128, max_seq_len=1024, total_steps=100)
    assert scheduler.get_seq_len(0) == 128
    assert scheduler.get_seq_len(50) == 576
    assert scheduler.get_seq_len(100) == 1024
    assert scheduler.get_seq_len(200) == 1024
def test_lora_trainer()
Expand source code
def test_lora_trainer():
    class DummyWithLoRA(nn.Module):
        def __init__(self):
            super().__init__()
            self.base = nn.Linear(8, 8)
            self.lora_a = nn.Linear(8, 2, bias=False)

        def forward(self, x):
            return self.base(x) + self.lora_a(x).sum(-1, keepdim=True)

    model = DummyWithLoRA()
    trainer = LoRATrainer(model)
    assert not model.base.weight.requires_grad
    assert model.lora_a.weight.requires_grad

    x = torch.randn(4, 8)
    y = torch.randn(4, 8)
    loss = trainer.train_step(x, y, nn.MSELoss())
    assert isinstance(loss, float)
def test_mixed_precision_trainer()
Expand source code
def test_mixed_precision_trainer():
    model = nn.Linear(8, 2)
    opt = torch.optim.SGD(model.parameters(), lr=0.01)
    loss_fn = nn.MSELoss()
    trainer = MixedPrecisionTrainer(model, opt, loss_fn, enabled=False)

    x = torch.randn(4, 8)
    y = torch.randn(4, 2)
    loss = trainer.train_step(x, y)
    assert isinstance(loss, float)
    assert loss >= 0.0
def test_setup_ddp_training_uninit()
Expand source code
def test_setup_ddp_training_uninit():
    model = nn.Linear(8, 8)
    wrapped = setup_ddp_training(model)
    assert wrapped is model