Audit Before You Merge: Provenance, Probing, and Continual LoRA Composition
Organizations: Columbia University, New York, NY, USA · Bar-Ilan University, Ramat Gan, Israel · MIT, Cambridge, MA, USA
Abstract
Post-hoc merging of public LoRA adapters is an attractive gradient-free path to continual adaptation, but reliable measurement of catastrophic forgetting in this setting depends on infrastructure that prior work has not addressed. We treat each adapter merge as a sequential task in a continual-learning setting, with the instruction-tuned base model's capabilities as Task 0, and study forgetting on Llama-3.1-8B-Instruct. Public adapter hubs contain modules that fail basic provenance checks: silent base-version mismatches and near-zero delta norms whose inclusion inflates measured interference by ~10pp. We propose a two-check audit (base-model match, non-trivial delta norm) and a leakage-free probing protocol as preconditions for any forgetting study in this setting. On an audited 4-adapter set, naive merging causes -10.5pp on GSM8K and -18.3pp on HumanEval, while Task Arithmetic at lambda=0.5 sits within a standard error of the unmerged baseline. A coordinate search including negative coefficients identifies the math adapter as probe-optimal at lambda=-0.5, outside the reach of positive-only mergers, suggesting forgetting has structure that negation-aware merging may exploit. The same protocol replicates on Mistral-7B-Instruct-v0.3, where 2 of 4 candidate adapters fail the audit and the audited merge reproduces the same merge-method ranking on GSM8K, supporting that our findings are not Llama-specific.
Figures & tables
| Method | GSM8K | HE p@1 | M-500 |
|---|---|---|---|
| Baseline (no merge) | 0.707 | 0.628 | 0.154 |
| Naive merge | 0.603 | 0.445 | 0.142 |
| Task Arith. | 0.705 | 0.561 | 0.170 |
| TIES | 0.712 | 0.543 | 0.172 |
| DARE | 0.622 | 0.457 | 0.144 |
| MagMax | 0.685 | 0.524 | 0.168 |
Appendix figures & tables18 assets
Supplementary material from the paper’s appendix.
Appendix
| Task | Description | Rank | Total | Single-adapter score | |
|---|---|---|---|---|---|
| math | MATH fine-tune (kai-xu) | 8 | 8 | 16.62 | MATH-500 |
| code | FlowerTune-Code (yangao381) | 32 | 64 | 1.73 | HumanEval |
| general_nlp | FlowerTune-NLP (zjudai) | 32 | 64 | 1.07 | TruthfulQA-MC2 |
| medical | FlowerTune-Med (yangao381) | 32 | 64 | 1.55 | GSM8K (proxy) |
| Slot | HuggingFace identifier | sha256 (first 16) | size |
| Audited (used in merge) | |||
| math | kai-xu/Llama-3.1-8B-Instruct-MATH-Finetuned-LoRA | 282fb3324fe8dd6e | MB |
| code | yangao381/FlowerTune-Code-Llama-3.1-8B-Instruct-PEFT | 44cba627372a7400 | MB |
| general_nlp | zjudai/flowertune-general-nlp-lora-llama-3.1-8b-instruct | 355d9b0d9469f652 | MB |
| medical | yangao381/FlowerTune-Medical-Llama-3.1-8B-Instruct-PEFT | 238d48683a228306 | MB |
| Excluded by audit | |||
| Task | Declared base | Rank | Total | Verdict | |
|---|---|---|---|---|---|
| code | Mistral-7B-Instruct- v0.1 | 16 | 32 | 3.625 | FAIL (version) |
| math | Mistral-7B-Instruct-v0.3 | 16 | 32 | 5.200 | PASS |
| general_nlp | Mistral-7B-Instruct-v0.3 | 8 | 8 | 7.522 | PASS |
| creative_writing | Mistral-7B-Instruct- v0.2 | 8 | 16 | 7.164 | FAIL (version) |
| Mistral-7B-v0.3 | Llama-3.1-8B | |||
| Method | GSM8K stderr | GSM8K | ||
| Baseline (no merge) | 0.498 0.014 | — | 0.707 | — |
| Single-adapter reference | ||||
| math alone | 0.527 0.014 | 0.660 | ||
| general_nlp alone | 0.365 0.013 | 0.654 | ||
| Merge methods (math + general_nlp on Mistral; 4 adapters on Llama) | ||||
| Adapter | Benchmark | Single-adapter score | vs. baseline |
| Baseline (no adapter) | GSM8K | 0.707 | — |
| Baseline (no adapter) | HumanEval | 0.628 | — |
| Baseline (no adapter) | MATH-500 | 0.154 | — |
| math | MATH-500 | 0.164 | |
| math | GSM8K | 0.660 | |
| code | HumanEval | 0.598 |
| Adapter | Best | ||||
|---|---|---|---|---|---|
| code | 0.395 | 0.390 | 0.395 | 0.420 | |
| math | 0.490 | 0.435 | 0.450 | 0.430 | |
| general_nlp | 0.305 | 0.315 | 0.315 | 0.470 | |
| medical | 0.265 | 0.330 | 0.315 | 0.340 |
| Method | GSM8K | HE p@1 | MATH-500 |
|---|---|---|---|
| Baseline (no merge) | 0.707 0.013 | 0.628 0.038 | 0.154 0.016 |
| Naive merge | 0.603 0.013 | 0.445 0.039 | 0.142 0.016 |
| Task Arith. | 0.705 0.013 | 0.561 0.039 | 0.170 0.017 |
| TIES | 0.712 0.012 | 0.543 0.039 | 0.172 0.017 |
| DARE | 0.622 0.013 | 0.457 0.039 | 0.144 0.016 |
| MagMax | 0.685 0.013 | 0.524 0.039 | 0.168 0.017 |
| Analysis | Probe size | -selection size |
|---|---|---|
| Leakage-free block importance probe | (train ) | (train ) |
| Negation finding (Table 7 ) | — |
| Adapter | Norm | ||||||
|---|---|---|---|---|---|---|---|
| math (kai-xu) | 16.62 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| code (FlowerTune) | 1.73 | ✓ | ✓ | ✓ | ✓ | — | — |
| medical (FlowerTune) | 1.55 | ✓ | ✓ | ✓ | ✓ | — | — |
| general_nlp (zjudai) | 1.07 | ✓ | ✓ | ✓ | — | — | — |
| no-op “code” (excluded) | 0.02 | — | — | — | — | — | — |
| Config | GSM8K | / | HE p@1 | / |
|---|---|---|---|---|
| Audited 4 (this reproduction) | / | / | ||
| Audited 4 + defective “code” | / | / | ||
| Audited 4 + wrong-base (Blackroot) | / | / | ||
| Audited 4 + both excluded | / | / | ||
| Pre-audit swap (4-adapter, original) | / | / |
| Family | Loadable | Pass audit | Base mismatch (of loadable) | Near-zero norm (of loadable) |
|---|---|---|---|---|
| Llama-3.1-8B-Instruct | ( ) | ( ) | ( ) | ( ) |
| Mistral-7B-Instruct-v0.3 | ( ) | ( ) | ( ) | ( ) |
| Combined ( ) | ( ) | ( ) | ( ) | ( ) |
| Scale | Family | Pass audit | Base mismatch | Near-zero norm |
|---|---|---|---|---|
| 1B | Llama-3.2-1B | ( ) | ||
| 3B | Llama-3.2-3B | ( ) | ||
| 7B | Qwen2.5-7B | ( ) | ||
| 7B | Mistral-7B-v0.3 | ( ) | ||
| 8B | Llama-3.1-8B | ( ) |
| Adapter (slot) | Meta | Tok | KL | top-1 | gen-sim | Interpretation |
|---|---|---|---|---|---|---|
| math (audited) | PASS | ok | plausible effect | |||
| code (audited) | PASS | ok | plausible effect | |||
| general_nlp (audited) | PASS | ok | plausible effect | |||
| medical (audited) | PASS | ok | plausible effect | |||
| code-defective (TianJun1) | FAIL | warn | no-op (confirmed) | |||
| wrong-base (Blackroot) | FAIL | ok | plausible effect (!) |
| Method | GSM8K SC@8 | GSM8K greedy | HE pass@1 | HE pass@10 |
|---|---|---|---|---|
| Baseline | 0.856 | 0.814 | 0.612 | 0.732 |
| Naive | 0.760 | 0.676 | 0.482 | 0.604 |
| TA | 0.844 | 0.792 | 0.587 | 0.744 |
| TIES | 0.856 | 0.782 | 0.583 | 0.732 |
| Method | +code | +math | +nlp | +medical |
|---|---|---|---|---|
| Naive | 0.685 | 0.651 | 0.629 | 0.615 |
| TA | 0.683 | 0.707 | 0.688 | 0.701 |
| TIES | 0.691 | 0.713 | 0.692 | 0.719 |
| DARE | 0.704 | 0.647 | 0.624 | 0.580 |
| MagMax | 0.678 | 0.699 | 0.684 | 0.686 |
| Merger | Pool | GSM8K | HE | GSM8K vs unmerged |
|---|---|---|---|---|
| Naive (App. H ) | Audited | |||
| Pre-audit swap | ||||
| Orthogonal proj. | Audited | |||
| Pre-audit swap |
Language Model Merging
Language model merging combines capabilities from multiple models or adapters by composing their weights, updates, or outputs.
See all 114 papers