Zubnet AI学习Wiki › LoRA
训练

LoRA

别名:低秩适配
一种通过仅训练少量额外参数而非修改整个模型,显著降低微调成本的技术。LoRA “适配器”是轻量级附加组件(通常仅需数兆字节),可在不重新训练其数十亿个参数的情况下修改模型的行为。

为什么重要

LoRA使微调更加普及。在此之前,定制一个7B模型需要强大的GPU资源。现在你可以在单块消费级GPU上数小时内完成微调,并分享这个小巧的适配器文件。这就是为什么HuggingFace上有数千个专业模型的原因。

深度解析

LoRA 的核心思想由 Hu 等人在 2021 年提出,其关键在于微调过程中权重更新往往具有低秩特性——即这些变化可以通过两个较小矩阵的乘积很好地近似。传统方法会更新整个权重矩阵 W(例如 4096 x 4096 = 1600 万个参数),而 LoRA 则完全冻结 W,并添加两个小矩阵 A(4096 x r)和 B(r x 4096),其中 r(秩)通常为 8、16 或 64。有效更新为 BA,其形状与 W 相同,但仅由 2 x 4096 x r 个参数定义。当 r 为 16 时,可训练参数约为 131,000 个,而非 1600 万个——单层参数量减少了 120 倍。将此方法应用于模型的所有注意力层,总可训练参数量可从数十亿级降至数百万级,这也是 LoRA 适配器文件通常仅为 10-50 MB,而基础模型却需数 GB 的原因。

调整参数

实际应用中,你需要选择将 LoRA 应用于哪些层(通常为注意力投影矩阵:Q、K、V 以及输出投影),并设置秩 r 和一个称为 alpha 的缩放因子。alpha/r 比例控制适配器相对于冻结基础权重的影响力。更高的秩意味着更强的表达能力,但参数和内存消耗也更大;实践中,秩 16 或 32 已能满足大多数场景需求。Dettmers 等人在 2023 年提出的 QLoRA 进一步提升了效率,通过将 LoRA 与基础模型的 4 位量化结合:冻结权重以 NF4(一种针对正态分布权重优化的 4 位格式)存储,而 LoRA 适配器则以 bf16 训练。这使得你可以在单块 48GB 显存的 GPU 上微调 700 亿参数模型——否则需要数百 GB 显存的多 GPU 配置。

工具生态

LoRA 生态系统发展迅速。HuggingFace 的 PEFT 库是标准实现,而 Axolotl、LLaMA-Factory 和 Unsloth 等工具则通过更高层次的接口封装了其功能,处理数据格式、超参数默认值和训练循环。最强大的实用特性之一是适配器的可组合性:由于 LoRA 适配器是加法形式,你可以为不同任务分别训练适配器,并在推理时无需重新加载基础模型即可合并或切换它们。一些服务框架如 LoRAX 和 vLLM 利用这一特性,从单个基础模型内存中同时加载数百个 LoRA 适配器,并将每个请求路由到对应的适配器。这使得为每个客户提供定制化微调模型成为可能,而无需部署多个模型实例的成本。

权衡取舍

LoRA 并非免费午餐。低秩约束意味着它无法学习任意权重变化——如果任务需要大幅重构模型的内部表示,全量微调将优于 LoRA。实践中,这在任务与基础模型预训练内容差异极大,或需要教授模型大量新事实知识(而非仅调整风格或格式)时最为关键。此外,常见的错误包括设置秩过低导致适配器似乎无法学习,或设置秩过高导致适配器在小数据集上过拟合。秩既是容量控制旋钮,也是正则化旋钮,与学习率和训练步数的调参同等重要。

相关概念

← 所有术语
← Liquid AI Luma AI →
ESC