Lora微调Yi-6B第一个step后loss突变为0

在微调大语言模型的时候,loss是我们判断模型训练效果的一大重要指标。loss通常代表着模型效果和预期结果之间的差距,当这个差距收敛或者变化不大时,我们认为模型训练停止,此时通过validation来寻找最佳的模型超参。

而loss为0通常是被认为是异常情况,因为在大语言模型的训练中,loss的计算是每一个token位置对下一个token的预测值和预期值的交叉熵函数。 哪怕在一个样本中,模型的输出和训练集的结果完全一致几乎不可能。所以被判定为异常情况。

两个解决办法:

1. 查看label的设置,通常在dataloader的data_collator参数中会有涉及,将label设为-100的地方去掉(这里说的是自己设置的-100,hugging face中的函数会将特殊token mask掉,这个不用去掉)

2. 将lora config中的参数load_in_4bit设置为True

下面分析可能的原因:

第一种是我们在mask  label的过程中,设置错误。这里需要解释的是,什么是mask label。微调大模型时,训练集的形式是(prompt,responce)。由于模型学习的是回答问题,不需要去拟合问题的语言,所以我们只计算responce部分的loss,而不计算prompt的部分的loss。于是,在设置label的时候,我们会将prompt部分的label设置为-100(交叉熵规定对于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值