wikillm

Paper · 2023-03-28 · cs.CL

Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning

Survey of parameter-efficient fine-tuning (PEFT) plus a head-to-head study of 14 PEFT methods on T5 Large, 3B and 11B over four tasks, with memory and throughput. Author-reported: Houlsby adapters and LoRA match or beat full fine-tuning at every size with little tuning; LayerNorm tuning is competitive; many claimed gains do not hold.

Parameter-efficient fine-tuningLow-rank adaptation (LoRA and variants)parameter-efficient-fine-tuningsurveybenchmarkadapterslorat5memory-efficiency

arXivPDFCodeMarkdown14 min read

AI-compiled by claude-haiku-5-5 on 2026-11-08, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Fine-tuning a very large language model means updating all of its weights, which needs a lot of memory and time. Parameter-efficient fine-tuning (PEFT) is a family of tricks that train only a small add-on or a small slice of the model, so the rest stays fixed. Many such tricks have been published, but each paper tests them on its own models and tasks, so it is hard to tell which one actually works best.

This paper does two things. It sorts the published tricks into a few families and explains how they differ. Then it runs them all under the same conditions, on models of three sizes, and measures both how accurate they are and how much memory and time they use. The main message is that the simple, older tricks hold up well, and that several methods that looked better in their own papers do not beat them once the setup is fixed. The paper also points out how inconsistently parameter counts are reported, which makes the numbers hard to compare across papers.

TL;DR

A survey with one large experiment. The authors compare 14 PEFT variants and full fine-tuning on T5 at three sizes, under a small and fixed training budget, and report accuracy, GPU memory and throughput. Houlsby adapters and LoRA are the most reliable choices in their runs, and LayerNorm tuning is a surprisingly strong, cheap baseline. Use this card to check a PEFT claim against a common protocol, or to reproduce the comparison. Keep the pitfalls below in mind: several numbers in the text do not match the tables.

Problem

Full fine-tuning updates every weight, so training and storing a task model become expensive as the backbone grows. PEFT updates a small set of parameters instead §1. The authors argue that papers rarely compare PEFT methods head to head: they use different models, datasets and budgets, report different parameter counts, and seldom report memory or speed §1 §11.

Assumptions of the comparison: the backbone is an encoder-decoder T5 model used in text-to-text form; the training budget is short (three epochs, or at least 100 update steps, on the language understanding tasks) and the tuning per method is limited §11.1.

Method

The paper contributes three things. The taxonomy and method descriptions cover additive, selective, reparametrization-based and hybrid methods §3 to §10. The "Challenges and guidelines" section lists reporting problems §12. The experiment is a fixed protocol that the card below describes in full §11.1.

Protocol for the experiment §11.1:

  1. Backbones: T5 at Large (0.7B), 3B and 11B parameters §11.1.
  2. Methods: full fine-tuning as the baseline and 14 PEFT variants: Houlsby adapters, Pfeiffer adapters, scaled parallel adapters, (IA)3, prefix tuning, prompt tuning, LayerNorm tuning, LoRA on the query and value projections, LoRA on all linear layers, KronA, MAM adapters, Compacter, Compacter++ and UniPELT §11.1. The method sections are cited in §5 to §10.
  3. Datasets: BoolQ, RTE and COPA from SuperGLUE, and CNN/DailyMail summarization §11.1. The paper counts four datasets in its setup, although the introduction says five (see Pitfalls) §1.
  4. Input and output lengths: 512 input tokens everywhere; 8 output tokens for the classification tasks and 128 for summarization §11.1.
  5. Batch: total batch 32, reached with gradient accumulation where the memory does not fit §11.1 tab. 3.
  6. Training length: classification runs use three epochs or at least 100 update steps; CNN/DailyMail trains for one epoch of about 9,000 steps and had not plateaued §11.1.
  7. Learning rate: a sweep over three values, keeping the best run §11.1. The exact values differ between text, appendix and scripts (see Hyperparameters).
  8. Seeds: the best setting is repeated on two more seeds for the spread §11.1.
  9. Metrics: accuracy on SuperGLUE and ROUGE-L on CNN/DailyMail. GPU memory is the maximum allocated during training. Throughput is tokens per second in training and inference. Reparametrization methods are not merged into the weights at inference §11.1.
  10. Aggregation: the score is the plain mean over the four datasets, and the spread is an aggregate of the per-dataset variances §11.2 tab. 4.
