8 模型微调-关键超参数

1. 学习率

学习率决定了模型在每次更新时参数调整的幅度,通常在 (0, 1) 之间

对显存无影响

影响学习速度

告诉模型在训练过程中”学习”的速度有多快,平衡进步速度与稳定性

推荐数值

常见的 lora 微调中, 推荐 4e-5 和 5e-5 (这个算是前人实验和总结出来的通用比较好的数值)

全参数微调 推荐5e-6

学习率过大会怎么样?

每次调整的幅度都很大, 容易把之前学会都推翻, 都是大的重头学习, 快速但不稳定

学习率过小会怎么样?

每次学习就很慢, 不会走偏, 需要长时间慢慢学习,慢速但是稳定

实际训练注意:

不要担心训练速度慢,稳定性更重要, 小数据集不要使用大学习率

2. 训练轮数(Epochs)

核心概念

训练轮数(Epochs) 一个Epoch表示模型完整地遍历一次整个训练数据集。

关键要点

轮数过少会怎么样?

欠拟合,学习不充分, 简单就是没学会东西

轮数过多会怎么样?

过拟合,只记住了学到数据集的内容, 泛化差,就像死记硬背了

推荐参数:一般3轮即可

后面根据LOSS值调整,要LOSS控制在0.5-1.5之间 比较好

loss 趋于0 基本上就是过拟合了

实际训练注意:

数据集越少 ,需要越多的 epochs

3. 批量大小( Batch Size)

批量大小(Batch Size)是指在模型训练过程中,每次更新模型参数时所使用的样本数量。

单词次学习的样本量

两个关键参数

实际批量大小 = 单设备批量大小 × 梯度累积步数

显存影响

批量大小越大,显存消耗越多

梯度累积可以用小显存实现大批量的效果

批量大小优缺点对比

大批量会怎么样 ?

训练更稳定,易收敛到全局最优,计算效率高

会怎么样小批量?

省显存, 泛化能力强

实际应用建议

小模型/小数据集建议, 从batch_size=1或2开始

推荐: 大batch_size搭配大学习率

4. LoRA 秩

LoRA 秩是什么?

这个是一个数学概念, 暂时先不解释了

通俗理解就是, 模型会总结做题的思路.

如果 LoRA 秩大会怎么样 ?

会有多种做题思路, 遇到复杂的题目, 会有更好的

显存消耗大

如果 LoRA 秩小会怎么样 ?

学习稳定, 思路固定, 泛化能力差, 就是复杂的题可能就不会了

如何选择合适的 LoRA 秩值?

1. 经验推荐值

数据集大小 + 任务复杂度

  • 小型数据集(<1000样本):使用较小的秩值4-8 避免过拟合

  • 中型数据集(1000-10000样本):可使用中等秩值(8-16)

  • 简单任务, 可以直接按照数据集去测试

  • 复杂任务, 需要增加一些大小 ,小型数据集(<1000样本)+ 复杂任务 推荐 10

实际显存消耗

7B 模型 : 8 增加到 64 增加了 2G 显存消耗

5. 验证集大小

本身就算没有验证集, 也不影响我们训练模型的效果.

增加这个只是方便观察和评估验证集loss曲线 , 关系训练效果

样本数据量推荐:

  • 小型数据集(<1000样本), 设置 0.1- 0.2
  • 大型数据集 (<10000样本) , 只是 0.1

如果任务简单, 就可以少一点, 反之增加一些