Will your ML model run on your device? Find out in one command.
Project description
willitrun
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.
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.
- 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}.jsonlusing theBenchmarkRecordschema (willitrun/pipeline/schema.py). - Serving:
make build_dbvalidates, deduplicates by source priority, and writesdata/benchmarks.db. The packaged copy inwillitrun/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
- Add benchmarks: append JSON lines to
data/normalized/<source>.jsonlfollowingBenchmarkRecord. - Add devices/models: edit
data/devices.yaml/data/models.yaml. - Rebuild:
make build_db. - Run tests:
pytest. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f46bf8c734b8bf3d9682efdf876d19e8f10b30359da8b8fe049b36267f0634d
|
|
| MD5 |
e6edb90e7571120f9b31a6c353a5d94d
|
|
| BLAKE2b-256 |
6afcd04731fc9763b151c680672403ba449652d5eec20f4417fefde92b115154
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c36163388f0cd6541b3133af15948794a77cc2423744c79dc02e780d91425f8d
|
|
| MD5 |
398db9210b04fe1b0cbbb9985de6018b
|
|
| BLAKE2b-256 |
40598938662f26d7314d9ea0aa34f04e9098d309d938718090bc0706ab554464
|