开源持续智能体推理基准测试——受万亿美元级吉瓦规模 Token 工厂运营者的信赖

随着世界以指数级速度迈向 AGI,软件开发和模型发布日新月异。现有基准测试因其静态性质而迅速过时,参与者往往提交专为基准测试定制的软件镜像,无法反映真实的线上推理性能。

InferenceX™(原名 InferenceMAX)是我们独立、厂商中立、可复现的基准测试平台。它测试固定序列推理服务和 AgentX 长上下文多轮智能体编码工作负载,覆盖 ML 社区实际可用的各类 AI 加速器与服务栈。

我们的开放数据与洞察已被 ML 社区广泛采用,包括万亿美元级 Token 工厂和 AI 实验室的容量规划策略团队,以及多家数十亿美元级 NeoCloud。了解更多详情请阅读我们的文章: InferenceX v1 InferenceX v2

AgentX:基准测试如何工作

AgentX 按照编码智能体实际使用模型的方式衡量推理性能:长程多轮会话、共享前缀、轮次间停顿、并行子智能体以及持续的 KV cache 复用。它是 AIPerf 中的一套场景,基于公开的智能体编码轨迹与固定回放规则,使不同服务栈的结果能够在同一工作负载下进行比较。

这份 FAQ 介绍基准测试的运行机制、保障可比性的配置,以及最容易影响测试结果的部署细节。

AgentX 衡量什么?

传统负载测试通常以固定请求速率发送互不相关的单轮 prompt。AgentX 则维持指定数量的完整会话树。根编码会话可以创建子会话、等待子会话结束,再继续执行。每一轮都会携带累计的消息历史,从而重现真实智能体系统中的长共享前缀与突发式 fan-out。

Prompt 文本是合成的,但工作负载形态来自真实会话记录:输入与输出长度、前缀共享关系、子智能体拓扑以及轮次间时间间隔。这样既不会回放用户的私密内容,又保留了对调度器、路由器和 prefix cache 真正重要的特征。

工作负载来自哪里?

该场景使用 SemiAnalysis 公开的 Weka 格式智能体编码轨迹语料。需要进行可复现比较时,应选择带日期的固定语料,而不是滚动更新的别名。_256k 变体会移除超过 256K token 范围的单个请求,更适合上下文窗口约为 256K 的服务器。

简短名称 semianalysis_cc_traces_weka 指向不含子智能体的旧版语料。若要测试 AgentX 的 fan-out 行为,请使用带日期的语料或 with_subagents 别名。

场景锁定了哪些配置?

传入 --scenario inferencex-agentx-mvp 会选择智能体回放模式,并强制执行决定结果可比性的配置:

  • 开启 streaming,以便测量首 token 延迟(TTFT)和 token 间延迟(ITL)。
  • ignore_eos:true 要求服务器生成指定长度的输出,而不是提前停止。
  • 保留原始轮次间延迟;仅将整个系统的全局空闲时间限制在 10 秒以内。
  • first_turn_prefix cache busting 为每次回放的会话加入唯一首轮标记,避免虚假的跨会话 cache hit,同时保留会话内部的 cache 复用。
  • 有效测试至少运行 900 秒,默认运行 1,800 秒。
  • 正式测量前通过 warmup 预热深层前缀。
  • 每次运行都有随机种子,并记录在产物中。

最简运行命令是什么?

请根据部署替换 URL、模型、语料和 concurrency。AIPerf 会补齐场景默认值,并将结果写入 ./artifacts/。固定 --random-seed 可精确复现采样并复用重建后的数据集 cache;当模型名称无法解析为 Hugging Face tokenizer 时,请额外传入 --tokenizer。

aiperf profile \
  --scenario inferencex-agentx-mvp \
  --url http://localhost:8000 \
  --model YOUR_MODEL \
  --endpoint-type chat \
  --public-dataset semianalysis_cc_traces_weka_062126 \
  --concurrency 256

为什么 AgentX 使用 streaming chat completions?