Pseudocode
# One (T5 size, method) cell on the classification tasks  [§11.1]
# Input:  model_size in {large, 3b, 11b}; method; datasets (RTE, COPA, BoolQ)
# Output: per-dataset accuracy for the best learning rate, plus spread

def run_cell(model_size, method, datasets):
    # Sweep three learning rates with seed 0  [§11.1] [app. B]
    best_lr = None
    best_score = None
    for lr in LEARNING_RATES:
        score = train_and_eval(model_size, method, datasets, lr, seed=0)
        if best_score is None or score > best_score:
            best_lr = lr
            best_score = score
    # Repeat the best setting on two more seeds to estimate the spread  [§11.1]
    # The paper does not say which split the sweep selected on.
    runs = [train_and_eval(model_size, method, datasets, best_lr, seed=s)
            for s in [1, 42]]
    return best_score, runs

Overview of the three adaptation families that are compared, as the paper describes them §5 §6 §9:

  • Additive: small new modules added to the network. Adapters insert small bottleneck layers after sub-layers; soft prompts add trainable vectors to the input or to each attention layer §5 §6.
  • Selective: a subset of existing weights is trained. LayerNorm tuning is one example used in the comparison §8.
  • Reparametrization: the update to a weight matrix is written in a cheaper form. LoRA uses a low-rank product; KronA and Compacter use Kronecker products §9 §10.
  • Hybrid: several of the above combined; MAM and UniPELT are the two compared here §10.

Hyperparameters

NameValueWhereNotes
BackboneT5 Large (0.7B), 3B, 11B§11.1Text-to-text, following T5 §11.1; Large has 737.67M parameters in tab. 5
Max input length512 tokens§11.1Matches the default in finetuning_seq2seq.py
Max output length8 (classification), 128 (CNN/DailyMail)§11.1Default 128 in finetuning_seq2seq.py
Total batch size32§11.1 tab. 3Via gradient accumulation; default finetuning_seq2seq.py
Microbatch32, 16, 4 (Large); 4, 2, 1 (3B); 1 (11B)tab. 3Kept the same across methods for fair memory numbers
Classification training3 epochs or at least 100 steps§11.1Minimum enforced at finetuning_seq2seq.py
CNN/DailyMail training1 epoch, about 9,000 steps§11.1Not converged at the end, per the authors
Learning rate, classificationSwept over 1e-3, 1e-4, 1e-5 (text)§11.1Appendix and scripts use 5e-5 instead of 1e-5 (see Paper vs code)
Learning rate, CNN/DailyMail1e-3 only§11.1Chosen as consistently good across methods
SeedsFive (text); 0, 1, 42 in the raw results§11.1 app. BConflict; see Pitfalls
Weight decayEffect below 0.01 (text); swept 0 and 0.1 (appendix)§11.1 app. BSweep config uses 0.1 sweep_grid.yaml
OptimizerNot stated§11.1Code uses AdamW finetuning_seq2seq.py
LR scheduleNot stated§11.1Code: linear decay, 6% warmup finetuning_seq2seq.py finetuning_seq2seq.py
Gradient clippingNot stated§11.1No clipping found in finetuning_seq2seq.py
DecodingNot stated§11.1Sweep config uses 5 beams sweep_grid.yaml; CNN script uses 3 02_grid_serarch.sh
LoRA rank and scaleNot stated in the paper§11.1Code default r=8, alpha=8 for query and value mappings.py
Adapter sizesLibrary defaults§11.1Not given in the paper; the Houlsby count is the same at all sizes in tab. 5
(IA)3 targetsLibrary defaultfinetuning_seq2seq.pyCode passes no target modules
HardwareA100 40GB; 80GB for UniPELT, MAM and 11B prefix tuning§11.1Full fine-tuning of 11B on two 80GB GPUs with model parallelism
PrecisionNot stated§11.1

Results

Author-reported. Setup: T5 Large, 3B and 11B; RTE, COPA, BoolQ and CNN/DailyMail; best learning rate per cell; memory and throughput measured on A100 GPUs §11.1. The 95% intervals are two standard deviations tab. 4. Scores are the mean over four datasets, where CNN/DailyMail contributes ROUGE-L §11.2.

Downstream averages tab. 4. The paper bolds means above full fine-tuning and underlines values within its interval; that markup is not reproduced here:

