8 模型微调-关键超参数
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
如果任务简单, 就可以少一点, 反之增加一些