aiperf 0.11.0


pip install aiperf

  Latest version

Released: Jul 08, 2026

Project Links

Meta
Author: NVIDIA Inc.
Requires Python: <3.14,>=3.10

Classifiers

AIPerf

PyPI version License Codecov Discord Ask DeepWiki

AIPerf is a comprehensive benchmarking tool that measures the performance of generative AI models served by your preferred inference solution. It provides detailed metrics using a command line display as well as extensive benchmark performance reports.

AIPerf UI Dashboard

Quick Start

This quick start guide leverages Ollama via Docker Desktop.

Setting up a Local Server

In order to set up an Ollama server, run granite4:350m using the following commands:

docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama-data:/root/.ollama \
  ollama/ollama:latest
docker exec -it ollama ollama pull granite4:350m

Basic Usage

Create a virtual environment and install AIPerf:

python3 -m venv venv
source venv/bin/activate
pip install aiperf

[!NOTE] On Linux aarch64 (arm64), one of AIPerf's dependencies (crick) ships only an sdist and needs a C compiler at install time. Install the system build toolchain before pip install aiperfsudo apt install build-essential (Debian/Ubuntu), sudo yum groupinstall "Development Tools" (RHEL/CentOS), or equivalent. Linux x86_64, macOS, and Windows install from pre-built wheels and need no toolchain.

Optional integrations:

  • pip install "aiperf[mlflow]" enables MLflow uploads and live telemetry streaming
  • pip install "aiperf[otel]" enables OpenTelemetry metric streaming
  • pip install "aiperf[wandb]" enables Weights & Biases result uploads
  • pip install "aiperf[mlflow,otel,wandb]" installs all telemetry extras

To run a simple benchmark against your Ollama server:

aiperf profile \
  --model "granite4:350m" \
  --streaming \
  --endpoint-type chat \
  --tokenizer ibm-granite/granite-4.0-micro \
  --url http://localhost:11434 \
  --request-count 10

Example with Custom Configuration

aiperf profile \
  --model "granite4:350m" \
  --streaming \
  --endpoint-type chat \
  --tokenizer ibm-granite/granite-4.0-micro \
  --url http://localhost:11434 \
  --concurrency 5 \
  --request-count 10

Example output:

NOTE: The example performance is reflective of a CPU-only run and does not represent an official benchmark.

                                               NVIDIA AIPerf | LLM Metrics
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓
┃                               Metric        avg       min        max        p99        p90        p50       std ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩
│             Time to First Token (ms)   7,463.28  7,125.81   9,484.24   9,295.48   7,596.62   7,240.23    677.23 │
│            Time to Second Token (ms)      68.73     32.01     102.86     102.55      99.80      67.37     24.95 │
│      Time to First Output Token (ms)   7,463.28  7,125.81   9,484.24   9,295.48   7,596.62   7,240.23    677.23 │
│                 Request Latency (ms)  13,829.40  9,029.36  27,905.46  27,237.77  21,228.48  11,338.31  5,614.32 │
│             Inter Token Latency (ms)      65.31     53.06      81.31      81.24      80.64      63.79      9.09 │
│     Output Token Throughput Per User      15.60     12.30      18.85      18.77      18.08      15.68      2.05 │
│                    (tokens/sec/user)                                                                            │
│      Output Sequence Length (tokens)      95.20     29.00     295.00     283.12     176.20      63.00     77.08 │
│       Input Sequence Length (tokens)     550.00    550.00     550.00     550.00     550.00     550.00      0.00 │
│ Output Token Throughput (tokens/sec)       6.85       N/A        N/A        N/A        N/A        N/A       N/A │
│    Request Throughput (requests/sec)       0.07       N/A        N/A        N/A        N/A        N/A       N/A │
│             Request Count (requests)      10.00       N/A        N/A        N/A        N/A        N/A       N/A │
└──────────────────────────────────────┴───────────┴──────────┴───────────┴───────────┴───────────┴───────────┴──────────┘

