一、KVM 虚拟机环境

GPU:4张英伟达A6000(48G)

内存:128G

海光Cpu:128核

大模型:DeepSeek-R1-Distill-Qwen-32B

推理框架Vllm:0.10.1

二、测试命令(random

vllm bench serve \
--backend vllm \
--base-url http://127.0.0.1:9400 \
--endpoint /v1/completions \
--dataset-name random \
--model qwen32b \
--tokenizer  /mnt/data/models/DeepSeek-R1-Distill-Qwen-32B \
--seed 12345 \
--random-input-len 2048 \
--random-output-len 2048 \
--num-prompts 16 \
--request-rate 8 \
--metric-percentiles 95,99 \
--trust-remote-code

三、测试结果

和vllm的启动参数关系很大。

 详见《Vllm-0.10.1:通过vllm bench serve测试TTFT、TPOT、ITL、E2EL四个指标》。

四、测试参数说明

 vllm bench serve --help

4.1、基础配置(Backend & Server)

参数

类型

默认值

说明

--backend

str

"vllm"

指定后端服务类型(如 vllm,openai,openai-chat,openai-audio等)

--base-url

str

None

若使用外部 API(如 OpenAI)或自定义 URL,则指定完整的基础地址如 http://host:port。

--host

str

"127.0.0.1"

本地测试推荐用 127.0.0.1 强制 IPv4,避免 localhost 解析为 IPv6。

--port

int

8000

对接的服务端口,默认为 vLLM 的 8000。

--endpoint

str

"/v1/completions"

API 路径,如 /v1/chat/completions 或 /v1/completions)。

4.1.1、openai和vllm的区别

维度

--backend openai

--backend vllm

协议兼容性

模拟 OpenAI API 协议

使用 vLLM 原生 API 格式

请求格式

发送标准 OpenAI JSON 格式

发送 vLLM 内部格式(简化)

tokenizer 使用方式

仅用于预处理 prompt 长度估算

同左

endpoint 含义

