我尝试采用你们官方的vllm推理,发现和hf推理的结果相差非常大

#3
by dafen - opened

HF版:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
model_dir = 'model/vivo-ai/BlueLM-7B-Chat-32K'
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype=torch.bfloat16,trust_remote_code=True,device_map="cuda:0")#, device_map="auto"
model.generation_config = GenerationConfig.from_pretrained(model_dir )
model.generation_config.temperature = 0.01
model.generation_config.top_p =0.01
model.generation_config.repetition_penalty = 1.0

inputs = tokenizer("""[|Human|]:小明的爸爸有三个儿子,小明1992年出生,大儿子叫大毛,二儿子叫二毛,今年是2023年,请问三儿子今年多大了[|AI|]:""", return_tensors="pt")
inputs = inputs.to("cuda:0")
pred = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True).split('[|AI|]:')[-1])

result:

小明的爸爸有三个儿子,小明1992年出生,大儿子叫大毛,二儿子叫二毛,今年是2023年,请问三儿子今年多大了 根据题目所给的信息,可以计算出小明的三儿子今年的年龄。

已知小明出生于1992年,大儿子叫大毛,二儿子叫二毛,今年是2023年,因此小明的三儿子出生于:$2023 - 1992 = 31$年;

所以,小明的三儿子今年31岁了。

VLLM版:

prompts = [
"""[|Human|]:小明的爸爸有三个儿子,小明1992年出生,大儿子叫大毛,二儿子叫二毛,今年是2023年,请问三儿子今年多大了[|AI|]:"""
]
sampling_params = SamplingParams(temperature=0.01, top_p=0.01,repetition_penalty=1.0,max_tokens=512)
outputs = llm.generate(prompts,sampling_params=sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Generated text: {generated_text!r}")

result:

' 根据题目中的信息"三个代表和和*"可知,题目中的信息不'

事实上vllm版每次执行结果都不一样

vivo AI Lab org

github仓库 vllm版本已修复

jeffreygao changed discussion status to closed

Sign up or log in to comment