CLI Command: aiperf profile --model 'granite4:350m' --streaming --endpoint-type 'chat' --tokenizer 'ibm-granite/granite-4.0-micro' --url 'http://localhost:11434'
Benchmark Duration: 138.89 sec
CSV Export: /home/user/aiperf/artifacts/granite4:350m-openai-chat-concurrency1/profile_export_aiperf.csv
JSON Export: /home/user/Code/aiperf/artifacts/granite4:350m-openai-chat-concurrency1/profile_export_aiperf.json
Log File: /home/user/Code/aiperf/artifacts/granite4:350m-openai-chat-concurrency1/logs/aiperf.log

Features

  • Scalable multiprocess architecture with 10 services communicating via ZMQ
  • 3 UI modes: dashboard (real-time TUI), simple (progress bars), none (headless)
  • Multiple benchmarking modes: concurrency, request-rate, request-rate with max concurrency, trace replay
  • Extensible plugin system for endpoints, datasets, transports, and metrics
  • Public dataset support including ShareGPT and custom formats

Supported APIs

  • OpenAI chat completions, completions, embeddings, audio, images
  • NIM embeddings, rankings

Tutorials and Feature Guides

Getting Started

Load Control and Timing

Workloads and Data

Endpoint Types

Analysis and Monitoring

Documentation

Document Purpose
Architecture Three-plane architecture, core components, credit system, data flow
CLI Options Complete command and option reference
Metrics Reference All metric definitions, formulas, and requirements
Environment Variables All AIPERF_* configuration variables
Plugin System Plugin architecture, 25+ categories, creation guide
Creating Plugins Step-by-step plugin tutorial
Accuracy Benchmarks Accuracy evaluation against MMLU, AIME, and other benchmarks
Benchmark Modes Trace replay and timing modes
Server Metrics Prometheus-compatible server metrics collection
Tokenizer Auto-Detection Pre-flight tokenizer detection
Conversation Context Mode How conversation history accumulates in multi-turn
Dataset Synthesis API Synthesis module API reference
Code Patterns Code examples for services, models, messages, plugins
Migrating from Genai-Perf Migration guide and feature comparison
Design Proposals Enhancement proposals and discussions

Contributing

See CONTRIBUTING.md for development setup, coding conventions, and contribution guidelines.

Known Issues

  • Output sequence length constraints (--output-tokens-mean) cannot be guaranteed unless you pass ignore_eos and/or min_tokens via --extra-inputs to an inference server that supports them.
  • Very high concurrency settings (typically >15,000) may lead to port exhaustion on some systems. Adjust system limits or reduce concurrency if connection failures occur.
  • Startup errors caused by invalid configuration settings can cause AIPerf to hang indefinitely. Terminate the process and check configuration settings.
  • Copying selected text may not work reliably in the dashboard UI. Use the c key to copy all logs.

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
aiofiles (~=24.1.0)
aiohttp (~=3.13.3)
async-timeout (>=4.0.0)
crick (~=0.0.8)
cyclopts (<5,>=4)
dash-bootstrap-components (~=2.0.0)
dash (~=3.1.0)
datasets (>=3.0)
fastapi (<1,>=0.115)
ffmpeg-python (~=0.2.0)
huggingface-hub (<2.0,>=0.34.0)
jinja2 (~=3.1.5)
jmespath (~=1.0.1)
kaleido (~=1.2.0)
matplotlib (>=3.10.0)
msgspec (<1.0.0,>=0.19.0)
numpy (<3,>=1.26.4)
nvidia-ml-py
optuna (>=3.6)
orjson (~=3.11.7)
pandas (~=2.3.3)
pillow (~=12.2.0)
plotly (~=6.4.0)
prometheus-client (~=0.23.1)
protobuf (>=4)
psutil (~=7.0.0)
pyarrow (>=18.0.0)
pydantic-settings (<3.0.0,>=2.10.0)
pydantic (<3.0.0,>=2.10.0)
pyzmq (~=26.4.0)
rich (~=14.1.0)
ruamel-yaml (~=0.18.12)
scipy (>=1.13.0)
seaborn (~=0.13.2)
sentencepiece (>=0.2.0)
setproctitle (~=1.3.6)
soundfile (~=0.13.1)
starlette-compress (>=1.0.1)
textual (~=5.3.0)
tiktoken (<1,>=0.7.0)
tqdm (>=4.67.1)
transformers (>=4.56.0)
uvicorn[standard] (<1,>=0.34)
uvloop (>=0.22.1)
zstandard (>=0.25.0)