MethodLarge3B11B
Adapters (Houlsby)67.34 ±9.5874.66 ±1.6876.16 ±1.47
Adapters (Pfeiffer)62.93 ±3.5269.92 ±5.6150.72 ±1.69
Parallel adapter66.78 ±3.8574.15 ±0.8868.74 ±12.73
(IA)355.06 ±1.8041.77 ±0.5061.05 ±3.42
Prefix tuning45.05 ±3.8948.90 ±5.3751.93 ±2.21
Prompt tuning8.97 ±30.918.38 ±0.50not reported
LayerNorm tuning64.68 ±4.5972.95 ±1.3873.77 ±0.93
LoRA (query, value)67.42 ±2.3275.49 ±1.7176.20 ±1.27
LoRA (all linear)68.76 ±1.8375.22 ±1.2876.58 ±2.16
KronA65.68 ±3.2771.98 ±0.5772.13 ±7.30
MAM adapter46.90 ±6.4745.57 ±4.6751.49 ±0.54
Compacter64.48 ±1.8170.72 ±0.8774.33 ±1.40
Compacter++64.78 ±2.2371.00 ±1.6274.72 ±0.82
UniPELT44.10 ±15.4847.16 ±4.8452.29 ±3.09
Full fine-tuning67.2274.8373.25

Source: tab. 4 and §11.2.

Efficiency tab. 5. Trainable parameters in millions and as a percent of the backbone. RAM is peak GPU memory in GB. Throughput is a percent of full fine-tuning (100), so higher is faster. The paper's text quotes throughput in thousands of tokens per second, but the table gives only the percentages.

SizeMethodScoreTrainable (M)% paramsRAM (GB)Train thr.Infer thr.
LargeFull fine-tuning67.22737.6710020.7100100
LargeHoulsby67.3412.691.72012.1101.770.1
LargePfeiffer62.936.340.86014.0108.676.8
LargeParallel adapter66.7850.416.83314.7123.173.2
Large(IA)355.060.340.04716.2124.776.2
LargePrefix tuning45.0577.3110.48115.4113.265.0
LargePrompt tuning8.974.420.60010.6108.864.5
LargeLayerNorm tuning64.680.120.01714.6143.2103.1
LargeLoRA (query, value)67.422.360.32014.3123.787.4
LargeLoRA (all linear)68.768.651.17315.980.966.9
LargeKronA65.680.220.03014.6109.382.3
LargeCompacter64.480.300.04114.481.359.0
LargeCompacter++64.780.150.02113.995.468.1
LargeMAM46.90171.0723.19116.6106.159.1
LargeUniPELT44.1086.2211.68916.761.145.2
3BFull fine-tuning74.832851.6010032.9100100.0
3BHoulsby74.6612.690.4459.393.158.2
3BPfeiffer69.926.340.2239.6102.964.5
3BParallel adapter74.1550.411.76810.0102.761.2
3B(IA)341.771.380.04810.8103.965.6
3BPrefix tuning48.9077.252.70912.3105.256.8
3BPrompt tuning8.3817.690.6218.9100.058.8
3BLayerNorm tuning72.950.120.0049.7140.7101.8
3BLoRA (query, value)75.493.930.1389.6103.079.8
3BLoRA (all linear)75.2225.170.88310.670.256.7
3BKronA71.980.410.01410.881.274.0
3BCompacter70.720.300.0119.771.546.0
3BCompacter++71.000.150.0059.586.954.3
3BMAM45.57171.075.99914.284.552.1
3BUniPELT47.16316.7011.10612.851.038.2
11BFull fine-tuning73.2511307.32100104.9100.0100
11BHoulsby76.1612.690.11228.8214.970.3
11BPfeiffer50.726.340.05628.6239.576.3
11BParallel adapter68.7450.410.44629.0233.373.9
11B(IA)361.053.480.03131.0232.275.5
11BPrefix tuning51.931211.9910.71937.9182.362.3
11BPrompt tuningnot reported70.780.62630.2209.564.0
11BLayerNorm tuning73.770.120.00128.4275.997.8
11BLoRA (query, value)76.2020.050.17728.9216.981.3
11BLoRA (all linear)76.5891.230.80730.8161.762.4
11BKronA72.130.770.00733.2174.071.8
11BCompacter74.330.300.00328.6162.756.8
11BCompacter++74.720.150.00128.5208.864.2
11BMAM51.491262.3911.16443.3152.857.3
11BUniPELT52.291224.7810.83238.9100.246.8

