FitCheck / README.md
cn0303's picture
Pre-deadline audit: honest sealed-test numbers in parse hint + model card, lookup timeout, roofline cache fix
f3cb4af verified
|
Raw
History Blame Contribute Delete
5.1 kB
---
title: FitCheck
emoji:
colorFrom: indigo
colorTo: green
sdk: gradio
sdk_version: 6.16.0
app_file: app.py
python_version: "3.12"
pinned: false
license: mit
short_description: Honest, plain answers about what AI your computer can run
models:
- nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
tags:
- track:backyard
- sponsor:nvidia
- achievement:offbrand
- achievement:welltuned
- achievement:fieldnotes
---
<!--
ZeroGPU is selected in the Space's Settings (the README can't set it). The
model brick (/api/ask) only loads the LLM when SPACES_ZERO_GPU is set, so
local `python app.py` stays instant.
-->
# FitCheck
**What AI can your computer actually run?** And the other way round: **what
computer do you need for the AI you want to run?**
Tell FitCheck about your machine in plain words. It answers honestly — real
models, real memory figures, real licenses, real copy-paste commands — from
chatbots to object detection, image generation, speech, and robotics.
## Demo and social post
- Demo video: https://www.youtube.com/watch?v=nz6sBVwA7N8
- Social post: https://x.com/chandran0303/status/2066644768914837994
- Build log and write-up: https://huggingface.co/blog/build-small-hackathon/fitcheck
## Why it's trustworthy
- **A deterministic engine does the math, not an AI.** Verdicts come from a
transparent rules engine over `catalogue.json` (110 models, generated from
`scripts/curation.json` and verified against the Hugging Face API). Nothing in
the verdict can be hallucinated.
- **Model sizes are exact where they can be.** For qualifying GGUF files the
weights figure is the real Hub file size (displayed rounded to two decimals);
other entries are parameter-count estimates, labelled as such. Chat memory
uses each model's real architecture (GQA-aware) where available. Estimates add
a small fixed safety buffer (a borrowed margin from community load data, not a
FitCheck-measured confidence).
- **Provenance on every number.** The UI says whether a figure is an exact
file size, a vendor/Hub figure, third-party aggregate data, community-reported,
or estimated.
- **Licenses up front.** AGPL, non-commercial, and gated models are labelled
on every card — before you build your project on one.
- **Speed estimates with receipts, not vibes.** For LLMs, FitCheck predicts
decode tokens/sec from your memory bandwidth (decode is bandwidth-bound) and
shows where your machine lands among **real community benchmark runs**
([LocalScore](https://www.localscore.ai)) on an interactive roofline chart.
A gradient-boosted predictor (following IBM's
[LLM-Pilot methodology](https://arxiv.org/abs/2410.02425)) is grouped by
accelerator label in cross-validation; it beats the analytical baseline on
median error but not on every metric, so the bands are honest, not precise.
Vision and diffusion are compute-bound: FitCheck shows a calibrated
compute-roofline estimate (a ceiling) for detection and diffusion, with proxy
limits flagged, and stays silent where it has no calibration.
- **Conservative by design.** Three plain bands (Runs great / Tight, but works
/ Won't fit) that would rather under-promise than over-promise.
## What's inside
1. **The catalogue**`scripts/curation.json` (hand-picked models across
LLM, vision-language, vision, image/video generation, speech, music,
embeddings, forecasting) enriched by `scripts/refresh_catalogue.py` from
public Hub endpoints into `catalogue.json`. Re-run the script to refresh;
the result is baked in at build time, so the *deterministic advice* needs no
network (the parser, narrator, and live lookup do).
2. **The engine** (`engine/`) — pure Python memory math and honest banding.
Also answers the reverse question: minimum vs comfortable hardware tiers
for a goal ("Help me pick one" mode).
3. **The model brick** (`model_brick.py`) — NVIDIA Nemotron 3 Nano 4B running
in-Space on ZeroGPU (hybrid Mamba-2, accelerated by prebuilt hub kernels),
explaining the engine's numbers in plain words. It never does the math; a
faithfulness check LOGS any figure it states that isn't in the engine's facts
(observability only — it does not block or rewrite the answer).
4. **The frontend** (`static/`) — hand-built HTML/CSS/JS, no framework, served
by Gradio server mode (`gr.Server`). Optional extra: paste any Hugging Face
model id and FitCheck walks its finetune/quantized lineage to a known base
("if the base runs, your finetune runs") — the one clearly-labelled online
feature.
## Run it locally
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.py
```
Open http://127.0.0.1:7860/ (add `?go` for an instant sample result). Locally
the explainer reports the model isn't loaded (it only loads on the Space). The
deterministic advice works without network; the live Hugging Face lookup, the
spec parser, the narrator, web fonts, and the Gradio client need connectivity.
Built for the [Build Small hackathon](https://huggingface.co/build-small-hackathon)
(Backyard AI track).