PoLoRA: A Preconditioned Orthogonalized LoRA Optimizer

Nikhil Ghosh, Tetiana Parshakova, Robert M. Gower
7/20/2026
cs.LGcs.CLmath.OC

No confident code implementation found for this paper.

Abstract

Low-rank adaptation (LoRA) makes finetuning large language models cheaper by adding to each weight matrix a trainable low-rank update parameterized as the product of two matrices. These matrices are usually trained with Adam, which treats them as a single flat vector of parameters and ignores both the matrix and product structure of LoRA. Applying a matrix-aware optimizer such as Muon to each factor does not consistently improve over Adam, and neither do the product-aware Muon variants proposed in concurrent works. To realize consistent gains, we introduce PoLoRA, a Preconditioned Orthogonalized LoRA optimizer built from three ingredients: a product-aware spectral update direction, curvature preconditioning derived from controlling the per-sample loss change, and a magnitude rule that controls the sizes of both the factor and merged updates. We evaluate PoLoRA on instruction-tuning datasets for code and math across models from 1B to 8B parameters, and find that it reaches the final held-out loss achieved by tuned Adam in 1.2-1.7 times fewer steps, while adding at most 3% per-step overhead. Compared to Adam, PoLoRA is also less sensitive to the learning rate, and its optimal learning rate is stable across ranks.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{ghosh2026polora,
  title  = {PoLoRA: A Preconditioned Orthogonalized LoRA Optimizer},
  author = {Nikhil Ghosh and Tetiana Parshakova and Robert M. Gower},
  year   = {2026},
  eprint = {2607.17620},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2607.17620v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2607.17620.svg)](https://codeofpaper.com/paper/2607.17620)

Discussion