记录的工作负载由多轮消息数组表示,与 OpenAI 兼容的 chat-completions endpoint 自然匹配。Streaming 可以观测首 token 和 token 间时序;非 streaming 响应无法提供这些核心延迟指标。

--use-server-token-count 只改变指标统计方式。当本地 tokenizer 因版本差异或客户端不可见的 chat template 开销而与服务器不一致时,该 flag 会采用服务器返回的 usage 字段,不会改变 prompt 构造。

Concurrency 表示什么?

Concurrency 表示同时存活的会话树数量,而不是正在进行的 HTTP 请求数。一个会话可能 fan-out 为多个子会话,因此瞬时请求并发数可以高于配置值。

该场景有意不提供请求速率控制。负载由活跃会话数量、记录的思考时间以及 fan-out 模式共同产生,因此 --concurrency 是主要负载调节项。

为什么第一次运行可能很久?

发送流量前,AIPerf 会下载语料,并将其重建为完成 token 化且带有 cache 结构的会话树。结果会存入 memory-mapped 磁盘 cache。只要语料、tokenizer、重建配置、条目数量和随机种子相同,后续测试通常可以在数秒内恢复准备好的数据集。

冷启动时应同时提高两个配置超时。随后依次执行数据集配置、warmup、定时 profiling 和 drain/export。Benchmark duration 仅覆盖 profiling,因此总耗时会更长。

export AIPERF_DATASET_CONFIGURATION_TIMEOUT=1800
export AIPERF_SERVICE_PROFILE_CONFIGURE_TIMEOUT=1800

可以先跑一个短 smoke test 吗?

有效测试不能短于 900 秒。低成本有效检查可以降低 concurrency,但仍需保留 900 秒下限。--num-dataset-entries 能减少重建工作量,但会改变工作负载,不应将这种结果用于正式比较或提交。

如需在几分钟内检查连通性,可配合短 duration 使用 --unsafe-override,并接受 invalid 标记。保留完整语料并固定随机种子,可让后续有效测试复用重建后的数据集 cache。

如何确认负载生成器不是瓶颈?

AIPerf 会将工作分配到多个 worker process,并每两秒上报健康状态。应将高 CPU 警告视为客户端饱和信号;在信任结果前,需要增加客户端 CPU core 或负载生成器主机。

--show-trace-timing 可以区分等待连接池中空闲连接的时间与等待服务器返回首字节的时间。Worker CPU 正常且连接池阻塞很少,才有充分依据认为瓶颈位于服务器端。

为什么运行中途会出现 connection reset?

客户端与服务器的 keep-alive 配置可能不一致。如果 AIPerf 保留空闲连接的时间比服务器更长,客户端可能复用已经关闭的 socket。应将客户端 keep-alive 设置为低于服务器值。该问题通常出现在 profiling 阶段,因为 warmup 连接的空闲时间较短。

export AIPERF_HTTP_KEEPALIVE_TIMEOUT=4

多 replica 应如何路由?

当路由器连接多个 replica 时,必须使用会话感知路由。如果同一会话的各轮落在不同 worker 上,prefix cache 复用会大幅下降,基准测试最终衡量的是路由分散程度,而不是服务栈的 cache 能力。

AIPerf 会为每个会话分配稳定的 correlation ID;子智能体则拥有各自的稳定 ID。这些配置改变请求落点而非请求内容,因此不会被场景锁定。

  • 前缀感知路由根据消息历史匹配已缓存的前缀。SGLang Model Gateway 提供 cache_aware,Dynamo 通过 --router-mode kv 提供 KV-aware routing。
  • Sticky routing 将 AIPerf correlation ID 映射到路由器 session header,可对接 SGLang 的 X-SMG-Routing-Key、Dynamo session header 和通用 X-Session-ID。

应重点查看哪些指标?

AgentX 会报告 TTFT、ITL、端到端延迟、输出吞吐量和错误率,同时提供 prefix cache 行为、上下文溢出、会话与子智能体执行、worker 饱和状态以及场景合规性。

