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: 1 039 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.9.tar.gz (630.6 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.9-py3-none-any.whl (124.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: willitrun-0.1.9.tar.gz
  • Upload date:
  • Size: 630.6 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.9.tar.gz
Algorithm Hash digest
SHA256 1abd065e8d032fd2048527cbb7154f0c66daa5fd9b45b38e2a9d5fc6d6b70ccb
MD5 791706a0310901c2ad712959b297858d
BLAKE2b-256 059a2aa6e0b531138a8e558a25fc72c03e219e6a225841d9f1a4361783bc6f74

See more details on using hashes here.

File details

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

File metadata

  • Download URL: willitrun-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 124.1 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 808f8251eb6a6c9ce9e6622ca287b47d4d19ce866885671cf18bd1da6c404497
MD5 b0fbe8099b123a448c30e75452c8ddb7
BLAKE2b-256 1791c442fe5112d42dec812e982231c263960869f11ebad5de7ad8009f48be22

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