llmperf 大模型性能测试工具怎么用:输出参数解读与 TaoToken 统一 Key 接入实测 1. llmperf 压测大模型到底在测什么输出参数解读与本地服务评测场景llmperf 是 Ray 团队开源的大模型性能测试工具它能对本地或云端部署的 OpenAI 兼容接口发起批量请求然后输出一整套延迟、吞吐、Token 分布统计。适合谁用如果你在本地用 vLLM、TGI、SGLang 部署了模型想知道这套服务在并发下的真实表现llmperf 就是那个能给你量化答案的工具。它不像一些商业评测平台那样只给一个总分而是把 TTFT、inter-token latency、端到端延迟、单请求吞吐、系统总吞吐、错误率全部拆开给你看。我第一次跑完 llmperf 看到满屏的 p25、p50、p95、mean、stddev 时确实有点懵后来把输出分成三类就清楚了延迟类指标回答“快不快”吞吐类指标回答“能扛多少”Token 分布类指标回答“测试样本是否符合预期”。这三类指标组合起来才能判断一个模型服务是“首 token 慢但吐字快”还是“首 token 快但整体吞吐上不去”。这篇文章会从安装开始给出可复制的 conda 环境配置、llmperf 安装命令、tokenizer 路径修改方法然后接入 TaoToken 统一 Key 通道做一轮实测最后逐项解读输出参数并附上并发数从 10 降到 1 的对照实验。你跟着操作就能复现一套完整的评测流程。需要先明确一个概念llmperf 本身不推理模型它只是一个“发请求的客户端”。它通过 Ray 调度并发请求把每条请求的耗时、Token 数记录下来最后聚合成统计量。所以被测服务的 Base URL 指向哪里llmperf 就测哪里。你可以指向本地 vLLM 的http://192.168.1.1:8000/v1也可以指向 TaoToken 的统一 API 通道https://taotoken.net/api评测逻辑完全一样。2. TaoToken 统一 Key 接入前置准备Base URL、API Key 与模型 ID 三件套在跑 llmperf 之前需要先把“被测服务”的接入信息准备好。如果你测的是本地模型Base URL 就是本地服务地址API Key 填EMPTY即可。但如果你想评测云端模型或者想用同一个 Key 切换不同模型做横向对比TaoToken 的统一通道会更方便——一个 Key 走 OpenAI 兼容协议Base URL 固定为https://taotoken.net/api模型 ID 按需填写。这里要写全三件套缺一不可配置项本地 vLLM 示例TaoToken 统一通道示例Base URLhttp://192.168.1.1:8000/v1https://taotoken.net/apiAPI KeyEMPTY在控制台创建的 KeyModel IDqwen2.5-vl-32b-instruct-awq按文档填写的模型名API Key 的获取路径是访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进入控制台后创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole 。创建好的 Key 形如sk-xxxx复制后用于环境变量。模型 ID 需要和接入文档里的名称一致文档地址是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc 。如果你不确定某个模型的确切 ID可以先在模型对话页面测试一下地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodels 。注意llmperf 通过环境变量OPENAI_API_BASE和OPENAI_API_KEY读取接入信息所以无论你测本地还是云端都只需要改这两个变量。模型 ID 通过命令行--model参数传入。这一步的核心是把 Base URL、Key、Model ID 三件套准备好后面 llmperf 的命令行里只改--model就能切换被测对象。如果你要长期做多模型评测建议把不同模型的配置写成 shell 脚本避免每次手敲。3. llmperf 安装与可复制配置conda 环境、tokenizer 路径与运行命令安装 llmperf 最容易踩的坑是 Python 版本和 tokenizer 路径。我实测下来Python 3.10 最稳3.11 会在装依赖时报版本冲突。下面这套命令可以直接复制。先创建 conda 环境conda create --name llmperf-env python3.10 -y conda activate llmperf-env然后在环境里装 torch 和 transformers。注意这里用 torch 而不是 TensorFlow因为 llmperf 依赖的 huggingface tokenizer 体系跟 torch 配合更好pip install torch2.3.0 transformers4.40.1 -i https://mirrors.aliyun.com/pypi/simple装完验证一下版本python -c import torch; print(torch.__version__) python -c import transformers as tf; print(tf.__version__)接下来克隆 llmperf 并安装git lfs install git clone https://github.com/ray-project/llmperf.git cd llmperf pip install -e . -i https://mirrors.aliyun.com/pypi/simplellmperf 需要一个 tokenizer 来计算输入输出的 token 数。它默认会去 huggingface 下载 llama-tokenizer如果网络不通就会卡住。解决办法是手动下载 tokenizer 文件放到 llmperf 目录下。下载地址是https://huggingface.co/hf-internal-testing/llama-tokenizer/tree/main把里面的tokenizer.json、tokenizer.model、tokenizer_config.json、special_tokens_map.json都下载下来放到/home/你的用户名/llmperf/llama-tokenizer/目录。然后修改token_benchmark_ray.py文件找到LlamaTokenizerFast.from_pretrained那一行把参数改成你的绝对路径tokenizer LlamaTokenizerFast.from_pretrained(/home/你的用户名/llmperf/llama-tokenizer)这样安装部分就完成了。整个流程的关键点是Python 3.10、torch 2.3.0、transformers 4.40.1、tokenizer 本地路径。这四个点对了后面跑测试基本不会出环境问题。4. 验证请求与成功结果一轮可复现的 llmperf 实测与输出对照环境装好后先设置环境变量。如果你测本地模型export OPENAI_API_BASEhttp://192.168.1.1:8000/v1 export OPENAI_API_KEYEMPTY如果你走 TaoToken 统一通道export OPENAI_API_BASEhttps://taotoken.net/api export OPENAI_API_KEYsk-你的Key然后运行 llmperf 的 token benchmark。下面这条命令是我实测用的参数含义在后面解读python token_benchmark_ray.py \ --model qwen2.5-vl-32b-instruct-awq \ --mean-input-tokens 550 \ --stddev-input-tokens 150 \ --mean-output-tokens 150 \ --stddev-output-tokens 10 \ --max-num-completed-requests 100 \ --timeout 600 \ --num-concurrent-requests 10 \ --results-dir vllm_perf_results \ --llm-api openai \ --additional-sampling-params {temperature:0.7,top_p:0.95}跑完后你会看到类似这样的输出节选关键行inter_token_latency_s p50 0.03874993362618924 p95 0.04362051771892055 mean 0.038581150767342025 ttft_s p50 0.25239499600138515 p95 1.1285695109465428 mean 0.406071519060788 end_to_end_latency_s p50 5.731171156505297 mean 5.6924612127803265 request_output_throughput_token_per_s mean 31.147770608416266 Overall Output Throughput: 276.650770445234 Number Of Errored Requests: 0 Number Of Completed Requests: 100 Completed Requests Per Minute: 94.07223704570156这组结果说明100 个请求全部成功没有错误单请求平均端到端延迟约 5.69 秒首 token 平均 0.41 秒但 p95 到了 1.13 秒说明尾部有慢请求单请求输出吞吐平均 31.15 token/s系统总吞吐 276.65 token/s每分钟完成约 94 个请求。这里有个容易困惑的点为什么 Overall Output Throughput276.65比 request_output_throughput 的均值31.15大了近 10 倍答案在并发数上。--num-concurrent-requests 10表示同时有 10 个请求在跑系统总吞吐是 10 个请求叠加的结果所以接近单请求吞吐的 10 倍。把并发改成 1 再跑一次两个值就基本相等了。我把并发改成 1 后的结果request_output_throughput_token_per_s mean 49.26956190112304 Overall Output Throughput: 49.096301903695064 Completed Requests Per Minute: 16.75832355342874可以看到单请求吞吐均值 49.27系统总吞吐 49.10两者基本一致。同时 Completed Requests Per Minute 从 94 降到 16.76说明并发降低后单位时间完成的请求数明显减少。这组对照实验能帮你理解并发数对吞吐指标的影响。5. 本篇常见错排查401、local proxy failed、reading choices 与 OAuth 报错跑 llmperf 时最常见的报错有几类下面按真实报错信息对照排查。401 Unauthorized这个最直接Key 不对或没设置。检查OPENAI_API_KEY是否 export 成功可以用echo $OPENAI_API_KEY确认。如果走 TaoToken 通道确认 Key 是在控制台创建的、没有多余空格。本地模型如果没设鉴权填EMPTY即可但有些 vLLM 启动时加了--api-key那就必须填对应的值。local proxy failed / Connection refused通常是 Base URL 写错或服务没起来。先curl一下你的 Base URL比如curl http://192.168.1.1:8000/v1/models看能不能返回模型列表。如果 curl 不通llmperf 肯定也不通。走 TaoToken 通道时Base URL 是https://taotoken.net/api注意不要多加/v1后缀具体以接入文档为准。reading choices 报错 / KeyError: choices这个说明返回的 JSON 结构里没有choices字段通常是接口返回了错误信息但 HTTP 状态码是 200。常见原因是模型 ID 写错服务端返回了错误对象。检查--model参数是否和接入文档里的模型 ID 完全一致。另外--llm-api openai要确认如果被测服务不是 OpenAI 兼容协议这个参数要调整。OAuth / token 过期类报错如果你用的是需要 OAuth 的通道Key 过期后会返回鉴权失败。解决办法是重新在控制台创建 Key。TaoToken 的 Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keys 创建后替换环境变量即可。tokenizer 路径报错 / Cant load tokenizer检查token_benchmark_ray.py里的路径是否是绝对路径以及llama-tokenizer目录下文件是否齐全。缺tokenizer.json或tokenizer.model都会导致加载失败。Ray 启动失败 / worker.py 报错通常是端口冲突或内存不足。可以设置--num-concurrent-requests小一点或者检查系统资源。Ray 默认会占用一些端口如果机器上有其他 Ray 实例在跑先停掉。排查顺序建议先 curl 通 Base URL再确认 Key再确认模型 ID最后看 tokenizer 路径。这四步过了基本不会有大问题。6. 从 llmperf 到长期评测用 TaoToken 统一 Key 做多模型横向对比llmperf 跑通之后真正的价值在于做多模型横向对比。如果你每次换模型都要改 Base URL、换 Key、重新配环境效率很低。用 TaoToken 统一 Key 的好处是Base URL 固定为https://taotoken.net/apiKey 固定只需要改--model参数就能切换被测模型。这样你可以写一个循环脚本把多个模型 ID 依次跑一遍结果输出到不同目录最后对比。比如for model in model-a model-b model-c; do python token_benchmark_ray.py \ --model $model \ --mean-input-tokens 550 \ --stddev-input-tokens 150 \ --mean-output-tokens 150 \ --stddev-output-tokens 10 \ --max-num-completed-requests 100 \ --timeout 600 \ --num-concurrent-requests 10 \ --results-dir results_$model \ --llm-api openai \ --additional-sampling-params {temperature:0.7,top_p:0.95} done跑完后每个模型一个结果目录对比Overall Output Throughput、ttft_s的 p95、Number Of Errored Requests就能看出哪个模型在你的场景下更合适。如果你要做长期编码或 Agent 类评测Coding Plan 页面有更详细的接入说明https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-plan 。实测下来llmperf 的输出参数里最该关注的是三个TTFT 的 p95影响交互体验、Overall Output Throughput影响系统容量、Number Of Errored Requests影响稳定性。p50 看中位数p95/p99 看尾部stddev 看波动。把这几个指标和你的业务场景对齐评测才有意义。最后给一个实用技巧跑正式评测前先用--max-num-completed-requests 10做一轮小样本预热确认接口通、tokenizer 正常、结果目录能写入再放大到 100 或更多。这样能避免跑了几分钟才发现配置错误。