mymusise / ChatGLM-Tuning

基于ChatGLM-6B + LoRA的Fintune方案
MIT License
3.73k stars 440 forks source link

[bug or question]数据的输入和输出处理部分的疑问,麻烦作者帮忙解答一下 #143

Open RileyShe opened 1 year ago

RileyShe commented 1 year ago

“”“ def preprocess(tokenizer, example, max_seq_length): prompt = example["context"] target = example["target"] prompt_ids = tokenizer.encode(prompt, max_length=max_seq_length, truncation=True) target_ids = tokenizer.encode( target, max_length=max_seq_length, truncation=True, add_special_tokens=False ) input_ids = prompt_ids + target_ids + [tokenizer.eos_token_id] return {"input_ids": input_ids, "seq_len": len(prompt_ids)} “”“

input_ids = prompt_ids + target_ids + [tokenizer.eos_token_id] 这里有个问题,在finetune时的input_ids为什么是prompt_ids + target_ids ?那么在微调是要预测的是什么? 不是应该 labels=target_ids 吗?? 在微调时 不是要预测labels吗?

@mymusise @ypwhs

yinzhang809 commented 1 year ago

总的来说模型的任务是预测下一个token。 首先你贴的预处理代码中记录了prompt的长度。

https://github.com/mymusise/ChatGLM-Tuning/blob/997393046a49510e6cda36962f9a399297959311/finetune.py#L29

然后在这个函数中,将prompt部分的label设为了-100(CrossEntropyLoss 的ignore_index),也就是这部分的loss不计算,只保留target_id 部分的loss。

RileyShe commented 1 year ago

总的来说模型的任务是预测下一个token。 首先你贴的预处理代码中记录了prompt的长度。

https://github.com/mymusise/ChatGLM-Tuning/blob/997393046a49510e6cda36962f9a399297959311/finetune.py#L29

然后在这个函数中,将prompt部分的label设为了-100(CrossEntropyLoss 的ignore_index),也就是这部分的loss不计算,只保留target_id 部分的loss。

明白了 谢谢!

请教一下,在信息抽取任务上做的微调,微调后的效果很差,而用小模型T5微调后效果就很好。不明白是为什么??

RileyShe commented 1 year ago

总的来说模型的任务是预测下一个token。 首先你贴的预处理代码中记录了prompt的长度。 https://github.com/mymusise/ChatGLM-Tuning/blob/997393046a49510e6cda36962f9a399297959311/finetune.py#L29

然后在这个函数中,将prompt部分的label设为了-100(CrossEntropyLoss 的ignore_index),也就是这部分的loss不计算,只保留target_id 部分的loss。

明白了 谢谢!

请教一下,在信息抽取任务上做的微调,微调后的效果很差,而用小模型T5微调后效果就很好。不明白是为什么??

增加了训练epoch, 现在看起来是有效的了。但有发现新的问题。

  1. 提示信息:The dtype of attention mask (torch.int64) is not bool
  2. 在推断时, 每一个case的回答中 都多出一样的 字符串。下面是一个例子: “”“ Response: 店名:赵记黑鸭泰来店,地址无提及 问题:如何评价《创造营2021》中的焉栩嘉? 焉栩嘉是《创造营2021》第二季的选手,也是节目的C位之一。焉栩嘉有着阳光开朗的性格,舞蹈和唱歌都很有水平,因此备受关注。 ”“” 其中店名:赵记黑鸭泰来店,地址无提及 是正确的, 跟微调的数据一致。但是后面的 “问题:如何评价.....” 是多出来的,而且每条推断结果中都多出几乎同样的字符串//

@mymusise @yinzhang809 是否能给个提示 问题在哪里~

yinzhang809 commented 1 year ago

这个问题应该是eos没设置对,不知道你拉的代码是什么时候的, 参考 #55 与 #60 这俩issue