xusenlinzy / api-for-open-llm

Openai style api for open large language models, using LLMs just as chatgpt! Support for LLaMA, LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, Xverse, SqlCoder, CodeLLaMA, ChatGLM, ChatGLM2, ChatGLM3 etc. 开源大模型的统一后端接口
Apache License 2.0
2.16k stars 252 forks source link

使用 vllm 推理,在文本末尾缺失信息 #236

Closed parasol-ry closed 2 months ago

parasol-ry commented 4 months ago

提交前必须检查以下项目 | The following items must be checked before submission

问题类型 | Type of problem

效果问题 | Effectiveness issues

操作系统 | Operating system

Linux

详细描述问题 | Detailed description of the problem

.env 如下所示

PORT=9993

# model related
MODEL_NAME=qwen
MODEL_PATH=/data//Model/outputs
PROMPT_NAME=
EMBEDDING_NAME=

# api related
API_PREFIX=/v1

LOAD_IN_4BIT=true

GPUS=2
NUM_GPUs=1

# vllm related
ENGINE=vllm
TRUST_REMOTE_CODE=true
TOKENIZE_MODE=auto
TENSOR_PARALLEL_SIZE=1
DTYPE=half

Dependencies

# 请在此处粘贴依赖情况
# Please paste the dependencies here

在用 vllm 长文本推理时,生成的内容明显不完整,不用 vllm,或者用官方的 vllm 启动则不会出现此问题

运行日志或截图 | Runtime logs or screenshots

# 请在此处粘贴运行日志
# Please paste the run log here
image image image
parasol-ry commented 4 months ago

而且 我发现一般会少最后 10 个字左右,如果生成的部分文本较短,则会直接显示空,我可以提供微调的模型和部分有问题的数据,希望大佬可以解决一下此问题

xusenlinzy commented 4 months ago

请问你使用的是qwen1.5吗

parasol-ry commented 4 months ago

是之前版本的 qwen,1.8B 微调过的

xusenlinzy commented 4 months ago

image

xusenlinzy commented 4 months ago

之前默认设置了8192,你试试启动的时候把CONTEXT_LEN设置大一些呢

parasol-ry commented 4 months ago

还是这种情况,而且我目前测试的样本输入就 800+个字

dusens commented 2 months ago

我也遇到这种情况了用的是sqlcoder-7b-2 也是截断了

parasol-ry commented 2 months ago

直接用官方的 vllm 推理命令就没事了

wangzan commented 2 months ago

我也遇到了,尾巴截断了,baichuan2-13B基座 image

wangzan commented 2 months ago

我这个问题已经解决,stream输出过程中,最后一个chunk输出为空。最新源码中修改可解决。

diff --git a/api/vllm_routes/chat.py b/api/vllm_routes/chat.py
index a13e782..573c3be 100644
--- a/api/vllm_routes/chat.py
+++ b/api/vllm_routes/chat.py
@@ -278,7 +278,7 @@ async def create_chat_completion_stream(

                 choice = ChunkChoice(
                     index=i,
-                    delta=delta or ChoiceDelta(),
+                    delta=delta or ChoiceDelta(content=delta_text),
                     finish_reason=finish_reason,
                     logprobs=None,
                 )

@xusenlinzy @parasol-ry