FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

关于训练过程中的评估

Open lichengyang666 opened this issue 1 year ago • 3 comments

您好 我在微调bge 1.5的过程中,想在训练的过程中同时加入评估集,然后根据评估集合的loss去保存最优模型,于是我新增了一下一个参数 eval_dataset=eval_dataset, evaluation_strategy "epoch", save_strategy "epoch", save_total_limit 3 load_best_model_at_end True

但是结果遇到了报错,在评估的过程中找不到对应的loss Traceback (most recent call last): File "C:\Users\Lichengyang\Desktop\FlagEmbedding-master\FlagEmbedding-master\FlagEmbedding\baai_general_embedding\finetune\run.py", line 116, in main() File "C:\Users\Lichengyang\Desktop\FlagEmbedding-master\FlagEmbedding-master\FlagEmbedding\baai_general_embedding\finetune\run.py", line 102, in main trainer.train() File "E:\Anaconda3-2022.05\envs\insight\lib\site-packages\transformers\trainer.py", line 1555, in train return inner_training_loop( File "E:\Anaconda3-2022.05\envs\insight\lib\site-packages\transformers\trainer.py", line 1937, in _inner_training_loop self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_keys_for_eval) File "E:\Anaconda3-2022.05\envs\insight\lib\site-packages\transformers\trainer.py", line 2282, in _maybe_log_save_evaluate self._save_checkpoint(model, trial, metrics=metrics) File "E:\Anaconda3-2022.05\envs\insight\lib\site-packages\transformers\trainer.py", line 2407, in _save_checkpoint metric_value = metrics[metric_to_check] KeyError: 'eval_loss'

我应该如何解决呢,我直接在模型的forward中统一计算了loss(不管训练还是评估),结果还是找不到这个eval_loss 。。。

期待您的回复~

lichengyang666 avatar Feb 20 '24 02:02 lichengyang666

您好,这个需要在run.py中进行修改,传入eval_dataset

staoxiao avatar Feb 20 '24 08:02 staoxiao

您好,这个需要在run.py中进行修改,传入eval_dataset

您好,我就是传入了这个参数之后,报错了,KeyError: 'eval_loss',打印的评估信息里面没有这个字段。。。

期待您的再次回复~

lichengyang666 avatar Feb 20 '24 09:02 lichengyang666

我们在llm_embedder中实现了训练过程中的评估,可以参考https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/llm_embedder/src/retrieval/trainer.py#L50

staoxiao avatar Feb 21 '24 02:02 staoxiao