跳转至正文

基准测试工具

llm-d-benchmark

此仓库提供了一个自动化工作流,用于使用 llm-d 技术栈进行 LLM 推理基准测试。它包含了跨多个环境和部署模式的部署、实验执行、数据收集以及资源拆卸(teardown)工具。

主要目标

llm-d 提供单一的自动化来源,以实现可重复、可复现的实验和性能评估。

先决条件

请参考官方的 llm-d 前置条件 了解最新的要求。对于客户端设置,提供的 install-deps.sh 脚本将下载并安装必要的工具。

管理权限要求

由于您将配置集群级资源,部署 llm-d 技术栈需要 集群级管理员(cluster-level admin) 权限。但是,只要 Kubernetes 基础设施组件 已配置且 目标命名空间已存在,脚本可以由 命名空间级管理员(namespace-level admin) 用户执行。

📦 仓库设置

git clone https://github.com/llm-d/llm-d-benchmark.git
cd llm-d-benchmark
./setup/install_deps.sh

快速入门

开箱即用: standup(建立)一个 llm-d 技术栈(默认方法是 llm-d-modelservice,提供 meta-llama/Llama-3.2-1B-Instruct 模型服务),使用负载配置文件(默认 sanity_randomrun(运行)一个测试框架(默认 inference-perf),然后 teardown(拆卸)部署的资源栈。

./e2e.sh
提示

输出结果的倒数第二行(以“ℹ️ The current work dir is”开头)将指明生成的 standup 文件和收集的性能数据的当前路径。

上述示例也可以明确地拆分为三个独立的部分。

./setup/standup.sh
./run.sh
./setup/teardown.sh

用户可以选择先 standup 一次 llm-d 技术栈,然后使用不同的负载配置文件(例如 chatbot_synthetic)多次 run inference-perf 测试框架。

./run.sh --harness inference-perf --workload chatbot_synthetic --methods <a string that matches a inference service or pod>`
提示

./run.sh 可用于针对已经建立的技术栈(llm-d 或其他)运行特定的工作负载。

此处提供了一个说明性示例

提示

./run.sh 也可以在“交互”或“调试”模式下使用(选项 -d--debug)。

此处提供了一个说明性示例

动态

  • KubeCon/NativeCloudCon 2025 北美演讲《在 Kubernetes 上进行分布式 LLM 推理的跨行业基准测试教程》,附带 配套教程

  • 基准测试实验的数据可在 主项目的 Google Drive 上获取。

  • llm-d-benchmark 支持所有已发布的 Well-Lit Path 指南

scenarios/guides/pd-disaggregation.sh
scenarios/guides/inference-scheduling.sh
scenarios/guides/tiered-prefix-cache.sh
scenarios/guides/simulated-accelerators.sh
scenarios/guides/wide-ep-lws.sh
scenarios/guides/precise-prefix-cache-aware.sh
警告

scenarios/guides/wide-ep-lws.sh 仍处于开发中,尚未完全可用。

架构

llm-d-benchmark 使用一组特定的 Standup 参数 建立技术栈(目前支持 llm-d 和“独立”模式),然后使用一组特定的 Run 参数 运行特定的测试框架。结果以所选 测试框架(harness) 的原生格式保存,同时生成一份通用的 基准测试报告

llm-d Logo

目标

可复现性

每次基准测试运行都会收集足够的信息,以便在不同的集群/环境中以最小的设置工作量重新执行。

灵活性

提供多种负载生成器和多种负载配置文件,采用可插拔架构,方便扩展。

定义完善的 指标

定义并测量一组具有代表性的指标,这不仅可以在不同技术栈之间进行有意义的比较,还可以对不同组件进行性能表征。

相关的 工作负载 集合

定义一组体现真实世界用例的工作负载,以便进行 llm-d 性能表征、评估和压力测试调查。

设计与路线图

llm-d-benchmark 遵循其父项目 (llm-d) 的做法,也拥有自己的 Northstar 设计方案(正在进行中)。

主要概念(通过特定目录标识)

场景 (Scenarios)

标识特定集群的信息片段。这些信息包括但不限于 GPU 型号、大语言模型和 llm-d 参数(一个环境文件,以及可选的用于 modelservice helm charts 的 values.yaml 文件)。

测试框架 (Harnesses)

“Harness”是一个驱动基准测试负载的负载生成器(Python 代码)。目前,llm-d-benchmark 支持 inference-perfguidellm、在 vllmbenchmarks 文件夹中找到的基准测试、inferencemax 以及为主要关注模型加载时间的用户设计的“no op”(内部称为 “nop”)。目前正在努力整合并提供更简便的方法来支持不同的负载生成器。

(工作负载)配置文件 (Profiles)

(工作负载)配置文件是实际的基准测试负载规范,包括要测试的 LLM 使用场景、流量模式、输入/输出分布和数据集。支持的工作负载配置文件可以在 workload/profiles 下找到。

信息

<scenario><harness><(workload) profile> 三元组,结合 llm-d-infrallm-d-modelservice 提供的 standup/teardown 功能,应足以复现单次实验。

实验 (Experiments)

一个描述一系列 standuprun 参数的文件,用于自动执行。此文件遵循“实验设计 (DOE)”方法,其中每个参数 (factor) 与目标值 (levels) 一起列出,生成一个组合列表 (treatments)。

配置探索 (Configuration Exploration)

配置资源管理器是一个库,可根据硬件规格、工作负载特性和 SLO 要求,帮助寻找在 llm-d 上服务模型的最具成本效益的最佳配置。提供了一个“容量规划器 (Capacity Planner)”作为初始组件,以帮助确定 vLLM 配置是否可行进行部署。

依赖项

主题

可复现性

可观测性

快速入门

资源要求

常见问题解答 (FAQ)

贡献

  • 关于如何贡献的说明,包括我们开发过程和治理的细节。
  • 我们使用 Slack 讨论跨组织的开发。请加入:Slack。那里有一个 sig-benchmarking 频道。
  • 我们每两周(周二 13:00 EST)为贡献者举办一次站会。请加入:会议详情。会议记录可以在 此处 找到。加入 llm-d google groups 将授予您访问权限。

许可证

本项目采用 Apache License 2.0 许可。详情请参阅 LICENSE 文件

内容来源

此内容自动同步自 llm-d/llm-d-benchmark 仓库 main 分支上的 README.md

📝 如需建议更改,请 编辑源文件创建 issue