
WhichLLM
github.com/andyyyy64/whichllm- Category
- Developer Tools
- Rank
- No. 805Tools index
- Listed in
- #54 Find AI benchmarks · #7 Run models locally
- Type
- APP
- Builder
- andyyyy64
- GitHub
- 6.6k stars
- Latest release
- v0.5.16
- Date
About
Benchmarks and ranks which local LLM runs best on your specific hardware.
What it does
WhichLLM is a command-line adviser for choosing and running local language models. It detects system memory and processors, fetches current Hugging Face model data, combines benchmark evidence with memory and speed estimates, then presents suitable options. It can also simulate hardware purchases, compare upgrades, plan hardware for a named model, start a chat, and generate Python snippets.
Why it's ranked here
The tool addresses more than basic memory fit. Its recommendations account for benchmark quality, evidence confidence, model generation, quantization, context memory, runtime overhead, and estimated throughput. Hardware simulation, planning commands, and machine-readable output make those recommendations useful beyond a single terminal check. The estimates remain planning aids, however, rather than measurements from the user’s machine.
What's good
Memory estimates include weights, key-value cache, activations, framework overhead, context length, and mixture-of-experts behavior. Recommendations distinguish full GPU loading, partial offload, and CPU execution. Benchmark evidence carries source and confidence information instead of being treated uniformly. Users can reserve VRAM and RAM headroom, filter slow candidates, select task profiles, and export JSON or Markdown.
Tradeoffs
Default recommendations are intentionally ambitious, so near-limit VRAM fits and partial RAM offload may prove less comfortable than expected. Speed values are estimates with confidence ranges, not live performance tests. Results normally depend on Hugging Face network data, though curated fallbacks cover offline or rate-limited cases. Ollama integration still requires users to map Hugging Face identifiers to local model names.
How to use it well
Use it when selecting a local model, checking whether a quantized variant fits, or comparing GPUs before purchase. Start with full-GPU filtering, a usable-speed threshold, and reserved VRAM when reliability matters more than ambition. Feed JSON into scripts for repeatable selection. Do not treat its throughput projections as a substitute for benchmarking the chosen model under your actual prompts and runtime.
Technical notes+
pyproject.toml defines a Hatchling-built Python package, requires Python 3.11 or newer, and exposes whichllm.cli:app as the console entry point. src/whichllm/cli.py implements the Typer interface, validates mutually exclusive and malformed options, applies hardware overrides and memory budgets, and supports structured output modes. src/whichllm/models/hf.py uses asynchronous HTTP requests, multiple discovery sorts, explicit frontier model lookups, and configurable Hugging Face endpoints. src/whichllm/models/http.py adds bounded retries with exponential backoff for transient failures. src/whichllm/engine/vram.py estimates weights, KV cache, activations, and framework overhead, including sliding-window attention and MoE adjustments. src/whichllm/models/gguf.py parses quantization labels and combines split GGUF sizes. src/whichllm/data/gpu.py contains curated bandwidth, compute capability, shared-memory, and legacy Vulkan-only GPU data.
Observed
- License
- MIT
- Primary language
- Python
- Python requirement
- Python 3.11 or newer
- Packaging
- PyPI package built with Hatchling; installable through uv, pip, or Homebrew
- Interface
- Command-line application with terminal tables, JSON, and Markdown output
- Platform support
- Detects NVIDIA, AMD, Intel, Apple Silicon, and CPU-only systems
- Runtime formats
- Supports GGUF through llama-cpp-python, AWQ and GPTQ through Transformers integrations, and FP16 or BF16 through Transformers
Read from README.md, pyproject.toml, src/whichllm/cli.py, src/whichllm/utils.py, src/whichllm/__init__.py, src/whichllm/__main__.py, src/whichllm/constants.py, src/whichllm/data/gpu.py, src/whichllm/models/hf.py, src/whichllm/engine/vram.py, src/whichllm/models/gguf.py, src/whichllm/models/http.py, src/whichllm/output/plan.py, src/whichllm/data/lineage.py, src/whichllm/engine/types.py.
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.