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: 556 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.7.tar.gz (610.4 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.7-py3-none-any.whl (106.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: willitrun-0.1.7.tar.gz
  • Upload date:
  • Size: 610.4 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.7.tar.gz
Algorithm Hash digest
SHA256 9f46bf8c734b8bf3d9682efdf876d19e8f10b30359da8b8fe049b36267f0634d
MD5 e6edb90e7571120f9b31a6c353a5d94d
BLAKE2b-256 6afcd04731fc9763b151c680672403ba449652d5eec20f4417fefde92b115154

See more details on using hashes here.

File details

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

File metadata

  • Download URL: willitrun-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 106.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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c36163388f0cd6541b3133af15948794a77cc2423744c79dc02e780d91425f8d
MD5 398db9210b04fe1b0cbbb9985de6018b
BLAKE2b-256 40598938662f26d7314d9ea0aa34f04e9098d309d938718090bc0706ab554464

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