
Qwen 系列模型 Speed Benchmark 效率测试完整指南Transformers 与 vLLM 双引擎实测流程【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5本文以仓库 examples/speed-benchmark/README.md 为骨架系统梳理 Qwen 系列大模型的效率速度/显存评测方法论从环境搭建、EvalScope Speed Benchmark 工具用法、仓库脚本用法到两个基准脚本的源码级实现原理。读者学完后可以独立复现对任意 Qwen 系列模型含 GPTQ、AWQ 等量化版本在 Transformers 与 vLLM 两套推理引擎下的吞吐与显存实测。1. 概述为什么要做效率评估效率评估Speed Benchmark衡量大模型推理的吞吐速度tokens/s与显存占用GB是选型、部署、量化决策的关键依据。仓库中的这份指南针对Qwen2.5 系列模型原始模型与量化模型给出了一套可复现的测试流程包含两种执行方式方法一使用 EvalScope 开发的 Speed Benchmark 工具支持自动从 ModelScope 下载模型、输出测试结果也可指定模型服务 URL 进行压测方法二直接运行仓库自带的两个基准脚本Transformers 版与 vLLM 版。需要说明的是仓库 examples/README.md 明确提示该目录下的示例当前已标记为弃用deprecated未针对 Qwen3 更新因此本文所述流程的官方适用对象是 Qwen2.5 系列其测试方法论、参数口径与脚本结构对 Qwen3 及后续模型依然具有直接的复用价值。当前 Qwen3 系列的最新效率报告可在仓库内文档 docs/source/getting_started/speed_benchmark.md 中查看本文最后也会与其口径做对照。1.1 模型资源被测试的模型均托管在 HuggingFace 与 ModelScope 两大平台上搜索Qwen2.5系列即可找到全部 checkpoint。脚本与工具均支持三种加载来源模型 IDHuggingFace如Qwen/Qwen2.5-0.5B-Instruct模型 IDModelScope工具支持自动从 ModelScope 下载本地路径已经下载到磁盘的模型目录。2. 环境安装2.1 Transformers 推理环境conda create -n qwen_perf_transformers python3.10 conda activate qwen_perf_transformers pip install torch2.3.1 pip install githttps://github.com/AutoGPTQ/AutoGPTQ.gitv0.7.1 pip install githttps://github.com/Dao-AILab/flash-attention.gitv2.5.8 pip install -r requirements-perf-transformers.txt其中 requirements-perf-transformers.txt 的核心依赖如下transformers4.46.0 autoawq0.2.6 modelscope[framework] accelerate optimum1.20.0[!Important] 环境要点来自原文档flash-attention可以使用 GitHub Releases 的预编译 wheel也可以从源码安装后者需要兼容的 CUDA 编译器。实际上你并不需要单独安装 flash-attention——它已被集成进torch作为sdpa的后端实现使用。auto_gptq若要让 GPTQ 量化模型使用高效内核必须从源码安装因为预编译 wheel 依赖的torch版本与此环境不兼容。从源码安装同样需要一个兼容的 CUDA 编译器。autoawq若要让 AWQ 量化模型使用高效内核需要autoawq-kernels组件它应当会自动安装若未自动安装请手动执行pip install autoawq-kernels。2.2 vLLM 推理环境conda create -n qwen_perf_vllm python3.10 conda activate qwen_perf_vllm pip install -r requirements-perf-vllm.txtrequirements-perf-vllm.txt 内容如下vllm0.6.3.post1 torch2.4.0 modelscope[framework] accelerate两份环境共用 Python 3.10 与modelscope[framework]区别在于推理引擎Transformers 环境需要transformers 4.46.0 量化工具链AutoGPTQ/AutoAWQ/optimumvLLM 环境则以vllm 0.6.3.post1torch 2.4.0为核心。3. 执行测试两种方法总览对比维度方法一Speed Benchmark 工具EvalScope方法二仓库脚本安装方式pip install evalscope[perf] -U使用仓库内脚本无需额外安装模型来源自动从 ModelScope 下载或指定服务 URLHuggingFace / ModelScope / 本地路径推理后端--api localTransformers或--api local_vllmvLLM分别运行两个脚本结果输出outputs/{model_name}/{timestamp}/speed_benchmark.jsonoutputs/transformers与outputs/vllm下的 CSV 文件4. 方法一使用 Speed Benchmark 工具测试Speed Benchmark 工具由 EvalScope 开发支持自动从 ModelScope 下载模型并输出测试结果也支持通过指定模型服务的 URL 进行测试。4.1 安装依赖pip install evalscope[perf] -U4.2 HuggingFace Transformers 推理CUDA_VISIBLE_DEVICES0 evalscope perf \ --parallel 1 \ --model Qwen/Qwen2.5-0.5B-Instruct \ --attn-implementation flash_attention_2 \ --log-every-n-query 5 \ --connect-timeout 6000 \ --read-timeout 6000 \ --max-tokens 2048 \ --min-tokens 2048 \ --api local \ --dataset speed_benchmark4.3 vLLM 推理CUDA_VISIBLE_DEVICES0 evalscope perf \ --parallel 1 \ --model Qwen/Qwen2.5-0.5B-Instruct \ --log-every-n-query 1 \ --connect-timeout 60000 \ --read-timeout 60000 \ --max-tokens 2048 \ --min-tokens 2048 \ --api local_vllm \ --dataset speed_benchmark4.4 参数说明参数含义说明--parallel并发请求的 worker 数量需固定为 1保证单请求无并发干扰--model测试模型的文件路径或模型 ID支持自动从 ModelScope 下载例如Qwen/Qwen2.5-0.5B-Instruct--attn-implementationattention 实现方式可选值flash_attention_2、eager、sdpa仅 Transformers 后端使用--log-every-n-query日志打印频率每 n 个请求打印一次日志--connect-timeout连接超时时间单位为秒--read-timeout读取超时时间单位为秒--max-tokens最大输出长度单位为 token--min-tokens最小输出长度单位为 token两个参数同时设为 2048 时模型固定输出 2048 个 token便于量化对比--api推理接口本地推理可选值localTransformers、local_vllmvLLM--dataset测试数据集可选值speed_benchmark、speed_benchmark_long4.5 测试结果测试结果位于outputs/{model_name}/{timestamp}/speed_benchmark.json该文件包含所有请求结果与测试参数可用于后续聚合统计。5. 方法二使用仓库脚本测试仓库提供了两个脚本speed_benchmark_transformers.pyTransformers/pt 推理与 speed_benchmark_vllm.pyvLLM 部署。5.1 HuggingFace Transformers 推理使用 HuggingFace Hub 加载模型python speed_benchmark_transformers.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --gpus 0 --outputs_dir outputs/transformers # 指定 HF_ENDPOINT 镜像如国内网络环境 HF_ENDPOINThttps://hf-mirror.com python speed_benchmark_transformers.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --gpus 0 --outputs_dir outputs/transformers使用 ModelScope Hub 加载模型python speed_benchmark_transformers.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --gpus 0 --use_modelscope --outputs_dir outputs/transformers参数说明参数含义--model_id_or_path模型 ID 或本地路径可选值参考模型资源章节--context_length输入长度token 数可选值为1, 6144, 14336, 30720, 63488, 129024--generate_length生成 token 数量默认 2048--gpus等价于环境变量CUDA_VISIBLE_DEVICES例如0,1,2,3、4,5--use_modelscope设置该值则使用 ModelScope 加载模型否则使用 HuggingFace--outputs_dir输出目录默认outputs/transformers5.2 vLLM 推理使用 HuggingFace Hub 加载模型python speed_benchmark_vllm.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --max_model_len 32768 --gpus 0 --gpu_memory_utilization 0.9 --outputs_dir outputs/vllm # 指定 HF_ENDPOINT 镜像 HF_ENDPOINThttps://hf-mirror.com python speed_benchmark_vllm.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --max_model_len 32768 --gpus 0 --gpu_memory_utilization 0.9 --outputs_dir outputs/vllm使用 ModelScope Hub 加载模型python speed_benchmark_vllm.py --model_id_or_path Qwen/Qwen2.5-0.5B-Instruct --context_length 1 --max_model_len 32768 --gpus 0 --use_modelscope --gpu_memory_utilization 0.9 --outputs_dir outputs/vllm参数说明参数含义--model_id_or_path模型 ID 或本地路径可选值参考模型资源章节--context_length输入长度token 数可选值为1, 6144, 14336, 30720, 63488, 129024--generate_length生成 token 数量默认 2048--max_model_len模型最大长度token 数默认 32768--gpus等价于环境变量CUDA_VISIBLE_DEVICES例如0,1,2,3、4,5--use_modelscope设置该值则使用 ModelScope 加载模型否则使用 HuggingFace--gpu_memory_utilizationGPU 内存利用率取值范围(0, 1]默认 0.9--outputs_dir输出目录默认outputs/vllm--enforce_eager是否强制使用 eager 模式默认 False5.3 测试结果测试结果默认输出在outputs目录下包含transformers与vllm两个子目录分别存放 HuggingFace Transformers 与 vLLM 的测试结果 CSV 文件。6. 源码级原理解读为了让读者能知其所以然下面结合两个基准脚本的实现说明效率指标究竟如何测量、参数如何生效。6.1 Transformers 脚本的实现要点SpeedBenchmarkTransformers 类通过一组类常量固定了测试口径SEED 1024固定随机种子保证可复现BATCH_SIZE 1固定单 batch 测试避免 batch 聚合对延迟的稀释USE_FLASH_ATTN True默认启用flash_attention_2否则回退到eagerDEVICE_MAP auto、TORCH_DTYPE auto模型自动分配到可用 GPU精度按 checkpoint 自动推断DUMMY_INPUT 我用单个中文字符重复构造输入上下文保证 token 长度精确可控。核心计时逻辑位于run()方法设置generation_config.min_length generate_length context_length、max_new_tokens generate_length并用assert pred.shape[1] self.generation_config.min_length强制校验实际输出长度确保生成长度与声明一致用torch.cuda.synchronize()保证 GPU 侧计算完成后再计时得到time_cost吞吐指标按tokens_per_second generate_length / time_cost计算显存指标通过torch.cuda.max_memory_allocated(i)汇总所有 GPU 的峰值分配换算为 GB/1024/1024/1024后记录为max_gpu_memory_cost_gb。结果以 CSV 形式落盘文件名格式为{model}_context_length-{context_length}_{timestamp}.csv本地目录路径取最后一级目录名模型 ID 则把/替换为__字段包含model_id_or_path、batch_size、context_length_per_experiment、generate_length_per_experiment、use_flash_attn、comment、tokens_per_second、max_gpu_memory_cost_gb。main()中--gpus参数通过os.environ[CUDA_VISIBLE_DEVICES] envs直接注入环境变量。6.2 vLLM 脚本的实现要点SpeedBenchmarkVllm 的实现有几个值得注意的设计长上下文的构造策略create_query输入长度小于 96 个 token 时直接重复字符熵长度超过 96 时改用apply_chat_template拼接一段固定的 system 提示词话痨人设与 user 提示词并用#重复占位补齐长度随后用len(self.tokenizer.tokenize(input_str))校验真实 token 数。这保证了长上下文测试时输入是符合对话模板的真实文本而不是无意义的纯重复字符。采样参数SamplingParams为了稳定产出目标长度的输出脚本设置了很强的惩罚参数——temperature1.0、top_p0.8、top_k-1、repetition_penalty0.1、presence_penalty-2.0、frequency_penalty-2.0、max_tokensoutput_len。如果某次生成实际长度短于目标脚本会检测到并自动用limited_sizecontext_length 1重新构造输入重试一次。并行与显存配置tp_size由--gpus的卡数推导len(envs.split(,))gpu_memory_utilization、max_model_len直接透传给LLM()同时设置了环境变量VLLM_WORKER_MULTIPROC_METHODspawn、VLLM_ALLOW_LONG_MAX_MODEL_LEN1允许超长 max_model_len使用 ModelScope 时还会注入VLLM_USE_MODELSCOPETrue。--enforce_eager仅在 vLLM 主版本号 0.3 时生效if int(vllm.__version__.split(.)[1]) 3。统计口径collect_statistics输出平均耗时Average Time (s)与平均吞吐Average Throughput (tokens/s)按output_len / time计算最终以 JSON 日志 CSV 文件双通道输出。6.3 指标口径与官方报告对照仓库内最新报告 docs/source/getting_started/speed_benchmark.mdQwen3 系列采用的口径与本指南一致且更为明确速度公式为Speed (prompt_tokens generation_tokens) / timebatch size 固定为 1使用尽可能少的 GPU测试统一生成 2048 个 token输入长度取1 / 6144 / 14336 / 30720 / 63488 / 129024六档——这正是两个脚本中--context_length可选值的出处量化模型覆盖 BF16、FP8、GPTQ-INT4/INT8、AWQ-INT4 等报告同时给出 SGLang 与 Transformers 两套引擎的速度与显存数据可作为自测结果的横向参照。7. 测试规范与注意事项为保证测试结果可信、可复现原文档给出了两条硬性规范结合上述实现可以进一步说明其动机多次测试取平均值典型值为 3 次单次推理受 GPU 频率、缓存、系统调度等噪声影响较大取 3 次平均值可以有效平滑波动Transformers 脚本内部固定了随机种子SEED1024进一步保证同一环境下结果稳定。测试前确保 GPU 空闲其他任务会抢占显存与算力导致测得的吞吐偏低、显存峰值虚高。可通过nvidia-smi确认目标 GPU 无其他进程后再开跑。此外还有两点来自环境安装环节的实践提醒若以量化模型GPTQ/AWQ为测试对象务必按第 2 节的说明处理auto_gptq源码安装与autoawq-kernels自动或手动安装否则量化内核回退到慢速路径测得的吞吐会明显失真Transformers 的 FP8 推理性能目前并非最优官方报告也注明FP8 模式在 Transformers 中的推理速度尚待优化对比不同量化方案时建议以 SGLang/vLLM 等推理引擎的数据为准。8. 小结本指南完整覆盖了 Qwen 系列模型效率测试的闭环环境安装Transformers/vLLM 双引擎→ 两种测试方法EvalScope 工具 / 仓库脚本→ 参数口径context_length 六档、固定输出 2048、batch1→ 结果解读tokens/s 与显存峰值→ 复现规范3 次取均值、GPU 空闲。无论是复现 Qwen2.5 系列的官方效率数据还是对 Qwen3 及后续模型、以及自研量化版本做横向对比都可以直接套用这套流程。相关脚本与依赖文件均位于仓库 examples/speed-benchmark 目录官方最新效率报告参见 docs/source/getting_started/speed_benchmark.md。【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考