超越LoRA:你能击败最流行的微调技术吗?
摘要
探讨LoRA是否是最佳参数高效微调技术,并介绍PEFT库中用于比较方法的工具。
查看缓存全文
缓存时间: 2026/06/18 17:40
超越LoRA:你能击败最流行的微调技术吗? 来源:https://huggingface.co/blog/peft-beyond-lora 返回文章列表 (https://huggingface.co/blog) LoRA 真的是最佳的 PEFT 技术吗?
https://huggingface.co/blog/peft-beyond-lora#when-you-plan-to-fine-tune-a-model-in-a-parameter-efficient-way-think-beyond-lora
当你计划以参数高效的方式微调模型时,请跳出 LoRA 的思维框架
如果你打算用自己的数据微调一个开放模型,你很可能对所谓的“参数高效微调”——简称 PEFT 感兴趣。这个术语描述了能够显著降低微调模型所需内存的技术。尽管有几十种这类技术,但几乎每个人都选择了一种叫做“LoRA”的方法。在这篇博文中,我们将探讨 LoRA 是否真的是最佳选择,有哪些工具可以帮助你做出明智决策,以及如何通过将视野扩展到 LoRA 之外而受益。
https://huggingface.co/blog/peft-beyond-lora#what-is-peft-and-when-do-you-need-it
什么是 PEFT?何时需要它?
市面上有无数开放模型,但它们往往不足以满足你的特定用例。提示(Prompting)可能有所帮助,但通常还不够。与其从头训练一个新模型,不如考虑微调一个现有模型。然而,微调非常消耗内存:你通常需要足够的内存来容纳整个模型好几次。量化可以减少模型的内存占用,但量化后的模型不能直接微调。因此,出现了一系列技术来削减微调所需的内存,称为“参数高效微调”(PEFT)。使用 PEFT,你只需用一小部分内存就能微调模型,甚至能微调量化模型。它还带来了其他优势,例如极小的检查点体积、更强的抗灾难遗忘能力,以及从同一个基础模型提供多个微调版本的能力。
在 Hugging Face,我们开发了 PEFT 库 (https://github.com/huggingface/peft),该库统一实现了多种 PEFT 技术,并通过统一的 API 暴露出来,与生态系统(例如 Transformers (https://huggingface.co/docs/transformers/main/en/peft) 和 Diffusers (https://huggingface.co/docs/diffusers/main/en/api/loaders/peft))集成良好。它还支持多种量化方法 (https://huggingface.co/docs/peft/developer_guides/quantization),使得参数高效微调更加易于访问。无论你是想用自己的数据微调模型,还是研究新的 PEFT 方法,PEFT 都是一个很好的起点。
https://huggingface.co/blog/peft-beyond-lora#lora-the-queen-of-fine-tuning-techniques-%F0%9F%91%91
LoRA:微调技术中的女王 👑
一种早期出现且被证明非常有效的参数高效微调技术叫做“低秩适应”,简称“LoRA” (https://huggingface.co/papers/2106.09685)。它的工作原理是在基础模型之上添加少量参数,冻结基础模型的权重,只训练这些少数参数。在所有 PEFT 技术中,LoRA 是迄今为止最流行的。以下是一些估算数据:
- 在 Hugging Face Hub (https://huggingface.co/datasets/librarian-bots/model_cards_with_metadata) 上提及恰好一种 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 (示例查询 (https://github.com/search?q=%22from+peft+import+LoraConfig%22&type=code)) 上搜索代码片段
from peft import,71.3% 的结果是 LoRA。紧随其后的是 LoHa (3.7%) 和 AdaLoRA (3.5%)。
虽然这些估算并不完美,但结论仍然是:LoRA 几乎毫无疑问地是最常见的 PEFT 技术。这可能只是意味着 LoRA 对每个人都效果最好,这一事实反映在其使用量上。然而,还有另一种可能性:LoRA 是较早出现的流行 PEFT 技术之一。因此,它的使用可能形成了自我强化:LoRA 拥有最高的可见度、最多的教程/示例,并且在下游包中获得了最好的支持。这样,LoRA 的流行度就不断自增强。
所有这些引出一个问题:*我们是否因为回避更好的技术而牺牲了性能?*毕竟,有无数研究者声称他们的技术超越了 LoRA。这难道不是足以证明我们应该超越 LoRA,转向更新技术的证据吗?
https://huggingface.co/blog/peft-beyond-lora#choosing-the-right-peft-technique-based-on-paper-results-is-problematic
仅凭论文结果选择正确的 PEFT 技术是有问题的
有几十篇论文研究了 LoRA 以外的微调技术。仅在 PEFT 库中,目前就有超过 40 种不同的 PEFT 技术(如果算上变体则更多)。对于其中几乎每一种,你都会发现研究者声称他们的技术根据他们的基准测试超越了 LoRA。这些说法的问题在于,研究者面临着提供超越现有基准结果的压力。即使没有恶意,这也可能使结果产生偏差,例如,与研究者提出的技术相比,他们在调整替代技术上的时间可能更少。例如,一项研究发现,通过调整学习率,LoRA 可以匹配本应更好的 PEFT 技术 (https://arxiv.org/abs/2602.04998)。另一个复杂因素是,每篇论文都选择了不同的一组 PEFT 技术进行比较,以及不同的一组基准测试。即使比较的是相同的技术和相同的基准,代码通常也不可用或不易自行运行,这使得结果难以复现。总体而言,仅凭论文结果很难找出最适合你的 PEFT 技术。因此,你可能会忍不住选择默认的 LoRA。
https://huggingface.co/blog/peft-beyond-lora#how-we-approach-benchmarking-in-peft
我们在 PEFT 中的基准测试方法
在 Hugging Face,我们思考如何帮助用户做出明智的决策来选择 PEFT 技术。通过 PEFT 库,我们已经提供了一个实现并统一 API 暴露多种 PEFT 技术的包。下一步是提供能够进一步阐明上述问题的基准测试。我们已经有了一段时间用于检查大语言模型在数学数据集上微调效果的基准测试 (https://github.com/huggingface/peft/tree/main/method_comparison/MetaMathQA)。该基准测试对一个未经过指令微调的基础模型进行微调,使其通过链式思维推理来回答数学问题。因此,这个基准测试检验模型是否能学会进行数学推理,并调整生成输出以符合预期格式。
为了将我们的发现扩展到其他模态,我们还添加了一个图像生成基准测试 (https://github.com/huggingface/peft/tree/main/method_comparison/image-gen)。该测试检验模型是否能微调以学习一个新概念——一个猫咪玩偶 (https://huggingface.co/datasets/peft-internal-testing/cat-image-dataset)——并在不遗忘现有概念的情况下在新情境中生成它。所有 PEFT 技术都在完全相同的条件下进行评估:相同的基础模型、相同的数据集、相同的训练和评估代码、相同的硬件。
由于不同用户有不同的需求,我们追踪的不仅仅是测试性能。除了VRAM使用量,我们还追踪遗忘/漂移、运行时和检查点体积等指标。这些基准测试设计为在消费级硬件上运行,添加一个新的实验只需添加一个新的 PEFT 配置并运行一个脚本。因为我们公平地比较所有 PEFT 技术,并且没有偏向,我们相信这些基准测试能够客观地描绘不同 PEFT 技术的工作效果。我们认为,如果你有自己的数据集,你可以采用类似的方法,利用 PEFT 库来评估多种 PEFT 技术。
https://huggingface.co/blog/peft-beyond-lora#our-findings-lora-works-well-but-is-not-necessarily-the-best-choice
我们的发现:LoRA 效果不错,但不一定是最佳选择
在完成基准测试运行后,我们发现尽管 LoRA 效果不错,但其他 PEFT 方法可以在一个或多个维度上击败它,因此应该被考虑。请查看下面这张比较 LoRA 和其他五种 PEFT 技术性能的图表。
基准测试的部分结果。在测试性能和内存使用方面,LoRA 不一定是最好选择。左图:MetaMathQA 基准测试;右图:图像生成基准测试。请查看这个 Space (https://huggingface.co/spaces/peft-internal-testing/PEFT-method-comparison) 获取最新结果。
解读上述结果的一种方式是权衡利弊,例如:模型在测试集上表现如何 vs 训练需要多少内存?如果没有任何其他 PEFT 技术能同时在两个指标上超越它,那么它就位于 帕累托前沿。换句话说:如果你想获得更好的测试精度,你需要更多内存;如果你想要更高内存效率,你就得牺牲精度。让我们仔细看看 LLM 数学数据集基准测试的结果。在测试精度 vs 内存方面,我们发现 LoRA 确实位于帕累托前沿。它达到了 53.2% 的测试精度,峰值需要 22.6 GB 的 VRAM。然而,其他 PEFT 技术也位于帕累托前沿。例如,BEFT (https://huggingface.co/docs/peft/main/en/package_reference/beft) 达到了 32.9% 的测试精度,峰值仅需 20.2 GB 内存。另一端是 Lily (https://huggingface.co/docs/peft/main/en/package_reference/lily),达到了 54.9% 的测试精度,但需要 25.6 GB 内存。根据对你来说什么更重要,你可能会得出结论:LoRA 并不是最适合你的权衡方案。
微调 meta-llama/Llama-3.2-3B 并在 GSM8K 上评估的测试精度 vs 内存使用权衡。LoRA 表现不错,但其他 PEFT 技术也同样出色。
同样值得注意的是,即使 LoRA 在这个任务上表现良好,我们讨论的也不是普通 LoRA。一方面,我们有使用秩稳定初始化 (rank stabilized initialization) (https://huggingface.co/papers/2312.03732) 的 LoRA,这是一种与默认初始化不同地缩放 LoRA 贡献的技术,提供了非常好的测试精度(53.2%)。另一端,我们有 LoRA-FA (https://huggingface.co/papers/2308.03303),它使用一个专为 LoRA 设计的优化器,冻结了部分 LoRA 权重,因此内存效率更高(20.2 GB)。普通 LoRA 仅达到 48.1% 的精度,内存 22.5 GB,因此应该避免使用,而选择替代方案。
接下来让我们看看图像生成基准测试。在 Hugging Face Space (https://huggingface.co/spaces/peft-internal-testing/PEFT-method-comparison) 中,选择“Select Task”下拉菜单中的“image-gen”来查看结果。该任务的目标是学习一个新概念,即一个猫咪玩偶,并将其泛化到新的提示中。
使用在 FLUX.2-klein-base-4B 上微调的 LoRA 生成的猫咪玩偶图像。
对于这个任务,主要指标是“dino similarity”,它衡量生成的图像与保留测试数据集中图片的相似度,数值越高越好。和往常一样,我们也需要关注内存使用。在绘制这两个指标的帕累托前沿时,我们发现 LoRA 位于该前沿之下。来看具体数字:LoRA 的相似度得分为 0.697,而 OFT (https://huggingface.co/docs/peft/package_reference/oft) 达到了 0.708;在内存方面,LoRA 需要 9.97 GB,OFT 需要 9.01 GB。因此,OFT 在这些指标上严格优于 LoRA。
微调 FLUX.2-klein-base-4B 并在测试集上评估的测试精度 vs 内存使用权衡。像 OFT 这样的其他 PEFT 技术在测试得分和更低内存使用上都击败了 LoRA。
当然,你还应该检查其他接近帕累托前沿的 PEFT 方法,因为指标可能会因随机性而有微小变化。同时,你也应该探索其他指标:运行时性能对你重要吗?你在意检查点的大小吗?从下拉菜单中选择相关指标,情况会大不相同。对于图像生成基准测试,一定要检查生成的样本图像,以感受微调模型的能力。
https://huggingface.co/blog/peft-beyond-lora#limitations
局限性
异议:但基准测试偏向某种方法!
对 PEFT 基准测试的一个可能批评是,超参数的选择可能偏向于某一种技术。这是真的,要在如此多的技术中进行详尽且公平的超参数扫描是困难的。然而,每个人都很容易为 PEFT 贡献自己的实验:如果你认为某个特定的 PEFT 技术可以通过选择不同的超参数来改进,请创建一个 PR!我们添加了如何操作的说明 (https://github.com/huggingface/peft/tree/main/method_comparison#creating-new-experiments)。类似地,如果你想贡献一个全新的基准测试,请联系我们讨论你的想法。
另一个问题是基准测试可能无法完全反映特定 PEFT 技术的能力。我们使得沿着许多不同维度比较技术并根据这些权衡发现最佳方案成为可能。但通过这种方式不可能捕捉所有方面。例如,一种叫做 Cartridges (https://huggingface.co/docs/peft/package_reference/cartridges) 的 PEFT 技术被开发用于压缩长提示,这在基准测试中没有被衡量。其他因素也会影响选择,例如:
- 根据不同的 PEFT 技术,只能修改某些层类型。
- 并非所有 PEFT 技术都支持量化基础模型(但我们在
PEFT中积极扩展支持)。 - 一些 PEFT 技术允许合并适配器 (merging of the adapter) (https://huggingface.co/docs/peft/main/en/developer_guides/model_merging) 以减少运行时开销,而其他技术则不行。
这些基准测试并不能完全免除你自行研究的责任,但它们可以作为合理的参考。
[点击图片浏览 PEFT 商店,找到最适合你的 PEFT 技术。它不仅允许你通过基准测试指标浏览,还支持按功能(如量化支持)浏览。]
异议:但是 llama.cpp/vLLM/……只支持 LoRA
使用 LoRA 以外的 PEFT 技术的一个局限性是,它们在下游包中获得的支持不如 LoRA 广泛。例如,如果你想使用 vLLM 服务模型,只能加载 LoRA 检查点。幸运的是,PEFT 现在支持将其他适配器转换为 LoRA (https://huggingface.co/docs/peft/main/en/package_reference/lora_conversion)。这样,你可以将非 LoRA 检查点转换为 LoRA,并在 vLLM 或其他下游包中使用它。为了测试这一点,我们将一个使用 GraLoRA 技术的图像适配器转换为 LoRA 检查点。转换后的测试得分几乎相同(相似度 0.702 → 0.694,0.260 → 0.269)。以下是针对提示“sks cat at the beach”的测试图像:
目前,我们已
相似文章
Hybrid-LoRA:桥接全微调与低秩适应的后训练方法
Hybrid-LoRA提出了一种框架,选择性地对一小部分模块进行全微调,同时对其他模块使用LoRA,在显著降低计算成本的同时实现了接近全微调的性能。实验表明,与现有参数高效基线方法相比,性能提升高达5.65%。
@jbhuang0604: LoRA, low-rank adaptation, is arguably the most popular parameter-efficient fine-tuning method for LLMs. But how does i…
LoRA(低秩适配)是LLM最流行的参数高效微调方法,视频介绍了LoRA及其变体(LoRA+、QLoRA、VeRA、DoRA)的工作原理。
Echo-LoRA:通过跨层表示注入实现参数高效微调
本文介绍了 Echo-LoRA,这是一种新的参数高效微调方法,它将来自深层源层的跨层表示注入到浅层 LoRA 模块中,从而在不增加推理开销的情况下提升性能。
哪种LoRA?多语言指令微调中LoRA技术有效性的实证研究
本文实证比较了多种LoRA变体在多语言指令微调中的表现,发现复杂变体在平衡跨语言迁移与知识保留方面相比基本LoRA并无显著优势。
超越 LoRA 与全参数微调:基于梯度引导优化器路由的大语言模型适配
本文提出了一种混合 LoRA 与全参数微调(MoLF)框架,利用梯度引导的优化器路由在 LoRA 和全参数微调之间进行自适应切换。旨在通过结合全参数微调的可塑性与 LoRA 的正则化特性,克服仅依赖静态适配方法的结构局限性。