Skip to main content

ggufit

Check whether a local LLM can run on your machine, CPU-only — from PowerShell or any terminal.

Uses real formulas (model memory footprint, KV cache size, and a measured memory-bandwidth micro-benchmark) rather than guesses, to estimate whether a model fits in RAM and roughly how fast it'll generate tokens. Correctly handles MoE models (speed driven by active experts, not total params) and SSM/MLA architectures (Mamba, DeepSeek's MLA) that don't use standard multi-head attention.

Install

# Recommended - works everywhere, gives you a global `ggufit` command
pipx install ggufit

# Or plain pip (Windows PowerShell, or inside a venv on Linux/macOS)
pip install ggufit

Installing from source (for development)

git clone <this repo>   # or unzip the source
cd ggufit/               # the folder containing pyproject.toml
pipx install -e .        # editable install - code changes apply without reinstalling
# or: pip install -e .   (inside a venv, or with --break-system-packages)

Usage

# Full hardware scan: shows your CPU/RAM/bandwidth and which models fit
ggufit scan

# Check one specific model
ggufit llama3.1
ggufit mistral
ggufit qwen2.5-14b

# Force a specific quantization level
ggufit llama3.1 --quant q4

# Evaluate at a longer context length
ggufit qwen2.5-32b --context 16384

How it works

For each model:

  1. Model size (RAM) = total params × bytes-per-parameter (varies by quant: FP16, Q8, Q6, Q5, Q4, Q3, Q2)
  2. KV cache = 2 × layers × hidden_size × context_len × bytes_per_param × kv_cache_multiplier
    • kv_cache_multiplier defaults to 1.0 (standard MHA), and is set lower for architectures that don't use full attention at every layer: 0.0 for pure SSM/Mamba (no attention at all), ~0.15 for MLA (DeepSeek-V2/V3/R1, MiniCPM3), ~0.125 for hybrid Mamba+attention (Jamba).
  3. Total RAM needed = (model size + KV cache) × 1.2 overhead factor
  4. Speed estimate = measured_memory_bandwidth / active_size, where active_size is the total model size for dense models, or just the active experts' size for MoE models (active_params_billion) — since only those weights are streamed from RAM per token.

ggufit runs a quick real memory-bandwidth benchmark (a large array copy) instead of guessing from RAM specs, since achievable bandwidth depends heavily on channel configuration.

Adding models

Edit ggufit/models_db.py and add an entry to the MODELS dict with params_billion, layers, and hidden_size (found in the model's Hugging Face config.json). Optional:

  • moe: True + active_params_billion: X for Mixture-of-Experts models
  • kv_cache_multiplier: X for non-standard attention architectures (see above)

Known limitations

  • Speed estimates assume batch size 1, single-user chat.
  • The bandwidth benchmark is single-threaded; real inference engines use multiple threads.
  • Quant byte-per-param values are approximations of real GGUF file sizes.
  • KV cache still assumes full hidden_size for standard (non-flagged) models even though most modern ones use GQA with fewer KV heads than query heads — this is intentionally conservative (over-estimates KV, doesn't affect the dominant "does it load" answer).
  • kv_cache_multiplier values for MLA/hybrid architectures are approximate, not per-model-measured.

Notes

This is a side-project CLI. The full hardware-scan desktop app (Rust/Tauri) is a separate, more thorough tool still in development.

Download files

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

Source Distribution

ggufit-0.1.1.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

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

ggufit-0.1.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file ggufit-0.1.1.tar.gz.

File metadata

  • Download URL: ggufit-0.1.1.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for ggufit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e939b4e7b9211a587fea7162bd7741637e57ccefd8a3ffdfd9b7e4ed0c7bd27f
MD5 ca60d4ba2a656e713f798886e6bffd79
BLAKE2b-256 5330c0ec132719435df424eea9e8eedd0bc47ff720eb54669a30cacedbe27688

See more details on using hashes here.

File details

Details for the file ggufit-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ggufit-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for ggufit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 daa34d410aa3ea97aad8053f8bfd1b211e1b7007d66eaff3b241bb58947170cd
MD5 dba0d15aff0c8eb79d5b3bdf7f553c29
BLAKE2b-256 6385ddc5ce8ea8e851ec63e8044962fe60be2248423b83611c0a40a7b0a15561

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

This release

0.1.1 This release

2 files

Supported by

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