Skip to main content

CLI + TUI tool for benchmarking Ollama models side-by-side

Project description

ollama-profiler

Benchmark and compare Ollama model performance side-by-side.

Single binary. No dependencies. Works on macOS, Linux, and Windows.

Features

  • Side-by-side comparison of multiple models on identical prompts
  • Interactive TUI with live progress, color-coded results, and Unicode bar charts
  • Rich CLI mode with styled terminal output (no TUI required)
  • Multiple scheduling modes — sequential, round-robin, randomized rounds, or Latin-square balanced
  • Statistical summary — mean, stddev, min/max, relative performance, winner highlighting
  • Export — JSON, self-contained HTML report, and retina-quality PNG charts
  • Warmup & cooldown — control for cold-start and thermal throttling effects
  • Dry-run mode — test the UI without a running Ollama instance

Install

curl -fsSL https://raw.githubusercontent.com/piercecohen1/ollama-profiler/main/install.sh | sh

Or build from source:

go install github.com/piercecohen1/ollama-profiler@latest

Quick Start

# Compare two models (3 runs each, CLI output)
ollama-profiler gemma4:e4b llama3.2:3b

# Interactive TUI
ollama-profiler --tui

# Rigorous comparison with balanced scheduling
ollama-profiler gemma4:e4b gemma4:26b gemma4:31b \
  -n 4 --rounds 4 --balanced --warmup --cooldown 30

Usage

ollama-profiler [models...] [flags]
Flag Description Default
--tui Interactive TUI mode
-n, --runs Runs per model per round 3
--rounds N Number of rounds (randomized order per round) 1
--balanced Latin-square positional balancing (with --rounds)
--round-robin Interleave models each run
--warmup Uncounted warmup run per model
--cooldown SEC Sleep between rounds 0
-p, --prompt Prompt text "Write a 200 word explanation..."
--prompt-file Read prompt from file
--num-predict N Max tokens to generate per run (0 = unlimited) 256
--seed N Random seed for deterministic output (0 = random) 42
--think Allow model thinking tokens
--json FILE Export results to JSON (includes metadata)
--no-per-run Skip per-run detail tables
--dry-run Fake data, no Ollama needed
--url Ollama API base URL $OLLAMA_HOST or http://localhost:11434

Scheduling Modes

Mode Flag Behavior
Sequential (default) All runs of A, then B, then C. Model stays loaded in VRAM.
Round Robin --round-robin Cycle A, B, C, A, B, C... Forces model reloading.
Random Rounds --rounds N N rounds, model order randomized each round.
Balanced --rounds N --balanced Latin-square rotation for positional fairness. Requires N >= len(models).

Metrics

Metric Unit Description
TTFT ms Time to first token
Generation TPS tok/s Token generation throughput
Prompt Eval TPS tok/s Prompt processing throughput
Total Duration ms End-to-end inference time
Load Duration ms Model load time
Eval Time ms Generation duration
Prompt Tokens tok Input token count
Generated Tokens tok Output token count

Export

Press e in the TUI results screen to export:

ollama-profiler-2024-01-15-1430/
├── results.json    # Raw metrics data
├── report.html     # Self-contained dark-themed HTML report
└── charts.png      # Retina-quality bar charts (generated natively)

Requirements

  • Ollama running locally (or specify --url for remote)
  • At least one model pulled (ollama pull gemma4:e4b)

License

MIT

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

ollama_profiler-0.1.0-py3-none-win_arm64.whl (8.7 MB view details)

Uploaded Python 3Windows ARM64

ollama_profiler-0.1.0-py3-none-win_amd64.whl (9.5 MB view details)

Uploaded Python 3Windows x86-64

ollama_profiler-0.1.0-py3-none-musllinux_1_2_x86_64.whl (9.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ollama_profiler-0.1.0-py3-none-musllinux_1_2_aarch64.whl (8.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ollama_profiler-0.1.0-py3-none-manylinux_2_17_x86_64.whl (9.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ollama_profiler-0.1.0-py3-none-manylinux_2_17_aarch64.whl (8.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ollama_profiler-0.1.0-py3-none-macosx_11_0_arm64.whl (8.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ollama_profiler-0.1.0-py3-none-macosx_10_9_x86_64.whl (9.4 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file ollama_profiler-0.1.0-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 69d3be5a09cfe16e45f4a7bb9ac65d61e4c4ee565a8a558ea948f31aeaf050bd
MD5 9852497a5266ae59383b185601af7c95
BLAKE2b-256 80ab007d07c35a33b51e5f6714b32dae027855fcdb34677ae67b769eac325d49

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-win_arm64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 aadeab346357edd4b770cad7f7c59c373d4ebcd1e50a0b63df6aac5ea46ad885
MD5 5ba32c7f78c4adf3a778da800fd50a73
BLAKE2b-256 fe55c933a0fbc67818e1db087e42105a668b422831ac0916c2aa1a3626f5f78d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-win_amd64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fce14517adf5c51b0749dc08ce0ff9a50d7b9530cda2779361126fcb771aaa9c
MD5 4a5fb7e8eb87c7212775066d4e2647cf
BLAKE2b-256 d0b32ae0d2493932f97ddfb1dc31d032a7101306678a2b492bba2386da3b30f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 283bec00b691b77a851c04779e2cac441f311d1c9cdce29a3108c93a7a28f388
MD5 61aa496eb65306c93b56f2c6e6071259
BLAKE2b-256 13f1da1013d44b54a7080fa69cb9ae36b5a360663845edf37dffafc8c46132e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3a2182c3654f85e87309a779afe7d78f33d8b12a82f45008e0eca2c93ae3f233
MD5 b4fc4afa45729855b2cd2b92fba25b33
BLAKE2b-256 6f2809d4f1bede48784d61b1086a2f68220272ff253dac519654a6c502cca5a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-manylinux_2_17_x86_64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4184f220b2ca530679b55d49d714071e937489c7f3121de54a770d6d9bdcb9fc
MD5 0cdd87038d8abdf37caf829185b7cbbe
BLAKE2b-256 8e0481715383953083e7e22c6ca3f830ece14b42fd2d44f2eda6226305761ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-manylinux_2_17_aarch64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8e6edf018caa47114f3440892a24f136d527f3b2711cb962323c420877f602b
MD5 c2f2b2086ef77ec7d1d2134cc6a02be0
BLAKE2b-256 92be87d956178f34c40928e9229590f6696f320396cc5d83dc953ada57f88a79

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-macosx_11_0_arm64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ollama_profiler-0.1.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ollama_profiler-0.1.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f2678447a13f1848a82a08656941fbf6d7a4f857d6f7d972235d3ed6b0e4e14f
MD5 fd3266170330bbd7e52a7d10f967cf92
BLAKE2b-256 5229c8bffe3eca9aabf0ad57ab5179de2e97fb4e9b57128b02e0b2c040d7897d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ollama_profiler-0.1.0-py3-none-macosx_10_9_x86_64.whl:

Publisher: publish.yml on piercecohen1/ollama-profiler

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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