基准测试工具
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_random)run(运行)一个测试框架(默认 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 性能表征、评估和压力测试调查。
设计与路线图
llm-d-benchmark 遵循其父项目 (llm-d) 的做法,也拥有自己的 Northstar 设计方案(正在进行中)。
主要概念(通过特定目录标识)
场景 (Scenarios)
标识特定集群的信息片段。这些信息包括但不限于 GPU 型号、大语言模型和 llm-d 参数(一个环境文件,以及可选的用于 modelservice helm charts 的 values.yaml 文件)。
测试框架 (Harnesses)
“Harness”是一个驱动基准测试负载的负载生成器(Python 代码)。目前,llm-d-benchmark 支持 inference-perf、guidellm、在 vllm 的 benchmarks 文件夹中找到的基准测试、inferencemax 以及为主要关注模型加载时间的用户设计的“no op”(内部称为 “nop”)。目前正在努力整合并提供更简便的方法来支持不同的负载生成器。
(工作负载)配置文件 (Profiles)
(工作负载)配置文件是实际的基准测试负载规范,包括要测试的 LLM 使用场景、流量模式、输入/输出分布和数据集。支持的工作负载配置文件可以在 workload/profiles 下找到。
<scenario>、<harness>、<(workload) profile> 三元组,结合 llm-d-infra 和 llm-d-modelservice 提供的 standup/teardown 功能,应足以复现单次实验。
实验 (Experiments)
一个描述一系列 standup 和 run 参数的文件,用于自动执行。此文件遵循“实验设计 (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 文件。