FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

reranker模型微调细节

Open Victoriaheiheihei opened this issue 2 years ago • 4 comments

在实际使用中,我发现在领域知识上bge-reranker-large可能会造成由bge-large-zh-v1.5得到的top3的性能下降,但是不知道具体问题出在哪里,使用方法是按照官方说明使用的,如下:

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer, BatchEncoding, PreTrainedTokenizerFast

tokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-base')
model = AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-base')
model.eval()

pairs = [['what is panda?', 'hi'], ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']]
with torch.no_grad():
    inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512)
    scores = model(**inputs, return_dict=True).logits.view(-1, ).float()
    print(scores)

我看reranker初始化的模型是xlm-deberta,所以想问下reranker是否没有使用到retromae预训练部分,有没有可能bge-large-zh-v1.5的预训练更加充分,导致了bge-large-zh-v1.5在领域外的数据上表现更好呢?

Victoriaheiheihei avatar Dec 21 '23 06:12 Victoriaheiheihei

还有一个问题,按照我的理解如果使用retromae预训练的模型初始化reranker也是可以的吧,当时是出于什么因素考量选择了xlm-deberta-base呢

Victoriaheiheihei avatar Dec 21 '23 06:12 Victoriaheiheihei

训练细节可以参考https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/reranker#fine-tune reranker的中文训练数据很少,只有780k,并且由于基座模型xlm-deberta-base本身中文能力也不突出,可能会导致在中文任务上泛化能力不足。建议在bge-reranker上微调,或者选择其他中文模型基座进行微调。

因为希望模型具备多语言能力,选择了多语言模型xlm-deberta-base。

staoxiao avatar Dec 21 '23 06:12 staoxiao

感谢! 此外还有一个问题,为什么之前retromae reranker选择了deberta,现在bge选择了xlm-deberta,为什么不在retromae预训练模型的基础上训练一个reranker而选择其他模型初始化呢?

Victoriaheiheihei avatar Dec 22 '23 05:12 Victoriaheiheihei

因为deberta多语言版本只有base,没有large的版本,同时之前retromae预训练模型也没有多语言版本。 另外,之前在msmarco数据上发现retromae预训练后的模型对reranekr没有太大提升,训练reranker直接使用原始模型即可。

staoxiao avatar Dec 22 '23 09:12 staoxiao