性能仪表板¶
性能仪表板用于确认新的更改是否能在各种工作负载下提高/降低性能。它通过在每个带有 perf-benchmarks 和 ready 标签的提交以及 PR 合并到 vLLM 时触发基准测试运行来更新。
结果会自动发布到公共的 vLLM 性能仪表板。
手动触发基准测试¶
使用 vllm-ci-test-repo 镜像 和 vLLM 基准测试套件。对于 x86 CPU 环境,请使用带有 "-cpu" 后缀的镜像。对于 AArch64 CPU 环境,请使用带有 "-arm64-cpu" 后缀的镜像。
这是 CPU 的 docker run 命令示例。对于 GPU,请跳过设置 ON_CPU 环境变量。
export VLLM_COMMIT=1da94e673c257373280026f75ceb4effac80e892 # use full commit hash from the main branch
export HF_TOKEN=<valid Hugging Face token>
if [[ "$(uname -m)" == aarch64 || "$(uname -m)" == arm64 ]]; then
IMG_SUFFIX="arm64-cpu"
else
IMG_SUFFIX="cpu"
fi
docker run -it --entrypoint /bin/bash -v /data/huggingface:/root/.cache/huggingface -e HF_TOKEN=$HF_TOKEN -e ON_ARM64_CPU=1 --shm-size=16g --name vllm-cpu-ci public.ecr.aws/q9t5s3a7/vllm-ci-test-repo:${VLLM_COMMIT}-${IMG_SUFFIX}
然后,在 docker 实例内运行以下命令。
运行时,基准测试脚本会在 benchmark/results 文件夹下生成结果,以及 benchmark_results.md 和 benchmark_results.json 文件。
运行时环境变量¶
ON_CPU:在 Intel® Xeon® 和 Arm® Neoverse™ 处理器上将其值设置为 '1'。默认值为 0。SERVING_JSON:用于服务测试的 JSON 文件。默认值为空字符串(使用默认文件)。LATENCY_JSON:用于延迟测试的 JSON 文件。默认值为空字符串(使用默认文件)。THROUGHPUT_JSON:用于吞吐量测试的 JSON 文件。默认值为空字符串(使用默认文件)。REMOTE_HOST:用于基准测试的远程 vLLM 服务的 IP。默认值为空字符串。REMOTE_PORT:用于基准测试的远程 vLLM 服务的端口。默认值为空字符串。
有关更多结果可视化,请查看 可视化结果。
有关性能基准测试及其参数的更多信息,请参阅 基准测试 README 和 性能基准测试描述。
持续基准测试¶
持续基准测试为 vLLM 在不同模型和 GPU 设备上的性能提供自动化监控。这有助于跟踪 vLLM 的性能特征随时间的变化,并识别任何性能回归或改进。
工作原理¶
持续基准测试通过 PyTorch 基础设施仓库中的 GitHub 工作流程 CI 触发,该工作流程每 4 小时自动运行一次。该工作流程执行三种类型的性能测试:
- 服务测试:衡量请求处理和 API 性能
- 吞吐量测试:评估 token 生成速率
- 延迟测试:评估响应时间特性
基准测试配置¶
当前基准测试运行的是在 vllm-benchmarks 目录 中配置的预定义模型集。要为基准测试添加新模型:
- 导航到 benchmarks 配置中的相应 GPU 目录
- 将您的模型规格添加到相应的配置文件中
- 新模型将在下一次计划的基准测试运行中包含