Shitao Xiao
Shitao Xiao
> 我为什么在提这个问题呢,是因为我在微调reranker的时候,平均每个query有6-10个负例,但是微调效果不好,首先loss根本不收敛,其次就是最后模型输出的score都是一样的,没有区别 我觉得这个情况不是neg数量的问题,可能是数据或者梯度爆炸等其他方面的问题。
由于输入数据长度不一样,后面出现了更长的文本,显存是会增长的。在运行一段时间后会稳定下来
可以在初始化中https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/reranker/modeling.py#L14C14-L14C14加上: self.config = hf_model.config
可以参考https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/finetune#3-train 中的参数learning_rate
1. 有些区别,我们使用的是对比学习损失训练的,具体可以参考训练代码。 2. 可以参考训练代码 3. 没有
参考https://discuss.huggingface.co/t/how-to-turn-wandb-off-in-trainer/6237
loss很小,建议挖掘难负样本,提高训练难度:https://github.com/FlagOpen/FlagEmbedding/tree/master/examples/finetune#hard-negatives
reranker的理论上限更高,使用微调后的bge-large生成难负样本去训练reranker会更好。
> 我实验结论这是如此,同样的训练数据向量召回Top1结果,bge-reranker-large的匹配准确率会比bge-large低2个点。 > > 楼主,找到破解的方法了吗? 基座模型也有影响,xlm-roberta作为多语言模型,中文能力不是很强,可以试试换成其他中文模型训练reranker。
提高raranker效果的tricks:提高负样本难度;以及增大train_group_size,这样会增大负样本的数量,但是相应的要保证训练数据中neg的数量要足够多,不然neg中样本太少,增大train_group_size也只是重复采了一样的负样本。