Source: tab. 5 and §11.3. Throughput intervals reported as ±6 (Large), ±7 (3B) and ±3 (11B).

Headline findings, as the authors state them:

  • Houlsby adapters and LoRA are the only methods that consistently reach full fine-tuning with little tuning §11.2.
  • Most methods that claimed to beat LoRA or adapters did not in this setup. Parallel adapters, Compacter and KronA were the exceptions, on par with the best methods in several cases, especially at 11B §11.2.
  • Prompt tuning was far behind and seed-sensitive at the sizes tested §11.2.
  • MAM and UniPELT were hard to train; extra runs gave only marginal gains §11.2.
  • Pfeiffer adapters trail Houlsby at every size, and the gap grows with scale §11.2.
  • LayerNorm tuning is competitive with full fine-tuning at Large and 11B, and the authors recommend it as a baseline §11.2 §11.3.
  • Every PEFT method cut training memory. The largest cut is at 11B §11.3.
  • Adding parameters slows inference unless the update is merged into the weights. UniPELT is the slowest at inference at all three sizes §11.3 tab. 5.

Paper vs code

Code: official repository at 6683c4cec35648198d7ea31848d32306045924e7, owned by the first author and linked from the paper §1 §11.1. Licence Apache-2.0 [LICENSE]. Method code is in scripts/finetuning_seq2seq.py and peft_comparison/mappings.py; sweep configs are in configs/ and bash_scripts/. Most adapter methods run through the Adapters library and the hf_ methods through PEFT finetuning_seq2seq.py.

  • Learning-rate grid. Text: 1e-3, 1e-4, 1e-5 §11.1. Appendix: 1e-3, 1e-4, 5e-5 app. B. Scripts: 1e-3, 1e-4, 5e-5 01_grid_serarch_lora.sh 02_grid_serarch.sh. The sweep config uses five values, 2e-3 to 5e-5 sweep_grid.yaml. The paper does not say which values produced each table cell.
  • Seeds. Text: five runs per dataset, then two more seeds after the sweep §11.1. Raw results: seeds 0, 1 and 42 for the classification tasks app. B. Code default is seed 0 finetuning_seq2seq.py.
  • CNN/DailyMail grid script. bash_scripts/02_grid_serarch.sh runs Pfeiffer, Houlsby and scaled parallel adapters on CNN/DailyMail with three learning rates, weight decay 0 and 0.1, seeds 0, 1 and 42, total batch 64, one epoch and 3 beams 02_grid_serarch.sh 02_grid_serarch.sh. The paper uses learning rate 1e-3 only, one seed, total batch 32 and one epoch §11.1.
  • LoRA grid script. bash_scripts/01_grid_serarch_lora.sh uses per-device and total batch 32 and three epochs 01_grid_serarch_lora.sh, which matches the paper's batch and epoch settings §11.1.
  • LoRA rank. The paper does not state a rank §11.1. The code default for the query and value projections is rank 8 with scale 8 mappings.py. The all-linear target list names k, q, v, o, wi, wo mappings.py. Gated feed-forward layers (wi_0, wi_1) would not match; I did not check which T5 checkpoint was used.
  • Optimizer and schedule. The paper states neither §11.1. The code uses AdamW finetuning_seq2seq.py, linear decay and a 6% warmup finetuning_seq2seq.py finetuning_seq2seq.py. Default weight decay is 0, but the sweep sets 0.1 sweep_grid.yaml.
  • Decoding. The paper says accuracy and ROUGE-L, with no decoding rule §11.1. The code uses beam search with 5 beams in the sweep config sweep_grid.yaml and 3 beams in the CNN script 02_grid_serarch.sh.
  • Gradient clipping. Not stated in the paper. I found none in the training script.
  • Matches. Input length 512 finetuning_seq2seq.py; the classification minimum of 100 steps (default at finetuning_seq2seq.py, enforced at finetuning_seq2seq.py); total batch 32 as a default finetuning_seq2seq.py.

