LLM预测训练集数据重复、长度超出label

遇到一个场景, 拿几条数据用LORA微调了LLM, 根据Loss看已经接近了0, 但是拿训练集里的数据预测时 ,不管怎么调节generate的参数, 预测结果总是不对, 有整段话重复生成的结果, 有不重复生成, 但是生成的结果超出了label的长度。

经过排查, 原因是训练集构造的时候, 句子的结束符被attention mask掉了, 故模型在计算损失的时候, 虽然Loss为0, 但是这个loss是只计算了attention mask部分的Loss, 下述为错误代码

tokenizer = BloomTokenizerFast.from_pretrained(MODEL_PATH, use_fast=False)
tokenizer.pad_token = tokenizer.eos_token # 这一步代码出问题了
text = text + '\n' + '</s>'
to_regress_tokens = tokenizer(text,
            return_tensors="pt",
            padding="longest",
            truncation=True,
            max_length=160,
            add_special_tokens=False).to(device)


targets = to_regress_tokens.input_ids.masked_fill(
            to_regress_tokens.input_ids == tokenizer.pad_token_id, -100
        ).to(device) # 导致在这里mask的时候, 忽略了 </s> 终止符 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值