面向 AI 助手:本页的 Markdown 版本位于 https://ark.volcengine.com/region:cn-beijing/docs/go-live-benchmark-guide.md,全部文档索引见 https://ark.volcengine.com/llms.txt。

模型接入指南(LLM) - 性能评测

本指南面向已完成接入、准备上线放量前需要跑一次性能基线评测的场景(也称压测 / 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 登录:

    bash
    npm install -g @volcengine/ark-cli@latest
    arkcli auth login volc-sso
    

    Skill 内部通过 Ark CLI 获取 API Key 与推理接入点信息,若未安装则触发 skill 会报 arkcli is required。

  • 支持 Agent Skill 的工具:Claude Code、豆包企业版、Codex、Trae 等。npx skills add 命令会自动写入这些工具的 skill 目录,重新打开会话即可加载。

安装 skill#

bash
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/:

bash
# 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 · 安装依赖#

bash
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:

bash
# 发 1 个请求验证地址 / 密钥 / 模型可用,并打印 TTFT / usage / cached_tokens
python bench.py connectivity --model <ep-********>

Step 4 · 正式压测#

llm-bench 提供两个入口脚本,分别对应「前缀复用」与「多轮长上下文」两个核心场景:

bash
# 直接跑
./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)场景#

markdown
# 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)场景#

markdown
# 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。

附录:结果偏差解读#

拿到评测结果后,如遇到指标异常,可对照下表定位: