# 超越 LoRA：如何选择最佳参数高效微调技术？

- 来源：Hugging Face：Blog（RSS）
- 发布时间：2026-06-18 08:00
- AIHOT 分数：70
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmqjobpjz0578slmh79n3kqie
- 原文链接：https://huggingface.co/blog/peft-beyond-lora

## 精选理由

HuggingFace 的 PEFT 团队用公平基准把 LoRA 拉下神坛，图像生成任务上 OFT 表现更好，而且切换只需改一行配置。对微调选型有实打实的参考价值，但数据集有限，别全信。

## AI 摘要

参数高效微调（PEFT）技术中，LoRA 占据绝对主导：Hugging Face Hub 上 20,834 张提及单一 PEFT 技术的模型卡中 20,509 张指向 LoRA（98.4%）；外部站点 10,000 个检查点中 95.0% 是 LoRA；GitHub 搜索 `from peft import` 代码片段的 71.3% 结果为 LoRA。但研究者宣称其他技术超越 LoRA 的论文结果具备偏向性——调整学习率即可让 LoRA 匹配更优技术。Hugging Face 的 PEFT 库提供统一 API 实现 40 余种 PEFT 技术，并开始建立基准测试：在数学数据集上对 LLM 进行思维链推理微调，以帮助用户做出更优选择。

## 正文

当你计划以参数高效的方式微调模型时，请将目光放远，不要只局限于 LoRA。

如果你想用自己的数据微调一个开源模型，你很可能对所谓的参数高效微调（简称 PEFT）感兴趣。这个术语描述了一系列能显著降低模型微调内存需求的技术。尽管有数十种此类技术，但几乎所有人都会选择一种名为“LoRA”的方法。在这篇博文中，我们将探讨 LoRA 是否真的是最佳选择，有哪些工具可以帮助我们做出明智的决策，以及将视野拓展到 LoRA 之外能带来哪些好处。

什么是 PEFT，以及何时需要它

市面上有无数开源模型可用，但它们往往无法完全满足你的特定用例需求。提示词可能会有所帮助，但通常还不够。与其从头开始训练一个新模型，不如考虑对现有模型进行微调。

然而，微调非常消耗内存：你通常需要足够的内存来容纳整个模型数倍的大小。量化可以降低模型的内存占用，但量化后的模型无法直接进行微调。因此，出现了一系列旨在削减微调所需内存的技术，称为“参数高效微调”，即 PEFT。

借助 PEFT，你只需使用其中一小部分内存就能微调模型，甚至可以对量化后的模型进行微调。它还提供了其他优势，例如检查点文件极小、对灾难性遗忘有更强的抵抗力，以及能够基于同一个基础模型提供多个微调版本的服务。

在 Hugging Face，我们开发了 PEFT 库，该库在统一的 API 背后实现了多种 PEFT 技术，并与生态系统（例如 Transformers 和 Diffusers）良好集成。它还支持多种量化方法，进一步提升了参数高效微调的可及性。无论你是想用自己的数据进行微调，还是正在研究新的 PEFT 方法，PEFT 都是一个很好的起点。

LoRA：微调技术中的女王 👑

一种早期出现且被证明非常有效的参数高效微调技术，称为“低秩自适应”，简称“LoRA”。其工作原理是在基础模型之上添加少量参数，冻结基础模型的权重，仅训练这些新增的少数参数。

在所有 PEFT 技术中，LoRA 是目前最流行的一种。以下是一些估算数据：

在 Hugging Face Hub 上提及且仅提及一种 PEFT 技术的 20,834 个模型卡样本中，有 20,509 个提到了 LoRA（占比 98.4%）。

我们还在一个外部网站上检查了哪些 PEFT 技术在图像生成领域流行。使用 10,000 个检查点的样本，我们发现其中 7,111 个是 LoRA。其他被识别出的 PEFT 技术包括 LoCon（363 个）和 DoRA（11 个，可视为 LoRA 的一种变体）。这意味着 95.0% 的 PEFT 检查点是 LoRA。

在 GitHub 上搜索代码片段 `from peft import <PEFT CONFIG>`（示例 GH 查询），71.3% 的结果指向 LoRA。紧随其后的是 LoHa（3.7%）和 AdaLoRA（3.5%）。

尽管这些估算并不完美，但结论仍然是：LoRA 几乎毫无疑问是迄今为止最常见的 PEFT 技术。

这可能仅仅意味着 LoRA 对所有人都效果最佳，这一事实反映在其使用统计数据中。然而，还有另一种可能性：LoRA 是较早出现且流行的 PEFT 技术之一。因此，它的使用可能形成了自我强化：LoRA 拥有最高的可见度、最多的教程/示例，并且在下游软件包中获得了最佳支持。于是，LoRA 的流行度便自我循环、不断增长。

这一切引出了一个问题：我们是否因为回避了更好的技术而牺牲了性能？毕竟，有无数研究人员在他们的论文中声称其技术优于 LoRA。这难道不足以证明我们应该超越 LoRA，转而采用更新的技术吗？

根据论文结果来选择正确的 PEFT 技术是有问题的。

有数十篇论文研究了除 LoRA 之外的微调技术。仅就 PEFT 库而言，在撰写本文时就有超过 40 种不同的 PEFT 技术（如果算上 PEFT 技术的变体，数量则更多）。对于其中几乎所有的技术，你都会发现研究人员声称，根据他们的基准测试，他们的技术击败了 LoRA。

这些说法的麻烦在于，研究人员面临着提供优于现有基准测试结果的压力。即使没有恶意，这也可能使结果产生偏差，例如，与研究人员提出的技术相比，他们在调整替代技术参数上花费的时间更少。一项研究发现，例如，通过调整学习率，LoRA 可以匹配那些据称更优的 PEFT 技术（https://arxiv.org/abs/2602.04998）。

另一个复杂因素是，每篇论文都选择了一组不同的 PEFT 技术进行比较，以及一组不同的基准测试来运行。而且，即使在同一基准测试上比较同一技术，代码通常也不公开，或者不易自行运行，这使得结果难以复现。

总的来说，仅通过查看论文结果很难找出最适合你的 PEFT 技术。因此，你可能会倾向于直接使用默认选项——LoRA。

我们在 PEFT 中如何进行基准测试

在 Hugging Face，我们思考了如何帮助用户就使用哪种 PEFT 技术做出明智的决定。通过 PEFT 库，我们已经提供了一个实现了多种 PEFT 技术并以相同 API 暴露它们的软件包。下一步是提供能够进一步阐明所讨论问题的基准测试。

我们之前已经有一个基准测试，用于检查在数学数据集上对大语言模型进行微调。该基准测试选取一个大语言模型，并使用一个未经指令微调的基础模型，在思维链推理上进行微调，以生成数学问题的答案。因此，该基准测试检查模型是否能够学会执行数学推理，并调整生成的输出以符合预期的格式。

为了将我们的发现扩展到另一种模态，我们还增加了一个图像生成基准测试。该测试考察模型能否通过微调学习一个新概念（一只猫咪玩偶），并在不遗忘已有概念的情况下，在新的场景中生成该概念。

左图：来自 MetaMathQA 数据集的示例问题和答案。右图：来自猫咪玩偶数据集的示例图像。

所有 PEFT 技术均在完全相同的条件下进行评估：相同的基座模型、相同的数据集、相同的训练和评估代码、相同的硬件。由于不同用户有不同需求，我们追踪的不仅仅是测试性能。除了显存占用，我们还追踪遗忘/漂移、运行时间和检查点大小等指标。这些结果设计为可在消费级硬件上运行，添加新实验只需新增一个 PEFT 配置并运行脚本即可。

由于我们在同等条件下比较所有 PEFT 技术，且不偏袒任何一方，我们相信这些基准测试能够客观描绘不同 PEFT 技术的实际效果。我们认为，如果你有自己的数据集，可以采取类似方法，利用 PEFT 库来评估多种 PEFT 技术。

我们的发现：LoRA 效果不错，但未必是最优选择

完成基准测试运行后，我们发现，虽然 LoRA 效果不错，但其他 PEFT 方法可以在一个或多个维度上超越它，因此值得考虑。请查看下方对比 LoRA 与其他五种 PEFT 技术性能的图表。

基准测试的部分结果。在测试性能和内存使用方面，LoRA 未必是最优选择。左图：MetaMathQA 基准测试；右图：图像生成基准测试。请查阅此 Space 获取最新结果。

解读上述结果的一种方式是权衡取舍，例如：模型在测试集上的表现与训练所需内存之间如何平衡？如果某种 PEFT 技术在这两项指标上都无法被其他技术同时超越，那么它就处于帕累托前沿。换句话说：如果你想要更好的测试准确率，就需要更多内存；如果你想要更高的内存效率，就必须牺牲准确率。

我们来仔细看看 LLM Math 数据集基准测试的结果。在测试准确率与内存的权衡方面，我们发现 LoRA 确实位于帕累托前沿上。它达到了 53.2% 的测试准确率，峰值时需占用 22.6 GB 的显存。然而，还有其他 PEFT 技术也处于帕累托前沿。例如，BEFT 达到了 32.9% 的测试准确率，最大内存占用仅为 20.2 GB。另一端是 Lily，它达到了 54.9% 的测试准确率，但需要 25.6 GB 的内存。根据您更看重哪方面，您可能会得出结论：LoRA 并未为您提供最佳的权衡方案。

微调 meta-llama/Llama-3.2-3B 并在 GSM8K 上评估时的测试准确率与内存使用量权衡。LoRA 表现不错，但其他 PEFT 技术也同样出色。

同样值得注意的是，尽管 LoRA 在此任务上表现良好，但我们讨论的并非标准 LoRA。一方面，我们采用了秩稳定初始化的 LoRA，这是一种以不同于默认初始化的方式缩放 LoRA 贡献的技术，并提供了非常好的测试准确率（53.2%）。另一方面，我们有 LoRA-FA，它使用了一种专为 LoRA 优化的优化器，冻结了部分 LoRA 权重，因此内存效率更高（20.2 GB）。标准 LoRA 在 22.5 GB 内存下仅能达到 48.1% 的准确率，因此应避免使用，转而选择替代方案。

接下来，让我们看看图像生成基准测试。在 Hugging Face Space 中，在“选择任务”下拉菜单中选择“image-gen”以显示结果。该任务的目标是学习一个新概念，即一个猫咪玩偶，并将其泛化到新的提示词上。

使用基于 FLUX.2-klein-base-4B 微调的 LoRA 创建的猫咪玩偶图像。

对于此任务，主要指标是“恐龙相似度”，它衡量生成的图像与保留测试数据集中图片的相似程度，数值越高越好。与往常一样，我们还需要关注内存使用情况。在绘制这两个指标的帕累托前沿时，我们发现 LoRA 位于该前沿之下。让我们来看具体数字：LoRA 的相似度得分为 0.697，而 OFT 得分为 0.708；在内存方面，LoRA 需要 9.97 GB，而 OFT 需要 9.01 GB。因此，在这些指标上，OFT 严格优于 LoRA。

微调 FLUX.2-klein-base-4B 并在测试集上评估时的测试准确率与内存使用量权衡。其他 PEFT 技术（如 OFT）在测试得分和更低内存使用量方面均优于 LoRA。

当然，您还应该检查其他接近帕累托前沿的 PEFT 方法，因为指标可能因随机性而产生微小波动。此外，您还应探索其他指标：运行时性能对您是否重要？或者您关心检查点的大小？从下拉菜单中选择相关指标，图表可能会发生显著变化。对于图像生成基准测试，请务必检查生成的样本图像，以直观感受微调模型的能力。

局限性

质疑：但基准测试偏向于某种方法！

对 PEFT 基准测试可能提出的一项批评是，超参数的选择可能有利于某种技术。确实如此，要对这么多技术进行详尽且公平的超参数搜索是很困难的。然而，每个人都可以非常轻松地通过 PEFT 贡献自己的实验：如果您认为通过选择不同的超参数可以改进特定的 PEFT 技术，请创建一个 PR！我们添加了相关操作说明。类似地，如果您想贡献一个全新的基准测试，请联系我们讨论您的想法。

基准测试的另一个问题是，它们可能无法完全反映特定 PEFT 技术的全部能力。我们提供了从多个不同维度比较这些技术的可能性，以便根据这些权衡发现最佳方案。但通过这种方式不可能捕捉到所有方面。例如，一种名为 Cartridges（https://huggingface.co/docs/peft/package_reference/cartridges）的 PEFT 技术旨在压缩长提示词，而这一点在基准测试中并未被衡量。其他因素也会影响选择，例如：

根据 PEFT 技术的不同，只有特定类型的层可以被修改。

并非所有 PEFT 技术都支持量化后的基础模型（但我们正在 PEFT 中积极扩展这方面的支持）。

某些 PEFT 技术允许合并适配器以减少运行时开销，但其他技术则不允许。

基准测试无法完全免除你自行调研的责任，但它们可以作为合理的参考指标。

反对意见：但 llama.cpp/vLLM/... 只支持 LoRA

使用 LoRA 以外的 PEFT 技术的一个局限性在于，它们无法获得 LoRA 在下游软件包中享有的广泛支持。例如，如果你想使用 vLLM 部署模型，只能加载 LoRA 检查点。值得庆幸的是，PEFT 现在支持将其他适配器转换为 LoRA。这样，你就可以将非 LoRA 检查点转换为 LoRA，并在 vLLM 或其他下游软件包中使用它。

为了测试这一点，我们将一个使用 GraLoRA 技术的图像适配器转换为 LoRA 检查点。转换后的测试分数几乎相同（相似度 0.702 → 0.694，0.260 → 0.269）。以下是针对提示词“sks cat at the beach”的测试图像：

左图：由 GraLoRA 生成的图像。右图：由同一 GraLoRA 检查点转换为 LoRA 检查点后生成的图像。图像质量相当。

目前，我们尚未实现所有 PEFT 技术的转换，但如果有需求，我们将扩展支持。

结论与你可以做什么

在开发 PEFT 包的过程中，我们注意到 LoRA 虽然备受推崇，但其他 PEFT 技术可能表现更优。因此，我们着手为 PEFT 添加基准测试，以便更客观地展示不同 PEFT 技术在不同指标上的表现。

根据我们得到的结果，可以确信 LoRA 并非糟糕的选择，但确实存在更优选项。尤其是在图像生成基准测试中，LoRA 被其他技术超越。我们讨论过，在选择合适的 PEFT 技术时，除了指标外，还需考虑其他因素。即便如此，我们仍在推动 PEFT 进一步发展，以实现 LoRA 与这些其他技术的功能对等。

我们的探索远未结束，我们希望扩展并改进现有的基准测试，并计划在未来增加更多基准测试。我们已确保社区能够轻松参与贡献，因此如果您有兴趣，请在 PEFT 仓库中提交 issue，告诉我们您希望如何贡献。

如果您从本文中只记住一件事，那就是在为您的用例选择 PEFT 技术时，不应自动默认使用 LoRA。借助 PEFT 提供的统一 API，从一种 PEFT 技术切换到另一种，只需在代码中切换一个配置即可。即使您坚持使用 LoRA，也请查看 PEFT 支持的所有变体：DoRA、rs-LoRA、LoRA-FA 等。尝试这些其他技术，您可能会收获惊喜。

示例：使用 `PEFT` 从 LoRA 切换到 OFT

from transformers import AutoModelForCausalLM -from peft import LoraConfig, get_peft_model +from peft import OFTConfig, get_peft_model

base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B", dtype="bfloat16") -config = LoraConfig(target_modules=["q_proj", "v_proj"]) +config = OFTConfig(target_modules=["q_proj", "v_proj"]) model = get_peft_model(base_model, config)

本文提及的 Spaces 1

本文提及的论文 3

合作

diffusers

LoRA 训练脚本的世界，联合起来！

2024 年 1 月 2 日

nlp

tgi

LLM

TGI Multi-LoRA：一次部署，服务 30 个模型

2024 年 7 月 18 日
