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
偏好优化