零一万物Yi大模型vllm推理时Yi-34B或Yi-6bchat重复输出的解决方案

时间:2024-11-17 09:04:37

在使用yi-34B进行问答的时候,出现了模型重复输出内容的情况,如下图所示。

上图系群友【悟】提供。

几天之后,又有群友反馈出现了这个情况。

破案了同志们,用vllm直接推理yi模型确实会重复刷屏,但是用官方给的web_demo推理是没问题的。

使用vllm推理yi模型的时候,发送消息中需要加入"stop_token_ids": [7],就可以解决重复刷屏的问题。
例如:

import asyncio
from vllm import AsyncEngineArgs, AsyncLLMEngine, SamplingParams

engine = AsyncLLMEngine.from_engine_args(AsyncEngineArgs("01-ai/Yi-6B-Chat"))
param = SamplingParams(max_tokens=50, stop_token_ids=[7])
generator = ("<|im_start|>user\nhi<|im_end|>\n<|im_start|>assistant\n", param, "req_test")

async def test():
    answer = None
    async for result in generator:
        print(, "-", [0].text)
        answer = [0].text
    print("Answer:", answer)

asyncio.get_event_loop().run_until_complete(test())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这个代码块中,param参数写入了该配置,就可以正常输出了。在实际的使用中,你需要根据你自己的代码合理调整。
代码引用自群友【Yw zheng】。
一个可能会有用的链接:
/LLamaSharp/0.5/Tricks/