FlagEmbedding icon indicating copy to clipboard operation
FlagEmbedding copied to clipboard

bge-reranker-large 及 bge-reranker-v2-m3 的 max_length 应是多少

Open vikotse opened this issue 1 year ago • 4 comments

根据模型config文件的max_position_embeddings bge-reranker-large是514,bge-reranker-v2-m3是8194

而根据 https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_reranker#for-normal-reranker-bge-reranker-base--bge-reranker-large--bge-reranker-v2-m3--1 ,此处统一为512

import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('BAAI/bge-reranker-v2-m3')
model = AutoModelForSequenceClassification.from_pretrained('BAAI/bge-reranker-v2-m3')
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)

疑问1:bge-reranker-large、bge-reranker-v2-m3 的 tokenizer max_length 应是 512/8192,还是 514/8194 疑问2:预训练过程中,使用的语料是按 512/8192 截断,还是按 514/8194 截断,推理时该使用哪套 max_length 参数和预训练对齐?

vikotse avatar Jul 24 '24 02:07 vikotse

这个是huggingface里roberta模型的小bug,使用的时候模型只用了max_position_embeddings-2个位置编码,前2个位置编码被抛弃了。

staoxiao avatar Jul 24 '24 07:07 staoxiao

这个是huggingface里roberta模型的小bug,使用的时候模型只用了max_position_embeddings-2个位置编码,前2个位置编码被抛弃了。

所以分别使用 512 / 8192 即可?

vikotse avatar Jul 24 '24 08:07 vikotse

yes

staoxiao avatar Jul 24 '24 08:07 staoxiao

所以bge-reranker-v2-m3 的max_length=8192?

ucas010 avatar Aug 06 '24 10:08 ucas010