defformat_instruction(instruction, query, doc):if instruction isNone:instruction ='Given a web search query, retrieve relevant passages that answer the query'output ="<Instruct>: {instruction}\n<Query>: {query}\n<Document>: {doc}".format(instruction=instruction,query=query, doc=doc)return outputdefprocess_inputs(pairs):inputs = tokenizer(pairs, padding=False, truncation='longest_first',return_attention_mask=False, max_length=max_length -len(prefix_tokens)-len(suffix_tokens))for i, ele inenumerate(inputs['input_ids']):inputs['input_ids'][i]= prefix_tokens + ele + suffix_tokensinputs = tokenizer.pad(inputs, padding=True, return_tensors="pt", max_length=max_length)for key in inputs:inputs[key]= inputs[key].to(model.device)return inputs@torch.no_grad()defcompute_logits(inputs,**kwargs):batch_scores = model(**inputs).logits[:,-1,:]true_vector = batch_scores[:, token_true_id]false_vector = batch_scores[:, token_false_id]batch_scores = torch.stack([false_vector, true_vector], dim=1)batch_scores = torch.nn.functional.log_softmax(batch_scores, dim=1)scores = batch_scores[:,1].exp().tolist()return scores# We recommend enabling flash_attention_2 for better acceleration and memory saving.# model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-Reranker-0.6B", torch_dtype=torch.float16, attn_implementation="flash_attention_2").cuda().eval()
token_false_id = tokenizer.convert_tokens_to_ids("no")
token_true_id = tokenizer.convert_tokens_to_ids("yes")
max_length =8192prefix ="<|im_start|>system\nJudge whether the Document meets the requirements based on the Query and the Instruct provided. Note that the answer can only be \"yes\" or \"no\".<|im_end|>\n<|im_start|>user\n"
suffix ="<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n"
prefix_tokens = tokenizer.encode(prefix, add_special_tokens=False)
suffix_tokens = tokenizer.encode(suffix, add_special_tokens=False)task ='Given a web search query, retrieve relevant passages that answer the query'queries =["What is the capital of China?","Explain gravity",]documents =["The capital of China is Beijing.","Gravity is a force that attracts two bodies towards each other. It gives weight to physical objects and is responsible for the movement of planets around the sun.",]pairs =[format_instruction(task, query, doc)for query, doc inzip(queries, documents)]# Tokenize the input texts
inputs = process_inputs(pairs)
scores = compute_logits(inputs)print("scores: ", scores)
一、无参 MOS 算法
在音频处理和质量评估领域,MOS(Mean Opinion Score)是一种常用的主观评价指标,用于衡量音频质量。然而,获取主观 MOS 评分通常需要大量的人力和时间。因此,无参 MOS 算法应运而生&#…