PaddlePaddle / Knover

Large-scale open domain KNOwledge grounded conVERsation system based on PaddlePaddle
Apache License 2.0
673 stars 131 forks source link

加载数据时发现报错[WARN] Invalid example: context too long / no context - Example #169

Closed what-is-perfect closed 1 year ago

what-is-perfect commented 1 year ago

您好,我最近在使用Knover,试图训练一个24L的中文模型,我在完成数据收集,开始训练24L_train_stage-1.conf 时发现训练前的日志中出现警告。警告信息样式如下:

[WARN] Invalid example: context too long / no context - Example(src='松子是上面撒的东西……难道我的已经化掉了?我打开杯子看没有撒的东西……那他可能没有给你撒松子上面应该有奶油吗,我打开奶油都木有……废话……绿奶油!这款是我觉得打开来最好看的一款了绿奶油?!!!我没有!!!生气气!!!为什么我没有!要特地说吗?', tgt='不用..只有去奶油才要特地说你喝了一个假的星巴克吧', data_id=64905)

我明白这段对话中history似乎过长,但我的max_src_len设置为384,上述文本满足长度要求,因此或许不是输入数据过长的原因。 我集中检查no context的问题,在找到这个异常地抛出位置(Knover/knover/data/dialog_reader.py : line-289)后,我按程序执行顺序模拟了tokenize的流程,现在还没有找到原因。请问有人可以帮我找到触发警告的原因和解决办法吗? 我使用的一些信息: job.sh来自single_gpu目录 24L_train_stage-1.conf 参数: model=UnifiedTransformer task=DialogGeneration tokenize : 默认方式 spm.model : luge-dialogue baseline model vocab.txt : 同取自luge-dialogue datatype : raw file_format : filelist 谢谢!!!

sserdoubleh commented 1 year ago

可能你设置max_src_len的位置不正确,你可以看一看log里面的max_src_len是384吗? 我猜测你是在config里面写了一行max_src_len=384,目前不支持这种,是需要在train_args里面加个train_args="--max_src_len 384 --max_seq_len 512"

what-is-perfect commented 1 year ago

非常感谢,经过测试,发现确实是这个问题,我在24L_train_stage-1.conf中设置了max_src_len参数,但并没有生效。应该在Knover/scripts/*/train.sh中自行按上述回复中格式设置参数