mrkeyoor.com_
Tue 01 Sept 17:42 UTC
AI Toolsevaluationupdated 26 Aug 2026

aiperf review

AIPerf is a Python load generator and analysis tool for measuring generative-AI inference endpoints. It sends controlled text, embedding, audio, image, or replay workloads, then reports latency, throughput, request behavior, and exported artifacts so infrastructure teams can compare serving configurations.

+35stars / 7d
Verdict

Our AIPerf run built in 8 seconds and passed 177 tests, but 8 import errors still made the suite fail and the installed environment carried 21 known vulnerabilities. Use it when workload shape, trace replay, and analysis depth matter enough to justify a 1,038 MB Python environment. For a quick request-rate check against one text endpoint, a narrower tool will be easier to audit and explain.

We ran it

Lab card: what happened when we ran aiperfScreenshot of aiperf (github.com/ai-dynamo/aiperf)
Install✓ · 59s207 packages · 1038 MB
Build✓ · 8s
Tests✗ · 15s177 passed · 0 failed · 8 errors of 185 (pytest)
Known vulns21(pip-audit)
Repo2361 files~599,768 lines of source · 41.4 MB · 10 CI workflows · Dockerfile · tests dir

Answers from our run

Does aiperf build from source?

Dependencies installed in 59 seconds (207 packages), and the build succeeded in 8 seconds. We cloned commit d8d49e8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do aiperf's tests pass?

Yes: 177 of 185 passed when we ran the project's own test command (pytest), with 8 collection errors. Some failures need services or credentials a bare container does not have.

Does aiperf have known vulnerabilities in its dependencies?

pip-audit flagged 21 known advisories in the dependency tree at the time of our run.

Who should not use aiperf?

Teams wanting a model-quality leaderboard from one command: performance profiling and accuracy workloads are separate concerns, and meaningful comparisons still require controlled prompts and hardware.

What are the alternatives to aiperf?

LLMPerf, GuideLLM, vLLM. Our AIPerf run built in 8 seconds and passed 177 tests, but 8 import errors still made the suite fail and the installed environment carried 21 known vulnerabilities.

Setup3/5Install and build passed; test collection and 1,038 MB cost hurt
Docs5/5Metrics, workloads, endpoints, configuration, and limits are explicit
Community5/5Pushed August 2026 with dense same-day issue and PR activity
Maturity4/5Wide workload support, with a failing measured test collection

Who it’s for

Inference engineers comparing model servers, GPUs, routing policies, or scaling settings.
Platform teams replaying production-shaped traces against OpenAI-compatible or supported NVIDIA endpoints.
Performance teams that need warmups, arrival patterns, sweeps, exported records, and repeatable configuration files.
Operators prepared to isolate the benchmark client from the server and interpret client-side metrics carefully.

Who it’s NOT for

Teams wanting a model-quality leaderboard from one command: performance profiling and accuracy workloads are separate concerns, and meaningful comparisons still require controlled prompts and hardware.
Users expecting output length flags to force identical generations: the README says the constraint is not guaranteed unless the server supports and receives ignore_eos or min_tokens.
Operators likely to push extreme concurrency without host tuning: the documented known issues warn that settings above 15,000 can exhaust ports on some systems.
Contributors needing a clean default test run today: our suite stopped with 8 collection or setup errors because aiperf_mock_server could not be imported.
Security teams requiring an advisory-free environment: our pip audit found 21 known vulnerabilities in the installed dependency set.

Setup reality

Our sandbox installed 207 Python packages in 59 seconds and used 1,038 MB on disk. The build passed in 8 seconds. Tests exited 1 after 15 seconds: pytest reported 177 passed, 0 failed, and 8 collection or setup errors because aiperf_mock_server was missing. pip-audit found 21 known vulnerabilities.

A real profile also needs a reachable inference server, a matching tokenizer, representative prompts or traces, and credentials for protected endpoints. Optional MLflow, OpenTelemetry, and Weights & Biases uploads add their own packages and configuration.

Linux arm64 needs a C compiler for the crick source distribution. The 41.4 MB checkout contained 2,361 files and about 599,768 source lines, with 10 CI workflows, a Dockerfile, and a tests directory.

AIPerf measures the client view across many inference workloads

AIPerf sends traffic to an already running model endpoint and records what the client observes. For streamed text that includes time to first token, inter-token latency, output throughput, request latency, and sequence lengths. Supported endpoint families extend beyond chat to completions, embeddings, rankings, audio, images, and OpenAI Responses. Results can appear in a live terminal dashboard, simpler progress display, or headless run with CSV and JSON artifacts.

The useful part is workload control. A fixed concurrency test answers a different question from constant or probabilistic arrivals. AIPerf supports request rate with a concurrency ceiling, warmup phases, gradual ramps, fixed schedules, cancellations, multi-URL routing, and repeated runs with confidence analysis. Trace replay can preserve production timing, while synthetic distributions let an operator vary input length, output length, and conversation turns without sharing real prompts.

The 10-service design is built for experiments larger than a smoke test