比较测试前必须检查 submission_valid。上下文溢出率过高、测试被取消、使用 unsafe override 或其他场景违规,都可能使一个已经生成完整产物的测试失效。

实用原则

  • 让语料与服务器上下文窗口匹配;约 256K 的服务器优先使用 _256k 语料。
  • 正式比较使用带日期的固定语料和固定随机种子。
  • 保持 cache busting 开启;关闭后,循环使用轨迹会夸大 cache-hit 结果。
  • 保留记录的时序;压缩单条轨迹的延迟会改变 cache TTL 行为和会话重叠程度。
  • 在判断结果受服务器限制前,先监控客户端 CPU 和连接池等待时间。
  • 所有多 replica 部署都应使用会话感知路由。
  • 不要解读合成 prompt 的语义;基准测试保留的是 token 与 cache 结构,而非文本含义。

致谢与延伸阅读

本文改编自 AIPerf AgentX 文档。上游源文件由 NVIDIA 维护,并采用 Apache-2.0 许可证。

AgentX 是使用 AIPerf 实现的 SemiAnalysis InferenceX 基准测试。关于当前 CLI、场景锁定规则、环境变量和产物 schema,请以 AIPerf 的文档与实现为准。

感谢 AIPerf 团队实现并记录这一场景,也感谢 Callan Fox 与 Weka 为底层智能体编码轨迹所做的工作。

可复现性

仪表板上的每一个数据点均来自公开的 GitHub Actions 工作流运行。测试配方、日志、产物以及数据库记录端到端关联,任何人都可以审计、重新运行或 fork 基准测试。

  1. 1
    配方提交至仓库。 每种硬件、框架、模型和精度的组合都是一个提交到公开仓库的 shell 脚本。镜像、命令行和并行度均在源码中固定。
  2. 2
    在真实硬件上运行。 GitHub Actions 将工作流调度到实际的目标加速器(NVIDIA、AMD 等)上,并在运行过程中公开流式输出完整的任务日志。
  3. 3
    上传产物。 请求延迟、token 计数、Chip 功耗遥测数据和评估样本均附加到运行页面。GitHub Actions 保留这些产物 90 天,同时每周发布完整基准测试数据库的快照作为公开的 GitHub Release,以实现更长期的可审计性。
  4. 4
    导入仪表板。 成功的运行将被加载到数据库中并在此展示。每个图表 tooltip 都附带一个直接链接,指向生成该数据点的 GitHub Actions 运行。点击任意数据点即可审计其来源。

常见问题

什么是 InferenceX?

InferenceX(原名 InferenceMAX)持续衡量各类 Chip 和软件栈的智能体推理与固定序列推理性能。AgentX 是其长上下文多轮编码场景。配置发生变化时,基准测试会重新运行。

InferenceX 由谁开发?

InferenceX 由独立半导体与 AI 研究机构 SemiAnalysis 构建,受到 MiniMax、Moonshot Kimi、Alibaba Qwen、Zhipu GLM、OpenAI、Microsoft、Meta、Oracle、vLLM、GPU Mode、PyTorch、CoreWeave、TensorWave、SGLang、WEKA、Stanford、Hugging Face、Lambda、Red Hat、SambaNova、TileRT、Mooncake 的支持与信赖。基准测试代码、数据和仪表板均在 GitHub 上开源。

InferenceX 测试了哪些 Chip?

我们会在新加速器可用时持续添加。

  • NVIDIA: H100, H200, B200, B300, GB200, GB300, RTX6000PRO
  • AMD: MI300X, MI325X, MI355X
测试了哪些 AI 模型?

