当前位置:   article > 正文

LLM预测训练集数据重复、长度超出label_llm训练数据问题、

llm训练数据问题、

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

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

  1. tokenizer = BloomTokenizerFast.from_pretrained(MODEL_PATH, use_fast=False)
  2. tokenizer.pad_token = tokenizer.eos_token # 这一步代码出问题了
  3. text = text + '\n' + '</s>'
  4. to_regress_tokens = tokenizer(text,
  5. return_tensors="pt",
  6. padding="longest",
  7. truncation=True,
  8. max_length=160,
  9. add_special_tokens=False).to(device)
  10. targets = to_regress_tokens.input_ids.masked_fill(
  11. to_regress_tokens.input_ids == tokenizer.pad_token_id, -100
  12. ).to(device) # 导致在这里mask的时候, 忽略了 </s> 终止符

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/737767
推荐阅读
相关标签
  

闽ICP备14008679号