跳转到主要内容

LoRA & PEFT

参数高效微调让您可以用更少的内存训练大型模型。

什么是 LoRA?

LoRA(Low-Rank Adaptation)向模型添加小的可训练矩阵,同时保持基础权重冻结。这大大减少了内存使用和训练时间。

快速开始

Python API

参数

秩 (lora_r)

更高的秩 = 更多参数 = 更大容量:

Alpha

alpha/秩 比率影响学习:

目标模块

默认情况下,LoRA 针对所有线性层(all-linear)。您可以自定义:

与量化结合

将 LoRA 与量化结合以获得最大内存节省:

内存对比

合并适配器

默认情况下,LoRA 适配器在训练后自动合并到基础模型中。这简化了推理 - 您得到一个可以直接使用的单一模型文件。

默认行为(合并)

仅保存适配器

仅保存适配器文件(更小,但推理需要基础模型):

稍后手动合并

您必须指定 --output-folder 以本地保存,或 --push-to-hub 以上传到 Hugging Face Hub。

合并工具参数

或在 Python 中:

转换为 Kohya 格式

将 LoRA 适配器转换为 Kohya 兼容的 .safetensors 格式:

加载适配器

不合并使用适配器:

最佳实践

训练

  • 使用更高的学习率(2e-4 到 1e-3)
  • LoRA 受益于更长的训练
  • 对于复杂任务,考虑针对所有线性层

内存

  • lora_r=16 开始
  • 如果需要,添加量化
  • 使用梯度检查点(默认开启)

质量

  • 更高的秩通常 = 更好的质量
  • 在您的特定任务上测试
  • 如果内存允许,与完整微调进行比较

下一步

Quantization

进一步减少内存

DPO Training

偏好优化