lora原理和应用

337 阅读1分钟

LoRA (Low-Rank Adaptation) 原理解析

1. 基本原理

LoRA 是一种参数高效的微调方法,主要通过以下方式工作:

核心思想

  • 不直接更新预训练模型的权重矩阵 W
  • 通过低秩分解矩阵 (BA) 来表示权重更新
  • W' = W + BA,其中 B∈R^{d×r}, A∈R^{r×k}

2. r 值的设置

r 值含义

  • r 是低秩矩阵的秩(rank)
  • 决定了 LoRA 适配器的容量和压缩比
  • 通常 r << min(d,k)

常见设置

  • 文本生成:r = 8, 16, 32
  • 图像生成:r = 4, 8, 16
  • 一般任务:
    • 小任务:r = 2, 4, 8
    • 中等任务:r = 16, 32
    • 复杂任务:r = 64, 128

选择建议

  1. 任务复杂度

    • 简单任务:较小的 r (2-8)
    • 复杂任务:较大的 r (32-128)
  2. 计算资源

    • r 越大,训练和推理开销越大
    • r 越小,模型压缩比越高
  3. 经验法则

    • 从小的 r 值开始尝试
    • 逐步增加直到性能不再显著提升
    • 通常 r=16 是一个好的起点

3. 代码示例

from peft import LoraConfig

# LoRA 配置示例
lora_config = LoraConfig(
    r=16,                      # LoRA 秩
    lora_alpha=32,            # LoRA alpha 缩放参数
    target_modules=["q", "v"], # 需要应用 LoRA 的模块
    lora_dropout=0.05,        # Dropout 概率
    bias="none",              # 偏置项处理方式
    task_type="CAUSAL_LM"     # 任务类型
)