The README describes a multiprocess architecture with 10 services communicating through ZeroMQ. Plugins cover endpoints, datasets, transports, and metrics. That separation allows custom request formats and measurement logic, but it also explains the dependency footprint and the amount of code. A one-line curl loop is easier to inspect; AIPerf is for cases where pacing, data generation, recording, and analysis must remain consistent across many runs.

Configuration can live in YAML rather than a long shell command. Sampling distributions include fixed, normal, log-normal, multimodal, and empirical shapes. Public datasets and exact custom payloads can drive the workload. Teams can replay SageMaker captures or supported trace formats, preserve a random seed, and use local tokenizers when downloading from Hugging Face is undesirable. These controls make comparisons more defensible, provided every server sees the same requests.

What happened when we ran it

Our run at commit d8d49e8 used a fresh unprivileged Python 3.12 Bookworm container with 3 CPUs, 8 GB of RAM, and no secrets. Installation succeeded in 59 seconds, adding 207 packages and consuming 1,038 MB on disk. The build then passed in 8 seconds. pip-audit reported 21 known vulnerabilities in the resulting environment.

The test command failed with exit 1 after 15 seconds. Pytest completed 177 tests with 0 assertion failures and 1 warning, but it raised 8 collection or setup errors out of 185. The log names several mock-server test modules plus component, integration, and unit directories, all ending with ModuleNotFoundError: No module named 'aiperf_mock_server'. We cannot call that a passing suite just because the tests that started were green.

The checkout contained 2,361 files, about 599,768 source lines, and 41.4 MB before installation. Our scan found 10 CI workflow files, a Dockerfile, and a tests directory. Those are good engineering signals, while the measured import gap remains a concrete contributor problem on this commit and environment. The log does not establish whether packaging, test setup, or another configuration caused it, so we will not guess.

A benchmark is only fair when the workload and tokenizer match

AIPerf needs a model name, endpoint type, URL, and tokenizer for its basic profile. Protected services add credentials. Optional MLflow, OpenTelemetry, and Weights & Biases integrations add packages plus remote configuration. The quick start also launches Ollama in Docker and pulls a model, which is setup for the target server rather than for AIPerf itself. Our 59-second install did not include model weights or a real inference run.

Token accounting can quietly ruin a comparison. Use the tokenizer that matches the served model, keep prompt data fixed, record whether streaming is enabled, and separate warmup from the measured phase. The README warns that requested output length cannot be guaranteed unless the inference server accepts controls such as ignore_eos or min_tokens. If two servers stop generation differently, their throughput and latency figures are not directly comparable.

Client placement matters too. DNS, TCP, TLS, queues, routers, and network distance become part of observed latency. AIPerf can record HTTP trace metrics and scrape Prometheus-compatible server metrics, but the report still needs the topology beside the numbers. Run the load generator away from the server only when that path represents users, and monitor whether the 207-package client itself reaches CPU, port, or memory limits.

Known limits are specific enough to plan around

The README says very high concurrency, typically above 15,000, may exhaust ports on some systems. Invalid configuration can also leave startup hanging, requiring termination and a review of settings. Dashboard text selection may be unreliable, with a key command offered to copy logs. These are unusually candid constraints and should become preflight checks in an automated benchmark job.

AIPerf also supports prefill concurrency for long contexts, goodput against service-level objectives, parameter sweeps, adaptive search, and timeslice analysis. These features can answer where a configuration stops meeting a latency target, not merely which run produced the largest throughput number. They also increase the number of choices. Start with one controlled mode and add sweeps only after its artifacts and metrics agree with direct server observations.

August activity is fast enough to require version pinning

GitHub recorded a push on 2026-08-26 and 91 open issues and pull requests combined. Same-day work covered Kubernetes execution, configuration handling, structured streaming errors, dataset validation, metrics, and accuracy. Release v0.12.0 was published on 2026-08-06 and dropped Python 3.10 support, making Python 3.11 the minimum. Linux arm64 users may also need a C compiler for crick.

That pace is healthy for new inference workloads, but benchmark methodology should not change unnoticed between reports. Pin the AIPerf version, configuration, dataset fingerprint, tokenizer, server build, hardware, and topology with every result. AIPerf provides enough controls to make repeatable experiments. It cannot supply the discipline or decide whether a 2% movement is software, traffic, or measurement noise.

Alternatives

ProjectWhat it isPick it when
LLMPerfA smaller Ray-based set of scripts for measuring LLM serving performance and costs.pick this instead when you want a narrower text-generation benchmark with less workload machinery.
GuideLLMA request-pattern benchmark for OpenAI-compatible language-model servers.pick this instead when scheduled text request rates and a focused CLI cover the evaluation.
vLLM gh↗A model-serving engine that includes benchmarks tied closely to its own runtime.pick this instead when you are evaluating vLLM itself and its native benchmark scripts are sufficient.

What people are saying

  1. [github-trending] ai-dynamo/aiperf

Sources

  1. AIPerf README
  2. AIPerf v0.12.0 release
  3. AIPerf metrics reference
  4. AIPerf known issues and pull requests

More ai tools reviews

claudian · SkillSpector · robin · mjlab · MoGe · awesome-design-md · the whole board →