PEFT微调全解析:原理、方法、超参数与调优策略

内容纲要

一、PEFT常见的超参数

1. 通用超参数(所有PEFT方法常用)

  • 学习率(learning_rate)
  • Batch Size(batch_size)
  • Epoch数量(num_epochs)
  • 优化器类型(optimizer,如AdamW)
  • Scheduler(学习率调度器,如linear、cosine)

2. PEFT方法特有超参数

(1) LoRA专有超参数
  • rank(秩大小)
  • alpha(scaling factor,缩放系数)
  • target modules(要微调的目标层,如attention、MLP层)
(2) Adapter Tuning专有超参数
  • adapter bottleneck size(适配器中间层尺寸)
  • adapter hidden dimension(隐藏层大小)
  • adapter模块插入位置(如每几层插入一次)
(3) Prefix Tuning专有超参数
  • prefix长度(如10~100个token)
  • prefix embedding维度
(4) Prompt Tuning专有超参数
  • prompt长度(通常5~50个token)
  • prompt初始化方式(随机初始化或基于特定词汇)

二、推荐配置和经验参考值

以下推荐为经验值,是初始调优的起点:

超参数 推荐范围
学习率 LoRA: 1e-4 至 5e-4,Adapter: 1e-4,Prompt/Prefix: 1e-3 至 5e-4
Batch Size 16-64 (常见32)
Epoch 数量 小数据集: 5~10,大数据集: 2~4
优化器 AdamW
Scheduler linear decay 或 cosine decay

各方法专有参数推荐初始值

  • LoRA

    • rank: 4~32(典型值为8)
    • alpha: 通常取 rank 的2倍(如 rank=8,alpha=16)
    • target_modules: 建议首先微调attention层(如q_proj、k_proj、v_proj)
  • Adapter Tuning

    • bottleneck size: 通常32~128(典型为64)
    • 插入层次: 一般每一层Transformer插入一个adapter效果较好
  • Prefix Tuning

    • prefix长度: 通常10~100(典型20~50)
    • 初始化: 随机初始化效果较稳定
  • Prompt Tuning

    • prompt长度: 通常5~20个token
    • 初始化: 通常随机初始化,少样本场景可基于语义初始化

三、如何调优超参数(调参策略)

超参数调优是模型微调性能优化的重要环节,建议的调优顺序如下:

1. 学习率调优(最高优先级)

  • 初始学习率尝试典型值(如LoRA: 2e-4, Adapter: 1e-4)。
  • 如果训练曲线波动剧烈,降低学习率10倍;若收敛过慢,稍微提高学习率。

2. Rank、Bottleneck或Prefix长度调优(次高优先级)

  • LoRA: 从较小的rank(如4或8)开始实验,再逐步增加,直到性能增益不明显;
  • Adapter: 从小bottleneck(如32)开始,逐步扩大,找到平衡点;
  • Prefix/Prompt: 从较短的长度开始(如20),逐渐增加长度到性能停止改善为止。

3. Batch Size和Epoch数量调优

  • 通常batch size越大越稳定,但内存占用高。推荐从16或32开始尝试;
  • epoch数量由数据量决定,小数据集epoch可以多(5~10),大数据集(2~3 epochs)。

4. 微调目标层选择(LoRA特有)

  • 最优先微调Attention层(q_proj、k_proj、v_proj);
  • 若有性能瓶颈,再尝试加入MLP层微调。

四、具体调优工具和方法

推荐使用自动化工具辅助调参

  • Ray Tune(推荐,方便批量调参)
  • Optuna(高效且易用的自动超参数搜索框架)
  • wandb Sweeps(轻量且配套可视化)

五、一个实践性的超参数调优步骤示例(以LoRA为例)

步骤一:确定基础设置

  • 学习率: 2e-4
  • Batch Size: 32
  • rank: 8, alpha: 16
  • 微调目标: attention层

步骤二:进行第一次实验,观察

  • 性能达到预期,则考虑下一步;
  • 若未达到预期,优先调整学习率。

步骤三:搜索最优rank

  • 测试 rank = [4,8,16,32],观察验证集效果,选择效果最优。

步骤四:确定合适的epoch

  • 观察每个epoch训练曲线;
  • 选择训练曲线刚刚稳定的epoch数。

步骤五:batch size微调

  • batch size可微调为16、32、64,观察哪种设置在当前硬件下最优。

六、小结

PEFT超参数调优的核心思想是:

  • 先确定通用超参数(学习率为首)
  • 再针对具体方法逐步搜索特有超参数(如rank、prefix长度等);
  • 借助自动化工具(如Ray Tune或Optuna)提高效率。

掌握以上步骤和方法,你即可高效地完成PEFT的超参数调优,最大程度提升模型性能。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward