vllm输出有 <|im_end|> 之类的情况

#1
by dafen - opened

from vllm import LLM, SamplingParams
llm = LLM(
model="kiranr/internlm2-chat-20b-llama",
gpu_memory_utilization=.85,
max_model_len=20000 ,
trust_remote_code=True
)
prompt=['小明的爸爸有三个儿子,小明1992年出生,大儿子叫大毛,二儿子叫二毛,今年是2023年,请问三儿子今年多大了?']
sampling_params = SamplingParams(temperature=0.01, top_p=0.01,repetition_penalty=1.0, max_tokens=300)
output = llm.generate(prompt, sampling_params)
print(output[0].outputs[0].text)

输出:
<|im_end|>
这是一个脑筋急转弯问题,实际上并不需要计算。根据题目描述,小明的爸爸有三个儿子,但是小明是1992年出生的,所以小明是第三个儿子,而不是大儿子或二儿子。因此,三儿子就是小明自己,他今年应该是2023年减去1992年,即31岁。所以,三儿子今年31岁。 <|im_end|>
<|im_end|>
2023-1992=31(岁)
<|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31岁。 <|im_end|>
<|im_end|>
三儿子今年31

Owner

In the s SamplingParams, please use stop_token_ids and set it to [92542, 2]

so, in your code it should look like this

sampling_params = SamplingParams(temperature=0.01, top_p=0.01,repetition_penalty=1.0, max_tokens=300, stop_token_ids=[92542, 2])

[92542, 2] are token ids for <|im_end|>, </s> respectively

image.png
don't work

Sign up or log in to comment