必须匹配 OpenAI 路由(如 /v1/completions

可自定义,但需服务端支持

数据集适配

自动将 sharegpt 转为 messages 数组

同左

灵活性

高(兼容所有 OpenAI 客户端)

低(仅用于 vLLM 内部测试)

4.2、通用数据集参数

参数

类型

默认值

说明

--dataset-name

str

"sharegpt"

可选数据集:sharegpt, burstgpt, sonnet, random, hf, custom。决定从哪加载 prompt。

--dataset-path

str

None

数据路径或 HuggingFace 数据集 ID(如 HuggingFaceH4/ultrachat_200k)。

--no-stream

flag

False

是否禁用流式加载(适用于大文件,减少内存占用)。加此参数表示不流式加载。

4.3、各数据集专属参数

4.3.1、ShareGPT (--dataset-name=sharegpt)

 --sharegpt-output-len  int  None  覆盖原始数据集中每个样本的输出长度,统一设置生成 token 数。

详见《Vllm-0.10.1:通过vllm bench serve测试TTFT、TPOT、ITL、E2EL四个指标》。

4.3.2、Sonnet (--dataset-name=sonnet)

 --sonnet-input-len  int  550  输入长度(模拟诗歌输入)。

--sonnet-output-len  int  150  输出长度。

--sonnet-prefix-len  int  200  前缀 token 数(可用于测试 prefix caching 性能)。

4.3.3、Random (--dataset-name=random)

 --random-input-len  int  1024  每个请求输入 token 数。

--random-output-len  int  128  每个请求输出 token 数。

--random-range-ratio  float  0.0  输入/输出长度采样范围:[len*(1-r), len*(1+r)],实现长度波动(如 0.1 表示 ±10%)。

--random-prefix-len  int  0  在随机 context 前固定添加的 prefix token 数量(测试 KV cache 复用)。

4.3.4、HuggingFace (--dataset-name=hf)

 --hf-subset  str  None  HF 数据集的子集(如 default)。 --hf-split  str  None  数据划分(如 train, test)。 --hf-output-len  int  None  覆盖 HF 数据集中输出长度。

4.3.5、Custom (--dataset-name=custom)

 --custom-output-len  int  256  自定义数据下生成长度。 --custom-skip-chat-template  flag  False  不应用 tokenizer 的 chat template(直接传原始文本)。

4.4、模型与 Tokenizer

参数

类型

默认值

说明

--model

str

required

模型名称(如 meta-llama/Llama-3-8b),必填。

--tokenizer

str

None

指定 tokenizer 名或路径(与 model 不同时使用)。

--tokenizer-mode

str

"auto"

tokenizer 模式:<br>auto: 优先 fast tokenizer<br>slow: 强制使用 slow tokenizer<br>mistral: 使用 mistral_common<br>custom: 使用预注册 tokenizer

--served-model-name

str

None

API 中对外暴露的模型名(可与 --model 不同)。

--trust-remote-code

flag

False

允许加载 HF 上的自定义模型代码(如 ChatGLM)。

4.5、生成控制参数(Sampling)

参数

类型

默认值

说明

--temperature

float

None

温度,0.0 为 greedy decoding。

--top-p

float

None

Nucleus sampling,保留累积概率 top-p 的 token。

--top-k

int

None

仅从 top-k 个 token 中采样。

--min-p

float

None

最小概率阈值,低于此值的 token 被过滤。

4.6、请求调度与并发控制

参数

类型

默认值

说明

--request-rate

float

inf

每秒请求数(RPS)。<br>inf:所有请求同时发出(burst 模式)<br>数值:按 Poisson 或 Gamma 分布生成到达时间。

--burstiness

float

1.0

请求到达的“突发性”:<br>=1: Poisson 过程(随机到达)<br><1: 更突发(短时间密集)<br>>1: 更均匀(接近固定间隔)

--max-concurrency

int

None

最大并发请求数。即使请求速率高,也最多允许这么多并发执行。用于模拟限流系统。

--ramp-up-strategy

str

None

请求速率爬升策略:<br>linear: 线性增长<br>exponential: 指数增长<br>需配合 --ramp-up-start-rps 和 --ramp-up-end-rps 使用。

--ramp-up-start-rps

int

None

爬升起始 RPS(如 1)。

--ramp-up-end-rps

int

None

爬升结束 RPS(如 100),在 benchmark 持续时间内达到。

4.7、解码策略与日志

参数

类型

默认值

说明

--use-beam-search

flag

False

使用 beam search 解码(非采样)。通常用于确定性输出。

--logprobs

int

None

返回每个 token 的 logprob 数量。<br>未设置时:<br>• 非 beam search → 返回 dummy logprob<br>• beam search → 返回 1 个 logprob

--ignore-eos

flag

False

忽略 EOS token,强制生成到 max_tokens。⚠️ 不支持 TGI 和 DeepSpeed-MII。

4.8、评估与结果记录

参数

类型

默认值

说明

--num-prompts

int

1000

总共处理多少个 prompt(影响 benchmark 时长)。

--disable-tqdm

flag

False

禁用进度条显示。

--profile

flag

False

启用 PyTorch Profiler,需服务端设置 VLLM_TORCH_PROFILER_DIR。

--save-result

flag

False

将 benchmark 结果保存为 JSON 文件。

--save-detailed

flag

False

保存详细结果(每个请求的响应、延迟、错误等)。

--append-result

flag

False

若结果文件已存在,追加而非覆盖。

--metadata

KEY=VALUE

None

添加元数据(如 version=0.3.3 tp=1),记录实验配置。

--result-dir

str

.

结果文件保存目录。

--result-filename

str

自动生成

自定义文件名,否则格式为:{backend}-{rps}qps-{model}-{time}.json

--percentile-metrics

str

"ttft,tpot,itl"

计算百分位的指标:

ttft: Time to First Token

tpot: Time per Output Token

itl: Inter-token Latency

e2el: End-to-end Latency

--metric-percentiles

str

"99"

百分位值(如 "25,50,75" 表示 25%/50%/75%)。

--goodput

KEY:VALUE

None

定义“有效吞吐量”(Goodput)的 SLO:<br>例如 --goodput ttft:1000 tpot:100 表示 TTFT ≤1s 且 TPOT ≤100ms 的请求才算成功。<br>参考:DistServe 论文

4.9、请求标识

参数

类型

默认值

说明

--request-id-prefix

str

"benchmark-serving"

所有请求 ID 的前缀,便于追踪日志。

4.10、高级功能:LoRA 支持

参数

类型

默认值

说明

--lora-modules

list(str)

None

指定可用的 LoRA 模块名(如 lora1 lora2)。每个请求会随机选择一个 LoRA 加载,用于测试多适配器切换性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95877.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95877.shtml
英文地址,请注明出处:http://en.pswp.cn/web/95877.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B.50.10.11-Spring框架核心与电商应用

Spring框架核心原理与电商应用实战 核心理念: 本文是Spring框架深度指南。我们将从Spring的两大基石——IoC和AOP的底层原理出发&#xff0c;详细拆解一个Bean从定义到销毁的完整生命周期&#xff0c;并深入探讨Spring事务管理的实现机制。随后&#xff0c;我们将聚焦于Spring …

雅菲奥朗SRE知识墙分享(六):『混沌工程的定义与实践』

混沌工程不再追求“永不宕机”的童话&#xff0c;而是主动在系统中注入可控的“混乱”&#xff0c;通过实验验证系统在真实故障场景下的弹性与自我修复能力。混沌工程不是简单的“搞破坏”&#xff0c;也不是运维团队的专属游戏。它是一种以实验为导向、以度量为核心、以文化为…

从0死磕全栈第五天:React 使用zustand实现To-Do List项目

代码世界是现实的镜像,状态管理教会我们:真正的控制不在于凝固不变,而在于优雅地引导变化。 这是「从0死磕全栈」系列的第5篇文章,前面我们已经完成了环境搭建、路由配置和基础功能开发。今天,我们将引入一个轻量级但强大的状态管理工具 —— Zustand,来实现一个完整的 T…

力扣29. 两数相除题解

原题链接29. 两数相除 - 力扣&#xff08;LeetCode&#xff09; 主要不能用乘除取余&#xff0c;于是用位运算代替&#xff1a; Java题解 class Solution {public int divide(int dividend, int divisor) {//全都转为负数计算, 避免溢出, flag记录结果的符号int flag 1;if(…

【工具类】Nuclei YAML POC 编写以及批量检测

Nuclei YAML POC 编写以及批量检测法律与道德使用声明前言Nuclei 下载地址下载对应版本的文件关于检查cpu架构关于hkws的未授权访问参考资料关于 Neclei Yaml 脚本编写BP Nuclei Template 插件下载并安装利用插件编写 POC YAML 文件1、找到有漏洞的页面抓包发送给插件2、同时将…

自动化运维之ansible

一、认识自动化运维假如管理很多台服务器&#xff0c;主要关注以下几个方面“1.管理机与被管理机的连接&#xff08;管理机如何将管理指令发送给被管理机&#xff09;2.服务器信息收集&#xff08;如果被管理的服务器有centos7.5外还有其它linux发行版&#xff0c;如suse,ubunt…

【温室气体数据集】亚洲地区长期空气污染物和温室气体排放数据 REAS

目录 REAS 数据集概述 REAS 数据版本及特点 数据内容(以 REASv3.2.1 为例) 数据形式 数据下载 参考 REAS 数据集(Regional Emission inventory in ASia,亚洲区域排放清单)是由日本国立环境研究所(NIES)及相关研究人员开发的一个覆盖亚洲地区长期空气污染物和温室气体排放…

中州养老项目:利用Redis解决权限接口响应慢的问题

目录 在Java中使用Redis缓存 项目中集成SpringCache 在Java中使用Redis缓存 Redis作为缓存,想要在Java中操作Redis,需要 Java中的客户端操纵Redis就像JDBC操作数据库一样,实际底层封装了对Redis的基础操作 如何在Java中使用Redis呢?先导入Redis的依赖,这个依赖导入后相当于把…

MathJax - LaTeX:WordPress 公式精准呈现方案

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录前言安装 MathJax-LaTeX 插件修改插件文件效果总结互动致谢参考前言 在当今知识传播与…

详细解读Docker

1.概述Docker是一种优秀的开源的容器化平台。用于部署、运行应用程序&#xff0c;它通过将应用及其依赖打包成轻量级、可移植的容器&#xff0c;实现高效一致的运行效果&#xff0c;简单来说&#xff0c;Docker就是一种轻量级的虚拟技术。2.核心概念2.1.容器&#xff08;Contai…

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文记录了使用自己的年度时序数据集,进行 LandTrendr 变化检测的代码。结果输出变化年份、变化幅度以及变化持续时间。 结果如下图所示, 文章目录 一、核心函数 二、代码 三、代码链接 一、核心函数 var eeltgcm = require(users/949384116/lib:LandTrendr/getChangeMap)v…

PostgreSQL收集pg_stat_activity记录的shell工具pg_collect_pgsa

这是一个纯脚本工具&#xff0c;用于从PostgreSQL的pg_stat_activity视图中定期收集数据并保存到本地日志文件。 相关背景&#xff1a; 某个慢SQL打满内存&#xff0c;导致系统kill掉postgres的某个进程&#xff0c;进而导致postgres进程重启&#xff0c;没有现场排查不了具体…

通俗的话语解读《银行保险机构信息科技外包风险监管办法》

这份文件不是 “纸上规矩”&#xff0c;而是银行保险机构做信息科技外包的 “实操手册”—— 从要不要外包、选谁合作&#xff0c;到怎么管过程、防风险&#xff0c;再到出问题怎么应对&#xff0c;都给了明确方向。作为管理者&#xff0c;核心是把这些要求落地到日常决策和系统…

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

目录 一、基本概念 二、静态PAT 三、动态PAT 四、参考链接: 一、基本概念 零件平均测试(Part Average Testing,PAT)是一种基于统计学的质量控制方法,主要用于半导体制造中筛选出与正常参数范围偏差较大的“异常值”芯片,以提高产品质量和可靠性; 二、静态PAT 静态…

【数据结构、java学习】数组(Array)

1&#xff0c;概念 数组一旦定义&#xff0c;其维数和维界就不再改变。 因此除了结构的初始化和销毁之外&#xff0c;数组只有存取元素和修改元素值的操作。Array可以存放对象类型、基本数据类型的数据。数组中元素在内存中按顺序线性存放&#xff0c;通过第一个元素就能访问随…

58-正则表达式

1. 概念正则表达式是一种用来匹配字符串的强有力的武器.设计思想&#xff1a;用一种描述性的语言来给字符串定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;就认为它"匹配"【合法】否则就是不匹配[不合法]举例&#xff1a;beijinglishao163.com2. 规则 1.…

图片木马制作的三种方法

本文转自&#xff1a;https://www.cnblogs.com/cybersecuritystools/p/14932567.html 0x01什么是图片木马&#xff1f; 图片木马在网络上没有统一的定义&#xff0c;在这里我给出自己的定义。图片木马是一张能正常显示又包含恶意代码&#xff08;比如一句话木马&#xff09;的…

【Redis】缓存的穿透、击穿和雪崩

引言要了解缓存的这几个相关问题&#xff0c;我们先以一个例子来引入&#xff1a;有一个get请求&#xff1a;api/news/getById/1正常情况下对其申请访问的流程如图&#xff1a;但若是如此&#xff0c;访问增多或者受到攻击时很容易受到以下问题1 缓存穿透1.1 造成原因当查询一个…

打造一款高稳定、低延迟、跨平台RTSP播放器的技术实践

一、引言 RTSP&#xff08;Real Time Streaming Protocol&#xff09;作为经典的实时流媒体协议&#xff0c;已经深深嵌入到安防监控、远程教育、工业巡检、低空经济、医疗影像传输等行业之中&#xff0c;可以说是这些场景的视频传输“基础设施”。一个稳定的 RTSP 播放器&…

C++_数据结构

数据结构是计算机存储、组织数据的方式&#xff0c;它使得数据能够被高效地访问和修改。根据数据元素之间关系的不同特性&#xff0c;数据结构可以分为多种类型。主要可以分为两大类&#xff1a;逻辑结构和物理结构&#xff08;也称存储结构&#xff09;。 一、逻辑结构&#x…