01
简介
在当今LLM时代,大模型的效果已经取得了长足的进步,逐渐成为业务流程中的重要部分,因此对性能进行评估变得至关重要,由于目前LLM推理都需要比较高级的GPU,使得LLM推理成本高,因此在不同使用场景下优化推理就很有必要。对于提供公共推理服务,比如openai等来说,提高吞吐率优先级比较高,而在一些专用的业务场景,则对首包延迟和整体请求延迟有着较高要求。
目前业界已经开发了各种各样的LLM推理引擎,如VLLM,LLMDeploy,huggingface(text-generation-inference), DeepSpeed-Inference,以及大量的商业化API,本文介绍LLM性能主要指标,进行性能压测,并通过wandb进行压测结果对比。
02
LLM推理关键指标以及影响
- Throughput
总的吞吐(output tokens/seconds),对于LLM Serving重要,可以提高总的服务能力。
- Time to First Token(TTFT)
在prefill阶段后返回的第一个token的时间,在stream输出模式下,对体验影响大,越小用户等待返回第一个token时间越小,体验越好。
- Time per output token
生成每个token的时间,影响体验
- Latency
处理完整请求用时。
- QPS
每秒处理完成的请求数。
03
性能测试工具
为了支持各种服务API以及开源LLM推理性能,评估是否满足生产需求,我们提供一套简单可扩展的工具,支持LLM各项指标,详细可以参考eval-scope项目中的性能perf工具说明: https://github.com/modelscope/eval-scope/tree/main/llmuses/perf
04
环境信息
测试机器(A100 80G)
测试评测引擎以及版本版本
引擎 | 版本 |
vllm | v0.5.0.post1 |
lmdeploy | 0.4.1 |
tritonserver(tensorrt-llm backend) | tensorrt_llm 0.11.0.dev2024061100 |
测试数据
性能评测请求根据下列数据集构造。
- 正常上下文:
https://huggingface.co/datasets/Hello-SimpleAI/HC3-Chinese/blob/main/open_qa.jsonl
- 长上下文数据集:
https://huggingface.co/datasets/Yukang/LongAlpaca-12k/blob/main/LongAlpaca-12k.json
测试模型
为了使测试更具有代表行,我们测试了不同size的模型(qwen2 7B,qwen2 72B),在不同请求长度以及并发下的性能,所有引擎参数大多使用默认值,未针对性调参,不代表引擎最优性能。
qwen7B单卡推理,qwen72B 4卡推理(tensor parallel 4).
参考: https://github.com/triton-inference-server/tensorrtllm_backend
05
测试结果
Qwen7B
1.open_qa正常上下文
1.1单并发
**结果对比(时间单位均为秒)**
![图片](https://img-blog.csdnimg.cn/img_convert/106026539807a0289083ea867869780d.png)
**Throughput VS TTFT(Time to first token)**
![图片](https://img-blog.csdnimg.cn/img_convert/8a4211cb491c1fc1e579d95a2dda144c.png)
**wandb详细对比图表**
![图片](https://img-blog.csdnimg.cn/img_convert/06d05b8d0ea251b70bfd0536384ed956.png)
在单并发情况下tensorrt-llm TTFT最小,用户体验最好,lmdeploy through最高,服务性能最好。
**多并发(128)**
**结果对比(时间单位均为秒)**
![图片](https://img-blog.csdnimg.cn/img_convert/40bdeb6ee65ab6181723dc77ea7521e2.png)
lmdeploy在短文本,多并发情况下,vllm TTFT最小,用户体验最好,响应最快,但Throughput最低,lmdeploy TTFT最大,Throughput最高。
**Throughput VS TTFT(Time to first token)**
![图片](https://img-blog.csdnimg.cn/img_convert/b6f7ecb5297ad6067be2e53e898e1899.png)
wandb详细对比图表
![图片](https://img-blog.csdnimg.cn/img_convert/c9a79a8e94402b64a8a1347c1c20e81f.png)
**2.LongAlpaca-12K长上下文**
**2.1单并发**
**结果对比(时间单位均为秒)**
![图片](https://img-blog.csdnimg.cn/img_convert/2c1b837b3bbee3321e7e94bb1571a692.png)
**Throughput VS TTFT(Time to first token)**
![图片](https://img-blog.csdnimg.cn/img_convert/a09b0540201e76e5e66789f74bace045.png)
**wandb详细对比图表**
![图片](https://img-blog.csdnimg.cn/img_convert/9d8c75d0555476f7388f9c12013638fd.png)
**2.2多并发(4)**
**结果对比(时间单位均为秒)**
![图片](https://img-blog.csdnimg.cn/img_convert/42caf41709c461b89a92caefbc83870e.png)
**Throughput VS TTFT(Time to first token)**
![图片](https://img-blog.csdnimg.cn/img_convert/f6dbc4f6288a27466403043e348780d6.png)
**wandb详细对比图表**
![图片](https://img-blog.csdnimg.cn/img_convert/6485c95e5eb482dfbf3f11f39a4d156d.png)
## **Qwen72B**
**1.open\_qa正常上下文**
##### **1.1单并发**
``
结果对比
Throughput VS TTFT(Time to first token)
wandb详细对比图表
1.1多并发(128)
结果对比(时间单位均为秒)
Throughput VS TTFT(Time to first token)
wandb详细对比图表
2.LongAlpaca-12K长上下文
2.2单并发
结果对比(时间单位均为秒)
Throughput VS TTFT(Time to first token)
wandb详细对比图表
2.2多并发(4)
结果对比(时间单位均为秒)
Throughput VS TTFT(Time to first token)
wandb详细对比图表
06
总结
从总体结果看,主流引擎在不同场景下各有优势,用户可以根据自己使用场景,选择合适的引擎,如果您服务少数用户,选择TTFT小的,用户体验更佳,如果您要服务大量用户,可以选择throughput大的,提高资源利用率。
但从使用体验上看,vllm,lmdeploy使用方便,直接从model hub下载模型即可,而tensorrt-llm需要转换和编译模型,并且创建合适的引擎环境也有一定的成本,需要tensorrt-llm,triton server以及tensorrt-llm backend,格步骤参数有一定关联性,极易出错,总体使用成本对比会高不少。