模型精调功能介绍 3. 精调参数 在SFT中,不同的超参数选择会影响模型的精度以及性能,下面逐一对部分重要参数进行解释并给出一般性推荐。 epoch:模型训练轮数,通常选择2~5,可以根据eval集的loss曲线来判断:如果train集的loss曲线下降,eval集loss曲线上升,则说明模型已经过拟合,此刻考虑到基础模型的通用能力,应该停止训练;如果train集和eval集loss曲线均在缓慢下降,则说明模型还未收敛,可以继续进行训练。按经验来说,一般性的任务,全参微调训练3个epoch以内,LoRA微调应该取35个epoch。而生成类任务的epoch数可以略微设置大一点,如5~10范围内。 learning rate:学习率,设置较大时会加速模型迭代,但是模型可能无法收敛到最优点;设置过小时会使得模型迭代较慢,可能陷入局部最优。按照经验来讲, LORA微调选择 learning rate 在 1e4 ~ 3e4,全参微调选择learning rate在1e6~5e6即可。 global batch size:全局批处理大小,在大模型加速框架Megatron下,该值的增大不会导致显存溢出的问题,但由于梯度累积的存在,其值越大,模型训练性能会降低。一般来说,小模型使用的gbs值可以小一点,大模型的gbs值一般设置成64及以上,gbs的设置一般是2的次幂,比如2,4,8,16,32等。 seq lens:序列长度,其取值应该大于等于训练数据里面最长的那个,以防止数据被截断。一般来说,由于大模型普遍应用旋转位置编码,其已经具备了一定的外推性,8k的序列长度已经可以满足一些简单的、常规的问答任务。如果有特殊需求,比如长文本续写或者特长思维链推理,才会考虑放大序列长度到32k。而且增大序列长度所需的资源数会成倍增长,通常会开启序列并行或者激活值重计算的方式来支持模型的长序列微调能力,会严重影响训练性能。 另外,针对这些参数,有一些额外建议供用户参考: 微调时,learning rate是随着global batch size的增加而单调递增但有上界的。当优化器是Adam或者RMSProp时,learning rate是和global batch size的平方根成正比。但是增大global batch size到一定阈值后,learning rate反而应该减小。 当增大global batch size并相应增大learning rate时,为保证模型训练一定的步数,有时epoch也需要稍微增大一些。 LoRA微调时,最优的learning rate相比于全参微调时最优的learning rate,一般大1~2个数量级。
来自: