Hugging Face Blog

Beyond LoRA: Can you beat the most popular fine-tuning technique?

8.5内容质量

TL;DR · AI 摘要

LoRA 是当前最流行的 PEFT 技术,但文章建议探索其他方法以获得更优效果。

核心要点

  • LoRA 在 Hugging Face Hub 上被 98.4% 的模型卡提及,是当前最主流的 PEFT 技术。
  • LoRA 占图像生成领域 PEFT 检查点的 95.0%,远超其他方法。
  • 文章建议开发者不应局限于 LoRA,应探索其他 PEFT 技术以提升模型性能。

结构提纲

按章节快速跳转。

  1. 文章探讨了 LoRA 是否是参数高效微调的最佳选择。

  2. PEFT 是一种减少模型微调内存需求的技术,适用于量化模型。

  3. LoRA 是目前最流行的 PEFT 技术,被广泛应用于 Hugging Face Hub 和图像生成领域。

  4. 文章建议开发者不应局限于 LoRA,应探索其他 PEFT 技术以提升模型性能。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Beyond LoRA
    • PEFT 技术
      • LoRA
      • LoCon
      • DoRA
    • LoRA 的优势
      • 内存需求低
      • 支持量化模型
      • 广泛使用
    • 探索其他 PEFT 方法
      • 提升模型性能
      • 避免过度依赖 LoRA

金句 / Highlights

值得收藏与分享的关键句。

  • Of a sample of 20,834 model cards on Hugging Face Hub that mention exactly one PEFT technique, 20,509 mention LoRA (98.4%).

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • We checked which PEFT techniques are popular for image generation on an external site, too. Using a sample of 10,000 checkpoints, we found 7,111 to be LoRAs.

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Searching for the code snippet from peft import <PEFT CONFIG> on GitHub, 71.3% of results are for LoRA.

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#PEFT#LoRA#模型微调#Hugging Face
打开原文

超越 LoRA:你能击败最流行的微调技术吗?

返回文章列表

[-1

]

[0

2026年6月18日发布

GitHub 上的更新

点赞

6

[

Benjamin Bossan

BenjaminB

关注

Sayak Paul

sayakpaul

Marian

hubnemo

Kashif Rasul

kashif

当你计划以参数高效的方式微调模型时,请超越 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暴露这些技术。下一步是提供一些基准测试,以更深入地探讨这一问题。

我们已经有一个基准测试,用于检查在数学数据集上对LLM进行微调的效果。该基准测试使用一个未经过指令微调的基础模型,对LLM进行链式推理训练,以生成数学问题的答案。因此,该基准测试检查模型是否能够学习进行数学推理,并调整生成的输出以符合预期格式。

为了扩展我们在其他模态上的研究,我们还增加了一个图像生成基准测试。该测试检查模型是否可以微调以学习新概念(例如,一个毛绒猫玩具),并在不遗忘现有概念的情况下在新上下文中生成该概念。

左图:来自MetaMathQA数据集的示例问题和答案。右图:来自毛绒猫玩具数据集的示例图像。

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

由于我们在公平的基础上对所有 PEFT 技术进行比较,并且没有偏袒任何一种方法,我们认为这些基准测试可以客观地展示不同 PEFT 技术的效果。我们认为,如果你有自己的数据集,你可以采用类似的方法,并利用 PEFT 库来评估多种 PEFT 技术。

我们的发现:LoRA 表现良好,但不一定是最佳选择

完成基准测试后,我们发现虽然 LoRA 表现良好,但其他 PEFT 方法在某些或多个方面可能优于它,因此也应被考虑。请查看下面的图像,它比较了 LoRA 和其他五种 PEFT 技术的性能。

一些基准测试的结果。在测试性能和内存使用方面,LoRA 不一定是最佳选择。左图:MetaMathQA 基准测试;右图:图像生成基准测试。请参阅此

Space

以获取最新结果。

一种解释上述结果的方式是考虑权衡,例如:模型在测试集上的表现如何与训练它所需的内存大小相比?如果没有任何其他技术在同时在这两个指标上优于某一种 PEFT 技术,那么该技术就在帕累托前沿(Pareto Frontier)上。换句话说:如果你想获得更好的测试准确率,就需要更多的内存;如果你想提高内存效率,就必须牺牲准确率。

让我们更仔细地看一下 LLM Math 数据集基准测试的结果。在测试准确率与内存使用方面,我们发现 LoRA 确实在帕累托前沿上。它实现了 53.2% 的测试准确率,并在峰值时需要 22.6 GB 的 VRAM。然而,还有其他 PEFT 技术也在帕累托前沿上。例如,BEFT 实现了 32.9% 的测试准确率,最大内存需求仅为 20.2 GB。另一方面,我们有 Lily,它实现了 54.9% 的测试准确率,但需要 25.6 GB 的内存。根据你认为更重要的因素,你可能会得出结论,LoRA 并不一定为你提供最佳的权衡。

微调和评估

code
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 中,选择“Select Task”下拉菜单中的“image-gen”以显示结果。该任务的目标是学习一个新概念,即一个毛绒玩具猫,并将其推广到新的提示中。

使用在

code
FLUX.2-klein-base-4B

上微调的 LoRA 创建的毛绒猫图像。

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

在测试集上对它进行评估。其他 PEFT 技术,如 OFT,在测试得分和内存使用方面都优于 LoRA。

当然,你也应该检查那些接近帕累托前沿的其他 PEFT 方法,因为由于随机性,指标可能会有小幅波动。此外,你也应该探索其他指标:运行时性能对你来说是否重要?或者你更关心检查点的大小?从下拉菜单中选择相关指标,图像可能会发生显著变化。对于图像生成基准测试,一定要查看生成的示例图像,以了解微调模型的能力。

限制

异议:但基准测试偏向于某种方法!

对 PEFT 基准测试的一个批评是,超参数的选择可能会偏向于某种技术。确实如此,要对如此多的技术进行全面且公平的超参数搜索是困难的。然而,每个人都可以轻松地为 PEFT 贡献自己的实验:如果你认为通过选择不同的超参数可以改进特定的 PEFT 技术,请创建一个 PR!我们添加了如何做到这一点的说明。类似地,如果你想贡献一个全新的基准测试,请与我们联系,讨论你的想法。

另一个问题是,基准测试可能无法完全反映特定 PEFT 技术的能力。我们使这些技术能够在许多不同维度上进行比较,并根据这些权衡找到最佳的技术。但这种方式无法涵盖所有方面。例如,一种名为 Cartridges(https://huggingface.co/docs/peft/package_reference/cartridges)的 PEFT 技术被开发用于压缩长提示,这在基准测试中并未测量。其他因素也会影响选择,例如:

  • 根据 PEFT 技术,只能修改某些类型的层。
  • 并非所有 PEFT 技术都支持量化后的基础模型(但我们正在积极扩展 PEFT 中的支持)。
  • 一些 PEFT 技术允许合并适配器以减少运行时开销,而其他技术则不支持。

基准测试无法完全免除你进行研究的责任,但它们可以作为合理的参考。

点击图像,浏览 PEFT 商店,找到最适合你的 PEFT 技术。它不仅可以按基准指标进行浏览,还可以按功能(如量化支持)进行浏览。

使用除 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 生成的图像。右图:由转换为 LoRA 检查点的相同 GraLoRA 检查点生成的图像。图像质量相当。

目前,我们还没有为所有 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

code
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)

本文提到的数据集 2

本文提到的空间 1

本文提到的论文 3

更多文章来自我们的博客

指南

协作

diffusers

世界各地的 LoRA 训练脚本,团结起来!

79

2024 年 1 月 2 日

nlp

tgi

LLM

TGI Multi-LoRA:一次部署,服务 30 个模型

63

2024 年 7 月 18 日

社区

编辑

预览

通过拖拽文本输入框、粘贴或

点击此处上传图片、音频和视频

点击此处或粘贴以上传图片

评论

· 注册或登录以发表评论