当前位置: 首页 > article >正文

【vLLM】【基准测试】:vLLM部署大模型的基准测试

目录

1 咨询vllm官网的AI

2 下载测试数据集

3 下载python测试脚本

4 启动python脚本的命令

5 正式测试

5.1 ASYNC-REQUEST-FUNCS

5.2 NOT FOUND

5.3 Unprocessable Entity

6 测试结果

6.1 Qwen2___5-Coder-32B-Instruct-GPTQ-Int8

6.2 QwQ-32B-Preview

6.3 Qwen2-7B-Chat

7 总结


官方文档:Benchmark Suites — vLLM

github官网项目:https://github.com/vllm-project/vllm

硬件状况:4张4090的24G的卡

1 咨询vllm官网的AI

问:如何完成基准测试

答:如下图所示

2 下载测试数据集

3 下载python测试脚本

如下是脚本的部分内容,全部代码过长无法粘贴(后面我选择了拉取整个vllm项目,这里看看即可)

4 启动python脚本的命令

python benchmark_serving.py
	--backend vllm \
	--tokenizer /root/autodl-tmp/Qwen/Qwen2___5-Coder-32B-Instruct-GPTQ-Int8\ 
	--dataset /root/LLaMA-Factory/ShareGPT_V3_unfiltered_cleaned_split.json\
	--num-prompts 500 \
	--request-rate 
1 \
	--host 127.0.0.1 \
	--port 8080\

脚本解释:(只做解释,后面优化了这个启动命令)

启动 benchmark_serving.py 这个python文件中的代码

backend 模式为 vllm 这里对应如下

是发送请求的模式,可以有很多不同的模式

tokenizer 加载模型中的tokenizer

dataset 指定对应的测试数据集

num-prompts 发送请求数量 发送500次请求

request-rate 发送请求的频率,一秒一次

host 发送请求的ip地址

port 发送请求的端口

5 正式测试

5.1 ASYNC-REQUEST-FUNCS

发现有个包未导入

pip install ASYNC-REQUEST-FUNCS 也失败,也就是说这是一个vllm自己写的包

选择下载完整的vllm项目,问题解决

5.2 NOT FOUND

启动命令增加 --modol 指向模型(后来我发现这只是一个模型名称的参数,并不需要完整的路径) --dataset-name 数据集的格式

启动后,出现NOT FOUND

查看vllm API 后台也是 not found,基准测试的not found 应该是 API返回的

后使用openai 进行了一次请求,仔细对照下发现了不同

基准测试的 请求 base_url:127.0.0.1:8080/v1/completions

openai的 请求 base_url:127.0.0.1:8080/v1/chat/completions

基准测试的请求url是一个老版本的格式,是openai 0.28的格式,非常古老了已经

查看python源码,修改url

5.3 Unprocessable Entity

出现新的错误:Unprocessable Entity

仔细查看启动命令后和查看backend_request-func.py的源码后,应当将 --backend更改为openai-chat,因为咱们的vllm是部署到openai API上的,访问也是openai的格式

修改后的启动命令

python benchmark_serving.py 
	--backend openai-chat 
	--model Qwen2___5-Coder-32B-Instruct-GPTQ-Int8 
	--tokenizer /root/autodl-tmp/Qwen/Qwen2___5-Coder-32B-Instruct-GPTQ-Int8 
	--dataset-path /root/LLaMA-Fac
tory/ShareGPT_V3_unfiltered_cleaned_split.json 
	--dataset-name sharegpt 
	--num-prompts 500 
	--request-rate 1 
	--host 127.0.0.1 
	--po
rt 8080

成功启动

6 测试结果

6.1 Qwen2___5-Coder-32B-Instruct-GPTQ-Int8

测试结果:82 / 500 * 100% = 16.4%

GPU状况如下:

修改为两秒一次

97 / 500 * 100% = 19.4%

修改为 4秒一次

105 / 500 * 100 % = 21%

设置输出之后发现,在流式过程中,在响应了一部分之后,就被其他打断了

6.2 QwQ-32B-Preview

一秒一次 500次请求

50 / 500 * 100% = 10 %

6.3 Qwen2-7B-Chat

修改为 规模比较小的 Qwen2-7B-Chat模型

一秒一次 500次 请求

374 / 500 * 100 % = 74.8%

7 总结

从以上基准测试来看,在使用Qwen2___5-Coder-32B-Instruct-GPTQ-Int8和QwQ-32B-Preview模型进行vllm推理时,模型本身就比较大,外加生成的文本质量高就会带来更多的负担,更改为7B级别的chat模型之后,会有比较高的一个正确率,但是相应的文本质量就会降低,综上vllm启动的OpenAI的APi端口,有不错的稳定性,并不会因为大量的请求出现宕机的情况,但是由于本身算力的限制和迫切生成高质量文本的本能,会导致请求的成功率比较低,换言之,即API的并发性不高。

模型

总Token通量(token/s)

第一个Token延迟(ms)

Qwen2.5-Coder-32B-Instruct-GPTQ-Int8

38.60

163.25

QwQ-32B-Preview

27.91

175.97

Qwen2-7B-Chat

384.36

70.00


http://www.kler.cn/a/562177.html

相关文章:

  • RTSP协议
  • Starlink卫星动力学系统仿真建模第十讲-基于SMC和四元数的卫星姿态控制示例及Python实现
  • Cesium@1.126.0,创建3D瓦片,修改样式
  • 「软件设计模式」责任链模式(Chain of Responsibility)
  • 【Python爬虫(48)】分布式爬虫:解锁多领域数据宝藏的密码
  • Apache SeaTunnel 构建实时数据同步管道(最新版)
  • 【每日前端面试题-01】
  • SurfaceFlinger代码笔记
  • C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南
  • springboot实现多文件上传
  • C++ day4 练习
  • 抖音视频如何下载保存去水印
  • 本地大模型编程实战(23)用智能体(Agent)实现基于SQL数据构建问答系统(2)
  • kubernetes中pod spec设置的limits request会转换为哪些参数进行限制
  • [杂学笔记]OSI七层模型作用、HTTP协议中的各种方法、HTTP的头部字段、TLS握手、指针与引用的使用场景、零拷贝技术
  • 形式化数学编程在AI医疗中的探索路径分析
  • 爬虫运行后如何保存数据?
  • 【redis】数据类型之hyperloglog
  • 利用Java爬虫获取VIP商品详情实战案例指南
  • 如何使用深度学习进行手写数字识别(MNIST)