本指南面向已完成接入、准备上线放量前需要跑一次性能基线评测的场景(也称压测 / benchmark / 性能测试),在自有环境下对方舟模型推理接入点做一次标准化压测,产出可信、可复现的性能报告。
- 测什么:TTFT(首 token 延迟)、TPOT(每 token 间隔)、E2E(端到端耗时)、缓存命中率。
- 怎么测:优先在同机同网环境,用自有压测工具或方舟提供的 llm-bench 工具,跑「前缀复用」及「多轮长上下文」两类场景。
- 交付什么:把生成的
reports/prefix_<时间戳>/和reports/multiturn_<时间戳>/目录打包,发给您的客户经理或后算服务工程师。
核心指标口径#
大语言模型采用流式逐 token 生成方式,用户实际体验由以下四项核心指标决定:
| 指标 | 定义 | 计算口径 | 主要影响因素 |
|---|---|---|---|
| TTFT(Time to First Token,首字延迟) | 从请求发出到收到首个输出 token 的时间 | TTFT = 首个 token 到达时间 − 请求发送时间(含网络往返) |
与输入长度强相关(评测时需统一约定输入长度);与缓存命中率强相关 |
| E2E 延迟(端到端总耗时) | 从请求发出到收到最后一个输出 token 的总耗时 | E2E = 最后内容 chunk 到达时间 − 请求发送时间 |
与输入 / 输出长度均强相关 |
| TPOT(Time Per Output Token) | 输出阶段 token 生成速率,即相邻两个输出 token 之间的平均间隔 | TPOT = (E2E − TTFT) / (输出 token 数 − 1) |
长输出下趋于稳定 |
| 缓存命中率 | 请求输入中命中缓存的 token 数占总输入 token 数的比例 | cached_tokens / prompt_tokens × 100%(按 token 加权平均) |
直接影响 TTFT;命中率越高,推理成本越低 |
在 Agent、Coding 等对响应实时性敏感的场景中,这 4 项指标是评估模型能否满足业务需求的核心依据。
统计分位建议同时记录 AVG(平均值,反映整体水平)、P50(中位数,典型用户体验)、P99(99 分位,反映长尾抖动)。
测试准备#
请在您自己的环境下,结合线上平均输入长度在「固定前缀 + 变化后缀」场景对方舟模型接入点跑一次评测。同机同网、参数对齐是有效结论的前提。
评测前请确认以下参数已经对齐:
- 模型版本:方舟 Endpoint / Model ID 明确记录。
- reasoning_effort:本次评测的取值保持一致(如统一
none或high)。 - max_completion_tokens / max_output_tokens:一致。
- 输入 / 输出长度:前缀长度、后缀长度、多轮上下文长度对齐。
- 并发数:
max_concurrency一致。 - 思考口径:
reasoning_effort保持一致,避免"这次思考、下次不思考"造成的错位对比。
测试工具选择#
| 您的情况 | 选用工具 |
|---|---|
已有 vLLM benchmark_serve / SGLang bench_serving 等压测工具 |
沿用自有工具,按线上输入 / 输出长度参数配置即可 |
| 没有现成工具 | 用方舟提供的 llm-bench 工具(OpenAI Chat 协议,指标口径对齐 vLLM benchmark_serve) |
llm-bench 有两种使用方式,任选其一:
- 一键 Agent Skill(推荐):使用 Claude Code、豆包企业版等 Agent 工具的用户可一键安装,自然语言即可触发压测。详见 一键 Skill 压测。
- 命令行直接跑:熟悉 shell 的用户可从 Skill 包获取 llm-bench 源码后手动运行。详见 命令行压测步骤。
一键 Skill 压测#
前置条件#
-
Node.js ≥ 18 与 npm(用于运行
npx skills命令)。 -
Ark CLI 已安装并完成 SSO 登录:
npm install -g @volcengine/ark-cli@latest arkcli auth login volc-ssoSkill 内部通过 Ark CLI 获取 API Key 与推理接入点信息,若未安装则触发 skill 会报
arkcli is required。 -
支持 Agent Skill 的工具:Claude Code、豆包企业版、Codex、Trae 等。
npx skills add命令会自动写入这些工具的 skill 目录,重新打开会话即可加载。
安装 skill#
npx --yes skills@latest add "https://arkdocs.tos-cn-beijing.volces.com/skills/" \
--skill ark-model-benchmark \
--yes
触发压测#
安装完成后,用自然语言触发即可,例如:"帮我压测一下方舟上豆包 Seed 2.0 Mini 模型的性能"。Skill 会自动完成 Ark CLI 登录检查、模型解析、连通性 / Prefix / Multi-turn 三种场景压测,并在 reports/ 目录下输出 Markdown 报告与 PNG 图表。
命令行压测步骤#
Step 1 · 获取 llm-bench#
Skill 包内嵌了 llm-bench 源码(含 run_prefix.sh / run_multiturn.sh / 语料 / 报告模板等)。先按 一键 Skill 压测 · 安装 skill 安装 skill,然后从 skill 目录取出 llm_bench/:
# skills CLI 通常会用 symlink 部署,find 必须加 -L 才能跟随
LLM_BENCH_DIR=$(find -L ~/.claude/skills .claude/skills .agents/skills \
-maxdepth 5 -type d -name llm_bench 2>/dev/null | head -1)
echo "$LLM_BENCH_DIR" # 应输出类似 .claude/skills/ark-model-benchmark/llm_bench
cp -r "$LLM_BENCH_DIR" ./llm_bench
cd llm_bench
若您不使用 Skill CLI,也可以联系客户经理或后算服务工程师直接获取 llm-bench zip 包。
Step 2 · 安装依赖#
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export ARK_BASE_URL="https://ark.cn-beijing.volces.com/api/v3"
export ARK_API_KEY="<YOUR_ARK_API_KEY>"
Step 3 · 连通性自检#
将 <ep-********> 替换为方舟推理接入点 ID 或 Model ID:
# 发 1 个请求验证地址 / 密钥 / 模型可用,并打印 TTFT / usage / cached_tokens
python bench.py connectivity --model <ep-********>
Step 4 · 正式压测#
llm-bench 提供两个入口脚本,分别对应「前缀复用」与「多轮长上下文」两个核心场景:
# 直接跑
./run_prefix.sh
./run_multiturn.sh
# 覆盖参数:环境变量前置即可
MAX_CONCURRENCY=20 PREFIX_LEN=12000 SUFFIX_LEN=2000 NUM_REQUESTS=200 \
./run_prefix.sh
# multiturn:想让命中率曲线更平滑可提到 50 个 session
MAX_CONCURRENCY=10 NUM_SESSIONS=50 MAX_TURNS=20 \
./run_multiturn.sh
Step 5 · 交付报告#
跑完自动生成目录 reports/prefix_<时间戳>/ 和 reports/multiturn_<时间戳>/(多次运行互不混杂)。请把这两个目录打包,发给您的客户经理或后算服务工程师。
拿到同口径数据后,若方舟指标与您的预期确有差距,我们会分析差距并进一步优化;若差距源于口径或环境差异,也能第一时间澄清。
报告示例#
llm-bench 生成的报告示例(片段)如下,可作为汇报格式参考。
前缀复用(Prefix)场景#
# LLM Benchmark Report - prefix
- **压测时间**: 2026-08-28 13:37:57
- **模式**: prefix
- **API 地址**: https://ark.cn-beijing.volces.com/api/v3
- **长度口径**: tiktoken(精确切片)
- **max_completion_tokens**: 512
- **reasoning_effort**: none
- **prefix_len**: 12000
- **suffix_len**: 2000
- **num_requests**: 200
- **max_concurrency**: 5
## 结果总览
| 模型 | 成功/失败 | TTFT avg (ms) | TTFT P99 (ms) | TPOT avg (ms) | E2E avg (ms) | 加权缓存命中率 |
|---|---|---|---|---|---|---|
| deepseek-v4-flash-ga-260731 | 200/0 | 2278.7 | 3362.4 | 10.4 | 6421.3 | 77.85% |
多轮长上下文(Multi-turn)场景#
# LLM Benchmark Report - multiturn
- **压测时间**: 2026-08-28 13:42:35
- **模式**: multiturn
- **max_completion_tokens**: 1024
- **initial_len**: 3000
- **question_len**: 256
- **num_conversations**: 10
- **max_turns**: 20
- **max_concurrency**: 5
- **长度形态**: Turn1 输入 3000 tokens,追问各 256 tokens,回答各 ≤1024 tokens,最终轮 ≈ 27320 tokens
- **429 / 网络重试次数**: 0
## 结果总览
| 模型 | 成功/失败 | TTFT avg (ms) | TTFT P99 (ms) | TPOT avg (ms) | E2E avg (ms) | 加权缓存命中率 |
|---|---|---|---|---|---|---|
| deepseek-v4-flash-ga-260731 | 200/0 | 2260.9 | 3435.6 | 10.1 | 11824.6 | 87.87% |
常见无效反馈示例#
以下反馈因缺少量化指标或口径信息,无法定位问题,也无法澄清是否为口径差异。请按上一节报告格式提供数据:
| 无效反馈 | 为什么无效 |
|---|---|
| 跑起来感觉很慢 | 纯主观,无量化指标,分不清慢在首 token 还是整体输出 |
| 首 token 出现的很慢,但不说输入长度 | TTFT 与输入长度、缓存命中率强相关,无法判断是否正常 |
| 提供了对比结论,但两边参数设定不明确 | 口径不对齐的对比没意义,差距可能来自思考等级参数差异,导致 E2E 拉长 |
| 只发一句「性能不达标」 | 无原始报告和数据,无法定位也无法澄清是否口径差异 |
附录:方舟推理服务性能观测#
为便于实时观测性能指标,方舟控制台提供了性能观测入口,可以按不同输入长度查看不同测试指标:https://ark.volcengine.com/region:cn-beijing/model/leaderboard。
附录:结果偏差解读#
拿到评测结果后,如遇到指标异常,可对照下表定位:
cached_tokens异常偏低:多轮请求缓存未命中,参见 常见问题 · 缓存失效。- TTFT 异常偏高:可能是深度思考模型输出偏长,或客户端超时不够,参见 常见问题 · 客户端超时不够导致断连。
- fast 模式延迟不稳定:低延迟模式发生降级,参见 常见问题 · 低延迟模式非 100% 生效。