vllm [Bug]: 指标没有改善,

8oomwypt  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(42)

当前环境:
VLLM 版本:0.5.0,A100,CUDA 12.1

🐛 描述问题:

  1. 在第一个命令中,使用以下参数运行 API 服务器:
CUDA_VISIBLE_DEVICES=1 python -m vllm.entrypoints.openai.api_server \n--model /home/Qwen1.5-1.8B-Chat \n--gpu-memory-utilization 0.5 \n--enable-prefix-caching
  1. 在第二个命令中,使用以下参数运行 API 服务器:
CUDA_VISIBLE_DEVICES=1 python -m vllm.entrypoints.openai.api_server \n--model /home/Qwen1.5-1.8B-Chat \n--gpu-memory-utilization 0.5 \n--enable-prefix-caching \n--speculative-model "[ngram]" \n--num-speculative-tokens 8 \n--use-v2-block-manager \n--ngram-prompt-lookup-max 8 \n--ngram-prompt-lookup-min 2

版本 1 和版本 2 的指标正在进行比较。我认为版本 2 应该在所有指标上都有改进,但目前情况恰恰相反。为什么会这样,以及应该如何调整参数?

bvhaajcl

bvhaajcl1#

推测解码在很大程度上依赖于批处理大小和输入。如果你没有输入,模型在预测未来标记时没有任何东西可以扩展。同样,在较大的批处理大小下,模型正在为所有请求预测未来标记并拒绝其中一些。由于你已经在使用满GPU资源,模型最好能够一次预测每个将被接受的请求的一个标记。

在我设置的环境中,对于单个用户,方法1的速率为44个标记/秒,方法2在最坏情况下为单个用户的速率为40个标记/秒,在最佳情况下(我要求它在上下文中已经有1-100的情况下计数到100),速率约为150个标记/秒。然而,在高负载下,方法1的速率约为1800个标记/秒,而方法2的速率约为1600个标记/秒。

bgibtngc

bgibtngc2#

**摘要解码严重依赖于批处理大小和输入。如果没有输入,模型在预测未来标记时没有任何扩展的空间,同时还需要额外的开销。同样,在较大的批处理大小下,模型会为所有请求预测未来标记并拒绝其中一些。由于您已经在使用满GPU资源,因此模型最好能够一次预测每个将被接受的请求的一个标记。

在我设置的条件下,对于单个用户,方法1的速率为44 tok/s,方法2在最坏情况下为40 tok/s,而在最佳情况下(我要求它在上下文中已经有1-100的情况下计数到100),速率约为150 tok/s。然而,在高负载下,方法1的速率约为1800 tok/s,而方法2的速率约为1600 tok/s。

我的输入数据格式如下:

{
 "model": "Qwen1.5-1.8B-Chat",
 "messages": [
 {
 "role": "user",
 "system": "You are a helpful assistant, please help me answer the following question."
 },
 {
 "role": "user",
 "content": "What is the weather like today?"
 }
 ],
 "temperature": 0,
 "top_p": 1,
 "n": 1,
 "max_tokens": 512,
 "stream": true
}

我正在进行在线测试,有10个并发请求,但实际上并没有提高。您能分享一下您的参数数据吗?

相关问题