Skip to main content

A GenAI inference performance benchmarking tool.

Project description

License GitHub Release PyPI Release Container Image Tests Join Slack

Inference Perf

Inference Perf is a production-scale GenAI inference performance benchmarking tool that allows you to benchmark and analyze the performance of inference deployments. It is agnostic of model servers and can be used to measure performance and compare different systems apples-to-apples.

It was founded as a part of the inference benchmarking and metrics standardization effort in wg-serving to standardize the benchmark tooling and the metrics used to measure inference performance across the Kubernetes and model server communities.


🏗️ Architecture

Architecture Diagram


🌟 Key Capabilities

📊 Rich Metrics & Analysis

  • Comprehensive Latency Metrics: TTFT, TPOT, ITL, and Normalized TPOT.
  • Throughput Tracking: Input, Output, and Total tokens per second.
  • Goodput Measurement: Measure rate of requests meeting your SLO constraints. See goodput.md.
  • Automatic Visualization: Generate charts for QPS vs Latency/Throughput/Goodput. See analysis.md.

🧠 Smart Data Generation

  • Real-world Datasets: Support for ShareGPT, CNN DailyMail, Infinity Instruct, Billsum, and the VisionArena image dataset.
  • Synthetic & Random: Configure exact input/output distributions.
  • Advanced Scenarios: Shared prefix and multi-turn chat conversations.
  • Multimodal: Synthetic image, video, and audio payloads with per-modality reporting. Resolutions/profiles/durations are passed through as-is; pick values within your model's accepted range. See docs/config.md.

⏱️ Flexible Load Generation

  • Load Patterns: Constant rate, Poisson arrival, and concurrent user simulation.
  • Multi-Stage Runs: Define stages with varying rates and durations to find saturation points.
  • Trace Replay: Replay real-world traces (e.g., Azure dataset) or OpenTelemetry traces with agentic tree-of-thought simulation and visualization.

🚀 High Scalability

  • 10k+ QPS: Scalable to very high load due to optimized multi-process architecture.
  • Automatic Saturation Detection: Find the limits of your system via sweeps.

🔌 Engine Agnostic

  • Verified support for vLLM, SGLang, and TGI with server side aggregate metrics and time series metrics.
  • Easily extensible to any OpenAI-compatible endpoint.

🚀 Quick Start

Run Locally

  1. Install inference-perf:

    pip install inference-perf
    
  2. Run a benchmark with a simple random workload:

    inference-perf --server.type vllm --server.base_url http://localhost:8000 --data.type random --load.type constant --load.stages '[{"rate": 10, "duration": 60}]' --api.streaming true
    

Alternatively, you can run using a configuration file:

inference-perf --config_file config.yml

Sample Output

When you run inference-perf, it displays a rich summary table in the CLI:

Metrics Summary

Run in Docker

docker run -it --rm -v $(pwd)/config.yml:/workspace/config.yml quay.io/inference-perf/inference-perf

Run in Kubernetes

Refer to the guide in /deploy.


📚 Documentation Hub

Explore detailed documentation for specific topics:

Topic Description Link
Configuration Full YAML configuration schema and options. config.md
CLI Flags Overriding configuration via command line flags. cli_flags.md
Load Generation Detailed explanation of load patterns and multi-worker setup. loadgen.md
Metrics Definitions of TTFT, TPOT, ITL, etc. metrics.md
Goodput How to measure requests meeting SLOs. goodput.md
Reports Understanding generated JSON reports. reports.md
OTel Observability Instrument benchmark runs with OpenTelemetry tracing to export to Jaeger, Tempo, etc. otel_instrumentation.md
OTel Trace Replay Data/load type for replaying production traces with complex dependency graphs. otel_trace_replay.md
Weka Trace Replay Data/load type for replaying raw Weka agent traces via graph-based session execution. weka_trace_replay.md
Conversation Replay Data/load type for benchmarking concurrent multi-turn agentic conversations with configurable distributions. conversation_replay.md
Analysis Visualizations and plots for performance metrics. analysis.md

🤝 Contributing & Community

We welcome contributions! Please join us:

See CONTRIBUTING.md for details on how to get started.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inference_perf-0.6.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inference_perf-0.6.0-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

Details for the file inference_perf-0.6.0.tar.gz.

File metadata

  • Download URL: inference_perf-0.6.0.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for inference_perf-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c038e9699d6b1f49d82901fdc63fe91a15a60b305abd612516402c0be0503776
MD5 9ec7ffad91c639ee2af6857a432352a4
BLAKE2b-256 5e85e91574d16da2ac6b6dbedded77e62529aaeb1a6fe119541acbae2ee5ff02

See more details on using hashes here.

File details

Details for the file inference_perf-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: inference_perf-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for inference_perf-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8b33828787215f4cb9fad75ab5d816a2fc7d2e6dc044221ea7d2692aadaf1a4
MD5 13d60181384ed99439b407491bbfe0c8
BLAKE2b-256 aa6627ab29b7e5fe4d3e5a721eb92772728bdd021df0c6e43807b3b6290c706e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page