vLLM-v0.17.1入门必看:如何用vLLM Benchmark工具做性能基线测试

张开发
2026/4/5 8:21:23 15 分钟阅读

分享文章

vLLM-v0.17.1入门必看:如何用vLLM Benchmark工具做性能基线测试
vLLM-v0.17.1入门必看如何用vLLM Benchmark工具做性能基线测试1. vLLM框架简介vLLM是一个专为大语言模型(LLM)设计的高性能推理和服务库它的核心目标是让开发者能够轻松部署和运行各种规模的LLM。这个项目最初由加州大学伯克利分校的天空计算实验室开发现在已经发展成为一个活跃的开源项目得到了学术界和工业界的广泛支持。vLLM之所以受到开发者青睐主要因为它具备以下突出特点惊人的推理速度采用创新的PagedAttention技术智能管理内存中的注意力键值大幅提升处理效率高效的请求处理支持连续批处理多个用户请求最大化硬件利用率先进的执行优化利用CUDA/HIP图加速模型执行减少计算开销多样的量化支持提供从GPTQ、AWQ到INT4/INT8/FP8等多种量化方案强大的内核优化集成FlashAttention和FlashInfer等先进技术充分发挥硬件性能2. 环境准备与快速部署2.1 系统要求在开始性能测试前请确保你的环境满足以下基本要求操作系统Linux (推荐Ubuntu 20.04/22.04)Python版本3.8或更高GPUNVIDIA GPU (建议至少16GB显存)CUDA11.8或更高版本驱动与CUDA版本匹配的最新NVIDIA驱动2.2 安装vLLM安装过程非常简单只需执行以下命令pip install vllm如果需要使用最新开发版可以从源码安装git clone https://github.com/vllm-project/vllm.git cd vllm pip install -e .2.3 验证安装安装完成后可以通过以下命令验证是否成功python -c import vllm; print(vllm.__version__)如果看到版本号输出(如0.17.1)说明安装成功。3. Benchmark工具使用指南3.1 基准测试工具介绍vLLM自带了一个强大的性能测试工具可以帮助你评估模型在不同配置下的表现。这个工具可以测量以下关键指标吞吐量每秒处理的token数量延迟单个请求的响应时间显存使用GPU显存占用情况计算效率硬件利用率3.2 基本测试命令最简单的基准测试命令如下python -m vllm.entrypoints.api_server --model model_name --tokenizer tokenizer_name例如测试Llama2-7B模型python -m vllm.entrypoints.api_server --model meta-llama/Llama-2-7b-chat-hf --tokenizer meta-llama/Llama-2-7b-chat-hf3.3 高级测试参数为了获得更全面的性能数据可以使用以下常用参数python -m vllm.entrypoints.api_server \ --model meta-llama/Llama-2-7b-chat-hf \ --tokenizer meta-llama/Llama-2-7b-chat-hf \ --tensor-parallel-size 2 \ # 张量并行度 --block-size 16 \ # 注意力块大小 --swap-space 16 \ # GPU-CPU交换空间(GB) --gpu-memory-utilization 0.9 \ # GPU显存利用率 --max-num-batched-tokens 2048 \ # 最大批处理token数 --max-num-seqs 256 # 最大并发序列数4. 性能测试实战4.1 测试不同模型让我们实际测试几个流行模型的性能。首先创建一个测试脚本benchmark.pyfrom vllm import LLM, SamplingParams # 准备测试模型列表 models [ meta-llama/Llama-2-7b-chat-hf, mistralai/Mistral-7B-v0.1, facebook/opt-6.7b ] # 配置采样参数 sampling_params SamplingParams(temperature0.8, top_p0.95) # 测试提示词 prompts [ 解释量子计算的基本原理, 写一封求职信申请AI研究员职位, 用Python实现快速排序算法 ] * 10 # 重复10次模拟并发请求 for model in models: print(f\n 测试模型: {model} ) llm LLM(modelmodel) start_time time.time() outputs llm.generate(prompts, sampling_params) elapsed time.time() - start_time total_tokens sum(len(output.outputs[0].token_ids) for output in outputs) throughput total_tokens / elapsed print(f总耗时: {elapsed:.2f}s) print(f总生成token数: {total_tokens}) print(f吞吐量: {throughput:.2f} tokens/s)4.2 测试结果分析运行上述脚本后你可能会得到类似下面的结果 测试模型: meta-llama/Llama-2-7b-chat-hf 总耗时: 45.32s 总生成token数: 12560 吞吐量: 277.14 tokens/s 测试模型: mistralai/Mistral-7B-v0.1 总耗时: 38.76s 总生成token数: 13245 吞吐量: 341.72 tokens/s 测试模型: facebook/opt-6.7b 总耗时: 51.83s 总生成token数: 11892 吞吐量: 229.44 tokens/s从结果可以看出Mistral-7B在这个测试中表现最好吞吐量达到341.72 tokens/s。4.3 测试不同硬件配置要测试不同硬件配置下的性能可以修改LLM初始化参数# 测试不同张量并行度 for tp_size in [1, 2, 4]: print(f\n 张量并行度: {tp_size} ) llm LLM(modelmeta-llama/Llama-2-7b-chat-hf, tensor_parallel_sizetp_size) # ...其余测试代码相同...5. 性能优化建议根据基准测试结果这里提供一些优化建议5.1 批处理大小调整小批处理适合低延迟场景设置--max-num-batched-tokens为512-1024大批处理适合高吞吐场景设置--max-num-batched-tokens为2048-40965.2 显存优化使用--gpu-memory-utilization控制显存使用率(0.8-0.95)启用--swap-space利用CPU内存扩展GPU显存考虑使用量化模型减少显存占用5.3 并行策略选择单卡保持默认设置多卡根据卡数设置--tensor-parallel-size超大模型结合流水线并行和张量并行6. 总结通过本文的指导你应该已经掌握了使用vLLM Benchmark工具进行性能测试的基本方法。记住性能优化是一个持续的过程建议定期进行基准测试跟踪性能变化尝试不同配置组合找到最优设置关注vLLM的版本更新及时获取性能改进获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章