Will your ML model run on your device? Find out in one command.
Project description
willitrun
CLI to tell you if an ML model will fit and run on your device, using real benchmarks + lightweight estimation.
- Real data first: SQLite DB of measured benchmarks (NVIDIA, Ultralytics, MLPerf, community).
- Edge to cloud: Jetson, Apple Silicon, desktop GPUs, SBCs.
- Vision + LLMs: Looks up exact matches, falls back to FLOPs/TFLOPS scaling with memory fit checks.
- CLI-first: Fast, scriptable, offline-capable once the DB is installed.
Quick Start (users)
The interactive UI is the primary entrypoint:
# recommended: isolated CLI install
pipx install willitrun
willitrun
# or with pip if you prefer
pip install willitrun
willitrun
Pick a model (name, HF ID, or local file), then pick a device. You’ll get a verdict and context instantly.
Power users (non-interactive):
willitrun <model> --device <device> [--json]
Install extras as needed:
# PyTorch/ONNX profiling (local .pt / .onnx parsing)
pip install willitrun[profiling,onnx]
How it works
Data pipeline (contributors)
- Raw (immutable cache): ingest scripts fetch and store HTTP responses in
data/raw/{source}/{timestamp}.extwith TTL (configurable viatool.willitrun.raw_ttl_days). - Normalized: the same scripts parse raw into JSONL at
data/normalized/{source}.jsonlusing the singleBenchmarkRecordschema (willitrun/pipeline/schema.py). - Serving:
make build_db(orpython scripts/run_pipeline.py build) validates, deduplicates by source priority, and writesdata/benchmarks.db+data/benchmarks.meta.json. The packaged copy inwillitrun/data/is refreshed bymake wheel.
Estimation
- Tier 1 (lookup): exact model+device benchmarks from SQLite.
- Tier 2 (estimate): FLOPs/TFLOPS scaling plus memory fit with 20% overhead; emits ranges and a confidence marker.
Supported inputs
- Model name from DB (
yolov8n,resnet50, …) - Local PyTorch / ONNX file
- HuggingFace model ID
Commands
User CLI:
willitrun --list-devices
willitrun --list-models
willitrun <model> --device <device> [--json]
Pipeline (for data contributors/maintainers):
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 DB:
make build_db(regenerates DB + meta). - Run tests:
pytest. - Open a PR with the updated normalized file(s), DB, and metadata.
Development
pip install -e ".[dev]"
make build_db
pytest
Release flow
make build_db # refresh DB + metadata
make wheel # sync into package and build
CI (GitHub Actions) runs make build_db + pytest on push/PR to guard against stale DBs and failing tests.
Limitations
- Ingest scripts need network access; cached raw files avoid re-fetching within TTL.
- Tier 2 estimates rely on available reference benchmarks; uncommon models/devices may show wider ranges.
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.5.tar.gz.
File metadata
- Download URL: willitrun-0.1.5.tar.gz
- Upload date:
- Size: 583.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
268e988155af8f528ad753cc4d56f08dc1b50aac385293af27f8eb5d166825c4
|
|
| MD5 |
3d4614bf0f85727fa193115103032bab
|
|
| BLAKE2b-256 |
ea3b516ddb81c1f0ef983d7af73f145f77fe718685a908e01bea5889b7b70a2e
|
File details
Details for the file willitrun-0.1.5-py3-none-any.whl.
File metadata
- Download URL: willitrun-0.1.5-py3-none-any.whl
- Upload date:
- Size: 95.3 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 |
4de901e1e60a5a7113d10ed9b349afc7ffb1a61b545d71f85d96b68aa11ffb43
|
|
| MD5 |
e76f79ccde48d567a23ab312d07881e3
|
|
| BLAKE2b-256 |
6f5dd962e6d991c614d875c62e82655f485592a3380c806f8cad69ed64379f14
|