AQLoRA: A Zero-Search Recipe for Fast Quantized LoRA Fine-Tuning
Organizations: Kennesaw State University
Abstract
Quantized fine-tuning (QLoRA) saves memory but not time. It dequantizes every 4-bit weight on the fly, so it trains more slowly than fp16 LoRA. We present AQLoRA (Adaptive-Quantization LoRA), a recipe that buys part of that time back. One CPU pass ranks layers by NF4 reconstruction error, with no search and no calibration data, and keeps a fixed fraction of them in fp16. Those layers skip dequantization, which is where the speed comes from. A quality setting adapts every layer. A speed setting adapts only the top blocks, so the backward pass stops early. The selection matches the accuracy of Unsloth's hand-curated dynamic-4bit list. We evaluate on Commonsense-170K across six models and four architecture families, from 1.4B to 14B. The speed setting trains 11.3 +/- 2.3% faster than well-tuned QLoRA and gives up 0.1 to 1.5 accuracy points. It was faster in all thirteen independent timing sessions, at worst by 7%. The quality setting trains 4.8 +/- 2.0% faster, matches QLoRA's accuracy on every model, and is within a point of fp16 LoRA. The memory premium depends on the architecture: 0.06 to 0.8 GiB on the 1-4B models, 0.5 GiB at 7B, 1.9 GiB at 14B. These error bars are measured between independent sessions, not within one. Timing on shared hardware needs three rules: fix the measurement duration, not the step count; measure the noise floor from a duplicated arm; and repeat whole sessions, since on one model three sessions that each passed the floor test spread over 8.2 points. We validate the recipe with controls and report the two that failed. Choosing adapter layers by weight density is no better than random. Choosing protected layers by quantization error is not either, on five models at three budgets with memory-matched controls and downstream on two. The number of protected layers sets the speed; which layers they are does not measurably change accuracy.
Figures & tables
| Method | BoolQ | PIQA | SIQA | HellaS | WinoG | ARC-e | ARC-c | OBQA | Avg | Peak | Params |
|---|---|---|---|---|---|---|---|---|---|---|---|
| LoRA fp16 (ref) | 65.0 | 76.5 | 76.5 | 83.2 | 78.0 | 80.5 | 67.1 | 71.6 | 74.8 | 5.18 | 7.1M |
| DoRA fp16 (ref) | 64.6 | 76.5 | 76.9 | 83.1 | 78.4 | 81.2 | 67.6 | 71.8 | 75.0 | 5.19 | 7.5M |
| QLoRA † | 64.5 | 76.6 | 76.5 | 83.2 | 76.9 | 81.3 | 66.6 | 71.9 | 74.7 | 3.83 | 7.1M |
| rsLoRA † | 64.7 | 77.3 | 76.3 | 83.5 | 77.4 | 81.5 | 66.5 | 74.0 | 75.2 | 3.83 | 7.1M |
| LoftQ ‡§ | 64.6 | 76.3 | 76.3 | 83.4 | 77.6 | 81.5 | 67.0 | 72.1 | 74.8 | 3.83 | 7.1M |
| QDoRA | 65.0 | 76.2 | 76.0 | 82.9 | 76.8 | 81.4 | 67.2 | 70.6 | 74.5 | 3.84 | 7.5M |
| Qwen2.5-7B | Avg | Peak |
|---|---|---|
| LoRA fp16 (ref) | 89.0 | 19.06 |
| AQLoRA-q | 89.0 | 10.55 |
| AQLoRA-s | 88.7 | 10.51 |
| QLoRA | 88.8 | 10.04 |
| rsLoRA | 87.1 | 10.04 |
| QLoRA | rsLoRA | LoftQ | AQLoRA-q | AQLoRA-s | LoRA fp16 | floor | |
|---|---|---|---|---|---|---|---|
| phi-1.5 a | 0.265 | 0.262 | 0.260 | 0.279 | 0.299 | 0.375 | |
| vs. QLoRA | ref | ||||||
| Llama-3.2-1B c | 0.372 | 0.366 | 0.371 | 0.381 | 0.414 | 0.492 | |
| vs. QLoRA | ref | ||||||
| Llama-3.2-3B c | 0.213 | 0.210 | n/a b | 0.219 | 0.229 | 0.265 | |
| vs. QLoRA | ref | n/a b |
| Model | clean sessions | AQLoRA-q | AQLoRA-s |
|---|---|---|---|
| phi-1.5 | 2 | ||
| Llama-3.2-1B | 2 | ||
| Llama-3.2-3B | 3 | ||
| Phi-3-mini | 3 | ||
| Qwen2.5-7B | 3 | ||
| pooled | 13 |
Appendix figures & tables19 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | native | shared levers | change |
|---|---|---|---|
| LoftQ | 75.53 | 75.13 | |
| QDoRA | 75.41 | 74.52 | |
| AQLoRA-q | 75.15 | 74.88 | |
| QLoRA | 75.08 | 74.74 |
| Method | BoolQ | PIQA | SIQA | HellaS | WinoG | ARC-e | ARC-c | OBQA | Avg | Peak | Params |
| Llama-3.2-3B | |||||||||||
| LoRA fp16 (ref) | 71.6 | 86.4 | 80.8 | 95.1 | 86.4 | 89.5 | 77.7 | 84.1 | 84.0 | 11.96 | 12.2M |
| QLoRA | 70.8 | 85.8 | 80.5 | 94.7 | 84.9 | 89.2 | 77.4 | 82.6 | 83.3 | 8.07 | 12.2M |
| rsLoRA | 69.2 | 83.8 | 79.8 | 93.3 | 83.3 | 87.0 | 74.6 | 82.9 | 81.7 | 8.07 | 12.2M |
| AQLoRA-q | 70.6 | 86.1 | 80.7 | 94.8 | 85.6 | 89.1 | 77.4 | 83.9 | 83.5 | 8.33 | 12.2M |
| AQLoRA-s | 69.1 | 85.0 | 80.3 | 94.4 | 85.2 | 87.6 | 75.9 | 80.5 | 82.2 | 8.30 | 10.3M |
| Method | GSM8K | Peak |
|---|---|---|
| QLoRA | 84.9 | 10.05 |
| LoRA fp16 (ref) | 84.8 | 19.06 |
| AQLoRA-q | 84.4 | 10.55 |
| Model | linear layers | layer kinds | size CV | % params at | premium |
|---|---|---|---|---|---|
| phi-1.5 | 144 | 6 | 0.71 | 13.2% | 0.220 |
| Llama-3.2-1B | 112 | 7 | 0.82 | 4.3% | 0.058 |
| Llama-3.2-3B | 196 | 7 | 0.67 | 6.8% | 0.265 |
| Phi-3-mini (3.8B) | 128 | 4 | 0.52 | 16.3% | 0.817 |
| Method | BoolQ | PIQA | SIQA | HellaS | WinoG | ARC-e | ARC-c | OBQA | Avg | Peak | Params |
| LoRA fp16 (ref) | 63.8 | 78.2 | 74.6 | 87.6 | 71.8 | 77.3 | 59.4 | 72.4 | 73.1 | 7.81 | 5.6M |
| DoRA fp16 (ref) | 64.9 | 78.5 | 73.9 | 86.8 | 71.0 | 76.8 | 59.6 | 70.2 | 72.7 | 7.82 | 6.0M |
| QLoRA † | 63.2 | 77.9 | 74.2 | 85.9 | 70.8 | 75.6 | 58.9 | 68.7 | 71.9 | 6.47 | 5.6M |
| LoftQ | 63.5 | 77.6 | 74.6 | 86.2 | 71.6 | 75.6 | 59.1 | 69.8 | 72.3 | 6.58 | 5.6M |
| QDoRA | 63.2 | 78.4 | 74.1 | 85.9 | 70.8 | 75.3 | 59.9 | 69.8 | 72.2 | 6.68 | 6.0M |
| AQLoRA-q † | 63.8 | 76.9 | 74.7 | 86.4 | 70.8 | 75.8 | 59.0 | 70.1 | 72.2 | 6.53 | 5.6M |
| Method | ||||
|---|---|---|---|---|
| AQLoRA-q | 74.2 | 74.8 | 75.5 | 75.9 |
| QLoRA | 74.1 | 74.8 | 75.2 | 75.9 |
| rsLoRA | 74.8 | 75.3 | 73.9 | 37.5 ∗ |
| LoftQ | 74.1 | 74.8 | 75.5 | 76.0 |
| Method | |||
|---|---|---|---|
| LoftQ | 72.27 | 70.06 | 63.20 |
| QLoRA | 71.91 | 69.88 | 37.23 |
| AQLoRA-q | 72.20 | 69.55 | 38.57 |
| rsLoRA | 66.58 | 37.40 | 36.89 |
| Method | 42 | 43 | 44 | 45 | 46 | 47 | mean std |
|---|---|---|---|---|---|---|---|
| QLoRA | 74.74 | 74.71 | 74.80 | 74.30 | 74.62 | 74.97 | 74.69 0.22 |
| LoftQ † | 75.13 | 74.65 | 74.73 | – | – | – | 74.84 0.26 |
| AQLoRA-q | 74.88 | 75.11 | 74.35 | 74.78 | 74.75 | 74.82 | 74.78 0.25 |
| rsLoRA | 75.40 | 75.29 | 75.27 | 74.44 | 75.11 | 75.46 | 75.16 0.37 |
| AQLoRA rs | 75.56 | 75.61 | 75.67 | 75.75 | 74.89 | 75.42 | 75.49 0.31 |
| Device | DRAM BW | proj. tok/s | peak GiB | 1k-example epoch |
| V100 ( measured ), AQLoRA-edge | 900 GB/s | 232 | 1.44 | 6.8 min |
| V100 ( measured ), QLoRA-edge | 900 GB/s | 187 | 1.24 | 8.4 min |
| bandwidth-bound projection for AQLoRA-edge (upper bound; on-device kernel maturity will lower it): | ||||
| Jetson AGX Orin (LPDDR5) | 205 GB/s | 53 | 1.44 | 0.5 h |
| iPhone 16 Pro (LPDDR5X) | 85 GB/s | 22 | 1.44 | 1.2 h |
| OnePlus 15 / SD 8 Elite (LPDDR5X) | 80 GB/s | 21 | 1.44 | 1.3 h |
| Quantizer | fp16 | (uniform) | ||
|---|---|---|---|---|
| NF4 (+DQ) | 18.52 | 18.97 | 18.97 | 18.94 |
| fp4 (no DQ) | 18.52 | 19.43 | 19.38 | 19.37 |
| fp16 layers | all | 0 | 14 | 29 |
| base (GiB) | 2.64 | 0.95 | 1.05 | 1.18 |
| Placement | budget | mean block | seed 42, rs | seed 43, no rs |
|---|---|---|---|---|
| near-zero frac (ours) | 0.5 | 12.5 | 73.6 | 72.4 |
| weight-norm | 0.5 | 12.5 | 74.2 | 73.0 |
| depth-matched random | 0.5 | 12.2, 12.6 | 74.3 | 73.3 |
| random | 0.5 | 10.9, 11.3 | 74.6 | 73.5 |
| near-zero frac (ours) | 0.7 | 13.4 | 74.8 | 73.7 |
| weight-norm | 0.7 | 13.4 | 75.1 | 73.8 |
| Configuration | steps/s | tok/s | pad waste | peak (GiB) | |
|---|---|---|---|---|---|
| universal | QLoRA, eager attention | 0.228 | 1,046 | 39.8% | 3.79 |
| + SDPA | 0.231 | 1,060 | 39.8% | 3.79 | |
| + dropout 0 | 0.216 † | 993 | 39.8% | 3.79 | |
| + length-grouped batching | 0.245 | 1,124 | 3.7% | 3.79 | |
| + fused AdamW (= QLoRA best) | 0.247 | 1,134 | 3.7% | 3.83 | |
| + no GC | 0.399 | 1,833 | 3.7% | 18.45 |
| Configuration | steps/s | real tok/s | pad waste | peak GiB |
| QLoRA, eager attention | 0.228 | 1,046 | 39.8% | 3.79 |
| + SDPA | 0.231 | 1,060 | 39.8% | 3.79 |
| + dropout 0 | 0.216 | 993 | 39.8% | 3.79 |
| + length-grouped batching | 0.245 | 1,124 | 3.7% | 3.79 |
| + fused AdamW (= QLoRA best) | 0.247 | 1,134 | 3.7% | 3.83 |
| + no grad-ckpt | 0.399 | 1,833 | 3.7% | 18.45 |
| fp16 layers | base | peak | 8-task avg | step time | |
|---|---|---|---|---|---|
| (QLoRA) | 0 | 0.95 | 3.83 | 74.75 0.05 | ref |
| 7 | 1.01 | 3.89 | 74.97 | ||
| 14 | 1.05 | 3.93 | 75.08 | ||
| 22 | 1.14 | 4.01 | 74.48 | ||
| 29 | 1.18 | 4.05 | 74.78 0.39 |
| Model | top- | bottom- | matched random (min/med/max) | draws top | ||
|---|---|---|---|---|---|---|
| phi-1.5 | 14 | / / | 10/10 | |||
| phi-1.5 | 29 | / / | 8/10 | |||
| phi-1.5 | 43 | / / | 3/10 | |||
| Llama-3.2-1B | 11 | / / | 6/10 | |||
| Llama-3.2-1B | 22 | / / | 3/10 | |||
| Llama-3.2-1B | 34 | / / | 2/10 |
| Estimator | Sessions | AQLoRA-q | AQLoRA-s | |
|---|---|---|---|---|
| fastest half | clean (paper) | 13 | ||
| fastest half | all | 18 | ||
| plain mean | clean | 13 | ||
| plain mean | all | 18 | ||
| median | clean | 13 | ||
| median | all | 18 |