Module neuralops.tests.test_part5_compressor_lora_unmerged
Part 5 Verification: Preserving Unmerged LoRA Adapters for Compressor Recovery (RCA-5).
Functions
def test_unmerged_lora_gradient_flow()-
Expand source code
def test_unmerged_lora_gradient_flow(): base = nn.Linear(32, 32, bias=False) lora = LoRALinear(base, r=4, alpha=8.0) assert not lora.merged # Simulate compressor factorizing the base_layer class SVDMock(nn.Module): def __init__(self): super().__init__() self.U = nn.Parameter(torch.randn(32, 4)) self.V = nn.Parameter(torch.randn(4, 32)) def forward(self, x): return x @ self.V.t() @ self.U.t() lora.base_layer = SVDMock() assert not lora.merged opt = torch.optim.AdamW(lora.parameters(), lr=1e-3) x = torch.randn(2, 32) for _ in range(2): opt.zero_grad() loss = lora(x).sum() loss.backward() opt.step() assert lora.lora_A.weight.grad is not None assert lora.lora_B.weight.grad is not None assert lora.lora_A.weight.grad.norm().item() > 0