Open 2232293826 opened 1 month ago
你好,报错信息和相关文件脚本请提供完整一些。
run_trainer_ernie_gen.py文件: ernie-gen.txt
在执行ernie-gen的问题生成的训练文件run_trainer_ernie_gen.py时,中间的eval过程无法正确计算出BLEU指标,报错reference长度为0,导致的除数为零错误。 环境配置境为 镜像:PaddlePaddle 2.2.0 Python 3.8(ubuntu18.04) Cuda 11.2 GPU:V100-32GB(32GB) * 1 CPU:6 vCPU Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz
可是试下排查这些原因和解决。
检查数据集
确保 self.data_set_reader.dev_reader
中的验证数据集确实包含数据。
以及验证集是否正确加载,可以在 do_train
函数开始时打印验证集的大小来确认。
检查数据集格式
确认数据集格式是否正确,尤其是参考翻译文本和生成的翻译文本是否匹配。
以及确保 refs
和 preds
在 bleu
函数中传入的确实是正确的参考和预测值。
检查BLEU计算逻辑:
在 gen_eval.py
文件中的 _compute_bleu
函数中添加调试日志,检查 translation_length
和 reference_length
的值。
请提出你的问题 Please ask your question
日志如下:
sort: multi-character tab ‘$/t’ WARNING: 07-27 00:09:40: register.py:25 140311556190400 Key WordsegTokenizer already in registry tokenizer. ERROR: 07-27 00:12:04: custom_static_generation_trainer.py:113 140311556190400 traceback.format_exc():Traceback (most recent call last): File "/mnt/ernie-gen/applications/tasks/text_generation/trainer/custom_static_generation_trainer.py", line 94, in do_train self.do_evaluate(self.data_set_reader.dev_reader, InstanceName.EVALUATE, steps) File "/mnt/ernie-gen/applications/tasks/text_generation/trainer/custom_static_generation_trainer.py", line 157, in do_evaluate self.model_class.get_metrics(fetch_output_dict, meta_info, phase, reader) File "/mnt/ernie-gen/applications/tasks/text_generation/model/ernie_infilling_generation.py", line 496, in get_metrics eval_res = self.eval.eval(outfile, phase, reader.features[phase]) File "/mnt/ernie-gen/erniekit/metrics/gen_eval.py", line 62, in eval eval_res[mertric] = eval_func(refs, preds) File "/mnt/ernie-gen/erniekit/metrics/gen_eval.py", line 75, in bleu return _compute_bleu(refs, preds, max_order=4)[0] File "/mnt/ernie-gen/erniekit/metrics/gen_eval.py", line 126, in _compute_bleu ratio = float(translation_length) / reference_length ZeroDivisionError: float division by zero
无法计算BELU,但是最后能够得到预测模型的文件,请问是哪里出现了问题,