Pitfalls

  • Dataset count. The introduction says five datasets §1. The setup lists four §11.1, and the averages match four: recomputing the full fine-tuning Large mean from the raw runs over RTE, COPA, BoolQ and CNN/DailyMail gives 67.22, the printed value app. B tab. 4.
  • Mixed metrics in one average. The averages add accuracy and ROUGE-L with equal weight. CNN/DailyMail scores near 27 in ROUGE-L, so the average is not a standard metric tab. 4.
  • Seed counts. The text says five runs and then two more seeds §11.1. The raw table has seeds 0, 1 and 42 for the classification tasks app. B. The CNN/DailyMail seed counts vary by cell: at 3B and 11B most methods have one seed, while at Large most have three app. B. The spreads are therefore not comparable across methods.
  • Repeated CNN values. At 11B, seed 0 on CNN/DailyMail shows 27.83 for IA3, KronA, prefix tuning, MAM and UniPELT app. B. Five different methods having the same value suggests a transcription error. Full fine-tuning at 3B and 11B also shows 27.32 app. B. I could not check either against the source. Many 11B CNN cells are blank for seeds 1 and 42 app. B.
  • Sweep selection. The table reports the best of the sweep §11.1. The paper does not say whether that choice used a separate validation split or the test split, so the reported scores may be optimistic.
  • Pfeiffer gap. The text says the Houlsby–Pfeiffer difference is up to 15 points and grows with scale §11.2. The table gives a gap of about 25 points at 11B (76.16 vs 50.72) tab. 4.
  • Inference slowdown range. The text gives a 33–55% slowdown for Large §11.3. In tab. 5 the additive methods range from about 13% (LoRA, query and value) to about 55% (UniPELT); Houlsby is about 30%.
  • Training speed claims. The text says MAM is 20% slower and Compacter 5% slower than full fine-tuning at Large §11.3. The table gives MAM 106.1 (faster) and Compacter 81.3 (about 19% slower) tab. 5.
  • KronA parameters. The text says KronA and Compacter each train fewer than 0.5 million parameters at 11B §11.3. The table gives KronA 0.77 million tab. 5.
  • Memory saving. The text gives 71.5 GB saved by Compacter++ at 11B §11.3. The table gives 104.9 minus 28.5, i.e. 76.4 GB tab. 5. Full fine-tuning at 11B is the sum over two 80GB GPUs §11.1, so the saving depends on that accounting.
  • Throughput units. The text quotes thousands of tokens per second §11.3; the table reports percent of full fine-tuning only tab. 5. Absolute speeds cannot be recovered from the paper. Throughput at 11B for UniPELT, MAM and prefix tuning was measured on 80GB cards, while the others used 40GB §11.1.
  • Method count. The introduction says 30 methods §1; the text says 28 in the scale table §11; the table has 22 rows tab. 2.
  • "Consistently best". The Houlsby Large interval (67.34 ±9.58) is wide enough to overlap most methods, so "consistently" rests mainly on the 3B and 11B results tab. 4.
  • Prompt tuning. The text says it "never outperformed the constant prediction baseline" §11.2. No constant-prediction baseline appears in the tables, so this could not be checked.
  • Learning-rate sensitivity. The claim that hybrid methods are hard to train rests on three learning rates. The extra runs the authors describe for MAM and UniPELT are not reported §11.2.
  • Short budget. The authors say their setup favours fast learners, and that the CNN/DailyMail runs had not converged §11.1. Rankings may change with longer training.
  • Parameter counts for adapters. Adapter sizes come from library defaults §11.1. The Houlsby count is identical at all three sizes tab. 5, which the paper does not explain.
  • Cost of the study. The paper reports about 700 experiments in total §11.1. Full fine-tuning at 11B needed two 80GB GPUs with model parallelism §11.1, so reproducing the full table needs comparable hardware.

Lineage

  • Builds on: T5 as the backbone and text-to-text format §11.1; the methods compared are described in §5 to §10.
  • Compared against: full fine-tuning as the baseline, and the 14 PEFT variants in §11.1. The authors contrast their study with delta-tuning, which compared four PEFT methods with a narrower focus §11.1.
  • Related to: modular deep learning surveys, which the authors cite as covering multi-task inference §1 §12.
  • Superseded by: not known from this wiki.

Source and license

Adapted from “Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning” by Vladislav Lialin, Vijeta Deshpande, Xiaowei Yao, Anna Rumshisky (arXiv:2303.15647), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/guitaricet/peft_comparison at commit 6683c4cec356 (Apache-2.0). Any quoted code is shown under that license.