Skip to main content

Will your ML model run on your device? Find out in one command.

Project description

willitrun

PyPI version Python versions License: MIT CI

Find the best models for your device

Given a device and task category, willitrun ranks what runs best. Real benchmarks first, scaled estimates as fallback.

willitrun inverse mode demo

Check if a specific model runs on your device

Pick any model by name, HuggingFace ID, or local file. Get a verdict, speed estimate, and memory breakdown instantly.

willitrun model check demo

  • Real data first: 979 measured benchmarks across NVIDIA Jetson, Apple Silicon, desktop GPUs, and more.
  • Inverse query: given a device, rank the best-performing models for a task category.
  • Edge to cloud: Jetson, Apple Silicon, desktop GPUs, SBCs.
  • Vision + LLMs: exact benchmark lookup with FLOPs/memory-based estimation as fallback.
  • MoE-aware: distinguishes total vs active parameters for memory and speed estimation.
  • CLI-first: fast, scriptable, offline-capable once the DB is installed.

Quick Start

pipx install willitrun   # recommended: isolated install
willitrun                # interactive mode

Or with pip:

pip install willitrun
willitrun

Install extras for local file profiling:

pip install willitrun[profiling,onnx]   # PyTorch / ONNX parsing

Supported model inputs

  • Model name from DB (yolov8n, resnet50, ...)
  • HuggingFace model ID
  • Local PyTorch / ONNX file

How it works

Estimation

  • Tier 1 (lookup): exact model + device match from the SQLite benchmark DB.
  • Tier 2 (estimate): FLOPs/TFLOPS scaling with memory fit check and 20% overhead. MoE models use active parameters for speed and total parameters for memory.

Results from real measurements always rank above estimates. Tier 2 results are clearly labelled.

Data pipeline

  • Raw (immutable cache): ingest scripts store HTTP responses in data/raw/{source}/ with configurable TTL.
  • Normalized: scripts parse raw data into JSONL at data/normalized/{source}.jsonl using the BenchmarkRecord schema (willitrun/pipeline/schema.py).
  • Serving: make build_db validates, deduplicates by source priority, and writes data/benchmarks.db. The packaged copy in willitrun/data/ is refreshed before each release.

Commands

willitrun                                      # interactive mode
willitrun <model> --device <device>            # model check
willitrun --device <device> --task <category>  # best models for device
willitrun --list-devices
willitrun --list-models
willitrun <model> --device <device> --json

Pipeline (data contributors):

make fetch       # run all ingests (respects cache TTL)
make build_db    # normalized -> SQLite + metadata
make status      # coverage summary + gaps
make wheel       # rebuild DB, sync into package, build wheel

Contributing data

  1. Add benchmarks: append JSON lines to data/normalized/<source>.jsonl following BenchmarkRecord.
  2. Add devices/models: edit data/devices.yaml / data/models.yaml.
  3. Rebuild: make build_db.
  4. Run tests: pytest.
  5. Open a PR with the updated normalized file(s), DB, and metadata.

Development

pip install -e ".[dev]"
make build_db
pytest

Limitations

  • Tier 2 estimates rely on available reference benchmarks; uncommon model/device combos may show wider ranges.
  • Ingest scripts need network access; cached raw files avoid re-fetching within TTL.

Roadmap

  • More benchmark data (community PRs welcome!)
  • Web frontend for shareability
  • Training memory estimation
  • Multi-GPU / model parallelism awareness
  • Auto-detect local hardware

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 Distribution

willitrun-0.1.8.tar.gz (623.0 kB view details)

Uploaded Source

Built Distribution

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

willitrun-0.1.8-py3-none-any.whl (119.7 kB view details)

Uploaded Python 3

File details

Details for the file willitrun-0.1.8.tar.gz.

File metadata

  • Download URL: willitrun-0.1.8.tar.gz
  • Upload date:
  • Size: 623.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for willitrun-0.1.8.tar.gz
Algorithm Hash digest
SHA256 b59a91730155659880e3ece5d4ba3af942c6a13e592d07b07983a13a3ce591c7
MD5 20c10275b53cfbf5eb5f770d4cdac93e
BLAKE2b-256 10fae1021705abdf88ac16d93c795b421b17466a334af607cd3edead11aea2dc

See more details on using hashes here.

File details

Details for the file willitrun-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: willitrun-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 119.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for willitrun-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 145df6b2674ab6b6e6da31339be6c4421a00fec94c374c2b5ebb935c6912082f
MD5 1ffd7b03b31dfc0ff8ba1f33dc149159
BLAKE2b-256 d788b873078724ec7013d42e761618b778fb9521cb6d42039788dd197cc3807f

See more details on using hashes here.

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