各模型会在其已有数据所覆盖的固定序列配置(1k/1k、1k/8k、8k/1k tokens)与多个并发级别下进行测试。具备对应数据的模型还包含 AgentX 长上下文多轮智能体编码运行。

  • DeepSeek-R1-0528
  • gpt-oss-120b
  • Llama-3.3-70B-Instruct-FP8
  • Qwen-3.5-397B-A17B
  • Kimi-K2.5
  • Kimi-K2.6
  • Kimi-K2.7-Code
  • Kimi-K3
  • MiniMax-M2.5
  • MiniMax-M2.7
  • MiniMax-M3
  • GLM-5
  • GLM-5.1
  • GLM-5.2
  • DeepSeek-V4-Pro
测试了哪些推理框架和配置?
  • 框架:ATOM, Dynamo SGLang, Dynamo TRTLLM, Dynamo vLLM, llm-d vLLM, Mooncake ATOMesh, MoRI SGLang, SGLang, TileRT, TRTLLM, vLLM, MTP, AIPerf
  • 精度:FP4, FP8, BF16, INT4
  • 运行时:CUDA、ROCm
  • 分离式推理(Disaggregated serving,独立的 prefill/decode Chip 池)
  • 多 token 预测(MTP)
  • 面向 MoE 模型的宽专家并行(Wide Expert Parallelism)
InferenceX 测量哪些指标?
  • 交互性(tok/s/user)
  • 每 Chip token 吞吐量(tok/s/chip)
  • 每 Chip 输入和输出吞吐量
  • 每兆瓦 token 吞吐量(tok/s/MW)
  • P99 首 token 延迟(TTFT)
  • AgentX 场景的端到端延迟、token 间延迟(ITL)、输出吞吐量、prefix cache 行为以及会话与 subagent 执行情况
  • 每百万 token 成本(总计、输入、输出)——涵盖超大规模云、NeoCoud 和裸机租赁定价
  • 每 token 能耗(焦耳,总计、输入、输出)
  • 用户自定义成本和功耗计算
基准测试多久运行一次?

基准测试最初按每日计划运行,但随着硬件/框架/模型组合数量的增长,这种方式已不再可行。现在,当配置发生变化(例如新软件发布、驱动更新或模型添加)时重新运行。仪表板中保留了历史数据。

InferenceX 是开源的吗?

是的。代码、数据和仪表板均为开源。 SemiAnalysisAI/InferenceX

InferenceX 与其他 AI 基准测试有何不同?

InferenceX 在真实硬件上运行固定序列工作负载与 AgentX 长上下文多轮编码场景。测试配方保存在代码仓库中,每项结果均链接至对应的 GitHub Actions 运行。

结果如何实现可复现?

仪表板上的每一个数据点均由公开的 GitHub Actions 工作流运行产生。测试配方(模型、框架、精度、并行度、序列长度、并发数)已提交至仓库,在目标硬件上实际执行,产物(日志、指标、Chip 追踪数据)上传至运行页面。用户可从任何图表的 tooltip 直接点击链接,跳转到生成该数据点的 GitHub Actions 运行。

在哪里可以查看原始基准测试日志?

在图表上点击任意数据点即可打开 tooltip。其中的"GitHub Actions Run"链接将直接跳转到生成该数据点的工作流运行。在那里您可以查看完整的任务日志、框架和驱动版本、命令行参数,以及下载原始产物(包括请求延迟、token 计数和 Chip 功耗遥测数据)。

我可以自己重新运行基准测试吗?

可以。基准测试配方位于代码仓库的 /benchmarks 目录中,以独立的 shell 脚本形式存在。如果您拥有相同的硬件,可以 fork 仓库并直接运行脚本,或触发相同的 GitHub Actions 工作流来复现结果。

历史运行记录是否保留?

是的。GitHub Actions 保留工作流运行日志和产物 90 天。为了更长期的可审计性,我们还会每周发布完整基准测试数据库的快照作为公开的 GitHub Release,任何人都可以下载历史数据集并复现或重新分析仪表板中的任何图表。

我可以使用 InferenceX 的数据进行自己的分析吗?

可以。所有数据均可自由获取。仪表板支持按 Chip、模型、框架和日期范围筛选,您也可以直接从任何图表导出原始 CSV 数据。