bge-reranker-large 及 bge-reranker-v2-m3 的 max_length 应是多少
根据模型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 参数和预训练对齐?
这个是huggingface里roberta模型的小bug,使用的时候模型只用了max_position_embeddings-2个位置编码,前2个位置编码被抛弃了。
这个是huggingface里roberta模型的小bug,使用的时候模型只用了max_position_embeddings-2个位置编码,前2个位置编码被抛弃了。
所以分别使用 512 / 8192 即可?
yes
所以bge-reranker-v2-m3 的max_length=8192?