ymcui/Chinese-LLaMA-Alpaca-3

在微调时,如果输入的prompt太长超过max_seq_length时,prompt最后的结束符会被丢弃

seal-wang opened this issue · 2 comments

提交前必须检查以下项目

  • 请确保使用的是仓库最新代码(git pull)
  • 已阅读项目文档FAQ章节并且已在Issue中对问题进行了搜索,没有找到相似问题和解决方案。
  • 第三方插件问题:例如llama.cpptext-generation-webui等,建议优先去对应的项目中查找解决方案。

问题类型

模型训练与精调

基础模型

None

操作系统

Linux

详细描述问题

在这里

target = assistant_format.format(content=output)

会添加一个结束符,但是如果prompt长度大于max_seq_length时,会在这里
labels = torch.LongTensor([IGNORE_INDEX] * len(s) + t)[:max_seq_length]

将结束符丢弃掉。
这个丢失操作会使模型在微调阶段无法学到合适的结束符,反应到生成阶段会导致模型生成无法停止。
Chinese-LLaMA-Alpaca-1和Chinese-LLaMA-Alpaca-2也存在这样的问题,之所以最终模型生成时没问题,可能是因为max_seq_length比较大,可以满足大部分微调样本的长度需要。
不知道您有没有发现这个问题?还是我理解有错误?

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your consideration.

Closing the issue, since no updates observed. Feel free to re-open if you need any further assistance.